diff --git a/.gitignore b/.gitignore index 356fa45..ba26838 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ chunk/Source_Code/*.dll bin tmp /dist/dll +src/packages diff --git a/J6/.gitignore b/J6/.gitignore deleted file mode 100644 index 356fa45..0000000 --- a/J6/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*.pdb -*.txt -*.cache -*.suo -Debug -obj -bin/* -chunk/Source_Code/*.dll -bin -tmp -/dist/dll diff --git a/J6/LICENSE b/J6/LICENSE deleted file mode 100644 index e174de5..0000000 --- a/J6/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 刘铭 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/J6/README.md b/J6/README.md deleted file mode 100644 index b864a3a..0000000 --- a/J6/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# J6's .Net Development framework # - -It's a .net development framework,contains plugin kernel,template engine,database util,orm and some base library. -it's come from my other project "cms",http://github.com/atnet/cms - -这是一个.net平台上的开发框架,包含插件内核,模板引擎,数据库访问工具,ORM,及一些基础类库。是从我的另外一个开源项目"CMS"中分离出来的,github地址为:http://github.com/atnet/cms - - -## 开发环境 ## -VS2013 - -## 运行环境 ## -支持Windows,Linux,Macox平台,示例使用asp.net mvc 2.0构建。 - -## 引用第三方库 ## -Mono.Data.Sqlite.dll -mysql.data.dll -System.Data.SQLite.dll -StructureMap.dll -Newtonsoft.Json.dll - -## 插件开发 ## -见:http://github.com/atnet/cms/tree/master/plugin - -## 示例 ## -见examples目录,包含一个微信功能的插件和一个MVC站点, - -运行devfw.web/$tools/server.bat - -浏览器打开:http://localhost:8000/admin/ - diff --git a/J6/build.bat b/J6/build.bat deleted file mode 100644 index cb622ad..0000000 --- a/J6/build.bat +++ /dev/null @@ -1,32 +0,0 @@ -@echo off - -color 66 - -echo ======================================= - -echo = ϲ github.com/atnet/devfw = - -echo ======================================= - -set dir=%~dp0 - -set megdir=%dir%\dll\ - -if exist "%megdir%merge.exe" ( - - echo ,Ե... - cd %dir%dist\dll\ - -echo /keyfile:%dir%j6.devfw.snk>nul - -"%megdir%merge.exe" /closed /keyfile:%dir%/src/core/J6.DevFw.Core/j6.devfw.snk /ndebug /targetplatform:v4 /target:dll /out:%dir%dist\j6.devfw.dll^ - J6.DevFw.Core.dll J6.DevFw.PluginKernel.dll J6.DevFw.Data.dll J6.DevFw.Template.dll J6.DevFw.Web.dll J6.DevFw.Toolkit.Data.dll - - - - echo !:%dir%dist\j6.devfw.dll - -) - - -pause \ No newline at end of file diff --git a/J6/dist/j6.devfw.dll b/J6/dist/j6.devfw.dll deleted file mode 100644 index 8e98bed..0000000 Binary files a/J6/dist/j6.devfw.dll and /dev/null differ diff --git a/J6/dll/NPOI.dll b/J6/dll/NPOI.dll deleted file mode 100644 index 8eba618..0000000 Binary files a/J6/dll/NPOI.dll and /dev/null differ diff --git a/J6/dll/Newtonsoft.Json.dll b/J6/dll/Newtonsoft.Json.dll deleted file mode 100644 index a7dfbe0..0000000 Binary files a/J6/dll/Newtonsoft.Json.dll and /dev/null differ diff --git a/J6/dll/SharpCompress.3.5.dll b/J6/dll/SharpCompress.3.5.dll deleted file mode 100644 index 0438fd5..0000000 Binary files a/J6/dll/SharpCompress.3.5.dll and /dev/null differ diff --git a/J6/dll/StructureMap.dll b/J6/dll/StructureMap.dll deleted file mode 100644 index 6e4af21..0000000 Binary files a/J6/dll/StructureMap.dll and /dev/null differ diff --git a/J6/dll/System.Web.Mvc.dll b/J6/dll/System.Web.Mvc.dll deleted file mode 100644 index 775ac88..0000000 Binary files a/J6/dll/System.Web.Mvc.dll and /dev/null differ diff --git a/J6/dll/merge.exe b/J6/dll/merge.exe deleted file mode 100644 index 9667425..0000000 Binary files a/J6/dll/merge.exe and /dev/null differ diff --git a/J6/src/J6.DevFw.sln b/J6/src/J6.DevFw.sln deleted file mode 100644 index f3c944a..0000000 --- a/J6/src/J6.DevFw.sln +++ /dev/null @@ -1,189 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DevFw", "DevFw", "{D40F58FF-8D2E-4549-B680-68EE0D38CA00}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Web", "core\J6.DevFw.Web\J6.DevFw.Web.csproj", "{4F756EAD-0C41-499C-AE91-660892B444AC}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{33331172-4E47-4F42-920E-9D4497C1988D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Web.Example", "examples\devfw.web\J6.DevFw.Web.Example.csproj", "{FF0226AA-66A9-413C-B928-29EA1E821906}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Toolkit", "Toolkit", "{BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D}" -EndProjectR -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.mapfre.weixin", "examples\com.mapfre.weixin\com.mapfre.weixin.csproj", "{E387CF54-3BA1-4F17-9F88-A01C60448D4E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Core", "core\J6.DevFw.Core\J6.DevFw.Core.csproj", "{44E05D6C-5B0A-453A-913F-00124D1BF435}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Data", "core\J6.DevFw.Data\J6.DevFw.Data.csproj", "{1D053644-937A-4D8E-9740-43823183A39A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.PluginKernel", "core\J6.DevFw.PluginKernel\kernel\J6.DevFw.PluginKernel.csproj", "{CAD14DCC-112C-4B28-98EB-1CE143D09033}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Template", "core\J6.DevFw.Template\J6.DevFw.Template.csproj", "{275CAE3E-A9E0-4DE0-8031-E9137BBDD693}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.Data", "toolkit\J6.DevFw.Toolkit.Data\J6.DevFw.Toolkit.Data.csproj", "{8A5B5504-8D72-4F30-A50E-5856BE419DEA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.NetCrawl", "toolkit\J6.DevFw.Toolkit.NetCrawl\NetCrawl\J6.DevFw.Toolkit.NetCrawl.csproj", "{74914743-7506-414A-8F6B-45E5479F0127}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.Region", "toolkit\J6.DevFw.Toolkit.Region\com.region\J6.DevFw.Toolkit.Region.csproj", "{84942A04-73A1-447A-9D39-CC1CF88B5158}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.Tags", "toolkit\J6.DevFw.Toolkit.Tags\J6.DevFw.Toolkit.Tags.csproj", "{1E9FCAD5-DF56-469B-BCEB-806BF9085A47}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.ThirdApi", "toolkit\J6.DevFw.Toolkit.ThirdApi\J6.DevFw.Toolkit.ThirdApi.csproj", "{D1FBD275-BF29-4823-970A-0F341BF99A9F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|x86.ActiveCfg = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Any CPU.Build.0 = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|x86.ActiveCfg = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|x86.ActiveCfg = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Any CPU.Build.0 = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|x86.ActiveCfg = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Any CPU.Build.0 = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|x86.ActiveCfg = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|x86.ActiveCfg = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Any CPU.ActiveCfg = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Any CPU.Build.0 = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|x86.ActiveCfg = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|x86.ActiveCfg = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Any CPU.Build.0 = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|x86.ActiveCfg = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|x86.ActiveCfg = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.Build.0 = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|x86.ActiveCfg = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.Build.0 = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|x86.ActiveCfg = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.ActiveCfg = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.Build.0 = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|x86.ActiveCfg = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|x86.ActiveCfg = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.Build.0 = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|x86.ActiveCfg = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|x86.ActiveCfg = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.Build.0 = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|x86.ActiveCfg = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.Build.0 = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|x86.ActiveCfg = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.ActiveCfg = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.Build.0 = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|x86.ActiveCfg = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|x86.ActiveCfg = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.Build.0 = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|x86.ActiveCfg = Release|Any CPU - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|x86.ActiveCfg = Debug|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|x86.Build.0 = Debug|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Any CPU.Build.0 = Release|Any CPU - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Mixed Platforms.Build.0 = Release|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|x86.ActiveCfg = Release|x86 - {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {4F756EAD-0C41-499C-AE91-660892B444AC} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {44E05D6C-5B0A-453A-913F-00124D1BF435} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {1D053644-937A-4D8E-9740-43823183A39A} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {CAD14DCC-112C-4B28-98EB-1CE143D09033} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {FF0226AA-66A9-413C-B928-29EA1E821906} = {33331172-4E47-4F42-920E-9D4497C1988D} - {E387CF54-3BA1-4F17-9F88-A01C60448D4E} = {33331172-4E47-4F42-920E-9D4497C1988D} - {8A5B5504-8D72-4F30-A50E-5856BE419DEA} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {74914743-7506-414A-8F6B-45E5479F0127} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {84942A04-73A1-447A-9D39-CC1CF88B5158} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {D1FBD275-BF29-4823-970A-0F341BF99A9F} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - EndGlobalSection - GlobalSection(TestCaseManagementSettings) = postSolution - CategoryFile = OPS.BaseLib.vsmdi - EndGlobalSection -EndGlobal diff --git a/J6/src/core/J6.DevFw.Core/Framework/AssemblyResolve.cs b/J6/src/core/J6.DevFw.Core/Framework/AssemblyResolve.cs deleted file mode 100644 index a998b02..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/AssemblyResolve.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 由SharpDevelop创建。 - * 用户: Administrator - * 日期: 2013/12/10 - * 时间: 11:24 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; -using System.IO; -using System.Reflection; - -namespace J6.DevFw.Framework -{ - /// - /// Description of MyClass. - /// - internal class AssemblyResolve - { - /// - /// 解决依赖 - /// - /// AppDomain - /// 目录 - /// 文件扩展名 - /// 是否AES解密 - public static void Resolve(AppDomain domain, string directory, string fileExtension, bool aes) - { - // WHY NOT WORK - //http://stackoverflow.com/questions/9734657/why-assemblyresolve-not-working - // - - domain.AssemblyResolve += delegate(object sender, ResolveEventArgs args) - { - string filePath = String.Concat(directory, directory.EndsWith("/") ? "" : "/", args.Name.Split(',')[0], - fileExtension); - if (!File.Exists(filePath)) - { - return null; - } - else - { - return Assembly.Load(File.ReadAllBytes(filePath)); - } - }; - } - - /// - /// 默认解析.dll - /// - /// - /// - public static void Resolve(AppDomain domain, string directory) - { - Resolve(domain, directory, ".dll", false); - } - - /// - /// 默认从lib目录下解析.dll - /// - /// - public static void Resolve(AppDomain domain) - { - Resolve(domain, domain.BaseDirectory + "lib/", ".dll", false); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Automation/EntityForm.cs b/J6/src/core/J6.DevFw.Core/Framework/Automation/EntityForm.cs deleted file mode 100644 index ffcc021..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Automation/EntityForm.cs +++ /dev/null @@ -1,388 +0,0 @@ -using System; -using System.Reflection; -using System.Text; -using J6.DevFw.Framework.Extensions; - -namespace J6.DevFw.Framework.Automation -{ - /// - /// 实体表单 - /// - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = true)] - public class EntityFormAttribute : Attribute - { - } - - /// - /// 表单列 - /// - [AttributeUsage(AttributeTargets.Property, Inherited = false)] - public class FormFieldAttribute : Attribute - { - public FormFieldAttribute(string name) - { - this.Name = name; - } - - /// - /// 列分组名称 - /// - public string Group { get; set; } - - /// - /// 名称 - /// - public string Name { get; set; } - - /// - /// 中文名称 - /// - public string Text { get; set; } - - /// - /// 列描述 - /// - public string Descript { get; set; } - - /// - /// 是否可以编辑 - /// - public bool DisableEdit { get; set; } - - /// - /// 是否隐藏显示 - /// - public bool Hidden { get; set; } - - /// - /// 是否为密码输入项 - /// - public bool IsPassword { get; set; } - - /// - /// 是否必填 - /// - public bool IsRequired { get; set; } - - /// - /// 正则匹配 - /// - public string Regex { get; set; } - - /// - /// 是否为数字 - /// - public bool IsNumber { get; set; } - - /// - /// 长度限制,如5-10,0-10 - /// - public string Length { get; set; } - - /// - /// 是否多行,多行用Textbox显示 - /// - public bool MultLine { get; set; } - } - - /// - /// 选择列 - /// - [AttributeUsage(AttributeTargets.Property, Inherited = false)] - public class SelectFieldAttribute : Attribute - { - /// - /// 数据字典,多个用;或|隔开。如:是=1;否=0 - /// - public string Data { get; set; } - - /// - /// 是否使用下拉,如果为否,则用radiobox - /// - public bool UseDrop { get; set; } - } - - public class EntityForm - { - /// - /// 创建HTML,包含表单及按钮 - /// - /// - /// - /// - /// - /// - public static string Build(T t, bool full, string btnText) where T : new() - { - if (t == null) throw new ArgumentNullException("实体" + typeof (T).Name + "不能为空!"); - StringBuilder sb = new StringBuilder(); - if (full) - { - sb.Append("
\r\n").Append("
\r\n"); - } - - Type type = typeof (T); - FormFieldAttribute ffa; - SelectFieldAttribute sfa; - string value; - - EntityFormAttribute[] eta = - type.GetCustomAttributes(typeof (EntityFormAttribute), true) as EntityFormAttribute[]; - if (eta.Length != 0) - { - //读取属性 - PropertyInfo[] prolist = type.GetProperties(); - foreach (PropertyInfo pro in prolist) - { - //枚举则获取对应的数值 - if (pro.PropertyType.IsEnum) - { - value = Convert.ToInt32(pro.GetValue(t, null)).ToString(); - } - else - { - value = (pro.GetValue(t, null) ?? String.Empty).ToString(); - } - - FormFieldAttribute[] fieldAttrs = - pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; - if (fieldAttrs.Length == 0) - { - continue; - } - else - { - ffa = fieldAttrs[0]; - - //设置标题 - sb.Append("" : " group=\"" + ffa.Group + "\">") - .Append("
").Append(ffa.IsRequired ? "*" : "") - .Append(String.IsNullOrEmpty(ffa.Text) ? ffa.Name : ffa.Text).Append(":
") - .Append("
"); - - if (!ffa.DisableEdit) - { - //设置UI - SelectFieldAttribute[] sfAttrs = - pro.GetCustomAttributes(typeof (SelectFieldAttribute), false) as SelectFieldAttribute[]; - if (sfAttrs.Length != 0) - { - sfa = sfAttrs[0]; - //输出SELECT或RADIO - if (sfa.UseDrop) - { - sb.Append(""); - } - else - { - // - //UNDONE:.... - // - } - } - else - { - if (ffa.MultLine) - { - //输出Textbox - sb.Append(""); - } - else - { - //关闭INPUT - sb.Append(" />"); - } - } - } - else - { - sb.Append(value) - .Append(""); - } - - //列描述 - if (!String.IsNullOrEmpty(ffa.Descript)) - { - sb.Append("").Append(ffa.Descript).Append(""); - } - - //关闭列 - sb.Append("
\r\n"); - } - } - } - else - { - sb.Append("该实体不支持EntityForm!"); - } - - - if (full) - { - sb.Append("
 
") - .Append(btnText).Append("
") - .Append("
"); - } - - return sb.ToString(); - } - - /// - /// 创建HTML,仅包含字段 - /// - /// - /// - /// - public static string Build(T t) where T : new() - { - return Build(t, false, ""); - } - - public static T GetEntity() where T : new() - { - const bool allowError = false; - global::System.Collections.Specialized.NameValueCollection form = - global::System.Web.HttpContext.Current.Request.Form; - - Type type = typeof (T); - object t = Activator.CreateInstance(type); - PropertyInfo[] pros = type.GetProperties(); - FormFieldAttribute[] fieldAttrs; - FormFieldAttribute attr; - string value; - int tmpInt; - - - Type strType = typeof (String); //字符串类型 - Type bitType = typeof (Boolean); //布尔值类型 - Type proType = null; //属性类型 - - - foreach (PropertyInfo pro in pros) - { - if (!pro.CanWrite) continue; - fieldAttrs = pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; - if (fieldAttrs.Length != 0) - { - attr = fieldAttrs[0]; - value = form["field_" + pro.Name] ?? (form[pro.Name] ?? ""); - - proType = pro.PropertyType; - object obj; - - try - { - obj = ICollectionExtensions.GetPropertyValue(pro, strType, bitType, proType, value); - if (obj != null) - { - pro.SetValue(t, obj, null); - } - } - - catch (FormatException exc) - { - if (!allowError) - { - throw new FormatException("转换错误,属性名:" + pro.Name); - } - } - - - //if (pro.PropertyType.IsEnum) - //{ - // int.TryParse(value, out tmpInt); - // pro.SetValue(t, tmpInt, null); - //} - //else - //{ - // try - // { - // pro.SetValue(t, Convert.ChangeType(value, pro.PropertyType), null); - // } - // catch (FormatException exc) - // { - // throw new FormatException("转换错误,属性名:" + pro.Name); - // } - //} - } - } - - return (T) t; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Extensions/HttpExtensions.cs b/J6/src/core/J6.DevFw.Core/Framework/Extensions/HttpExtensions.cs deleted file mode 100644 index 25b7f21..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Extensions/HttpExtensions.cs +++ /dev/null @@ -1,61 +0,0 @@ -// -// Copryright (C) OPS.CC 2008-2011 ,All right reseved. -// Name:HttpExtensions.cs -// Author: Newmin -// -// - -using System; -using System.Text.RegularExpressions; -using System.Web; - -namespace J6.DevFw.Framework.Extensions -{ - public static class HttpExtensions - { - /// - /// 是否为蜘蛛请求 - /// - /// - /// - public static bool IsSplider(this HttpRequest request) - { - string[] botNames = new string[] - { - "Googlebot", //谷歌蜘蛛 - "Baiduspider", //百度蜘蛛 - "Yahoo!+Slurp", //雅虎蜘蛛 - "bingbot", //必应蜘蛛 - "msnbot", //LIVE蜘蛛 - "Sosospider", //搜搜蜘蛛 - "YodaoBot", //有道蜘蛛 - "YoudaoBot", //有道蜘蛛 - "Sogou Web Sprider" //搜狗蜘蛛 - }; - - string agent = request.UserAgent; - bool isSplider = false; - Array.ForEach(botNames, a => { if (agent.IndexOf(a) != -1) isSplider = true; }); - return isSplider; - } - - /// - /// 是否移动设备 - /// - /// - /// - public static bool IscMobileDevice(this HttpRequest request) - { - string u = request.ServerVariables["HTTP_USER_AGENT"]; - Regex b = - new Regex( - @"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", - RegexOptions.IgnoreCase | RegexOptions.Multiline); - Regex v = - new Regex( - @"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", - RegexOptions.IgnoreCase | RegexOptions.Multiline); - return b.IsMatch(u) || v.IsMatch(u.Substring(0, 4)); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Extensions/ICollectionExtensions.cs b/J6/src/core/J6.DevFw.Core/Framework/Extensions/ICollectionExtensions.cs deleted file mode 100644 index 21b65c3..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Extensions/ICollectionExtensions.cs +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2010 OPS,All rights reseved ! - * name : 集合扩展 - * author : newmin - * date : 2010/11/26 07:31 - */ - -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Reflection; - -namespace J6.DevFw.Framework.Extensions -{ - /// - /// 集合扩展 - /// - public static class ICollectionExtensions - { - /// - /// 返回符合条件的集合 - /// - /// - /// - /// - /// - public static IEnumerable WhereBy(this IEnumerable collection, Func condition) - { - foreach (T t in collection) - { - if (condition(t)) yield return t; - } - } - - public static T ConvertToEntity(this NameValueCollection form) - { - return BindToEntity(form, default(T), false); - } - - public static T BindToEntity(this NameValueCollection form, T t) - { - return BindToEntity(form, t, false); - } - - public static T BindToEntity(this NameValueCollection form, T entity, bool allowError) - { - Type type = typeof (T); //实体类型 - Type strType = typeof (String); //字符串类型 - Type bitType = typeof (Boolean); - Type proType = null; //属性类型 - - object t = entity; - if (t == null) - { - t = Activator.CreateInstance(type); - } - - PropertyInfo[] pros = type.GetProperties(); - string value; - - foreach (PropertyInfo pro in pros) - { - if (!pro.CanWrite) continue; - value = form[pro.Name]; - - //获取值 - if (value == null) - { - value = form["field_" + pro.Name]; - if (String.IsNullOrEmpty(value)) continue; - } - - - proType = pro.PropertyType; - object obj; - - try - { - obj = GetPropertyValue(pro, strType, bitType, proType, value); - if (obj != null) - { - pro.SetValue(t, obj, null); - } - - //if (pro.PropertyType.IsValueType) - //{ - // } - // else - // { - // pro.SetValue(t, - // Convert.ChangeType(value, pro.PropertyType), - // null); - // } - - // } - - - //if (pro.PropertyType.IsValueType) - //{ - // } - // else - // { - // pro.SetValue(t, - // Convert.ChangeType(value, pro.PropertyType), - // null); - // } - - // } - - //else if (pro.PropertyType == typeof(String)) - //{ - // pro.SetValue(t, - // Convert.ChangeType(value, pro.PropertyType), - // null); - //} - } - - catch (FormatException exc) - { - if (!allowError) - { - throw new FormatException("转换错误,属性名:" + pro.Name); - } - } - } - - return (T) t; - } - - internal static object GetPropertyValue(PropertyInfo pro, Type strType, Type bitType, Type proType, - string value) - { - if (proType == strType) - { - return value; - } - else if (proType == bitType) - { - return value == "True" || value == "1" || value == "true"; - } - else if (proType.IsEnum) //枚举类型 - { - return Enum.Parse(proType, value); - } - else if (proType.GetInterface("IConvertible") != null) - { - //支持转换的类型 - return Convert.ChangeType(value, proType); - } - else if (pro.PropertyType.IsGenericType) - { - //泛型(可空类型) - //获取类型定义判断是否为可空类型 - Type genericTypeDefinition = proType.GetGenericTypeDefinition(); - if (genericTypeDefinition == typeof (Nullable<>)) - { - Type baseType = Nullable.GetUnderlyingType(proType); - if (baseType.GetInterface("IConvertible") != null) - { - if (baseType == bitType) - { - return value == "True" || value == "1" || value == "true"; - } - else if (baseType.IsEnum) //枚举类型 - { - return Enum.Parse(baseType, value); - } - else - { - return Convert.ChangeType(value, baseType); - } - } - } - } - return null; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Extensions/StringExtensions.cs b/J6/src/core/J6.DevFw.Core/Framework/Extensions/StringExtensions.cs deleted file mode 100644 index ce81381..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Extensions/StringExtensions.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text.RegularExpressions; -using System.Web; -using J6.DevFw.Framework.Security; - -namespace J6.DevFw.Framework.Extensions -{ - public static class StringExtensions - { - /// - /// 为字符串追加指定长度的随机字符并返回该字符串 - /// - /// 字符串 - /// 长度 - /// - public static string RandomLetters(this String str, int length) - { - length = length < 1 ? 1 : length; - char[] cs = - { - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' - , 'u', 'v', 'w', 'x', 'y', 'z' - }; - Random rd = new Random(); - for (int i = 0; i < length; i++) - { - str += cs[rd.Next(24)]; //24为cs.Length - } - return str; - } - - /// - /// 为字符串追加指定长度的随机字符并返回该字符串 - /// - /// 字符串 - /// 长度 - /// - public static string RandomUpperLetters(this String str, int length) - { - length = length < 1 ? 1 : length; - char[] cs = - { - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' - , 'u', 'v', 'w', 'x', 'y', 'z' - }; - Random rd = new Random(); - int randomNum = 0; - for (int i = 0; i < length; i++) - { - randomNum = rd.Next(24); //24为cs.Length - str += randomNum > 12 ? cs[rd.Next(randomNum)].ToString().ToUpper() : cs[rd.Next(randomNum)].ToString(); - } - return str; - } - - /// - /// 用md5加密 - /// - /// - /// - public static string EncodeMD5(this String str) - { - return Md5Crypto.EncodeMD5(str); - } - - /// - /// 16位MD5加密 - /// - /// - /// - public static string Encode16MD5(this String str) - { - return Md5Crypto.Encode16MD5(str); - } - - - /// - /// HTML编码 - /// - /// - /// - public static string HtmlEncode(this String str) - { - return HttpContext.Current.Server.HtmlEncode(str); - } - - /// - /// HTML解码 - /// - /// - /// - public static string HtmlDecode(this String str) - { - return HttpContext.Current.Server.HtmlDecode(str); - } - - /// - /// 替换类似%tag%的标签 - /// - /// - /// - public static string Template(this string str, Func func) - { - Regex regex = new Regex("%([^%]+)%"); - - return regex.Replace(str, a => { return func(a.Groups[1].Value); }); - } - - - /// - /// 替换类似%tag%的标签 - /// - /// - /// 传递标签值的数组 - /// - public static string Template(this string str, params string[] data) - { - Regex regex = new Regex("%([^%]+)%"); - MatchCollection mcs = regex.Matches(str); - if (mcs.Count != data.Length) - { - throw new ArgumentOutOfRangeException(); - } - else - { - for (int i = 0; i < mcs.Count; i++) - { - str = Regex.Replace(str, mcs[i].Groups[0].Value, data[i]); - } - } - return str; - } - - public static string Template(this string str, Hashtable hash) - { - if (hash == null || hash.Count == 0) return str; - Regex regex = new Regex("{([^{]+)}"); - MatchCollection mcs = regex.Matches(str); - string key; - for (int i = 0; i < mcs.Count; i++) - { - key = mcs[i].Groups[1].Value; - if (hash.ContainsKey(key) && hash[key] != null) - { - str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key].ToString()); - } - } - return str; - } - - public static string Template(this string str, IDictionary hash) - { - if (hash == null || hash.Count == 0) return str; - Regex regex = new Regex("{([^{]+)}"); - MatchCollection mcs = regex.Matches(str); - string key; - for (int i = 0; i < mcs.Count; i++) - { - key = mcs[i].Groups[1].Value; - if (hash.ContainsKey(key) && hash[key] != null) - { - str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key]); - } - } - return str; - } - - /// - /// 是否匹配文本 - /// - /// - /// - /// - /// - public static bool IsMatch(this string str, string pattern, RegexOptions option = RegexOptions.None) - { - return Regex.IsMatch(str, pattern, option); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Extensions/TExtensions.cs b/J6/src/core/J6.DevFw.Core/Framework/Extensions/TExtensions.cs deleted file mode 100644 index aaea635..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Extensions/TExtensions.cs +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2010 OPS,All rights reseved ! - * name : 泛型扩展 - * author : newmin - * date : 2010/11/08 07:31 - * - */ - -using System; -using System.Globalization; -using System.Reflection; - -namespace J6.DevFw.Framework.Extensions -{ - public static class TExtensions - { - /// - ///从SourceType拷贝对象的数据,将相同名称属性赋值 - /// - /// 包含数据的对象 - /// 要拷贝数据的对象 - /// 是否忽略空值 - public static ToType CloneData(this ToType t, SourceType s, bool ignoreNullValue) - { - Type sourceType = typeof (SourceType); - Type type = typeof (ToType); - Type propertyType; - Type fieldType; - - if (t is String || s is String) return t; - - - PropertyInfo[] cp = type.GetProperties(); - FieldInfo[] fields = type.GetFields(); - - object _v; - - - FieldInfo _f; - - foreach (FieldInfo f in sourceType.GetFields()) - { - if (f.IsStatic || f.IsInitOnly) continue; - - _f = Array.Find(fields, a => string.Compare(a.Name, f.Name, true, - CultureInfo.InvariantCulture) == 0); - - if (_f == null || _f.IsStatic || f.IsInitOnly) continue; - - _v = f.GetValue(s); - if (!ignoreNullValue && _v == null) continue; - - fieldType = _f.FieldType; - if (fieldType.IsEnum) - { - _f.SetValue(t, Enum.Parse(fieldType, _v.ToString())); - } - else - { - if (_v is IConvertible) - { - _f.SetValue(t, Convert.ChangeType(_v, fieldType)); - } - else - { - try - { - _f.SetValue(t, _v); - } - catch - { - } - } - } - } - - PropertyInfo _p; - foreach (PropertyInfo p in sourceType.GetProperties()) - { - if (!p.CanRead) continue; - - _p = Array.Find(cp, a => string.Compare(a.Name, p.Name, true, - CultureInfo.InvariantCulture) == 0); - - if (_p == null || !_p.CanWrite) continue; - - - _v = p.GetValue(s, null); - if (!ignoreNullValue && _v == null) continue; - propertyType = _p.PropertyType; - - if (propertyType.IsEnum) - { - _p.SetValue(t, Enum.Parse(propertyType, _v.ToString()), null); - } - else - { - if (_v is IConvertible) - { - _p.SetValue(t, Convert.ChangeType(_v, propertyType), null); - } - else - { - try - { - _p.SetValue(t, _v, null); - } - catch - { - } - } - } - } - - - return t; - } - - /// - /// 拷贝对象的数据 - /// - public static ToType CloneData(this ToType t, SourceType s) - { - return CloneData(t, s, true); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Graphic/GraphicsHelper.cs b/J6/src/core/J6.DevFw.Core/Framework/Graphic/GraphicsHelper.cs deleted file mode 100644 index 17a8467..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Graphic/GraphicsHelper.cs +++ /dev/null @@ -1,812 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; -using System.IO; - -/******************************************* -* 文 件 名:ImageGraphicsUtility.cs -* 文件说明: -* 创 建 人:刘成文 -* 创建日期:2012-9-29 11:53:40 -********************************************/ - -namespace J6.DevFw.Framework.Graphic -{ - /// - /// 绘图工具类 - /// - public class GraphicsHelper - { - private static IDictionary imageCoders; - - static GraphicsHelper() - { - imageCoders = new Dictionary(); - ImageCodecInfo imgCode = null; - ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); - string key = null; - foreach (ImageCodecInfo code in imgCodes) - { - switch (code.MimeType) - { - case "image/jpeg": - key = "Jpeg"; - break; - case "image/png": - key = "Png"; - break; - case "image/bmp": - key = "Bmp"; - break; - default: - key = null; - break; - } - - if (key != null) - { - imageCoders.Add(key, code); - } - } - } - - public static Size GetSize(Size size, Size resize, ImageSizeMode mode) - { - // int toWidth = resize.Width; - // int toHeight = resize.Height; - - // int x = 0; - // int y = 0; - // int ow = size.Width; - // int oh = size.Height; - - Size newSize = new Size(); - newSize.Width = resize.Width; - newSize.Height = resize.Height; - - - switch (mode) - { - case ImageSizeMode.SuitWidth: - newSize.Height = size.Height*resize.Width/size.Width; - break; - - case ImageSizeMode.SuitHeight: - newSize.Width = size.Width*resize.Height/size.Height; - break; - - case ImageSizeMode.AutoSuit: - //根据宽度适配 - if (size.Width > size.Height) - { - newSize.Height = size.Height*resize.Width/size.Width; - } - else //根据高度适配 - { - newSize.Width = size.Width*resize.Height/size.Height; - } - break; - - //填充适应 - case ImageSizeMode.FillFit: - if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) - { - newSize.Height = size.Height*resize.Width/size.Width; - } - else - { - newSize.Width = resize.Width*resize.Height/size.Height; - } - - break; - - //裁剪 - case ImageSizeMode.Cut: - //裁剪宽 - if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) - { - newSize.Height = size.Height; - newSize.Width = size.Height*resize.Width/resize.Height; - } - else - { - newSize.Width = size.Width; - newSize.Height = size.Width*resize.Height/resize.Width; - } - break; - - default: - case ImageSizeMode.CustomSize: - break; - } - - return newSize; - } - - /// - /// 重新绘制指定尺寸的图片 - /// - /// 原图 - /// 缩略图宽度 - /// 缩略图高度 - /// 缩略图模式 - /// 图像格式 - /// 对缩略图处理 - public static byte[] DrawBySize( - Image original, - ImageSizeMode mode, - int width, int height, - ImageFormat format, - long imageQuality, - long compression, - ImageGraphicsHandler graphicsHandler) - { - int toWidth = width; - int toHeight = height; - - int x = 0; - int y = 0; - int ow = original.Width; //原始宽度 - int oh = original.Height; //原始高度 - - Size toSize = new Size(width, height); //要转换的图片尺寸 - Size imageSize = GetSize(original.Size, toSize, mode); //转换的实际尺寸 - - - //裁剪 - if (mode == ImageSizeMode.Cut) - { - if ((double) original.Width/(double) original.Height > (double) toSize.Width/(double) toSize.Height) - { - oh = original.Height; - ow = original.Height*toWidth/toHeight; - y = 0; - x = (original.Width - ow)/2; - } - else - { - ow = original.Width; - oh = original.Width*height/toWidth; - x = 0; - y = (original.Height - oh)/2; - } - } - else - { - x = (toSize.Width - imageSize.Width)/2; - y = (toSize.Height - imageSize.Height)/2; - } - - //新建一个bmp图片 - Image bitmap; - if (mode == ImageSizeMode.FillFit) - { - bitmap = new Bitmap(width, height); - } - else - { - bitmap = new Bitmap(toWidth, toHeight); - } - - //新建一个画板 - Graphics g = Graphics.FromImage(bitmap); - - //设置高质量插值法 - g.InterpolationMode = InterpolationMode.HighQualityBicubic; - - //设置高质量,低速度呈现平滑程度 - g.SmoothingMode = SmoothingMode.HighQuality; - - //清空画布并以透明背景色填充 - g.Clear(Color.Transparent); - if (mode == ImageSizeMode.FillFit) - { - g.Clear(Color.White); - } - - //在指定位置并且按指定大小绘制原图片的指定部分 - - g.DrawImage(original, - new Rectangle(x, y, imageSize.Width, imageSize.Height), - new Rectangle(x, y, ow, oh), - GraphicsUnit.Pixel); - - - //对图片进行处理 - if (graphicsHandler != null) - { - graphicsHandler(bitmap); - if (bitmap == null) - { - throw new ArgumentException("不允许释放图片资源!"); - } - } - - //保存到内存留 - MemoryStream ms = new MemoryStream(); - - - ImageCodecInfo imgCode = null; - - if (format != null) - { - string formatStr = format.ToString(); - imgCode = imageCoders.ContainsKey(formatStr) ? imageCoders[formatStr] : null; - } - - if (imgCode != null) - { - EncoderParameters ep = new EncoderParameters(2); - ep.Param[0] = new EncoderParameter(Encoder.Quality, - imageQuality > 100 || imageQuality <= 0 ? 100L : imageQuality); - ep.Param[1] = new EncoderParameter(Encoder.Compression, compression < 1L ? 100L : compression); - bitmap.Save(ms, imgCode, ep); - } - else - { - bitmap.Save(ms, ImageFormat.Jpeg); - } - - //释放资源 - g.Dispose(); - bitmap.Dispose(); - - return ms.ToArray(); - } - - /// - /// 重新绘制指定尺寸的图片 - /// - /// 原图 - /// 缩略图宽度 - /// 缩略图高度 - /// 缩略图模式 - /// 对缩略图处理 - public static byte[] DrawBySize( - Image original, - ImageSizeMode mode, - int width, int height, - ImageGraphicsHandler graphicsHandler) - { - return DrawBySize(original, mode, width, height, ImageFormat.Jpeg, 100L, 60L, graphicsHandler); - } - - #region 生成缩略图 - - /// - /// 生成缩略图 - /// - /// 原图 - /// 缩略图宽度 - /// 缩略图高度 - /// 缩略图模式 - /// 对缩略图处理 - public static MemoryStream MakeThumbnail(Image original, ImageSizeMode mode, int width, int height, - ImageGraphicsHandler thumbHandler) - { - int toWidth = width; - int toHeight = height; - - int x = 0; - int y = 0; - int ow = original.Width; - int oh = original.Height; - - switch (mode) - { - case ImageSizeMode.SuitWidth: - toHeight = original.Height*width/original.Width; - break; - - case ImageSizeMode.SuitHeight: - toWidth = original.Width*height/original.Height; - break; - - case ImageSizeMode.AutoSuit: - //根据宽度适配 - if (original.Width > original.Height) - { - toHeight = original.Height*width/original.Width; - } - else //根据高度适配 - { - toWidth = original.Width*height/original.Height; - } - break; - - //填充适应 - case ImageSizeMode.FillFit: - if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) - { - toWidth = width; - toHeight = original.Height*width/original.Width; - } - else - { - toHeight = height; - toWidth = original.Width*height/original.Height; - } - - break; - - //裁剪 - case ImageSizeMode.Cut: - if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) - { - oh = original.Height; - ow = original.Height*toWidth/toHeight; - y = 0; - x = (original.Width - ow)/2; - } - else - { - ow = original.Width; - oh = original.Width*height/toWidth; - x = 0; - y = (original.Height - oh)/2; - } - break; - - default: - case ImageSizeMode.CustomSize: - break; - } - - //新建一个bmp图片 - Image bitmap; - if (mode == ImageSizeMode.FillFit) - { - bitmap = new Bitmap(width, height); - } - else - { - bitmap = new Bitmap(toWidth, toHeight); - } - - //新建一个画板 - Graphics g = Graphics.FromImage(bitmap); - - //设置高质量插值法 - g.InterpolationMode = InterpolationMode.High; - - //设置高质量,低速度呈现平滑程度 - g.SmoothingMode = SmoothingMode.HighQuality; - - //清空画布并以透明背景色填充 - g.Clear(Color.Transparent); - if (mode == ImageSizeMode.FillFit) - { - g.Clear(Color.White); - } - - //在指定位置并且按指定大小绘制原图片的指定部分 - g.DrawImage(original, - new Rectangle((width - toWidth)/2, (height - toHeight)/2, toWidth, toHeight), - new Rectangle(x, y, ow, oh), - GraphicsUnit.Pixel); - - - //对图片进行处理 - if (thumbHandler != null) - { - thumbHandler(bitmap); - if (bitmap == null) - { - throw new ArgumentException("不允许释放图片资源!"); - } - } - - //保存到内存留 - MemoryStream ms = new MemoryStream(); - - //图片质量参数 - EncoderParameters ep = new EncoderParameters(2); - ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); - ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 60L); - - ImageCodecInfo imgCode = null; - ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); - foreach (ImageCodecInfo code in imgCodes) - { - if (code.MimeType == "image/jpeg") - { - imgCode = code; - break; - } - } - if (imgCode != null) - { - bitmap.Save(ms, imgCode, ep); - } - else - { - bitmap.Save(ms, ImageFormat.Jpeg); - } - - //释放资源 - g.Dispose(); - bitmap.Dispose(); - - return ms; - } - - - /// - /// 生成缩略图 - /// - /// 源图路径(物理路径) - /// 缩略图路径(物理路径) - /// 缩略图宽度 - /// 缩略图高度 - public static void SaveThumbnail(string originalImagePath, string thumbnailPath, int width, int height) - { - Image originalImage = Image.FromFile(originalImagePath); - - //生成缩略图 - MakeThumbnail(originalImage, ImageSizeMode.Cut, width, height, (img) => - { - //以jpg格式保存缩略图 - img.Save(thumbnailPath, ImageFormat.Jpeg); - }).Dispose(); - - //释放资源 - originalImage.Dispose(); - } - - - /// - /// 生成缩略图 - /// - /// 源图路径(物理路径) - /// 缩略图路径(物理路径) - /// 缩略图宽度 - /// 缩略图高度 - /// 生成缩略图的方式 - public static void SaveThumbnail(string originalImagePath, string thumbnailPath, ImageSizeMode mode, int width, - int height) - { - Image originalImage = Image.FromFile(originalImagePath); - - //生成缩略图 - MakeThumbnail(originalImage, mode, width, height, (img) => - { - //以jpg格式保存缩略图 - img.Save(thumbnailPath, ImageFormat.Jpeg); - }).Dispose(); - - //释放资源 - originalImage.Dispose(); - } - - - /// - /// 生成缩略图 - /// - /// 源图 - /// 缩略图路径(物理路径) - /// 缩略图宽度 - /// 缩略图高度 - /// 生成缩略图的方式 - public static void SaveThumbnail(Image originalImage, string thumbnailPath, ImageSizeMode mode, int width, - int height) - { - //生成缩略图 - MakeThumbnail(originalImage, mode, width, height, (img) => - { - //以jpg格式保存缩略图 - img.Save(thumbnailPath, ImageFormat.Jpeg); - }).Dispose(); - - //释放资源 - originalImage.Dispose(); - } - - #endregion - - private void Thumbnal_Test() - { - int imgHeight = 480, imgWidth = 600; - string file = "/1.jpg"; - string waterPath = ""; - string rootPath = AppDomain.CurrentDomain.BaseDirectory; - - Bitmap img = new Bitmap(rootPath + file); - int width, height; - if (img.Width > img.Height) - { - width = imgWidth; - height = imgHeight; - } - else - { - width = imgHeight; - height = imgWidth; - } - - byte[] data = GraphicsHelper.DrawBySize(img, ImageSizeMode.CustomSize, width, height, ImageFormat.Jpeg, 90L, - 50L, null); - img.Dispose(); - - - MemoryStream ms1 = new MemoryStream(data); - img = new Bitmap(ms1); - - Image water = new Bitmap(waterPath); - - - data = GraphicsHelper.MakeWatermarkImage( - img, - water, - WatermarkPosition.Middle - ); - - - ms1.Dispose(); - img.Dispose(); - - FileStream fs = File.OpenWrite(rootPath + "/1_1.jpg"); - BinaryWriter w = new BinaryWriter(fs); - w.Write(data); - w.Flush(); - fs.Dispose(); - } - - #region 生成水印 - - /// - /// 生成水印 - /// - /// 图片 - /// 水印 - /// 水印位置 - /// 处理图片 - /// 图片内存流 - public static byte[] MakeWatermarkImage( - Image img, - Image water, - Point waterPos, - ImageGraphicsHandler handler) - { - //尺寸检测 - if (water.Width > img.Width || water.Height > img.Height) - { - throw new ArgumentException("水印图片尺寸超过原图,无法生成水印!"); - } - - //绘制水印 - Graphics g = Graphics.FromImage(img); - g.DrawImage(water, waterPos.X, waterPos.Y); - - if (handler != null) - { - handler(img); - if (img == null) - { - throw new ArgumentException("不允许释放图片资源!"); - } - } - - //保存到内存流 - MemoryStream ms = new MemoryStream(); - img.Save(ms, img.RawFormat); - - //释放资源 - g.Dispose(); - water.Dispose(); - - byte[] bytes = ms.ToArray(); - ms.Dispose(); - - return bytes; - } - - - /// - /// 生成水印 - /// - /// 图片 - /// 水印 - /// 预置的水印位置 - /// 图像格式 - /// 处理图片 - /// 图片内存流 - public static byte[] MakeWatermarkImage( - Image img, - Image water, - WatermarkPosition pos, - ImageGraphicsHandler handler) - { - int x; - int y; - - int xOffset = 5; //宽度偏移量 - int yOffset = 5; //高度偏移量 - switch (pos) - { - case WatermarkPosition.Bottom: - //正下方 - x = (img.Width - water.Width)/2; - y = img.Height - water.Height - yOffset; - break; - case WatermarkPosition.LeftBottom: - //左下方 - x = xOffset; - y = img.Height - water.Height - yOffset; - break; - case WatermarkPosition.Right: - //右方 - x = img.Width - water.Width - xOffset; - y = (img.Height - water.Height)/2; - break; - case WatermarkPosition.Middle: - //正中 - x = (img.Width - water.Width)/2; - y = (img.Height - water.Height)/2; - break; - case WatermarkPosition.Left: - //左边 - x = xOffset; - y = (img.Height - water.Height)/2; - break; - case WatermarkPosition.RightTop: - //右上方 - x = img.Width - water.Width - xOffset; - y = yOffset; - break; - case WatermarkPosition.Top: - //正上方 - x = (img.Width - water.Width)/2; - y = yOffset; - break; - case WatermarkPosition.LeftTop: - //左上方 - x = xOffset; - y = yOffset; - break; - - default: - case WatermarkPosition.Default: - case WatermarkPosition.RightBottom: - //右下角 - x = img.Width - water.Width - xOffset; - y = img.Height - water.Height - yOffset; - break; - } - - return MakeWatermarkImage(img, water, new Point(x, y), handler); - } - - - /// - /// 生成水印 - /// - /// 图片 - /// 水印 - /// 预置的水印位置 - /// 图片内存流 - public static byte[] MakeWatermarkImage(Image img, Image water, WatermarkPosition pos) - { - return MakeWatermarkImage(img, water, pos, null); - } - - /// - /// 生成水印并保存到文件 - /// - /// 图片路径 - /// 水印路径 - /// 水印位置 - /// 图片处理 - /// - public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos, - ImageGraphicsHandler handler) - { - Image img = Image.FromFile(imgPath), - water = Image.FromFile(waterPath); - - byte[] bytes = MakeWatermarkImage(img, water, pos, handler); - img.Dispose(); - return bytes; - } - - /// - /// 生成水印并保存到文件 - /// - /// 图片路径 - /// 水印路径 - /// 水印位置 - /// - public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos) - { - return MakeWatermarkImage(imgPath, waterPath, pos, null); - } - - #endregion - - #region 生成水印并保存文件 - - /// - /// 生成水印并保存到文件 - /// - /// 图片 - /// 水印 - /// 预置的水印位置 - public static void SaveWatermarkImage(Image img, Image water, string savePath, WatermarkPosition pos) - { - MakeWatermarkImage(img, water, pos, thumb => { thumb.Save(savePath, img.RawFormat); }); - - img.Dispose(); - } - - /// - /// 生成水印并保存到文件 - /// - /// 图片路径 - /// 水印路径 - /// 保存路径 - public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath) - { - MakeWatermarkImage(imgPath, waterPath, WatermarkPosition.Default, - img => { img.Save(savePath, img.RawFormat); }); - } - - /// - /// 生成水印并保存到文件 - /// - /// 图片路径 - /// 水印路径 - /// 保存路径 - public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath, WatermarkPosition pos) - { - MakeWatermarkImage(imgPath, waterPath, pos, img => { img.Save(savePath, img.RawFormat); }); - } - - #endregion - - #region 其他 - - /// - /// 自动上传文本中的图片 - /// - /// 文本内容 - /// 上传路径 - /// 上传结果信息 - //private static string AutoUpload(string content, string path) - //{ - // //自动保存远程图片 - // WebClient client = new WebClient(); - // //备用Reg: - // Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", RegexOptions.IgnoreCase); - // MatchCollection m = reg.Matches(content); - - // foreach (Match math in m) - // { - // string imgUrl = math.Groups[1].Value; - - // //在原图片名称前加YYMMDD重名名并上传 - - // Regex regName = new Regex(@"\w+.(?:jpg|gif|bmp|png)", RegexOptions.IgnoreCase); - - // string strNewImgName = DateTime.Now.ToShortDateString().Replace("-", "") + regName.Match(imgUrl).ToString(); - - // try - // { - // //保存图片 - // client.DownloadFile(imgUrl, (path + strNewImgName)); - // } - // catch - // { - // } - // finally - // { - - // } - // client.Dispose(); - // } - // return "远程图片保存成功,保存路径为ImgUpload/auto"; - //} - - #endregion - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs b/J6/src/core/J6.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs deleted file mode 100644 index 1d9f23c..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Drawing; - -namespace J6.DevFw.Framework.Graphic -{ - /// - /// 绘图处理 - /// - /// - public delegate void ImageGraphicsHandler(Image img); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Graphic/ImageSizeMode.cs b/J6/src/core/J6.DevFw.Core/Framework/Graphic/ImageSizeMode.cs deleted file mode 100644 index 5050388..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Graphic/ImageSizeMode.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace J6.DevFw.Framework.Graphic -{ - /// - /// 缩略图模式 - /// - public enum ImageSizeMode - { - /// - /// 固定尺寸,可能会变形 - /// - CustomSize = 1, - - /// - /// 裁剪 - /// - Cut = 2, - - /// - /// 根据宽度缩放 - /// - SuitWidth = 3, - - /// - /// 根据高度缩放 - /// - SuitHeight = 4, - - /// - /// 自动适配 - /// - AutoSuit = 5, - - /// - /// 自动填充 - /// - FillFit = 6 - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Graphic/WatermarkPosition.cs b/J6/src/core/J6.DevFw.Core/Framework/Graphic/WatermarkPosition.cs deleted file mode 100644 index cb59962..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Graphic/WatermarkPosition.cs +++ /dev/null @@ -1,58 +0,0 @@ -namespace J6.DevFw.Framework.Graphic -{ - /// - /// 水印位置 - /// - public enum WatermarkPosition : int - { - /// - /// 默认 - /// - Default = 0, - - /// - /// 左上方 - /// - LeftTop = 1, - - /// - /// 正上方 - /// - Top = 2, - - /// - /// 右上方 - /// - RightTop = 3, - - /// - /// 左边 - /// - Left = 4, - - /// - /// 正中 - /// - Middle = 5, - - /// - /// 右边 - /// - Right = 6, - - /// - /// 左下方 - /// - LeftBottom = 7, - - /// - /// 正下方 - /// - Bottom = 8, - - /// - /// 右下方 - /// - RightBottom = 9 - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/IO/IoUtil.cs b/J6/src/core/J6.DevFw.Core/Framework/IO/IoUtil.cs deleted file mode 100644 index 77a0efe..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/IO/IoUtil.cs +++ /dev/null @@ -1,128 +0,0 @@ -using System; -using System.IO; - -namespace J6.DevFw.Framework.IO -{ - public static class IoUtil - { - /// - /// 计算文件的 MD5 值 - /// - /// 要计算 MD5 值的文件名和路径 - /// MD5 值16进制字符串 - public static string GetFileMD5(string fileName) - { - return HashFile(fileName, "md5"); - } - - /// - /// 计算文件的 sha1 值 - /// - /// 要计算 sha1 值的文件名和路径 - /// sha1 值16进制字符串 - public static string GetFileSHA1(string fileName) - { - return HashFile(fileName, "sha1"); - } - - /// - /// 计算文件的哈希值 - /// - /// 要计算哈希值的文件名和路径 - /// 算法:sha1,md5 - /// 哈希值16进制字符串 - private static string HashFile(string fileName, string algName) - { - if (!System.IO.File.Exists(fileName)) - return string.Empty; - - System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, - System.IO.FileAccess.Read); - byte[] hashBytes = HashData(fs, algName); - fs.Close(); - return ByteArrayToHexString(hashBytes); - } - - /// - /// 计算哈希值 - /// - /// 要计算哈希值的 Stream - /// 算法:sha1,md5 - /// 哈希值字节数组 - private static byte[] HashData(System.IO.Stream stream, string algName) - { - System.Security.Cryptography.HashAlgorithm algorithm; - if (algName == null) - { - throw new ArgumentNullException("algName 不能为 null"); - } - if (string.Compare(algName, "sha1", true) == 0) - { - algorithm = System.Security.Cryptography.SHA1.Create(); - } - else - { - if (string.Compare(algName, "md5", true) != 0) - { - throw new Exception("algName 只能使用 sha1 或 md5"); - } - algorithm = System.Security.Cryptography.MD5.Create(); - } - return algorithm.ComputeHash(stream); - } - - /// - /// 字节数组转换为16进制表示的字符串 - /// - private static string ByteArrayToHexString(byte[] buf) - { - return BitConverter.ToString(buf).Replace("-", ""); - } - - - - /// - /// 设置目录权限 - /// - /// - public static void SetDirCanWrite(string dirPath) - { - DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, dirPath)); - if (dir.Exists) - { - if ((dir.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) - { - dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; - } - } - else - { - Directory.CreateDirectory(dir.FullName).Create(); - } - } - - /// - /// 设置目录隐藏 - /// - /// - public static void SetDirHidden(string dirPath) - { - if (!FwCtx.Mono()) - { - DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, dirPath)); - if (!dir.Exists) - { - Directory.CreateDirectory(dir.FullName).Create(); - dir.Attributes = dir.Attributes & FileAttributes.Hidden; - } - else - { - if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.ReadOnly) - { - dir.Attributes = dir.Attributes & FileAttributes.Hidden; - } - } - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/IndexOfHandler.cs b/J6/src/core/J6.DevFw.Core/Framework/IndexOfHandler.cs deleted file mode 100644 index c24499f..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/IndexOfHandler.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace J6.DevFw.Framework -{ - /// - /// 获取索引位置的委托 - /// - /// - /// - /// - public delegate Int32 IndexOfHandler(T t); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/InnerAppDomainResolver.cs b/J6/src/core/J6.DevFw.Core/Framework/InnerAppDomainResolver.cs deleted file mode 100644 index 2d818ee..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/InnerAppDomainResolver.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.IO; -using System.Reflection; - -namespace J6.DevFw.Framework -{ - internal class InnerAppDomainResolver - { - public static void Resolve(String resolveFullDir) - { - AppDomain domain = AppDomain.CurrentDomain; - if (String.IsNullOrEmpty(resolveFullDir)) - { - resolveFullDir = domain.BaseDirectory + FwCtx.Variables.AssemblyPath; - } - // - //设为隐藏目录 - // - domain.AssemblyResolve+= delegate(object sender, ResolveEventArgs args) - { - - string filePath = String.Concat(resolveFullDir, args.Name.Split(',')[0], ".dll"); - - //File.WriteAllText(directory+DateTime.Now.Millisecond.ToString()+".txt",args.Name+"//"+filePath); - - if(!File.Exists(filePath)) - { - return null; - } - else - { - return Assembly.Load(File.ReadAllBytes(filePath)); - } - }; - } - } -} diff --git a/J6/src/core/J6.DevFw.Core/Framework/Interface/ICallable.cs b/J6/src/core/J6.DevFw.Core/Framework/Interface/ICallable.cs deleted file mode 100644 index 200163b..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Interface/ICallable.cs +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2013/12/8 - * Time: 20:58 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; - -namespace J6.DevFw.Framework.Interface -{ - /// - /// Description of ICallable. - /// - public interface ICallable - { - /// - /// 获取可调用的对象 - /// - /// - Object GetCalledObject(); - - /// - /// 调用方法 - /// - /// - /// - /// - Object Call(string method, params object[] parameters); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/JsonSerializer.cs b/J6/src/core/J6.DevFw.Core/Framework/JsonSerializer.cs deleted file mode 100644 index 949e93a..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/JsonSerializer.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.IO; -using System.Runtime.Serialization.Json; -using System.Text; - -namespace J6.DevFw.Framework -{ - public static class JsonSerializer - { - public static Encoding Encoding = Encoding.UTF8; - - public static string SerializerObject(T t) - { - using (var ms = new MemoryStream()) - { - DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); - ser.WriteObject(ms, t); - string result = Encoding.GetString(ms.ToArray()); - ser = null; - return result; - } - } - - public static T DeserializerObject(string json) - { - using (var ms = new MemoryStream(Encoding.GetBytes(json))) - { - DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); - - T t = (T) ser.ReadObject(ms); - ser = null; - return t; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/LogFile.cs b/J6/src/core/J6.DevFw.Core/Framework/LogFile.cs deleted file mode 100644 index c430df8..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/LogFile.cs +++ /dev/null @@ -1,105 +0,0 @@ -// -// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. -// -// Project: OPS -// FileName : LogFile.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2011/11/1 20:23:38 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.IO; -using System.Text; - -namespace J6.DevFw.Framework -{ - public class LogFile - { - private string filePath; - private bool printPrefix; - private Encoding _encoding; - - //种子,用于判断 - public int Seed { get; set; } - - //编码 - public Encoding FileEncoding - { - get { return this._encoding ?? (this._encoding = Encoding.UTF8); } - set { this._encoding = value; } - } - - public LogFile(string filePath) : this(filePath, false) - { - } - - public LogFile(string filePath, bool printPrefix) - { - this.printPrefix = printPrefix; - this.filePath = filePath; - if (!File.Exists(filePath)) - { - File.Create(filePath).Dispose(); - } - } - - /// - /// 填充内容 - /// - /// - /* [Obsolete] - public void Append(string text) - { - byte[] data = Encoding.UTF8.GetBytes(text); - FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); - - if (fs.CanWrite) - { - fs.Write(data, 0, data.Length); - fs.Flush(); - } - fs.Dispose(); - - } - */ - public void Print(Byte[] bytes) - { - FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); - - if (fs.CanWrite) - { - if (this.printPrefix) - { - byte[] data = this.FileEncoding.GetBytes(string.Format("{0:yyyy-MM-dd HH:mm:ss ", DateTime.Now)); - fs.Write(data, 0, data.Length); - } - fs.Write(bytes, 0, bytes.Length); - } - fs.Dispose(); - } - - public void Println(string text) - { - this.Print(this.FileEncoding.GetBytes(text + System.Environment.NewLine)); - } - - public void Printf(string format, params object[] data) - { - this.Print(this.FileEncoding.GetBytes(string.Format(format, data))); - } - - /// - /// 清空内容 - /// - /// - public void Truncate() - { - FileStream fs = new FileStream(filePath, FileMode.Truncate, FileAccess.Write); - fs.Dispose(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Net/FtpClient.cs b/J6/src/core/J6.DevFw.Core/Framework/Net/FtpClient.cs deleted file mode 100644 index d88b668..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Net/FtpClient.cs +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2010 OPS,All right reseved . - * name : ftpclient - * author : newmin - * date : 2010/12/13 - */ - -using System; -using System.IO; -using System.Net; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Framework.Net -{ - public class FtpClient - { - private FtpWebRequest request; - private string ftp; - - /// - /// 服务器 - /// - public string Server { get; set; } - - /// - /// FTP端口 - /// - public int Port { get; set; } - - /// - /// 用户名 - /// - public string UserName { get; set; } - - /// - /// 密码 - /// - public string Password { get; set; } - - /// - /// 根目录 - /// - public string RootPath { get; set; } - - /// - /// FTP请求 - /// - public FtpWebRequest Request - { - get { return request; } - } - - public FtpClient(string server, int? port, string userName, string password, string rootPath) - { - this.Server = server; - this.Port = port ?? 21; - this.RootPath = rootPath ?? "/"; - this.UserName = userName; - this.Password = password; - ftp = "ftp://" + server + ":" + port + rootPath; - } - - public FtpClient(string server, string userName, string password) - { - this.Server = server; - this.Port = 21; - this.RootPath = "/"; - this.UserName = userName; - this.Password = password; - ftp = "ftp://" + server + ":" + Port + RootPath; - } - - /// - /// 连接FTP - /// - /// 返回是否连接成功 - public bool Connection() - { - try - { - request = WebRequest.Create(ftp) as FtpWebRequest; - request.KeepAlive = false; - request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; - request.Credentials = new NetworkCredential(UserName, Password); - FtpWebResponse fr = request.GetResponse() as FtpWebResponse; - using (StreamReader sr = new StreamReader(fr.GetResponseStream())) - { - if (!String.IsNullOrEmpty(sr.ReadToEnd())) return true; - } - return false; - } - catch - { - throw new Exception("FTP信息不正确!请检查FTP地址,端口和用户是否正确!"); - } - } - - /// - /// 是否存在文件或目录 - /// - /// - /// - public bool Exists(string folderOrFileName) - { - request = WebRequest.Create(ftp) as FtpWebRequest; - request.Credentials = new NetworkCredential(UserName, Password); - request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; - using (StreamReader rd = new StreamReader(request.GetResponse().GetResponseStream())) - { - /* - dir = rd.ReadToEnd(); - System.Web.HttpContext.Current.Response.Write(dir + "
" + count.ToString()); - */ - string line; - while ((line = rd.ReadLine()) != null) - { - GroupCollection gc = new Regex("[^\\s]*$").Match(line).Groups; - if (gc.Count != 1) return false; - if (gc[0].Value == folderOrFileName) return true; - } - return false; - } - } - - /// - /// 创建文件夹 - /// - /// - public void CreateDirectory(string floderName) - { - request = WebRequest.Create(ftp + floderName) as FtpWebRequest; - request.Credentials = new NetworkCredential(UserName, Password); - request.Method = WebRequestMethods.Ftp.MakeDirectory; - request.GetResponse(); - } - - public void UploadFile(string filePath, Stream fileStream) - { - const int bufferLength = 1; - byte[] buffer = new byte[bufferLength]; - request = WebRequest.Create(ftp + filePath) as FtpWebRequest; - request.Method = WebRequestMethods.Ftp.UploadFile; - request.Credentials = new NetworkCredential(UserName, Password); - request.KeepAlive = false; - request.UseBinary = true; - Stream requestStream = request.GetRequestStream(); - int readBytes = 0; - do - { - readBytes = fileStream.Read(buffer, 0, bufferLength); - if (readBytes != 0) - requestStream.Write(buffer, 0, bufferLength); - } while (readBytes != 0); - - requestStream.Dispose(); - fileStream.Dispose(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Net/HttpClient.cs b/J6/src/core/J6.DevFw.Core/Framework/Net/HttpClient.cs deleted file mode 100644 index ce1f979..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Net/HttpClient.cs +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2010 OPS,All right reseved . - * name : ftpclient - * author : newmin - * date : 2010/12/13 - */ - -using System; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Text; - -namespace J6.DevFw.Framework.Net -{ - public class HttpClient - { - private string uri; - - private HttpClient(string uri) - { - this.uri = uri; - } - - public static string Post(string url, string postData, CookieCollection cookies) - { - HttpWebRequest request = null; - //如果是发送HTTPS请求 - if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) - { - ServicePointManager.ServerCertificateValidationCallback = - new RemoteCertificateValidationCallback(CheckValidationResult); - request = WebRequest.Create(url) as HttpWebRequest; - if (request == null) return null; - request.ProtocolVersion = HttpVersion.Version10; - } - else - { - request = WebRequest.Create(url) as HttpWebRequest; - if (request == null) return null; - } - - //request.Accept = "*/*"; - request.Method = "POST"; - //httpwebrequest控件有一个透明过程,先向服务方查询url是否存在而不发送POST的内容, - //服务器如果证实url是可访问的,才发送POST,早期的Apache就认为这是一种错误,而IIS却可以正确应答 - //加上下面这一句将查询服务后马上post数据 - //System.Net.ServicePointManager.Expect100Continue = false; - //Expect:100-continue - System.Net.ServicePointManager.Expect100Continue = false; - request.ContentType = "application/x-www-form-urlencoded"; - request.Timeout = 10000; - - //添加cookie - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - - //发送请求 - byte[] data = Encoding.UTF8.GetBytes(postData); - request.ContentLength = data.Length; - Stream requestStream = request.GetRequestStream(); - requestStream.Write(data, 0, data.Length); - requestStream.Dispose(); - //获取响应 - HttpWebResponse response = request.GetResponse() as HttpWebResponse; - if (response.StatusCode == HttpStatusCode.OK) - { - using (StreamReader sr = new StreamReader(response.GetResponseStream())) - { - return sr.ReadToEnd(); - } - } - else - { - return "Error:" + response.StatusCode.ToString(); - } - } - - public string Post(string postData, CookieCollection cookies) - { - return Post(this.uri, postData, cookies); - } - - private static bool CheckValidationResult(object sender, X509Certificate certificate, - X509Chain chain, SslPolicyErrors sslPolicyErrors) - { - //总是接受 - return true; - } - - - /// - /// 下载文件(支持断点续传)并返回字节数组 - /// - /// - /// 上次接收的文件 - /// - public static byte[] DownloadFile(string url, byte[] fileBytes) - { - const int buffer = 32768; //32k - byte[] data = new byte[buffer]; - int cread; - int cTotal; - - MemoryStream ms = fileBytes == null || fileBytes.Length == 0 - ? new MemoryStream() - : new MemoryStream(fileBytes); - - string remoteAddr = url; - - int fileLength = (int) ms.Length; - - HttpWebRequest wr = WebRequest.Create(remoteAddr) as HttpWebRequest; - if (fileLength != 0) - { - wr.AddRange(fileLength); - } - - try - { - WebResponse rsp = wr.GetResponse(); - - Stream st = rsp.GetResponseStream(); - - cTotal = (int) rsp.ContentLength; - - while ((cread = st.Read(data, 0, buffer)) != 0) - { - ms.Write(data, 0, cread); - } - - byte[] streamArray = ms.ToArray(); - ms.Dispose(); - - return streamArray; - } - catch - { - } - return null; - } - - // - //TODO:做一个支持断电下载的方法 - // - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Security/Md5Crypto.cs b/J6/src/core/J6.DevFw.Core/Framework/Security/Md5Crypto.cs deleted file mode 100644 index b71aaa0..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Security/Md5Crypto.cs +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2013/12/12 - * Time: 7:35 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Text; - -namespace J6.DevFw.Framework.Security -{ - /// - /// Description of Md5Crypto. - /// - public class Md5Crypto - { - /// - /// 用md5加密 - /// - /// - /// - public static string EncodeMD5(String str) - { - StringBuilder sb = new StringBuilder(); - var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 - // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  - byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); - foreach (byte b in s) - { - sb.Append(b.ToString("x2")); - } - return sb.ToString(); - } - - /// - /// 16位MD5加密 - /// - /// - /// - public static string Encode16MD5(String str) - { - //取32位的中间部分 - var md5 = System.Security.Cryptography.MD5.Create(); - return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(str)), 4, 8).Replace("-", String.Empty); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Service/IService.cs b/J6/src/core/J6.DevFw.Core/Framework/Service/IService.cs deleted file mode 100644 index 443f526..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Service/IService.cs +++ /dev/null @@ -1,24 +0,0 @@ -/* * - * name : 服务接口 - * author : OPS newmin - * date : 09/29 2010 - * */ - -using System; - -namespace J6.DevFw.Framework.Service -{ - /// - /// 服务接口 - /// - /// - internal interface IService where T : MarshalByRefObject - { - /// - /// 获取服务的实例 - /// - /// - /// - T GetInstance(); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Service/ServiceManager.cs b/J6/src/core/J6.DevFw.Core/Framework/Service/ServiceManager.cs deleted file mode 100644 index 6e48a36..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Service/ServiceManager.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* * - * name :服务管理类 - * author :OPS newmin - * date :09/20 2010 - * note :继承此类需在子类的静态构造函数中添加代码,如下: - * serviceDict.Add(typeof(IP), ConfigurationManager.AppSettings["srv_ip"]); - * */ - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Xml; - -namespace J6.DevFw.Framework.Service -{ - /// - /// 服务管理 - /// - /// 类型 - public abstract class ServiceManager : IService where T : MarshalByRefObject - { - /// - /// 服务配置字典 - /// - protected static IDictionary serviceDict = new Dictionary(); - - /// - /// 服务配置链接 - /// - protected static IDictionary serviceUriDict = new Dictionary(); - - /// - /// 根据配置文件初始化服务 - /// - /// - protected static void Init(string configFile) - { - XmlDocument doc = new XmlDocument(); - doc.Load(configFile); - XmlNodeList xs = doc.SelectNodes("/serviceConfig/service"); - //服务的类型 - string[] ta; //TypeArr - Assembly a; - foreach (XmlNode xn in xs) - { - ta = xn.Attributes["type"].Value.Split(','); - a = Assembly.Load(ta[1]); - serviceDict.Add(a.GetType(ta[0], true, true), xn.Attributes["objectUri"].Value); - } - //获取Uri - xs = doc.SelectNodes("/serviceConfig/serviceUri/add"); - foreach (XmlNode xn in xs) - { - serviceUriDict.Add(xn.Attributes["name"].Value, xn.Attributes["uri"].Value); - } - } - - #region IService 成员 - - public T GetInstance() - { - Type type = typeof (T); - return (T) Activator.GetObject(typeof (T), serviceDict[typeof (T)]); - } - - #endregion - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/SettingFile.cs b/J6/src/core/J6.DevFw.Core/Framework/SettingFile.cs deleted file mode 100644 index b1a2377..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/SettingFile.cs +++ /dev/null @@ -1,237 +0,0 @@ -// -// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. -// -// Project: OPS.Web.JSON -// FileName : JsonDictionaryFile.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2011/11/26 20:01:29 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Xml; - -namespace J6.DevFw.Framework -{ - /// - /// 设置数据文件 - /// - public class SettingFile - { - private readonly string _filePath; - private readonly XmlDocument _xdoc; - private readonly XmlNode _rootNode; - - /// - /// - /// - /// - public SettingFile(string filePath) - { - this._xdoc = new XmlDocument(); - this._filePath = filePath; - - //不存在,则创建 - if (!File.Exists(this._filePath)) - { - File.Create(filePath).Dispose(); - const string initData = "\r\n\r\n"; - - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - - //读取文档 - using (TextReader tr = new StreamReader(this._filePath)) - { - _xdoc.LoadXml(tr.ReadToEnd()); - tr.Dispose(); - this._rootNode = _xdoc.SelectSingleNode("/settings"); - } - } - - - /// - /// 是否包含某个键值 - /// - /// - /// - public bool Contains(string key) - { - return this._rootNode.SelectSingleNode(String.Format("/settings/add[@key='{0}']", key)) != null; - } - - /// - /// 获取或设置指定键值的数据 - /// - /// - /// - public string this[string key] - { - get { return this.Get(key); } - set - { - this.Set(key, value); - } - } - - /// - /// Get the field value by key - /// - /// - - public string Get(String key) - { - XmlNode node = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (node == null) - { - throw new ArgumentOutOfRangeException("key", "no such key named \"" + key + "\""); - } - return node.InnerText; - } - - /// - /// Set field value, if not exits will add new one. - /// - /// - /// - /// - /// - public void Set(String key, String value) - { - XmlNode node = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (node == null) - { - this.Add(key,value??"",false); - return; - //throw new ArgumentOutOfRangeException("key", "no such key named \"" + key + "\""); - } - - - //如果不是文本注释,删除第一个节点并重新保存值 - if (node.FirstChild.Name == "#cdata-section") - { - XmlCDataSection xmlCDataSection = node.FirstChild as XmlCDataSection; - if (xmlCDataSection != null) xmlCDataSection.InnerText = value??""; - } - else - { - node.RemoveChild(node.FirstChild); - node.InsertBefore(_xdoc.CreateCDataSection(value??""), node.FirstChild); - } - } - - /// - /// 添加新的设置 - /// - [Obsolete] - public void Add(string key, string value) - { - this.Add(key, value, false); - } - - /// - /// 添加配置 - /// - /// - /// - /// 是否忽略已经存在的配置 - private void Add(string key, string value, bool ignoreExist) - { - //检查是否已经存在 - XmlNode _xn; - _xn = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (_xn != null) - { - if (ignoreExist) - { - return; - } - else - { - throw new ArgumentException(String.Format("已经存在一个名为{0}的节点!", key)); - } - } - - XmlNode root = this._rootNode; - - - XmlNode xn = _xdoc.CreateElement("add"); - - //添加key属性 - XmlAttribute xa = _xdoc.CreateAttribute("key"); - xa.Value = key; - if (xn.Attributes != null) xn.Attributes.Append(xa); - - //添加JSON内容 - xn.AppendChild(_xdoc.CreateCDataSection(value)); - - //将新元素添加到DOM - root.AppendChild(xn); - } - - /// - /// 移除指定的设置 - /// - /// - public void Remove(string key) - { - XmlNode _xn = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (_xn != null) - { - this._rootNode.RemoveChild(_xn); - } - } - - - /// - /// 搜索键值并以字典的形式返回 - /// - /// - /// - public IDictionary SearchKey(string keyword) - { - IDictionary dict = new Dictionary(); - - XmlNodeList node = this._rootNode.SelectNodes(String.Format("add[contains(@key,'{0}')]", keyword)); - - if (node != null && node.Count != 0) - { - foreach (XmlNode xn in node) - { - if (xn.Attributes != null) - { - dict.Add(xn.Attributes["key"].Value, xn.InnerText); - } - } - } - - return dict; - } - - /// - /// 保存到文件中 - /// - public void Flush() - { - /* - using (TextWriter tr = new StreamWriter(this.filePath)) - { - tr.Write(xmlContent); - tr.Flush(); - tr.Dispose(); - }*/ - - _xdoc.Save(this._filePath); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/StringCreatorHandler.cs b/J6/src/core/J6.DevFw.Core/Framework/StringCreatorHandler.cs deleted file mode 100644 index 36aa9f9..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/StringCreatorHandler.cs +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 由SharpDevelop创建。 - * 用户: newmin - * 日期: 2013/11/24 - * 时间: 17:48 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; - -namespace J6.DevFw.Framework -{ - /// - /// Description of StringCreatorHandler. - /// - public delegate String StringCreatorHandler(); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs deleted file mode 100644 index 9c945c8..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Text; - -namespace J6.DevFw.Framework.TaskBox.HttpSync -{ - /// - /// HTTP - /// - public class HttpSimpleRequest - { - private static readonly string DefaultUserAgent = - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; - - /// - /// GETʽHTTP - /// - /// URL - /// ijʱʱ - /// ĿͻϢΪ - /// ͬHTTP͵CookieϢҪ֤Ϊ - /// - public static HttpWebResponse CreateGetHttpResponse( - string url, - string userAgent, - CookieCollection cookies) - { - if (string.IsNullOrEmpty(url)) - { - throw new ArgumentNullException("url"); - } - HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; - request.Method = "GET"; - request.UserAgent = DefaultUserAgent; - if (!string.IsNullOrEmpty(userAgent)) - { - request.UserAgent = userAgent; - } - - //if (timeout.HasValue) - //{ - // request.Timeout = timeout.Value; - //} - - - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - return request.GetResponse() as HttpWebResponse; - } - - - /// - /// POSTʽHTTP - /// - /// URL - /// ͬPOSTIJƼֵֵ - /// ijʱʱ - /// ĿͻϢΪ - /// HTTPʱõı - /// ͬHTTP͵CookieϢҪ֤Ϊ - /// - public static HttpWebResponse CreatePostHttpResponse( - string url, - Hashtable parameters, - string userAgent, - Encoding requestEncoding, - CookieCollection cookies) - { - if (string.IsNullOrEmpty(url)) - { - throw new ArgumentNullException("url"); - } - if (requestEncoding == null) - { - throw new ArgumentNullException("requestEncoding"); - } - HttpWebRequest request = null; - //ǷHTTPS - if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) - { - ServicePointManager.ServerCertificateValidationCallback = - new RemoteCertificateValidationCallback(CheckValidationResult); - request = WebRequest.Create(url) as HttpWebRequest; - request.ProtocolVersion = HttpVersion.Version10; - } - else - { - request = WebRequest.Create(url) as HttpWebRequest; - } - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - - if (!string.IsNullOrEmpty(userAgent)) - { - request.UserAgent = userAgent; - } - else - { - request.UserAgent = DefaultUserAgent; - } - - //if (timeout.HasValue) - //{ - // request.Timeout = timeout.Value; - //} - - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - //ҪPOST - if (!(parameters == null || parameters.Count == 0)) - { - StringBuilder buffer = new StringBuilder(); - int i = 0; - foreach (string key in parameters.Keys) - { - if (i > 0) - { - buffer.AppendFormat("&{0}={1}", key, parameters[key]); - } - else - { - buffer.AppendFormat("{0}={1}", key, parameters[key]); - } - i++; - } - byte[] data = requestEncoding.GetBytes(buffer.ToString()); - using (Stream stream = request.GetRequestStream()) - { - stream.Write(data, 0, data.Length); - } - } - return request.GetResponse() as HttpWebResponse; - } - - private static bool CheckValidationResult(object sender, - X509Certificate certificate, - X509Chain chain, - SslPolicyErrors errors) - { - //ǽ - return true; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs deleted file mode 100644 index 341b215..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using System.Net; -using System.Text; - -namespace J6.DevFw.Framework.TaskBox.HttpSync -{ - /// - /// Httpͻ - /// - public class HttpTaskClient : ITaskExecuteClient - { - private string server; - private object token; - - public HttpTaskClient(string serverUrl, string token) - { - this.server = serverUrl; - this.token = token; - } - - public string ClientName - { - get { return "HttpTaskClient"; } - } - - public void Execute(ITask task) - { - foreach (Hashtable data in task.Datas) - { - this.Post(task, data); - } - } - - private void Post(ITask task, Hashtable data) - { - if (data.ContainsKey("auth_token")) - data.Add("auth_token", this.token); - - string url = this.server - + "?auth_token=" + this.token - + "&action=" + task.TaskName; - - try - { - HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( - url, - data, - null, - Encoding.UTF8, - null - ); - - StreamReader sr = new StreamReader(rsp.GetResponseStream()); - string result = sr.ReadToEnd(); - - sr.BaseStream.Dispose(); - sr.Dispose(); - - task.SetState(this, TaskState.Ok, TaskMessageParser.ConvertToSyncMessage(result)); - } - catch (Exception exc) - { - task.SetState(this, TaskState.Error, new TaskMessage - { - Result = false, - Message = exc.Message - }); - } - } - - public bool TestConnect() - { - try - { - string url = this.server - + "?auth_token=" + this.token - + "&action=connect"; - - HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( - url, - new Hashtable(), - null, - Encoding.UTF8, - null - ); - return true; - } - catch (Exception exc) - { - return false; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITask.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITask.cs deleted file mode 100644 index f957085..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITask.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// - /// - public interface ITask - { - /// - /// ״̬ıʱ,֪ͨ - /// - event TaskStateChangedHandler StateChanged; - - /// - /// (ʶĿʶ) - /// - String TaskName { get; set; } - - /// - /// - /// - IList Datas { get; } - - /// - /// ״̬ - /// - TaskState State { get; } - - /// - /// ״̬ - /// - /// - /// ¼Դ - /// - void SetState(ITaskExecuteClient source, TaskState state, TaskMessage msg); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs deleted file mode 100644 index c0fbd22..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; - -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// 洢(ڴ洢񣬴洢״̬) - /// - public interface ITaskBoxStorage - { - /// - /// ӹ - /// - /// - void AppendSuppendTask(ITask task); - - /// - /// ״̬ıʱ״̬ - /// - /// - /// - void SaveTaskChangedState(ITask task, TaskMessage message); - - /// - /// ȡе - /// - /// - IList GetSyncTaskQueue(); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskClient.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskClient.cs deleted file mode 100644 index 2ef1dd3..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskClient.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace J6.DevFw.Framework.TaskBox -{ - public interface ITaskExecuteClient - { - void Execute(ITask task); - string ClientName { get; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs deleted file mode 100644 index 6f6c928..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// ־¼ṩ - /// - public interface ITaskLogProvider - { - /// - /// 洢 - /// - ITaskBoxStorage Storage { get; } - - /// - /// ¼״̬ - /// - /// - /// - void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Task.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Task.cs deleted file mode 100644 index 39e0cb0..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Task.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// - /// - public class Task : ITask - { - public event TaskStateChangedHandler StateChanged; - private readonly IList _dataList; - private TaskState _state = TaskState.Default; - - public Task() - { - this._dataList = new List(); - } - - public Task(string taskName, params Hashtable[] datas) - : this() - { - this.TaskName = taskName; - if (datas != null) - { - foreach (Hashtable data in datas) - { - if (data != null) - { - this._dataList.Add(data); - } - } - } - } - - /// - /// - /// - public String TaskName { get; set; } - - /// - /// - /// - public IList Datas - { - get { return this._dataList; } - } - - - /// - /// ״̬ - /// - public TaskState State - { - get { return this._state; } - } - - - public void SetState(ITaskExecuteClient source, TaskState state, TaskMessage message) - { - this._state = state; - - if (this.StateChanged != null) - { - this.StateChanged(source, this, message); - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskBox.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskBox.cs deleted file mode 100644 index 968d5be..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskBox.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Threading; - -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// - /// - public class TaskBox - { - /// - /// ߳ - /// - private int _threadNum = 5; - - private readonly TaskQueue _taskManager; - private Thread _serviceThread; - - /// - /// ύĴ - /// - public event TaskPostingHandler OnTaskExecuting; - - /// - /// 񷵻Ϣ - /// - public event TaskMessageHandler OnNotifing; - - /// - /// ĬϹ - /// - private int _suppend_minseconds = 10000; - - public TaskBox(ITaskBoxStorage storage, - ITaskLogProvider logProvider, - int threadNum) - { - this.Storage = storage; - this.Log = logProvider; - this._threadNum = threadNum; - this._taskManager = new TaskQueue(this); - - //¼־ - //this.TaskStateChanged += this.Log.LogTaskState; - } - - public TaskBox(ITaskBoxStorage storage) - : this(storage, null, 5) - { - } - - public TaskBox(ITaskBoxStorage storage, int threadNum) - : this(storage, null, threadNum) - { - } - - - /// - /// ݴ洢 - /// - public ITaskBoxStorage Storage { get; private set; } - - /// - /// ־ṩ - /// - public ITaskLogProvider Log { get; private set; } - - /// - /// ֪ͨs - /// - /// - /// - public void Notifing(object source, string message) - { - if (this.OnNotifing != null) - { - this.OnNotifing(source, message); - } - } - - public void StartWork() - { - //box - _serviceThread = new Thread(() => - { - try - { - _work(); - } - catch (Exception exc) - { - this.OnNotifing(this, "[Crash]:" + exc.Message); - } - }); - _serviceThread.Start(); - - this.Notifing(_serviceThread, "[Start]:Task service is running!"); - } - - /// - /// ֹͣ - /// - public void StopWork() - { - //ȴִ߳ - //serviceThread.Join(); - if (_serviceThread != null) - { - _serviceThread.Abort(); - } - this.Notifing(_serviceThread, "[Stop]:Task service is stoped!"); - } - - private void _work() - { - do - { - ITask task = this._taskManager.GetNextTask(); - if (task == null) - { - // - if (Thread.CurrentThread.ThreadState == ThreadState.Running) - { - //Thread.Sleep(this._suppend_minseconds); - continue; - } - break; - } - - if (this.OnTaskExecuting != null) - { - new Thread(() => { this.OnTaskExecuting(task); }).Start(); - } - } while (true); - } - - public int TaskCount - { - get { return _taskManager.TaskCount; } - } - - /// - /// 뵽 - /// - /// - /// - public virtual void RegistTask( - ITask task, - TaskStateChangedHandler handler) - { - this._taskManager.RegistTask(task, handler); - } - - - public virtual void RegistContinuTasks( - TaskBuildHandler taskBuilder, - TaskStateChangedHandler handler, - int seconds) - { - this._taskManager.RegistContinuTasks(taskBuilder, handler, seconds); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessage.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessage.cs deleted file mode 100644 index 492cf9a..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessage.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections; - -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// Ϣ - /// - [Serializable] - public class TaskMessage - { - /// - /// ʧܽ - /// - public static TaskMessage Fault = new TaskMessage {Result = false, Data = null, Message = null}; - - - /// - /// ɹ - /// - public static TaskMessage Ok = new TaskMessage {Result = true, Data = null, Message = null}; - - /// - /// - /// - public bool Result { get; set; } - - /// - /// Ϣ - /// - public String Message { get; set; } - - /// - /// - /// - public Hashtable Data { get; set; } - - public override string ToString() - { - return TaskMessageParser.ConvertSyncMessageToString(this); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs deleted file mode 100644 index fba8c62..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; - -namespace J6.DevFw.Framework.TaskBox -{ - public class TaskMessageParser - { - public static string ConvertSyncMessageToString(TaskMessage message) - { - return JsonSerializer.SerializerObject(message); - } - - /// - /// JsonַתΪSyncMessage - /// - /// - /// - public static TaskMessage ConvertToSyncMessage(string message) - { - if (!String.IsNullOrEmpty(message)) - { - return JsonSerializer.DeserializerObject(message); - } - return default(TaskMessage); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskQueue.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskQueue.cs deleted file mode 100644 index 735c3ef..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskQueue.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; - -namespace J6.DevFw.Framework.TaskBox -{ - internal class TaskQueue - { - private TaskBox _syncBox; - private Queue tasks = new Queue(); - - public TaskQueue(TaskBox box) - { - this._syncBox = box; - - //ӵһδݿ - this.upgradeStackFromStorage(); - } - - /// - /// - /// - public int TaskCount - { - get { return this.tasks.Count; } - } - - public ITask GetNextTask() - { - if (tasks.Count == 0) - return null; - - while (tasks.Count != 0) - { - ITask task = tasks.Dequeue(); - if (task != null) return task; - } - return null; - } - - /// - /// Ӵ洢и¶ - /// - private void upgradeStackFromStorage() - { - IList taskList = null; - - try - { - taskList = this._syncBox.Storage.GetSyncTaskQueue(); - } - catch (Exception exc) - { - this._syncBox.Notifing(this._syncBox.Storage, "[Error]:Ӵ洢лȡв" + exc.Message); - return; - } - - if (taskList != null) - { - foreach (ITask task in taskList) - { - this.tasks.Enqueue(task); - } - } - } - - internal void RegistTask(ITask task, - TaskStateChangedHandler behavior) - { - task.StateChanged += behavior; - task.StateChanged += this._syncBox.Log.LogTaskState; - this.tasks.Enqueue(task); - - task.SetState(null, TaskState.Created, new TaskMessage - { - Result = true, - Message = "Ѿ..." - }); - } - - - internal void RegistContinuTasks( - TaskBuildHandler taskBuilder, - TaskStateChangedHandler handler, - int minseconds) - { - new Thread(() => - { - while (true) - { - try - { - this.RegistTask(taskBuilder(), handler); - } - catch (Exception exc) - { - this._syncBox.Notifing(taskBuilder, "񴴽ʧ!"); - } - - Thread.Sleep(minseconds); - } - }).Start(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskState.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskState.cs deleted file mode 100644 index 90c7bcf..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskState.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// ״̬ - /// - public enum TaskState - { - /// - /// մ - /// - Created, - - /// - /// ɹ - /// - Ok, - - /// - /// ڲԭɵʧ - /// - Error, - - /// - /// жϻԭ - /// - Suppend, - Default - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs deleted file mode 100644 index 2d55450..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace J6.DevFw.Framework.TaskBox -{ - /// - /// ״̬ıʱ - /// - /// ı״̬Դ - /// - public delegate void TaskStateChangedHandler(ITaskExecuteClient source, ITask task, TaskMessage result); - - /// - /// - /// - /// - public delegate ITask TaskBuildHandler(); - - public delegate void TaskPostingHandler(ITask task); - - /// - /// Ϣ - /// - /// - /// - public delegate void TaskMessageHandler(object data, string message); - - public delegate void TaskBoxHandler(TaskBox taskBox); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs deleted file mode 100644 index cfd958d..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace J6.DevFw.Framework.TaskBox.Toolkit -{ - public class TaskBoxDbStorage : ITaskBoxStorage - { - public void AppendSuppendTask(ITask task) - { - throw new NotImplementedException(); - } - - - public void SaveTaskChangedState(ITask task, TaskMessage message) - { - //״̬ıʱ״̬ - //Ѿִгɹˣʧˡ - } - - - public IList GetSyncTaskQueue() - { - // - //TODO:ݿлȡ񣬲ʶ¼,HttpPost,eventжpost - // - - return new List(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs deleted file mode 100644 index 00f15b6..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace J6.DevFw.Framework.TaskBox.Toolkit -{ - public class TaskLogProvider : ITaskLogProvider - { - public TaskLogProvider(ITaskBoxStorage storage) - { - this.Storage = storage; - } - - public void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message) - { - //Լ¼־ - - if (this.Storage != null) - this.Storage.SaveTaskChangedState(task, message); - } - - public ITaskBoxStorage Storage { get; private set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs b/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs deleted file mode 100644 index 91041eb..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; - -namespace J6.DevFw.Framework.TaskBox.Toolkit -{ - /// - /// - /// - public class TaskService - { - private TaskBox _box; - //private static string _server; - //private static string _token; - private bool _isBooted; - - //public static void RegistServer(string server, string token) - //{ - // _server = server; - // _token = token; - //} - - public TaskBox Sington - { - get - { - if (_box == null) - { - throw new Exception("δ!"); - } - - return _box; - } - } - - /// - /// - /// - public void Start(TaskBoxHandler handler, ITaskBoxStorage storage, ITaskLogProvider logProvider) - { - if (_isBooted == true) - throw new Exception("Ѿ!"); - - if (_box == null) - { - if (storage == null) - { - storage = new TaskBoxDbStorage(); - } - - if (logProvider == null) - { - logProvider = new TaskLogProvider(storage); - } - - - _box = new TaskBox(storage, logProvider, 3); - - if (handler != null) - { - handler(_box); - } - - //if (String.IsNullOrEmpty(_server) - // || String.IsNullOrEmpty(_token)) - // throw new ArgumentNullException("ʹRegistServerעϢ!"); - //HttpSyncClient client = new HttpSyncClient(_server, _token); - - //if (client.TestConnect()) - //{ - // //ע¼ - // _box.OnTaskPosting += client.Post; - //} - //else - //{ - // throw new Exception("ʧ"); - //} - } - - _isBooted = true; - _box.StartWork(); - } - - /// - /// ,ʹõĴ洢־¼ - /// - public void Start(TaskBoxHandler handler) - { - Start(handler, null, null); - } - - - public void Stop() - { - _box.StopWork(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Text/ChineseSpell.cs b/J6/src/core/J6.DevFw.Core/Framework/Text/ChineseSpell.cs deleted file mode 100644 index 43e8197..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Text/ChineseSpell.cs +++ /dev/null @@ -1,1680 +0,0 @@ -// -// ChineseSpell - A Chinese pinyin library -// Copyright (C) 2011 S1N1.COM,All rights reseved. -// -// Principle:http://tonyqus.cnblogs.com/archive/2005/10/22/260000.html -// - -using System; -using System.Text; - -namespace J6.DevFw.Framework.Text -{ - /// - /// 提供用于设置转换选项的枚举值。 - /// - [Flags] - public enum SpellOptions - { - /// - /// 只转换拼音首字母,默认转换全部 - /// - FirstLetterOnly = 1, //只转换拼音首字母,默认转换全部 - - /// - /// 转换未知汉字为问号,默认不转换 - /// - TranslateUnknowWordToInterrogation = 1 << 1, //转换未知汉字为问号,默认不转换 - - /// - /// 保留非字母、非数字字符,默认不保留 - /// - EnableUnicodeLetter = 1 << 2, //保留非字母、非数字字符,默认不保留 - - /// - /// 转换未知汉字为连接符号 - /// - TranslateSpecialWordToConnect = 1 << 3 - } - - /// - /// 中文拼写 - /// - public class ChineseSpell - { - #region 字段和属性 - - //拼音代码表 - private static readonly string[] _spellMusicCode = new string[] - { - "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", - "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", - "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", - "chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", - "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong", "cou", "cu", - "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", - "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", - "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", - "fei", "fen", "feng", "fu", "fou", "ga", "gai", "gan", "gang", "gao", - "ge", "ji", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", - "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", - "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", - "hui", "hun", "huo", "jia", "jian", "jiang", "qiao", "jiao", "jie", "jin", - "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", - "kang", "kao", "ke", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", - "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", - "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", - "ling", "liu", "long", "lou", "lu", "luan", "lue", "lun", "luo", "ma", - "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", - "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", - "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", - "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nuan", "nue", "yao", - "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", - "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", - "qi", "qia", "qian", "qiang", "qie", "qin", "qing", "qiong", "qiu", "qu", - "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", - "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", - "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", - "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", - "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", - "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", - "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", - "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", - "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", - "xuan", "xue", "xun", "ya", "yan", "yang", "ye", "yi", "yin", "ying", - "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", - "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", - "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", - "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", - "zui", "zun", "zuo", "", "ei", "m", "n", "dia", "cen", "nou", - "jv", "qv", "xv", "lv", "nv" - }; - - //拼音索引表 - private static readonly int[,] _spellCodeIndex = new int[,] - { - { - 354, 279, 331, 0, 190, 39, 284, 67, 249, 167, 353, 19, 133, 92, 129, 152, 31, 385, 105, 131, 84, 348, - 348, - 329, 133, 0, 376, 116, 283, 349, 344, 87, 133, 0, 0, 0, 284, 202, 0, 0, 0, 0, 0, 0, 342, 345, 0, 276, - 199, 243, 0, 0, 52, 0, 375, 102, 88, 176, 170, 348, 136, 180, 375, 0, 354, 294, 299, 94, 344, 368, 344, - 55, 347, 333, 131, 347, 353, 369, 166, 74, 325, 92, 0, 329, 6, 19, 0, 306, 0, 332, 372, 114, 107, 20, 33, - 370, 279, 258, 79, 191, 243, 328, 220, 83, 43, 324, 62, 376, 229, 354, 64, 73, 329, 348, 336, 92, 2, 349, - 232, 282, 84, 305, 389, 357, 134, 332, 343, 336, 363, 332, 217, 208, 335, 340, 377, 389, 13, 232, 348, - 294, 348, 374, 107, 181, 378, 21, 250, 14, 371, 47, 346, 369, 14, 332, 250, 284, 10, 121, 110, 333, 91, - 78, 194, 19, 113, 123, 102, 251, 47, 337, 282, 320, 106, 157, 348, 101, 349, 189, 340, 3, 175, 77, 178, - 29, 37, 343, 377, 263, 125, 294, 56 - }, - { - 302, 214, 130, 132, 313, 373, 393, 39, 404, 134, 286, 313, 282, 320, 20, 201, 334, 318, 354, 330, 340, - 101, - 148, 329, 348, 84, 167, 122, 350, 332, 270, 229, 330, 190, 331, 339, 62, 134, 375, 157, 294, 123, 334, - 125, 16, 309, 81, 344, 11, 354, 336, 116, 374, 375, 19, 133, 220, 389, 167, 323, 169, 43, 387, 0, 91, - 310, 286, 187, 304, 383, 337, 237, 241, 88, 167, 299, 245, 80, 375, 387, 178, 295, 171, 122, 68, 386, 12, - 329, 134, 200, 23, 125, 347, 276, 245, 350, 36, 243, 264, 376, 45, 325, 354, 19, 309, 345, 83, 305, 328, - 75, 34, 283, 140, 62, 29, 11, 367, 120, 220, 369, 388, 345, 353, 340, 367, 47, 84, 84, 375, 190, 92, 348, - 335, 343, 294, 71, 368, 373, 315, 11, 360, 245, 325, 296, 375, 297, 331, 355, 261, 217, 357, 126, 180, - 63, 305, 109, 129, 330, 278, 243, 252, 35, 40, 270, 11, 334, 352, 220, 304, 301, 346, 78, 19, 333, 359, - 97, 270, 162, 352, 362, 387, 231, 295, 381, 354, 368, 389, 279, 43, 131, 107 - }, - { - 370, 247, 349, 62, 335, 174, 11, 234, 130, 166, 175, 182, 243, 332, 304, 350, 68, 392, 278, 127, 132, - 318, - 392, 240, 160, 32, 101, 241, 308, 381, 325, 92, 20, 121, 45, 312, 278, 220, 82, 332, 354, 75, 170, 20, - 97, 332, 332, 193, 347, 130, 242, 127, 83, 377, 2, 269, 348, 137, 216, 304, 348, 58, 150, 0, 125, 40, - 128, 276, 359, 24, 18, 3, 303, 59, 30, 158, 348, 130, 243, 188, 329, 214, 248, 208, 32, 169, 404, 152, - 10, 354, 16, 360, 375, 294, 353, 109, 247, 246, 164, 308, 325, 173, 40, 31, 333, 311, 335, 164, 179, 360, - 221, 305, 345, 179, 202, 360, 338, 265, 265, 316, 32, 208, 208, 130, 345, 284, 0, 0, 0, 0, 282, 69, 0, 0, - 120, 329, 265, 167, 354, 107, 310, 0, 92, 348, 184, 254, 345, 184, 367, 132, 98, 132, 184, 377, 96, 340, - 353, 140, 348, 189, 284, 188, 134, 147, 193, 84, 335, 189, 303, 89, 116, 226, 84, 193, 242, 125, 296, - 186, 316, 97, 131, 247, 68, 88, 349, 2, 164, 25, 194, 384, 52 - }, - { - 294, 74, 130, 170, 330, 70, 79, 79, 134, 40, 374, 83, 198, 375, 83, 83, 139, 88, 237, 150, 107, 258, 43, - 92, - 243, 53, 92, 57, 323, 136, 164, 84, 250, 64, 193, 171, 376, 17, 129, 129, 278, 31, 94, 43, 153, 74, 77, - 129, 47, 131, 69, 179, 363, 355, 54, 0, 276, 43, 54, 164, 81, 31, 241, 0, 43, 386, 89, 240, 74, 247, 385, - 125, 92, 345, 123, 74, 375, 329, 98, 283, 125, 367, 139, 244, 42, 31, 381, 175, 164, 231, 278, 147, 98, - 117, 367, 385, 166, 134, 172, 102, 128, 102, 125, 125, 314, 92, 125, 125, 375, 31, 390, 196, 164, 378, - 344, 131, 145, 335, 375, 348, 378, 196, 160, 135, 147, 346, 321, 334, 197, 152, 129, 169, 0, 131, 90, - 193, 37, 159, 352, 0, 135, 247, 175, 21, 157, 139, 190, 68, 340, 329, 348, 343, 346, 283, 168, 175, 234, - 284, 92, 244, 128, 251, 333, 348, 342, 79, 135, 314, 134, 57, 181, 343, 343, 404, 164, 34, 333, 251, 357, - 133, 10, 0, 14, 87, 87, 348, 231, 134, 220, 91, 75 - }, - { - 95, 55, 133, 95, 203, 133, 348, 126, 141, 116, 250, 79, 245, 361, 152, 116, 354, 102, 121, 57, 153, 166, - 166, 298, 70, 133, 250, 330, 143, 345, 250, 343, 209, 389, 284, 330, 323, 323, 335, 278, 92, 288, 152, - 330, 335, 254, 346, 248, 280, 37, 340, 330, 153, 92, 75, 330, 270, 345, 372, 107, 344, 62, 368, 0, 227, - 0, 245, 344, 375, 183, 309, 281, 313, 391, 81, 363, 355, 164, 63, 246, 5, 102, 345, 164, 32, 243, 164, - 345, 345, 355, 114, 190, 262, 250, 0, 162, 70, 381, 282, 282, 282, 348, 56, 285, 136, 6, 267, 284, 385, - 331, 334, 92, 357, 265, 48, 98, 249, 37, 0, 114, 192, 183, 341, 386, 74, 347, 223, 123, 348, 39, 246, - 335, 239, 117, 114, 354, 221, 342, 263, 223, 90, 137, 404, 91, 326, 241, 329, 128, 357, 37, 283, 319, - 326, 75, 284, 135, 230, 326, 197, 254, 62, 284, 377, 312, 330, 348, 241, 237, 386, 340, 348, 334, 344, - 250, 332, 320, 239, 17, 84, 346, 123, 303, 55, 321, 393, 21, 302, 332, 123, 241, 77 - }, - { - 75, 375, 378, 343, 334, 149, 284, 311, 397, 341, 322, 160, 314, 338, 353, 189, 209, 337, 0, 109, 357, - 173, - 239, 183, 389, 110, 332, 160, 238, 167, 6, 192, 404, 299, 84, 107, 356, 353, 97, 97, 11, 107, 348, 243, - 316, 345, 323, 164, 249, 34, 362, 344, 69, 241, 62, 246, 0, 114, 0, 0, 167, 159, 276, 0, 0, 328, 349, - 241, 321, 244, 3, 363, 209, 354, 310, 157, 330, 2, 400, 385, 368, 358, 334, 333, 384, 329, 326, 309, 97, - 241, 241, 57, 347, 386, 316, 52, 110, 344, 241, 372, 167, 332, 350, 98, 363, 104, 179, 0, 62, 251, 320, - 0, 305, 3, 57, 354, 372, 377, 30, 322, 0, 360, 220, 190, 116, 357, 119, 355, 92, 376, 325, 276, 340, 120, - 367, 345, 167, 354, 271, 139, 127, 345, 278, 230, 300, 351, 325, 350, 0, 11, 0, 362, 123, 309, 220, 334, - 244, 273, 352, 114, 335, 180, 29, 106, 263, 321, 92, 227, 329, 332, 386, 175, 321, 0, 301, 0, 269, 0, - 199, 244, 14, 5, 166, 391, 378, 196, 304, 128, 38, 128, 139 - }, - { - 304, 282, 2, 334, 174, 334, 116, 121, 104, 340, 332, 363, 32, 238, 60, 180, 116, 86, 305, 347, 269, 128, - 334, 117, 181, 254, 334, 334, 92, 153, 334, 109, 396, 127, 340, 320, 304, 343, 329, 392, 79, 139, 121, - 24, 43, 358, 57, 354, 319, 330, 241, 109, 166, 340, 121, 349, 343, 220, 294, 345, 350, 55, 369, 0, 385, - 216, 356, 335, 127, 355, 2, 352, 325, 354, 230, 59, 336, 73, 58, 336, 232, 349, 391, 214, 62, 158, 302, - 328, 331, 347, 74, 339, 377, 368, 130, 32, 343, 185, 375, 175, 121, 228, 353, 220, 349, 351, 186, 114, - 372, 164, 172, 106, 202, 196, 345, 164, 175, 173, 196, 57, 35, 236, 232, 333, 185, 330, 74, 148, 345, 31, - 350, 0, 156, 302, 334, 46, 119, 123, 381, 372, 334, 367, 164, 31, 30, 164, 348, 179, 360, 297, 0, 365, - 125, 358, 378, 158, 212, 0, 0, 121, 349, 213, 317, 141, 355, 132, 233, 357, 48, 121, 75, 104, 314, 316, - 104, 253, 260, 104, 303, 104, 349, 122, 107, 178, 104, 44, 325, 355, 251, 148, 240 - }, - { - 355, 355, 344, 317, 316, 316, 317, 177, 121, 348, 176, 176, 344, 316, 313, 240, 175, 150, 344, 384, 297, - 297, 385, 58, 242, 331, 278, 212, 196, 124, 375, 343, 348, 246, 186, 261, 319, 82, 14, 337, 158, 131, 92, - 62, 337, 226, 305, 250, 385, 98, 303, 132, 346, 0, 175, 249, 96, 342, 6, 171, 378, 84, 116, 0, 375, 5, 0, - 228, 193, 92, 110, 404, 47, 37, 349, 115, 72, 371, 84, 101, 220, 74, 102, 29, 346, 335, 285, 19, 114, 55, - 138, 58, 108, 3, 337, 332, 9, 239, 11, 348, 349, 107, 340, 383, 246, 83, 80, 252, 352, 137, 331, 62, 159, - 135, 246, 372, 169, 117, 21, 132, 347, 62, 344, 251, 299, 374, 323, 134, 178, 374, 146, 279, 68, 304, 23, - 315, 13, 332, 74, 348, 375, 384, 241, 134, 208, 143, 154, 208, 125, 89, 354, 344, 97, 163, 80, 344, 154, - 3, 282, 203, 316, 36, 119, 14, 166, 328, 381, 10, 354, 329, 129, 264, 347, 94, 387, 354, 120, 75, 220, - 84, 92, 186, 279, 320, 349, 83, 376, 129, 130, 113, 89 - }, - { - 45, 332, 237, 162, 337, 120, 71, 323, 341, 330, 92, 150, 350, 352, 139, 297, 284, 189, 327, 36, 316, 252, - 376, 164, 231, 9, 361, 72, 373, 329, 374, 343, 373, 2, 95, 345, 140, 326, 335, 172, 106, 159, 279, 231, - 13, 35, 175, 175, 223, 243, 186, 196, 381, 290, 174, 16, 27, 375, 370, 140, 63, 35, 385, 0, 92, 104, 244, - 246, 62, 52, 345, 302, 366, 243, 325, 383, 127, 278, 278, 81, 240, 318, 317, 79, 252, 73, 392, 62, 283, - 121, 74, 304, 61, 329, 82, 120, 304, 55, 347, 378, 125, 354, 244, 127, 144, 348, 232, 63, 126, 347, 342, - 304, 158, 134, 118, 58, 255, 243, 343, 332, 330, 2, 344, 59, 264, 130, 404, 152, 175, 345, 304, 325, 121, - 173, 173, 265, 164, 170, 31, 343, 345, 162, 6, 323, 270, 382, 348, 181, 378, 382, 116, 154, 116, 340, - 154, 285, 183, 73, 285, 348, 350, 126, 227, 368, 15, 299, 253, 171, 54, 341, 335, 203, 331, 355, 323, - 375, 247, 0, 96, 241, 188, 188, 35, 363, 136, 90, 306, 303, 345, 14, 0 - }, - { - 357, 335, 6, 76, 309, 228, 135, 335, 63, 346, 119, 139, 367, 12, 120, 81, 64, 343, 145, 5, 327, 303, 329, - 5, - 126, 166, 74, 357, 126, 284, 82, 123, 14, 176, 74, 313, 243, 133, 218, 29, 332, 79, 92, 114, 57, 353, - 131, 129, 326, 376, 224, 145, 376, 357, 232, 37, 356, 382, 345, 201, 336, 82, 83, 0, 355, 70, 20, 385, - 371, 208, 355, 315, 341, 375, 75, 196, 14, 282, 75, 110, 340, 78, 374, 193, 8, 84, 171, 386, 254, 332, - 346, 182, 386, 134, 258, 68, 92, 87, 333, 123, 135, 96, 125, 125, 209, 375, 373, 332, 113, 101, 343, 149, - 345, 194, 169, 229, 344, 353, 345, 332, 309, 321, 251, 295, 114, 332, 280, 283, 335, 183, 84, 329, 143, - 157, 50, 313, 337, 201, 354, 238, 299, 375, 107, 382, 237, 318, 332, 354, 345, 329, 330, 345, 354, 294, - 164, 134, 383, 241, 332, 385, 68, 175, 75, 75, 404, 190, 48, 239, 134, 23, 171, 334, 286, 241, 121, 84, - 328, 328, 304, 81, 81, 310, 208, 251, 131, 131, 243, 63, 337, 116, 323 - }, - { - 157, 349, 377, 203, 84, 178, 0, 154, 349, 344, 134, 164, 63, 332, 117, 117, 346, 220, 201, 267, 124, 354, - 354, 325, 309, 262, 186, 57, 264, 247, 121, 328, 243, 45, 191, 84, 129, 71, 348, 376, 120, 190, 345, 350, - 341, 129, 325, 374, 249, 375, 335, 320, 166, 184, 254, 294, 233, 325, 321, 50, 116, 245, 10, 0, 340, 354, - 102, 388, 220, 355, 261, 263, 172, 186, 226, 357, 180, 153, 282, 373, 355, 301, 261, 194, 350, 297, 211, - 306, 227, 159, 203, 10, 232, 348, 354, 341, 355, 348, 141, 352, 208, 391, 130, 381, 363, 201, 160, 372, - 116, 116, 5, 264, 180, 235, 97, 329, 127, 320, 369, 191, 332, 332, 196, 168, 166, 117, 102, 61, 375, 340, - 348, 117, 330, 153, 220, 345, 31, 128, 186, 84, 79, 345, 348, 111, 128, 84, 284, 299, 244, 166, 341, 336, - 211, 68, 348, 24, 2, 210, 214, 180, 311, 39, 130, 47, 354, 236, 261, 263, 208, 345, 303, 350, 243, 356, - 190, 14, 282, 337, 208, 70, 172, 355, 158, 345, 171, 128, 255, 158, 332, 350, 290 - }, - { - 335, 251, 189, 164, 176, 345, 378, 158, 136, 386, 336, 294, 303, 353, 381, 343, 192, 48, 323, 344, 348, - 386, - 164, 342, 20, 200, 212, 350, 176, 261, 248, 316, 262, 220, 348, 131, 384, 378, 114, 284, 348, 311, 330, - 36, 253, 95, 334, 367, 284, 282, 120, 189, 147, 23, 360, 355, 249, 110, 373, 125, 214, 19, 119, 0, 246, - 284, 214, 130, 214, 375, 354, 10, 151, 214, 404, 246, 116, 375, 214, 282, 325, 335, 151, 121, 137, 348, - 348, 10, 246, 173, 10, 83, 404, 72, 238, 381, 238, 0, 346, 381, 343, 378, 72, 59, 129, 189, 189, 286, - 279, 196, 168, 332, 332, 154, 353, 211, 227, 324, 324, 324, 220, 74, 153, 376, 88, 97, 380, 88, 88, 330, - 14, 129, 310, 64, 284, 373, 335, 208, 330, 0, 182, 174, 237, 335, 81, 335, 404, 28, 335, 134, 136, 168, - 136, 378, 335, 238, 321, 332, 164, 345, 59, 121, 173, 258, 329, 107, 282, 40, 0, 356, 8, 220, 4, 329, - 129, 92, 82, 323, 243, 241, 129, 393, 393, 346, 134, 89, 342, 238, 164, 311, 389 - }, - { - 84, 320, 232, 5, 152, 250, 238, 311, 171, 37, 237, 0, 9, 314, 342, 15, 110, 143, 179, 75, 212, 65, 175, - 76, - 77, 87, 251, 348, 198, 284, 3, 325, 119, 189, 164, 92, 314, 325, 353, 97, 169, 220, 128, 75, 347, 21, - 253, 83, 203, 164, 353, 332, 261, 59, 282, 36, 316, 94, 90, 331, 349, 354, 202, 0, 140, 345, 252, 38, - 302, 170, 117, 134, 157, 193, 154, 154, 389, 97, 344, 89, 178, 178, 171, 74, 374, 349, 68, 107, 374, 325, - 232, 129, 389, 148, 68, 349, 386, 363, 120, 354, 346, 83, 249, 346, 309, 348, 375, 284, 75, 378, 369, - 404, 345, 186, 107, 92, 119, 313, 329, 354, 387, 158, 143, 345, 345, 325, 387, 29, 301, 143, 246, 309, - 316, 72, 330, 327, 25, 305, 350, 129, 139, 172, 329, 127, 13, 63, 243, 352, 212, 54, 284, 267, 295, 387, - 126, 168, 141, 31, 65, 399, 66, 316, 174, 369, 369, 5, 26, 250, 244, 391, 391, 59, 59, 330, 354, 232, - 173, 333, 374, 20, 246, 128, 345, 160, 369, 168, 168, 246, 74, 392, 127 - }, - { - 136, 220, 128, 220, 136, 369, 348, 342, 203, 347, 347, 348, 212, 345, 92, 335, 143, 330, 62, 5, 391, 325, - 261, 59, 171, 129, 354, 356, 349, 263, 129, 169, 330, 173, 173, 350, 330, 134, 31, 350, 325, 345, 203, - 251, 33, 51, 176, 63, 63, 212, 345, 345, 345, 203, 345, 150, 120, 337, 33, 169, 0, 240, 240, 0, 249, 375, - 371, 348, 130, 300, 251, 0, 238, 358, 66, 212, 82, 224, 375, 116, 57, 56, 321, 84, 196, 348, 348, 237, - 242, 135, 263, 288, 291, 127, 373, 284, 253, 56, 102, 237, 370, 270, 323, 56, 276, 241, 70, 115, 374, - 340, 325, 348, 9, 237, 65, 95, 226, 306, 189, 124, 308, 121, 376, 282, 16, 104, 363, 198, 9, 131, 31, - 375, 329, 14, 14, 370, 189, 127, 31, 82, 188, 9, 59, 192, 40, 129, 332, 158, 125, 19, 88, 92, 313, 363, - 101, 185, 246, 319, 344, 336, 129, 382, 344, 47, 314, 348, 375, 311, 375, 334, 316, 102, 148, 188, 353, - 21, 19, 36, 157, 92, 295, 286, 247, 354, 191, 296, 363, 333, 81, 133, 75 - }, - { - 325, 172, 331, 296, 375, 21, 247, 133, 133, 174, 349, 330, 175, 348, 40, 316, 294, 336, 191, 32, 329, 81, - 152, 0, 150, 14, 273, 170, 168, 404, 92, 350, 332, 313, 352, 164, 313, 345, 62, 238, 121, 200, 121, 82, - 250, 345, 361, 348, 77, 270, 77, 284, 64, 116, 329, 318, 126, 6, 282, 370, 306, 84, 62, 0, 33, 373, 348, - 251, 280, 355, 131, 64, 370, 126, 244, 231, 14, 281, 304, 125, 91, 78, 14, 147, 125, 17, 334, 304, 104, - 244, 114, 208, 104, 323, 136, 92, 175, 121, 121, 348, 348, 348, 356, 356, 326, 345, 354, 37, 64, 352, - 234, 37, 385, 348, 92, 376, 324, 62, 171, 84, 324, 330, 324, 374, 375, 131, 48, 375, 48, 0, 92, 375, 387, - 377, 157, 335, 129, 125, 309, 331, 233, 84, 325, 227, 330, 374, 234, 309, 60, 375, 17, 376, 34, 220, 121, - 186, 173, 333, 10, 250, 161, 258, 313, 87, 258, 107, 348, 303, 330, 79, 350, 326, 326, 329, 92, 330, 129, - 323, 48, 354, 284, 52, 303, 384, 246, 122, 338, 324, 332, 141, 134 - }, - { - 348, 10, 193, 229, 147, 8, 215, 369, 116, 389, 353, 62, 318, 353, 84, 330, 14, 353, 341, 48, 19, 120, - 342, - 232, 286, 330, 304, 352, 196, 0, 284, 330, 160, 113, 152, 197, 375, 335, 220, 65, 109, 325, 340, 334, - 294, 149, 249, 121, 37, 348, 338, 99, 170, 37, 279, 381, 356, 231, 60, 121, 334, 183, 352, 0, 355, 232, - 356, 354, 354, 143, 372, 170, 128, 245, 309, 21, 243, 330, 187, 348, 113, 36, 329, 164, 167, 48, 348, - 164, 203, 75, 329, 48, 60, 32, 187, 164, 100, 100, 241, 146, 310, 178, 330, 140, 103, 208, 73, 104, 369, - 355, 130, 92, 170, 354, 110, 251, 304, 309, 212, 46, 187, 336, 329, 301, 387, 125, 352, 60, 203, 357, - 312, 45, 248, 27, 15, 122, 387, 309, 11, 341, 325, 91, 325, 14, 341, 119, 190, 352, 241, 305, 349, 336, - 184, 242, 143, 2, 245, 345, 264, 387, 294, 350, 252, 114, 357, 297, 241, 220, 295, 120, 92, 97, 134, 43, - 208, 335, 139, 374, 352, 26, 343, 282, 20, 330, 335, 122, 352, 346, 164, 272, 306 - }, - { - 349, 340, 303, 357, 194, 95, 48, 234, 198, 104, 37, 24, 24, 24, 52, 193, 370, 314, 5, 290, 100, 252, 362, - 133, 166, 223, 295, 246, 349, 404, 279, 317, 182, 332, 281, 247, 62, 375, 404, 135, 241, 241, 354, 237, - 168, 295, 353, 38, 375, 314, 36, 241, 250, 231, 11, 248, 128, 37, 166, 237, 153, 121, 374, 0, 349, 349, - 330, 330, 57, 304, 74, 319, 297, 136, 27, 334, 79, 82, 160, 160, 332, 193, 168, 329, 24, 136, 50, 332, - 304, 283, 232, 348, 332, 216, 57, 304, 131, 295, 128, 325, 341, 246, 246, 134, 272, 144, 350, 348, 170, - 273, 137, 118, 2, 347, 155, 331, 37, 354, 349, 56, 188, 208, 188, 72, 241, 196, 332, 187, 39, 375, 221, - 40, 346, 20, 375, 152, 152, 353, 84, 172, 192, 36, 121, 31, 158, 118, 341, 255, 31, 92, 134, 119, 281, - 166, 201, 196, 305, 136, 382, 382, 356, 91, 125, 68, 65, 23, 124, 375, 153, 369, 244, 91, 125, 354, 353, - 330, 369, 330, 330, 250, 116, 116, 75, 348, 309, 184, 63, 279, 348, 348, 345 - }, - { - 249, 164, 79, 263, 359, 370, 356, 354, 329, 107, 282, 367, 348, 241, 329, 0, 258, 330, 246, 124, 354, 5, - 372, 375, 375, 0, 345, 324, 15, 134, 326, 116, 356, 246, 282, 374, 357, 323, 265, 239, 239, 6, 215, 363, - 357, 19, 375, 201, 240, 220, 373, 367, 346, 242, 208, 347, 37, 232, 124, 186, 250, 40, 344, 0, 369, 228, - 199, 243, 320, 7, 375, 134, 155, 242, 243, 112, 213, 95, 392, 348, 335, 273, 121, 7, 375, 155, 74, 74, - 216, 373, 110, 128, 68, 263, 169, 367, 175, 281, 136, 169, 134, 344, 332, 354, 345, 20, 94, 309, 36, 301, - 243, 186, 216, 134, 231, 125, 345, 299, 335, 367, 83, 148, 249, 123, 316, 239, 363, 296, 354, 385, 323, - 375, 392, 380, 368, 175, 296, 345, 9, 325, 323, 246, 281, 193, 187, 84, 59, 328, 251, 356, 387, 310, 316, - 12, 328, 393, 331, 241, 36, 272, 178, 247, 89, 62, 122, 241, 286, 323, 171, 344, 374, 167, 98, 348, 340, - 345, 374, 23, 19, 309, 388, 144, 285, 129, 194, 94, 188, 272, 231, 221, 125 - }, - { - 374, 353, 243, 345, 201, 341, 232, 325, 269, 212, 284, 387, 373, 343, 352, 15, 346, 119, 345, 390, 340, - 242, - 92, 309, 156, 156, 35, 133, 316, 122, 93, 68, 334, 335, 243, 367, 11, 220, 325, 0, 329, 387, 93, 96, 246, - 261, 252, 388, 300, 300, 261, 231, 143, 220, 59, 375, 221, 335, 249, 332, 130, 192, 348, 0, 72, 278, 302, - 367, 238, 164, 306, 148, 375, 321, 331, 326, 244, 310, 373, 75, 221, 251, 367, 329, 372, 141, 261, 277, - 300, 301, 168, 38, 43, 104, 231, 375, 241, 296, 166, 36, 37, 100, 175, 174, 387, 330, 116, 379, 244, 305, - 117, 375, 244, 102, 350, 127, 375, 212, 182, 31, 223, 40, 297, 381, 128, 278, 243, 234, 126, 220, 96, - 243, 92, 235, 160, 73, 332, 267, 102, 365, 348, 343, 36, 334, 114, 101, 302, 209, 170, 374, 325, 142, 92, - 26, 336, 304, 78, 34, 136, 334, 12, 196, 385, 325, 240, 246, 73, 117, 128, 302, 220, 379, 166, 352, 202, - 175, 385, 368, 240, 46, 330, 58, 273, 247, 129, 150, 278, 335, 367, 5, 134 - }, - { - 347, 75, 188, 189, 92, 303, 59, 158, 134, 347, 263, 347, 347, 208, 328, 129, 18, 214, 91, 375, 375, 305, - 196, 125, 335, 169, 304, 7, 296, 175, 356, 256, 375, 346, 162, 268, 286, 51, 209, 332, 229, 164, 157, - 119, 350, 179, 173, 243, 243, 243, 158, 332, 350, 186, 278, 350, 51, 335, 372, 179, 186, 196, 37, 0, 390, - 176, 304, 277, 63, 321, 305, 128, 158, 179, 102, 102, 241, 343, 142, 348, 107, 8, 238, 63, 147, 193, 329, - 110, 27, 285, 104, 340, 128, 35, 373, 74, 354, 7, 340, 74, 212, 63, 252, 348, 143, 345, 241, 315, 334, - 74, 346, 331, 193, 378, 2, 62, 373, 286, 168, 250, 338, 348, 128, 278, 128, 385, 348, 166, 14, 303, 334, - 334, 342, 241, 241, 136, 368, 0, 8, 354, 158, 325, 283, 124, 124, 354, 128, 315, 69, 375, 244, 250, 369, - 385, 385, 385, 246, 170, 385, 40, 71, 378, 129, 108, 229, 353, 0, 241, 232, 172, 84, 80, 131, 371, 348, - 280, 125, 0, 375, 79, 234, 79, 369, 150, 299, 354, 92, 92, 123, 335, 311 - }, - { - 350, 62, 340, 31, 346, 284, 193, 193, 384, 45, 329, 11, 8, 129, 283, 116, 80, 132, 341, 82, 246, 116, - 345, - 363, 80, 282, 134, 346, 80, 341, 238, 373, 171, 109, 196, 15, 340, 122, 387, 331, 81, 348, 326, 68, 2, - 19, 4, 173, 152, 311, 284, 120, 341, 153, 340, 128, 130, 375, 314, 114, 87, 333, 107, 0, 137, 332, 154, - 377, 330, 283, 372, 372, 107, 109, 323, 310, 385, 391, 377, 278, 208, 330, 241, 374, 348, 345, 323, 170, - 32, 324, 334, 81, 341, 348, 357, 121, 340, 193, 347, 350, 286, 325, 247, 184, 201, 158, 346, 45, 220, - 301, 240, 128, 139, 109, 327, 32, 241, 109, 345, 164, 92, 187, 360, 335, 109, 196, 48, 208, 370, 121, - 107, 341, 42, 168, 304, 131, 235, 170, 330, 348, 129, 120, 56, 347, 347, 164, 304, 314, 334, 81, 282, - 371, 109, 348, 333, 337, 278, 128, 10, 131, 345, 2, 347, 263, 188, 164, 35, 152, 65, 0, 220, 123, 404, - 261, 173, 179, 176, 277, 305, 345, 378, 0, 348, 116, 286, 26, 283, 366, 243, 340, 155 - }, - { - 349, 245, 82, 232, 82, 171, 148, 0, 405, 311, 159, 391, 194, 324, 319, 241, 350, 387, 324, 314, 159, 160, - 173, 0, 286, 0, 258, 6, 74, 311, 164, 249, 133, 14, 373, 47, 263, 243, 354, 329, 343, 79, 386, 258, 372, - 74, 183, 37, 348, 91, 95, 375, 126, 278, 323, 133, 183, 375, 355, 81, 68, 332, 45, 0, 286, 117, 336, 215, - 39, 295, 356, 130, 92, 184, 232, 4, 82, 348, 84, 201, 116, 347, 378, 336, 220, 75, 371, 357, 391, 283, - 74, 175, 295, 201, 373, 303, 330, 99, 84, 196, 348, 347, 347, 284, 212, 14, 348, 208, 156, 110, 226, 79, - 376, 56, 47, 350, 84, 286, 280, 295, 282, 254, 352, 375, 389, 57, 97, 240, 5, 84, 84, 393, 17, 367, 294, - 378, 229, 284, 99, 29, 220, 133, 172, 186, 164, 261, 362, 0, 352, 343, 241, 373, 348, 333, 373, 164, 273, - 140, 19, 258, 7, 258, 19, 386, 39, 348, 47, 392, 391, 77, 77, 354, 78, 95, 369, 164, 349, 375, 284, 84, - 263, 348, 148, 248, 271, 342, 74, 44, 354, 360, 0 - }, - { - 350, 129, 172, 369, 343, 268, 373, 11, 350, 155, 131, 238, 12, 265, 330, 159, 172, 83, 241, 326, 137, - 107, - 349, 249, 353, 173, 231, 382, 62, 342, 316, 362, 353, 14, 62, 107, 375, 258, 11, 332, 119, 323, 221, 124, - 311, 92, 334, 404, 151, 399, 82, 295, 294, 69, 246, 350, 134, 154, 385, 31, 325, 131, 164, 0, 19, 331, 0, - 306, 375, 157, 166, 385, 164, 241, 19, 178, 295, 243, 241, 23, 31, 372, 81, 229, 239, 122, 36, 362, 169, - 354, 354, 97, 103, 68, 89, 324, 54, 79, 36, 369, 241, 355, 345, 354, 251, 348, 282, 330, 385, 297, 157, - 388, 388, 82, 35, 247, 212, 323, 175, 109, 245, 377, 134, 134, 36, 393, 244, 344, 232, 385, 386, 18, 231, - 66, 40, 32, 187, 117, 125, 102, 330, 59, 102, 63, 375, 251, 0, 84, 94, 231, 278, 348, 282, 74, 84, 325, - 325, 124, 387, 125, 348, 330, 345, 345, 369, 354, 110, 328, 233, 14, 220, 149, 340, 267, 346, 156, 345, - 12, 121, 153, 129, 153, 294, 83, 320, 375, 198, 184, 148, 116, 313 - }, - { - 354, 353, 295, 355, 346, 373, 233, 347, 242, 347, 292, 354, 325, 186, 309, 92, 129, 262, 120, 161, 251, - 333, - 284, 304, 357, 282, 40, 232, 124, 348, 373, 84, 221, 189, 97, 130, 302, 220, 335, 355, 386, 194, 297, - 124, 220, 129, 120, 107, 243, 180, 355, 261, 284, 375, 326, 313, 261, 305, 368, 294, 283, 143, 330, 0, - 97, 241, 142, 300, 226, 306, 91, 45, 373, 400, 92, 129, 244, 332, 186, 340, 89, 385, 320, 127, 346, 63, - 124, 375, 59, 173, 271, 330, 92, 166, 121, 352, 243, 104, 87, 87, 317, 117, 282, 391, 231, 353, 126, 116, - 119, 102, 348, 348, 90, 141, 102, 102, 323, 375, 382, 357, 159, 35, 387, 164, 339, 247, 290, 314, 100, - 363, 297, 162, 175, 167, 189, 404, 128, 297, 143, 16, 175, 168, 372, 367, 286, 182, 211, 346, 311, 231, - 378, 276, 251, 125, 48, 92, 345, 342, 375, 343, 375, 391, 48, 240, 286, 117, 153, 373, 278, 330, 45, 63, - 81, 196, 329, 256, 170, 172, 127, 332, 266, 79, 369, 160, 357, 292, 318, 36, 305, 188, 334 - }, - { - 136, 336, 121, 92, 221, 320, 214, 265, 314, 366, 82, 248, 345, 113, 246, 97, 172, 160, 90, 330, 283, 386, - 270, 92, 69, 131, 125, 40, 55, 286, 126, 170, 203, 349, 121, 278, 391, 341, 36, 88, 134, 391, 348, 240, - 83, 121, 58, 92, 299, 237, 36, 40, 379, 121, 92, 129, 124, 368, 125, 244, 59, 348, 16, 0, 295, 281, 164, - 349, 306, 303, 190, 241, 317, 19, 123, 92, 243, 208, 214, 348, 90, 140, 349, 264, 247, 345, 241, 189, - 371, 102, 45, 92, 153, 238, 61, 40, 91, 190, 353, 375, 120, 243, 162, 169, 268, 175, 164, 51, 404, 192, - 121, 223, 404, 375, 90, 70, 355, 356, 81, 385, 296, 166, 126, 40, 247, 378, 404, 345, 164, 378, 246, 129, - 75, 297, 118, 212, 354, 173, 157, 128, 332, 0, 134, 339, 171, 350, 278, 349, 353, 350, 333, 216, 20, 369, - 166, 134, 290, 281, 391, 48, 251, 250, 25, 0, 354, 179, 164, 390, 176, 305, 136, 345, 158, 158, 378, 179, - 164, 6, 202, 354, 171, 101, 348, 332, 340, 33, 330, 241, 143, 349, 136 - }, - { - 330, 340, 331, 153, 159, 336, 296, 335, 340, 41, 349, 243, 336, 243, 42, 98, 349, 354, 334, 347, 346, - 304, - 253, 223, 116, 334, 119, 340, 230, 348, 334, 340, 0, 166, 40, 348, 75, 354, 46, 119, 21, 21, 134, 243, - 375, 273, 37, 273, 376, 301, 299, 164, 363, 354, 164, 153, 75, 372, 326, 196, 220, 283, 340, 0, 136, 242, - 249, 297, 247, 348, 347, 347, 24, 187, 65, 373, 357, 326, 39, 309, 130, 279, 349, 64, 133, 153, 51, 57, - 70, 126, 166, 18, 70, 125, 125, 378, 283, 348, 335, 252, 127, 220, 343, 121, 252, 241, 250, 121, 71, 348, - 334, 100, 186, 2, 129, 232, 31, 0, 0, 232, 169, 124, 269, 198, 320, 343, 77, 261, 332, 134, 249, 221, 0, - 229, 134, 74, 14, 270, 184, 299, 286, 320, 143, 302, 270, 286, 198, 184, 314, 261, 369, 272, 369, 188, - 175, 65, 136, 241, 346, 205, 18, 282, 330, 330, 247, 344, 68, 346, 357, 374, 19, 58, 291, 161, 208, 79, - 249, 224, 363, 190, 64, 385, 42, 323, 79, 56, 320, 183, 353, 236, 243 - }, - { - 354, 354, 316, 133, 375, 375, 243, 131, 131, 319, 137, 114, 251, 15, 107, 376, 227, 342, 120, 353, 340, - 340, - 357, 345, 57, 353, 116, 123, 405, 196, 329, 38, 227, 14, 375, 226, 386, 358, 172, 363, 83, 186, 358, 320, - 373, 373, 348, 78, 310, 294, 152, 350, 134, 348, 124, 376, 121, 12, 363, 378, 353, 97, 116, 0, 237, 386, - 375, 297, 36, 294, 134, 342, 283, 342, 84, 92, 100, 57, 349, 377, 347, 121, 359, 36, 325, 115, 125, 294, - 77, 337, 84, 386, 375, 349, 329, 142, 0, 345, 309, 197, 162, 348, 189, 251, 238, 334, 348, 297, 152, 245, - 134, 237, 338, 375, 120, 194, 329, 250, 348, 131, 284, 0, 31, 130, 169, 249, 325, 107, 183, 353, 20, 69, - 114, 348, 374, 158, 107, 164, 94, 166, 45, 114, 348, 314, 160, 331, 38, 132, 299, 36, 229, 332, 282, 154, - 237, 107, 247, 258, 316, 334, 313, 75, 357, 164, 291, 294, 162, 291, 70, 357, 113, 337, 306, 46, 370, - 202, 355, 320, 68, 328, 134, 281, 167, 122, 302, 245, 60, 135, 116, 104, 345 - }, - { - 377, 231, 109, 32, 243, 80, 37, 175, 134, 164, 372, 237, 310, 354, 208, 175, 189, 131, 171, 178, 250, - 354, - 282, 116, 116, 355, 157, 247, 243, 375, 349, 238, 12, 355, 326, 267, 81, 355, 143, 241, 281, 273, 241, - 232, 330, 355, 262, 119, 125, 218, 329, 313, 83, 328, 309, 325, 264, 27, 110, 345, 114, 189, 184, 0, 350, - 345, 247, 283, 186, 359, 122, 200, 102, 37, 75, 166, 241, 241, 186, 310, 49, 325, 24, 193, 238, 340, 92, - 125, 83, 348, 349, 284, 335, 374, 304, 354, 14, 193, 284, 316, 283, 352, 134, 314, 317, 249, 249, 346, - 173, 123, 355, 201, 226, 353, 251, 382, 167, 31, 345, 384, 110, 386, 187, 350, 156, 83, 174, 325, 331, - 350, 238, 130, 345, 301, 355, 332, 220, 188, 385, 36, 303, 302, 321, 147, 272, 367, 284, 178, 180, 325, - 359, 329, 326, 244, 363, 284, 2, 357, 349, 297, 301, 284, 2, 226, 340, 327, 25, 192, 91, 342, 120, 335, - 62, 375, 350, 129, 91, 299, 128, 121, 349, 363, 290, 45, 334, 354, 339, 116, 14, 16, 375 - }, - { - 126, 147, 282, 279, 189, 5, 175, 340, 353, 31, 79, 352, 103, 187, 247, 354, 92, 344, 33, 330, 92, 175, - 173, - 130, 104, 295, 375, 87, 244, 128, 48, 45, 381, 223, 308, 347, 330, 189, 305, 305, 304, 166, 321, 303, 88, - 231, 386, 141, 231, 370, 382, 340, 155, 243, 345, 290, 334, 52, 309, 126, 387, 350, 114, 0, 336, 286, - 119, 387, 154, 340, 375, 235, 286, 127, 238, 346, 121, 129, 329, 224, 92, 325, 334, 243, 344, 330, 300, - 73, 193, 266, 297, 373, 387, 348, 375, 323, 304, 349, 335, 347, 367, 270, 111, 14, 31, 286, 240, 170, - 325, 273, 273, 36, 132, 117, 203, 160, 53, 114, 107, 357, 172, 114, 84, 109, 110, 332, 125, 278, 330, - 354, 175, 214, 354, 170, 283, 58, 119, 363, 335, 354, 284, 342, 171, 323, 386, 352, 150, 24, 166, 63, - 347, 341, 373, 182, 57, 348, 299, 232, 134, 302, 246, 385, 216, 328, 246, 230, 273, 276, 325, 40, 302, - 295, 313, 273, 378, 166, 208, 330, 286, 189, 214, 350, 350, 188, 130, 241, 241, 391, 328, 306, 349 - }, - { - 349, 72, 47, 123, 247, 158, 343, 143, 325, 18, 97, 243, 350, 18, 155, 81, 25, 185, 360, 325, 238, 360, - 175, - 164, 353, 346, 175, 294, 375, 350, 70, 324, 121, 335, 226, 282, 16, 31, 196, 172, 125, 273, 36, 97, 18, - 123, 332, 175, 246, 261, 164, 131, 334, 350, 299, 325, 322, 342, 378, 290, 157, 72, 79, 0, 116, 157, 286, - 171, 350, 208, 92, 166, 392, 350, 170, 348, 125, 31, 56, 255, 125, 158, 79, 290, 355, 385, 83, 281, 162, - 158, 48, 250, 352, 243, 78, 136, 345, 350, 332, 360, 176, 345, 164, 189, 278, 304, 58, 128, 31, 350, 109, - 378, 158, 158, 202, 323, 176, 343, 332, 345, 88, 345, 354, 101, 334, 334, 121, 114, 381, 367, 335, 37, - 359, 241, 376, 82, 215, 326, 240, 348, 232, 139, 226, 345, 227, 198, 168, 101, 336, 101, 101, 15, 55, - 331, 374, 378, 143, 371, 84, 6, 335, 335, 171, 385, 228, 303, 346, 314, 278, 325, 120, 377, 220, 340, - 113, 251, 119, 339, 339, 332, 349, 344, 377, 220, 284, 325, 314, 342, 359, 139, 331 - }, - { - 341, 374, 238, 121, 101, 34, 121, 35, 0, 169, 84, 132, 335, 240, 313, 385, 313, 106, 159, 345, 340, 37, - 261, - 116, 330, 286, 123, 343, 148, 356, 334, 330, 382, 250, 62, 335, 241, 0, 404, 345, 134, 170, 154, 122, - 319, 330, 52, 329, 114, 134, 84, 328, 48, 83, 237, 248, 267, 348, 248, 336, 348, 127, 354, 0, 89, 232, - 350, 324, 283, 98, 280, 0, 0, 94, 325, 35, 110, 153, 376, 331, 357, 83, 166, 337, 128, 14, 350, 378, 325, - 317, 278, 330, 341, 218, 31, 345, 132, 132, 186, 325, 367, 130, 248, 262, 119, 79, 249, 299, 346, 169, - 129, 362, 98, 357, 201, 284, 167, 96, 305, 33, 357, 20, 347, 335, 330, 329, 357, 110, 334, 348, 357, 200, - 278, 248, 220, 189, 243, 350, 329, 95, 345, 244, 14, 16, 387, 175, 125, 174, 231, 299, 348, 314, 136, - 387, 116, 348, 375, 325, 172, 254, 223, 257, 132, 154, 51, 366, 125, 330, 330, 348, 334, 37, 120, 57, - 347, 343, 345, 343, 334, 137, 61, 319, 282, 127, 82, 330, 354, 170, 314, 280, 82 - }, - { - 343, 158, 186, 305, 348, 132, 187, 131, 0, 350, 348, 342, 158, 303, 24, 330, 252, 387, 243, 121, 378, - 171, - 354, 348, 335, 371, 121, 55, 0, 19, 264, 334, 343, 130, 39, 306, 220, 110, 158, 16, 261, 169, 196, 267, - 404, 169, 5, 343, 152, 356, 168, 164, 175, 136, 168, 345, 330, 335, 173, 347, 24, 255, 356, 0, 158, 48, - 314, 100, 134, 34, 189, 305, 158, 378, 158, 171, 354, 371, 374, 228, 36, 325, 107, 136, 347, 389, 189, - 43, 143, 361, 65, 244, 352, 244, 226, 33, 125, 43, 354, 367, 190, 226, 20, 43, 353, 70, 36, 215, 161, - 320, 258, 183, 80, 89, 345, 361, 11, 294, 353, 91, 198, 368, 251, 251, 386, 183, 145, 243, 164, 239, 89, - 375, 12, 251, 45, 124, 83, 143, 134, 40, 330, 11, 179, 129, 180, 270, 325, 184, 73, 314, 127, 330, 164, - 70, 169, 225, 234, 20, 330, 39, 325, 256, 39, 6, 92, 30, 385, 110, 141, 229, 115, 344, 349, 119, 382, - 152, 376, 198, 232, 134, 348, 337, 348, 171, 232, 208, 220, 353, 342, 57, 20 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 148, 332, 341, 196, 371, 129, 343, 278, 302, 314, 160, 385, 330, 331, 11, 375, 345, 276, 107, 131, 225, - 81, - 334, 232, 241, 16, 349, 157, 125, 244, 154, 345, 387, 375, 374, 344, 169, 0, 387, 0, 83, 328, 355, 278, - 317, 344, 335, 124, 233, 353, 220, 300, 238, 194, 296, 180, 355, 56, 354, 284, 109, 244, 348, 0, 373, 25, - 109, 182, 126, 198, 31, 5, 90, 52, 82, 14, 14, 120, 240, 170, 354, 382, 220, 330, 334, 285, 0, 128, 91, - 341, 70, 121, 150, 332, 332, 214, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 - }, - { - 123, 263, 188, 169, 353, 131, 285, 175, 302, 332, 189, 255, 203, 179, 332, 241, 136, 220, 386, 175, 297, - 249, 86, 161, 6, 114, 62, 42, 88, 354, 241, 354, 32, 114, 329, 84, 129, 344, 187, 9, 356, 136, 357, 136, - 349, 57, 236, 244, 348, 88, 237, 84, 341, 49, 96, 124, 280, 47, 254, 283, 282, 348, 389, 0, 172, 14, 373, - 130, 128, 125, 164, 101, 332, 377, 345, 339, 346, 340, 297, 246, 349, 343, 10, 333, 331, 102, 38, 340, - 229, 160, 58, 350, 326, 75, 313, 309, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }, - { - 329, 36, 137, 186, 11, 313, 332, 40, 107, 341, 345, 341, 339, 84, 330, 171, 164, 130, 301, 83, 323, 63, - 236, - 369, 273, 193, 354, 157, 193, 324, 354, 310, 40, 229, 36, 75, 32, 13, 175, 251, 64, 229, 244, 385, 246, - 78, 130, 70, 129, 122, 354, 186, 45, 341, 309, 337, 56, 262, 193, 125, 325, 264, 119, 0, 335, 42, 125, - 381, 346, 166, 251, 71, 344, 120, 172, 284, 261, 301, 220, 326, 329, 373, 130, 350, 180, 306, 172, 164, - 159, 310, 244, 54, 136, 371, 18, 316, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }, - { - 154, 381, 48, 348, 241, 131, 362, 249, 5, 166, 187, 349, 117, 325, 329, 61, 339, 366, 343, 250, 58, 170, - 168, 248, 297, 102, 131, 79, 130, 172, 92, 121, 131, 2, 362, 58, 128, 103, 304, 150, 119, 273, 299, 310, - 40, 354, 130, 175, 233, 286, 391, 158, 330, 386, 341, 264, 328, 87, 162, 70, 164, 375, 262, 0, 164, 360, - 341, 309, 102, 299, 156, 173, 175, 164, 158, 350, 330, 333, 325, 100, 59, 360, 347, 20, 228, 375, 164, 0, - 333, 0, 8, 230, 80, 57, 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 - }, - { - 116, 348, 0, 135, 32, 37, 0, 58, 188, 383, 237, 15, 377, 0, 47, 350, 241, 332, 174, 62, 223, 381, 170, - 329, - 57, 327, 350, 345, 310, 107, 32, 247, 282, 31, 31, 265, 297, 282, 175, 83, 367, 84, 237, 66, 384, 188, - 14, 172, 300, 172, 198, 357, 84, 94, 129, 84, 310, 198, 0, 126, 321, 84, 201, 0, 198, 198, 92, 310, 87, - 14, 55, 375, 177, 226, 348, 117, 354, 354, 198, 137, 348, 172, 65, 117, 58, 383, 126, 36, 32, 319, 162, - 29, 172, 65, 170, 126, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 232, 65, 65, 245, 57, 286, 375, 200, 14, 89, 377, 331, 340, 35, 342, 241, 344, 52, 14, 387, 342, 375, 78, - 375, 81, 134, 278, 212, 308, 314, 129, 354, 121, 304, 37, 186, 131, 334, 316, 183, 334, 298, 240, 74, - 285, 348, 231, 370, 100, 180, 170, 92, 310, 347, 37, 232, 193, 72, 143, 344, 50, 282, 376, 0, 375, 354, - 83, 346, 35, 316, 104, 326, 119, 148, 349, 136, 330, 100, 348, 43, 162, 0, 63, 370, 282, 50, 348, 387, - 296, 273, 64, 174, 404, 246, 84, 293, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }, - { - 172, 160, 332, 81, 304, 349, 110, 332, 100, 325, 216, 354, 325, 352, 162, 164, 286, 57, 170, 170, 17, 92, - 37, 346, 129, 374, 185, 164, 123, 157, 92, 341, 350, 349, 352, 304, 63, 179, 176, 176, 20, 0, 6, 78, 78, - 245, 92, 362, 184, 224, 47, 171, 196, 92, 231, 90, 75, 107, 14, 39, 243, 2, 334, 0, 109, 120, 109, 363, - 52, 109, 334, 347, 109, 128, 2, 337, 120, 179, 234, 110, 128, 88, 228, 249, 252, 367, 97, 137, 137, 377, - 367, 0, 371, 70, 241, 350, 11, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 224, 6, 6, 6, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, - 10 - }, - { - 371, 110, 110, 20, 323, 354, 79, 84, 249, 59, 175, 369, 164, 130, 340, 140, 341, 3, 404, 340, 377, 58, 3, - 97, 164, 88, 324, 241, 355, 332, 336, 330, 83, 193, 194, 284, 357, 226, 80, 186, 332, 284, 350, 374, 220, - 282, 123, 55, 373, 152, 340, 282, 186, 196, 378, 373, 284, 65, 208, 386, 33, 80, 226, 0, 173, 314, 375, - 62, 204, 194, 343, 373, 346, 196, 376, 196, 186, 334, 107, 119, 36, 380, 135, 75, 182, 332, 330, 154, - 278, 310, 178, 323, 163, 284, 248, 169, 374, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 232, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, - 19 - }, - { - 164, 157, 391, 135, 232, 122, 175, 363, 377, 354, 122, 180, 331, 337, 121, 103, 359, 45, 125, 186, 115, - 341, - 310, 340, 78, 328, 102, 189, 327, 147, 58, 310, 248, 196, 82, 363, 370, 348, 69, 147, 196, 292, 48, 404, - 37, 187, 102, 119, 292, 330, 240, 282, 168, 34, 332, 347, 342, 329, 325, 125, 347, 2, 121, 0, 125, 371, - 186, 39, 272, 214, 343, 220, 356, 188, 190, 236, 190, 162, 152, 341, 190, 123, 175, 188, 173, 251, 182, - 330, 305, 140, 378, 246, 354, 293, 385, 136, 282, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 21, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, - 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 32, 32 - }, - { - 115, 350, 377, 128, 366, 356, 6, 66, 241, 386, 329, 372, 242, 244, 57, 136, 164, 84, 326, 75, 141, 375, - 129, - 236, 75, 372, 299, 321, 130, 196, 389, 354, 179, 320, 75, 198, 378, 217, 237, 171, 240, 161, 75, 238, - 352, 152, 145, 251, 378, 152, 75, 242, 175, 325, 2, 349, 345, 237, 160, 114, 247, 325, 127, 0, 0, 247, - 252, 31, 159, 114, 354, 334, 331, 183, 179, 352, 34, 34, 345, 276, 154, 97, 0, 117, 175, 35, 219, 295, - 385, 145, 345, 383, 146, 36, 241, 387, 247, 32, 32, 32, 370, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 284, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40 - }, - { - 170, 137, 226, 193, 369, 110, 330, 163, 349, 329, 241, 178, 203, 264, 345, 66, 320, 350, 143, 325, 293, - 373, - 71, 331, 58, 309, 203, 310, 241, 73, 83, 252, 252, 180, 95, 335, 75, 172, 309, 305, 143, 232, 325, 310, - 344, 241, 166, 325, 357, 383, 156, 0, 220, 381, 31, 241, 127, 231, 172, 175, 140, 43, 35, 0, 349, 162, - 234, 241, 378, 52, 387, 46, 178, 92, 278, 160, 366, 125, 330, 66, 63, 226, 358, 127, 62, 164, 125, 330, - 370, 127, 332, 354, 383, 127, 143, 363, 162, 40, 40, 40, 40, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 43, - 43, 382, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 33, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, - 52, 53, 53, 53, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56 - }, - { - 129, 40, 347, 252, 58, 348, 232, 232, 354, 236, 241, 348, 143, 125, 354, 264, 228, 47, 20, 346, 180, 336, - 152, 162, 162, 375, 164, 179, 79, 252, 228, 350, 164, 173, 173, 196, 290, 100, 158, 22, 345, 259, 356, - 302, 180, 335, 220, 375, 80, 72, 376, 0, 348, 284, 353, 375, 311, 84, 189, 298, 186, 30, 404, 0, 354, - 329, 378, 102, 331, 375, 90, 90, 291, 130, 282, 87, 154, 62, 306, 97, 100, 391, 171, 175, 59, 375, 14, - 40, 121, 353, 349, 386, 123, 373, 355, 329, 332, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 61, - 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 368, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 311, 65, 65, 65, 65, 65, - 65, 65 - }, - { - 346, 375, 348, 186, 294, 62, 11, 373, 352, 92, 90, 305, 294, 180, 302, 84, 341, 241, 354, 241, 294, 304, - 57, - 102, 299, 164, 216, 332, 59, 164, 356, 375, 360, 162, 262, 335, 316, 258, 386, 199, 375, 332, 209, 249, - 82, 184, 357, 375, 131, 375, 354, 148, 8, 232, 208, 164, 353, 232, 20, 171, 209, 393, 375, 0, 134, 123, - 314, 375, 155, 110, 349, 386, 375, 258, 70, 378, 216, 240, 90, 363, 320, 154, 88, 131, 309, 316, 344, - 178, 175, 97, 393, 384, 9, 241, 375, 154, 163, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 319, 73, 73, 73, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, - 77, 77 - }, - { - 231, 170, 391, 354, 297, 0, 348, 330, 15, 92, 84, 232, 221, 129, 376, 387, 340, 36, 59, 332, 386, 354, - 340, - 375, 142, 97, 261, 299, 261, 92, 141, 278, 189, 375, 92, 175, 297, 92, 350, 326, 249, 0, 348, 120, 245, - 92, 334, 240, 128, 385, 376, 391, 404, 299, 216, 273, 121, 255, 221, 354, 236, 386, 318, 0, 326, 36, 123, - 152, 404, 228, 273, 385, 164, 360, 344, 354, 282, 131, 220, 160, 220, 10, 19, 321, 378, 228, 64, 329, - 321, 43, 220, 334, 36, 147, 57, 385, 340, 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84 - }, - { - 297, 100, 385, 328, 321, 347, 248, 220, 220, 311, 33, 310, 64, 174, 168, 330, 329, 153, 43, 371, 151, - 151, - 36, 52, 168, 362, 51, 127, 248, 70, 362, 173, 245, 40, 284, 84, 243, 40, 114, 241, 109, 283, 82, 191, - 250, 378, 171, 207, 19, 7, 294, 114, 373, 64, 348, 286, 131, 250, 237, 164, 381, 28, 61, 0, 53, 322, 131, - 140, 131, 161, 231, 37, 183, 378, 323, 128, 298, 246, 344, 383, 355, 108, 130, 232, 348, 68, 278, 331, - 378, 199, 97, 245, 193, 10, 278, 229, 171, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 240, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 87, 87, 87, 87, 87, 87, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 105, 91, 91, 91, 91, 91, 0, 93, 93, 94, 94, 94, - 94 - }, - { - 217, 84, 79, 88, 79, 284, 184, 334, 248, 193, 179, 102, 250, 37, 349, 220, 14, 155, 128, 357, 263, 92, - 108, - 376, 157, 58, 27, 84, 316, 164, 159, 134, 100, 332, 107, 352, 331, 375, 36, 298, 378, 393, 313, 124, 90, - 88, 152, 357, 222, 334, 240, 157, 388, 225, 232, 91, 303, 99, 354, 125, 371, 116, 374, 0, 367, 377, 175, - 170, 253, 84, 367, 97, 243, 137, 383, 27, 389, 20, 341, 15, 300, 332, 237, 337, 116, 348, 356, 45, 404, - 329, 68, 334, 92, 129, 337, 186, 79, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, - 101, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, - 104, 104, 104, 104, 104, 104, 105 - }, - { - 71, 83, 378, 114, 245, 249, 191, 243, 97, 284, 357, 110, 305, 356, 39, 267, 374, 212, 243, 334, 173, 231, - 70, 385, 40, 284, 378, 244, 173, 125, 21, 121, 14, 378, 48, 345, 360, 390, 232, 234, 354, 381, 368, 277, - 104, 348, 116, 31, 147, 237, 362, 92, 404, 92, 209, 301, 51, 64, 301, 161, 167, 334, 20, 0, 189, 294, - 305, 168, 57, 84, 125, 193, 153, 56, 128, 381, 160, 334, 175, 284, 360, 241, 225, 241, 232, 88, 134, 175, - 175, 345, 58, 269, 379, 96, 243, 166, 284, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 12, 108, 108, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 196, 110, 110, 110, 110, 110, - 110, 110, 111, 111, 112, 112, 112, 112, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116 - }, - { - 158, 153, 354, 356, 109, 373, 303, 309, 212, 306, 348, 241, 308, 381, 377, 226, 296, 377, 243, 385, 308, - 175, 175, 125, 320, 350, 354, 157, 173, 245, 166, 158, 243, 356, 376, 250, 166, 15, 71, 390, 164, 284, - 179, 350, 356, 385, 354, 79, 282, 372, 282, 405, 110, 208, 53, 370, 243, 368, 232, 8, 329, 276, 141, 0, - 262, 14, 299, 349, 372, 189, 303, 116, 88, 134, 196, 377, 164, 297, 114, 314, 273, 170, 382, 7, 160, 77, - 250, 110, 332, 84, 164, 356, 175, 134, 241, 7, 370, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, - 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 92, 92, 92, 92, 92, 92, 92, 92 - }, - { - 117, 117, 270, 305, 15, 190, 387, 125, 164, 335, 84, 221, 11, 97, 339, 124, 382, 305, 270, 82, 126, 196, - 270, 270, 221, 330, 167, 150, 20, 119, 286, 92, 332, 317, 212, 164, 393, 62, 212, 311, 158, 294, 133, 95, - 374, 133, 353, 92, 29, 377, 343, 356, 126, 354, 129, 323, 258, 326, 249, 199, 386, 315, 215, 0, 85, 129, - 286, 384, 232, 373, 276, 114, 375, 92, 82, 357, 258, 57, 130, 80, 389, 133, 367, 6, 84, 375, 241, 377, - 114, 367, 330, 84, 348, 282, 20, 378, 250, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 140, 125, 125, 125, 125, 125, 125, 125 - }, - { - 171, 378, 280, 88, 346, 84, 320, 373, 56, 40, 284, 376, 341, 389, 132, 8, 250, 196, 286, 391, 152, 131, - 258, - 108, 348, 129, 378, 39, 149, 196, 136, 152, 116, 47, 119, 94, 306, 335, 148, 334, 251, 87, 179, 343, 231, - 332, 84, 331, 314, 261, 311, 349, 162, 335, 135, 106, 65, 314, 294, 126, 333, 121, 136, 0, 125, 341, 375, - 326, 373, 404, 36, 249, 286, 9, 314, 334, 323, 332, 94, 339, 309, 339, 335, 114, 330, 84, 313, 299, 72, - 154, 84, 131, 116, 375, 345, 132, 83, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 220, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 134, 129, 129, 129, 129, 129, 129, 129, 129, 129, 92, 129, 129, 129, 129, 129, 129, 129, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130 - }, - { - 92, 340, 258, 387, 282, 74, 169, 404, 167, 306, 251, 280, 241, 384, 241, 323, 374, 332, 285, 348, 306, - 323, - 89, 324, 13, 383, 23, 104, 389, 178, 172, 348, 369, 14, 46, 171, 190, 241, 245, 310, 387, 122, 388, 330, - 386, 337, 167, 130, 81, 265, 193, 354, 387, 79, 404, 340, 350, 279, 241, 340, 333, 125, 143, 0, 332, 264, - 190, 241, 71, 376, 62, 193, 191, 355, 347, 10, 294, 249, 15, 119, 94, 387, 190, 325, 84, 325, 340, 96, - 191, 335, 166, 387, 233, 357, 349, 309, 98, 130, 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, 132, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, - 135, 135, 135, 136, 136, 136, 136, 136, 136, 128, 136, 136, 136, 137, 137, 137, 137, 137, 137 - }, - { - 375, 357, 36, 31, 56, 331, 355, 387, 340, 350, 325, 94, 0, 350, 130, 348, 383, 208, 9, 116, 226, 377, - 125, - 301, 251, 290, 357, 331, 299, 330, 261, 306, 84, 357, 373, 90, 263, 116, 366, 308, 341, 297, 373, 387, - 306, 120, 23, 14, 83, 50, 164, 301, 349, 330, 387, 162, 381, 243, 182, 375, 404, 198, 234, 0, 166, 341, - 387, 92, 334, 299, 404, 13, 348, 362, 198, 244, 122, 332, 92, 276, 339, 254, 341, 299, 127, 366, 393, - 375, 278, 270, 170, 354, 79, 256, 46, 392, 125, 137, 137, 137, 137, 137, 138, 138, 138, 91, 139, 139, - 139, 139, 139, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, 146, - 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 150, 150, - 150, 150, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, 153 - }, - { - 256, 31, 265, 339, 121, 117, 390, 330, 244, 357, 55, 350, 121, 330, 273, 125, 126, 119, 362, 48, 335, - 385, - 14, 304, 348, 216, 299, 348, 277, 340, 92, 18, 243, 158, 240, 343, 241, 231, 220, 196, 162, 335, 390, - 152, 353, 340, 162, 332, 31, 128, 175, 31, 350, 278, 333, 332, 391, 390, 179, 330, 158, 162, 166, 0, 114, - 258, 378, 373, 65, 330, 350, 306, 357, 332, 299, 335, 85, 85, 241, 20, 237, 333, 371, 89, 350, 100, 392, - 304, 25, 241, 327, 350, 162, 304, 175, 294, 89, 153, 153, 153, 154, 154, 154, 154, 155, 155, 155, 155, - 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, - 161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164 - }, - { - 0, 282, 97, 378, 134, 188, 193, 98, 309, 135, 84, 282, 99, 385, 354, 3, 78, 294, 180, 172, 232, 78, 33, - 325, - 14, 92, 38, 172, 135, 189, 371, 179, 232, 92, 92, 176, 189, 55, 346, 353, 353, 82, 6, 346, 97, 353, 361, - 186, 348, 378, 348, 261, 253, 244, 119, 348, 348, 346, 244, 332, 354, 159, 355, 0, 79, 278, 82, 278, 166, - 400, 244, 114, 38, 82, 114, 37, 52, 84, 331, 230, 156, 238, 175, 375, 354, 330, 335, 330, 143, 121, 121, - 334, 276, 114, 126, 377, 276, 164, 164, 164, 164, 164, 164, 164, 164, 167, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, - 168, 168, 168, 168, 168, 168, 161, 168, 168, 168, 168, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, 173, 173 - }, - { - 37, 341, 37, 387, 323, 121, 115, 110, 234, 166, 250, 5, 170, 230, 127, 5, 121, 341, 59, 0, 96, 96, 96, - 65, - 264, 200, 381, 313, 232, 348, 250, 124, 134, 40, 178, 129, 367, 174, 92, 160, 123, 353, 118, 348, 246, - 357, 57, 114, 375, 0, 373, 34, 374, 353, 385, 311, 405, 344, 372, 0, 109, 283, 169, 0, 131, 14, 62, 104, - 326, 340, 237, 48, 66, 0, 313, 134, 48, 153, 166, 166, 327, 153, 166, 166, 48, 283, 295, 313, 153, 372, - 375, 57, 214, 245, 208, 313, 313, 173, 173, 173, 173, 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 404, 404, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 404, 404, 404, 176, 176, 176, 176, 176, 176, 177, 177, 178, 178, 178, 178, - 178, 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182 - }, - { - 173, 371, 294, 297, 371, 348, 249, 144, 26, 241, 62, 119, 37, 258, 263, 355, 29, 246, 82, 229, 227, 353, - 254, 326, 241, 232, 330, 330, 144, 65, 81, 6, 20, 340, 310, 386, 148, 375, 208, 237, 386, 377, 332, 198, - 250, 143, 37, 346, 227, 375, 338, 77, 113, 386, 153, 374, 311, 52, 186, 335, 335, 181, 335, 0, 213, 326, - 326, 339, 145, 353, 113, 228, 278, 313, 186, 45, 282, 250, 307, 391, 92, 353, 336, 320, 36, 318, 69, 203, - 232, 97, 164, 370, 299, 129, 167, 291, 16, 182, 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 191, 191, - 191, 191, 191, 192, 192, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 195, 196 - }, - { - 178, 233, 162, 251, 115, 57, 205, 200, 258, 282, 383, 134, 68, 232, 123, 328, 186, 264, 381, 37, 179, - 223, - 62, 3, 203, 289, 357, 376, 262, 316, 325, 136, 124, 71, 14, 32, 345, 321, 285, 305, 297, 383, 348, 168, - 92, 232, 335, 404, 223, 32, 175, 123, 227, 41, 126, 175, 381, 175, 128, 350, 404, 342, 399, 0, 314, 208, - 168, 52, 153, 334, 319, 226, 375, 128, 329, 52, 0, 333, 0, 82, 379, 57, 150, 216, 136, 40, 135, 156, 166, - 319, 241, 52, 18, 343, 263, 356, 361, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 201, 201, 201, 202, 203, 203, 203, 203, 203, - 204, 205, 205, 206, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, - 209, 209, 210, 210, 211, 211, 212, 212, 212, 212, 212, 212, 212, 213, 214, 214, 214, 214 - }, - { - 332, 16, 337, 154, 169, 345, 175, 123, 358, 179, 250, 361, 176, 208, 360, 332, 328, 132, 170, 132, 128, - 92, - 109, 339, 190, 212, 91, 125, 375, 375, 339, 303, 332, 29, 330, 354, 337, 134, 133, 336, 281, 133, 310, - 284, 304, 240, 240, 100, 241, 310, 331, 59, 79, 224, 303, 79, 79, 175, 171, 331, 248, 227, 149, 0, 84, - 362, 83, 164, 354, 159, 0, 20, 243, 0, 120, 387, 15, 198, 65, 69, 9, 29, 348, 25, 174, 56, 342, 220, 61, - 58, 244, 175, 348, 92, 125, 328, 241, 214, 214, 215, 215, 215, 215, 216, 216, 216, 216, 217, 217, 217, - 405, 218, 219, 219, 221, 221, 221, 221, 222, 223, 223, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, - 224, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, - 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232 - }, - { - 175, 175, 31, 290, 125, 237, 345, 345, 26, 161, 313, 311, 128, 231, 348, 29, 190, 88, 354, 331, 386, 121, - 299, 375, 319, 325, 241, 326, 258, 84, 378, 117, 136, 92, 5, 388, 184, 259, 108, 349, 353, 348, 245, 232, - 309, 62, 164, 352, 11, 348, 378, 208, 224, 19, 339, 220, 332, 114, 393, 68, 65, 212, 116, 0, 186, 283, - 98, 189, 325, 84, 386, 375, 92, 48, 0, 342, 179, 164, 261, 375, 35, 354, 339, 386, 169, 329, 92, 102, 47, - 96, 101, 211, 354, 386, 229, 198, 376, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, 233, - 234, 234, 234, 234, 235, 235, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, - 238, 238, 238, 238, 238, 238, 238, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 10, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242 - }, - { - 243, 378, 119, 84, 87, 302, 42, 131, 77, 3, 127, 37, 237, 243, 160, 286, 382, 55, 27, 354, 70, 325, 164, - 69, - 84, 258, 349, 240, 357, 299, 36, 216, 329, 17, 330, 94, 378, 196, 382, 393, 320, 249, 301, 35, 231, 330, - 337, 350, 34, 137, 345, 54, 107, 54, 124, 324, 353, 262, 334, 332, 326, 129, 201, 0, 198, 316, 0, 183, - 47, 62, 250, 68, 388, 156, 175, 325, 258, 154, 240, 386, 90, 104, 178, 39, 44, 369, 187, 164, 10, 246, - 135, 246, 62, 276, 130, 371, 375, 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 245, 245, 245, 245, 245, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, - 248, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, 250 - }, - { - 94, 149, 246, 345, 324, 13, 377, 125, 170, 304, 310, 59, 116, 110, 45, 32, 119, 84, 157, 276, 345, 348, - 311, - 241, 323, 27, 373, 363, 133, 14, 348, 188, 0, 228, 66, 249, 143, 333, 323, 354, 354, 84, 166, 341, 201, - 27, 328, 45, 334, 233, 198, 3, 350, 155, 155, 126, 190, 393, 393, 389, 262, 330, 347, 0, 345, 250, 125, - 84, 404, 125, 230, 114, 114, 115, 345, 316, 386, 247, 189, 120, 282, 87, 377, 243, 325, 20, 325, 92, 71, - 220, 301, 251, 373, 343, 284, 158, 387, 250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 252, 252, 252, 252, 252, 252, 252, 252, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, - 255, 256, 256, 256, 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 259, 260, 261, 261, - 261, 261, 261, 261, 261, 261, 261, 261, 262, 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 264, 264, 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 269, 269, 269, 269, 270, 270 - }, - { - 220, 355, 186, 357, 286, 381, 100, 254, 342, 0, 325, 353, 296, 349, 284, 45, 284, 357, 373, 263, 164, - 252, - 355, 164, 134, 330, 40, 340, 316, 172, 328, 63, 243, 389, 238, 54, 355, 40, 354, 226, 240, 199, 330, 82, - 357, 267, 25, 189, 300, 194, 296, 172, 330, 97, 159, 91, 54, 305, 179, 341, 385, 102, 387, 0, 103, 393, - 311, 27, 229, 0, 282, 159, 171, 311, 339, 184, 314, 378, 3, 166, 387, 237, 340, 130, 317, 129, 325, 318, - 26, 354, 348, 386, 14, 175, 21, 370, 162, 270, 270, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, - 274, 275, 276, 276, 276, 29, 276, 276, 276, 276, 276, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, 283, 283 - }, - { - 244, 182, 345, 171, 330, 234, 103, 107, 62, 175, 281, 279, 62, 343, 20, 62, 367, 282, 341, 116, 5, 189, - 404, - 376, 238, 126, 189, 48, 211, 121, 137, 349, 278, 349, 104, 35, 116, 276, 147, 243, 180, 361, 363, 164, - 325, 92, 343, 283, 188, 223, 31, 63, 265, 162, 354, 127, 378, 149, 125, 181, 357, 10, 353, 0, 175, 220, - 75, 309, 81, 136, 81, 263, 82, 153, 292, 344, 340, 84, 305, 329, 68, 294, 334, 330, 268, 357, 280, 125, - 300, 171, 354, 331, 294, 216, 341, 357, 354, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 282, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286 - }, - { - 334, 109, 2, 121, 121, 92, 386, 333, 323, 192, 163, 126, 24, 282, 273, 166, 143, 355, 55, 375, 305, 369, - 300, 345, 79, 66, 335, 97, 378, 125, 142, 268, 343, 220, 7, 72, 236, 355, 214, 377, 328, 234, 241, 362, - 35, 373, 77, 208, 350, 48, 334, 241, 78, 125, 354, 153, 15, 385, 189, 158, 130, 248, 245, 0, 0, 332, 297, - 404, 348, 340, 335, 348, 156, 162, 128, 62, 375, 11, 220, 196, 119, 228, 296, 304, 318, 248, 127, 325, - 172, 121, 223, 142, 357, 10, 164, 378, 378, 286, 287, 287, 288, 288, 288, 288, 289, 289, 290, 290, 290, - 291, 291, 291, 291, 292, 292, 292, 292, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 284, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 339, 297, 297, 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 299, 299, 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, 302, 302, 302, 302, 302 - }, - { - 2, 170, 341, 246, 157, 363, 329, 265, 265, 246, 175, 297, 318, 183, 357, 237, 354, 343, 92, 132, 341, - 249, - 297, 132, 83, 20, 333, 348, 332, 354, 134, 332, 332, 349, 244, 350, 173, 315, 117, 356, 171, 220, 186, - 158, 153, 158, 92, 305, 182, 162, 162, 121, 295, 375, 325, 153, 118, 164, 92, 162, 118, 179, 92, 0, 153, - 175, 125, 0, 308, 162, 251, 334, 348, 176, 187, 17, 375, 334, 134, 116, 340, 54, 84, 340, 175, 116, 109, - 128, 134, 10, 345, 369, 369, 153, 18, 330, 286, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, - 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 307, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, 311, 311, 312, 312, 312, 313, 313, 313 - }, - { - 64, 249, 66, 0, 136, 372, 347, 354, 107, 386, 333, 80, 75, 6, 37, 243, 326, 356, 356, 137, 241, 314, 375, - 355, 252, 353, 246, 241, 376, 198, 324, 82, 82, 108, 84, 254, 228, 208, 307, 237, 62, 134, 164, 84, 367, - 340, 232, 232, 332, 64, 17, 19, 369, 312, 97, 350, 179, 47, 121, 183, 84, 169, 348, 0, 332, 164, 348, - 237, 245, 281, 348, 324, 196, 245, 102, 248, 160, 337, 129, 249, 124, 356, 34, 11, 107, 341, 373, 240, - 332, 167, 14, 355, 353, 129, 57, 63, 121, 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 317, 317, 318, 318, 318, 318, 318, 318, 319, 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 325 - }, - { - 295, 134, 241, 354, 137, 330, 178, 164, 65, 306, 154, 107, 107, 9, 81, 325, 319, 357, 301, 243, 325, 208, - 325, 167, 68, 75, 8, 385, 324, 24, 189, 0, 156, 129, 313, 184, 340, 190, 129, 284, 341, 345, 262, 325, - 84, 355, 186, 325, 264, 335, 331, 350, 284, 376, 305, 378, 387, 309, 355, 188, 156, 70, 249, 0, 330, 328, - 357, 354, 350, 126, 8, 294, 47, 330, 327, 166, 226, 261, 92, 329, 339, 107, 348, 232, 117, 348, 70, 207, - 331, 116, 121, 180, 348, 326, 350, 308, 376, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330 - }, - { - 25, 0, 241, 311, 279, 62, 175, 325, 375, 35, 250, 232, 354, 125, 174, 246, 349, 126, 326, 334, 182, 372, - 372, 180, 354, 172, 48, 164, 182, 334, 32, 196, 391, 294, 249, 307, 375, 231, 127, 250, 17, 168, 102, - 330, 241, 381, 81, 168, 136, 136, 349, 309, 128, 256, 334, 329, 376, 343, 294, 40, 36, 58, 164, 0, 320, - 348, 131, 55, 241, 92, 333, 281, 246, 350, 30, 164, 364, 341, 378, 363, 335, 183, 335, 241, 261, 125, - 109, 385, 129, 18, 110, 79, 162, 129, 156, 193, 164, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 332, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 276, 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, 334, 342, 334, 334, 334, 334, 334, 334, 334 - }, - { - 249, 212, 175, 70, 334, 378, 173, 164, 173, 227, 347, 232, 279, 347, 350, 286, 330, 24, 250, 251, 24, - 182, - 129, 378, 385, 120, 405, 229, 376, 181, 77, 143, 192, 330, 140, 355, 250, 171, 341, 286, 314, 333, 354, - 116, 325, 59, 38, 325, 59, 384, 88, 354, 348, 84, 230, 129, 376, 57, 348, 376, 129, 375, 335, 0, 254, - 375, 137, 30, 348, 254, 320, 171, 228, 220, 393, 14, 280, 134, 149, 342, 373, 348, 224, 84, 62, 84, 103, - 375, 375, 254, 348, 320, 199, 96, 341, 372, 250, 334, 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, - 335, 335, 124, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 108, 337, 337, 337, 337, 337, - 338, 338, 338, 338, 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 40, 340, 340, 340, 340, 340, 341, 341, 341, 341, 341, 341 - }, - { - 354, 208, 20, 0, 221, 241, 148, 258, 126, 392, 196, 129, 77, 263, 378, 102, 349, 138, 337, 0, 154, 211, - 286, - 335, 154, 164, 135, 282, 129, 373, 172, 92, 348, 21, 382, 291, 253, 164, 339, 304, 154, 306, 355, 171, - 37, 32, 59, 167, 229, 81, 355, 345, 70, 375, 348, 241, 104, 144, 241, 309, 309, 84, 376, 0, 335, 65, 154, - 317, 353, 353, 355, 84, 354, 317, 345, 348, 228, 57, 357, 302, 96, 118, 261, 355, 200, 132, 301, 226, - 271, 211, 350, 129, 118, 148, 166, 164, 284, 341, 341, 341, 341, 342, 342, 342, 342, 342, 342, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 220, 220, 220, 220 - }, - { - 404, 348, 65, 335, 332, 325, 16, 26, 92, 278, 239, 14, 240, 125, 381, 125, 54, 92, 57, 358, 79, 81, 333, - 343, 17, 256, 182, 158, 5, 363, 121, 26, 299, 216, 57, 166, 58, 286, 369, 14, 158, 240, 375, 0, 286, 321, - 284, 11, 335, 20, 35, 157, 173, 330, 332, 158, 372, 56, 134, 360, 284, 125, 348, 0, 158, 344, 330, 83, - 84, 0, 6, 110, 92, 92, 332, 100, 15, 345, 340, 136, 233, 184, 189, 189, 235, 284, 294, 92, 373, 136, 189, - 311, 166, 220, 375, 137, 330, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349 - }, - { - 278, 325, 330, 310, 354, 158, 75, 70, 246, 227, 92, 194, 350, 96, 250, 369, 130, 100, 61, 125, 179, 250, - 125, 325, 136, 250, 179, 158, 282, 92, 100, 345, 310, 249, 130, 50, 375, 33, 92, 57, 375, 335, 251, 91, - 284, 102, 335, 122, 249, 337, 208, 241, 175, 367, 14, 337, 279, 95, 375, 342, 40, 330, 348, 0, 175, 136, - 330, 345, 330, 345, 66, 84, 249, 249, 128, 92, 79, 343, 64, 114, 30, 306, 340, 129, 348, 258, 343, 349, - 278, 241, 320, 92, 343, 349, 75, 82, 344, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 340, 354, 354, 354, 354, 354, 354, 354, 354, 354 - }, - { - 220, 295, 282, 349, 349, 136, 334, 204, 35, 353, 375, 338, 80, 336, 191, 281, 345, 268, 384, 340, 348, - 348, - 297, 37, 110, 282, 110, 340, 373, 378, 374, 96, 386, 369, 97, 84, 125, 65, 171, 309, 346, 217, 226, 377, - 88, 348, 134, 220, 367, 348, 348, 250, 371, 237, 14, 338, 250, 20, 55, 389, 306, 378, 47, 0, 372, 352, - 340, 343, 348, 120, 110, 284, 245, 334, 284, 112, 70, 115, 102, 251, 121, 129, 117, 87, 346, 325, 282, - 377, 314, 189, 194, 179, 121, 345, 338, 98, 77, 354, 354, 354, 354, 354, 354, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, 356, 356, 220, 356, - 356, 356, 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 359, 359, - 359, 359, 359, 359, 359, 360, 360, 360, 360, 361, 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 363, 363, 363, 363, 364, 365, 366, 366, 28, 366, 367, 367, 367, 367, 367 - }, - { - 19, 311, 348, 162, 378, 152, 250, 329, 92, 375, 258, 50, 159, 75, 152, 348, 313, 57, 11, 31, 353, 145, - 127, - 246, 287, 3, 354, 334, 36, 129, 332, 329, 329, 90, 295, 21, 121, 131, 356, 373, 356, 70, 117, 32, 291, - 129, 143, 250, 48, 334, 299, 324, 332, 81, 157, 302, 348, 208, 349, 377, 232, 385, 31, 0, 35, 384, 92, - 241, 304, 383, 325, 134, 247, 68, 374, 393, 388, 243, 385, 167, 125, 92, 331, 178, 282, 16, 117, 233, - 354, 335, 340, 233, 284, 341, 284, 122, 117, 367, 367, 367, 278, 367, 358, 367, 367, 367, 368, 368, 368, - 368, 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374 - }, - { - 75, 376, 309, 335, 84, 240, 313, 158, 241, 354, 386, 381, 330, 121, 349, 315, 332, 201, 35, 83, 378, 346, - 345, 120, 341, 91, 221, 340, 197, 347, 325, 337, 308, 377, 278, 238, 318, 120, 123, 91, 350, 189, 334, - 189, 331, 244, 373, 342, 309, 297, 9, 37, 369, 348, 126, 355, 335, 334, 306, 220, 220, 375, 354, 0, 234, - 48, 164, 196, 196, 279, 372, 195, 125, 363, 389, 166, 404, 362, 340, 103, 330, 385, 5, 5, 130, 372, 348, - 334, 126, 182, 371, 332, 321, 57, 340, 366, 273, 373, 374, 374, 374, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 376, 376, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378 - }, - { - 330, 367, 72, 374, 334, 158, 75, 350, 136, 92, 392, 127, 20, 121, 381, 329, 365, 367, 375, 127, 304, 365, - 240, 283, 341, 362, 304, 58, 299, 332, 92, 128, 369, 400, 348, 2, 369, 121, 335, 348, 348, 278, 255, 400, - 243, 72, 302, 116, 377, 109, 348, 350, 140, 354, 125, 121, 70, 372, 341, 360, 162, 282, 325, 0, 31, 164, - 348, 15, 372, 345, 75, 39, 325, 39, 220, 31, 255, 349, 158, 35, 335, 212, 119, 360, 348, 58, 369, 345, - 70, 320, 258, 338, 338, 14, 377, 282, 340, 378, 378, 378, 378, 379, 371, 380, 381, 381, 381, 381, 390, - 381, 382, 382, 382, 382, 382, 382, 382, 383, 383, 383, 383, 383, 383, 384, 384, 385, 385, 385, 385, 385, - 385, 385, 385, 372, 385, 385, 386, 386, 386, 386, 386, 386, 386, 386, 359, 386, 386, 386, 386, 386, 386, - 387, 387, 387, 387, 387, 387, 387, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 389, 389, 390, 390, - 391, 391, 391, 391, 392, 392, 393, 393, 393, 367, 393, 393, 393, 393, 0, 0, 0, 0, 0 - }, - { - 243, 114, 331, 92, 114, 107, 173, 330, 330, 168, 107, 70, 173, 241, 164, 61, 15, 286, 332, 83, 375, 375, - 345, 345, 40, 121, 319, 348, 348, 345, 6, 115, 75, 40, 345, 154, 87, 134, 240, 330, 119, 378, 124, 82, - 330, 123, 326, 119, 62, 387, 82, 348, 3, 232, 199, 232, 96, 199, 353, 196, 294, 119, 184, 0, 196, 3, 354, - 208, 14, 354, 124, 317, 184, 330, 348, 354, 40, 304, 119, 136, 11, 373, 357, 84, 23, 95, 307, 348, 108, - 323, 236, 123, 79, 304, 323, 368, 375, 40, 92, 329, 87, 209, 268, 232, 93, 36, 91, 203, 75, 286, 354, - 235, 14, 320, 220, 220, 375, 62, 336, 349, 153, 354, 90, 306, 63, 92, 200, 212, 92, 241, 189, 11, 273, - 97, 363, 281, 54, 345, 136, 294, 347, 345, 250, 238, 102, 153, 15, 363, 98, 353, 27, 348, 326, 131, 148, - 102, 139, 156, 92, 345, 323, 150, 234, 136, 127, 123, 348, 314, 324, 57, 66, 370, 161, 268, 348, 198, - 258, 354, 232, 344, 321, 329, 32, 25, 141, 378, 214, 138, 353, 348, 96 - }, - { - 77, 378, 284, 14, 386, 77, 102, 233, 78, 181, 307, 283, 152, 84, 312, 348, 37, 184, 110, 82, 175, 170, - 121, - 87, 233, 386, 124, 340, 364, 128, 87, 361, 125, 350, 343, 373, 281, 18, 18, 249, 281, 42, 361, 377, 157, - 360, 47, 35, 279, 310, 229, 94, 332, 181, 125, 299, 84, 304, 48, 48, 375, 92, 370, 0, 70, 130, 338, 45, - 357, 10, 359, 157, 83, 25, 92, 283, 348, 390, 84, 96, 269, 363, 168, 348, 7, 35, 323, 375, 383, 16, 357, - 366, 57, 360, 345, 240, 278, 314, 320, 208, 86, 92, 77, 353, 149, 140, 378, 348, 311, 30, 128, 216, 197, - 39, 345, 164, 249, 164, 354, 237, 352, 294, 83, 243, 267, 225, 385, 286, 179, 328, 14, 309, 100, 146, - 134, 82, 345, 335, 92, 325, 387, 404, 305, 18, 221, 37, 330, 131, 125, 128, 133, 314, 341, 57, 314, 319, - 281, 243, 389, 356, 51, 62, 330, 343, 114, 104, 31, 153, 10, 240, 114, 84, 84, 297, 294, 326, 345, 20, - 103, 184, 335, 176, 239, 19, 350, 179, 162, 167, 116, 169, 332 - }, - { - 323, 350, 130, 382, 332, 361, 14, 70, 286, 345, 0, 341, 173, 382, 361, 357, 14, 377, 83, 357, 330, 338, - 330, - 36, 36, 331, 305, 388, 164, 278, 248, 349, 332, 386, 136, 246, 62, 47, 373, 316, 62, 330, 369, 136, 129, - 250, 40, 123, 342, 311, 74, 88, 301, 50, 330, 371, 297, 349, 250, 125, 252, 385, 325, 0, 175, 58, 249, - 386, 309, 250, 37, 120, 127, 127, 128, 362, 356, 77, 389, 329, 143, 136, 35, 227, 356, 224, 241, 320, - 348, 209, 171, 186, 148, 386, 242, 378, 250, 295, 237, 376, 194, 345, 129, 114, 278, 223, 134, 204, 97, - 110, 62, 371, 250, 348, 152, 162, 98, 129, 121, 282, 96, 251, 374, 122, 340, 127, 90, 152, 395, 388, 385, - 325, 354, 282, 31, 299, 35, 125, 342, 347, 75, 354, 341, 3, 62, 386, 233, 196, 58, 297, 284, 189, 372, - 125, 365, 127, 136, 345, 369, 35, 57, 130, 393, 329, 243, 131, 8, 63, 393, 11, 337, 87, 375, 212, 388, - 44, 232, 325, 120, 325, 330, 107, 248, 152, 183, 329, 80, 19, 232, 11, 347 - }, - { - 369, 226, 378, 208, 348, 92, 74, 74, 378, 392, 380, 333, 65, 233, 375, 129, 23, 55, 250, 286, 316, 50, - 145, - 212, 334, 21, 392, 198, 286, 128, 127, 0, 125, 241, 328, 325, 129, 252, 212, 134, 212, 178, 175, 163, - 328, 251, 389, 245, 348, 62, 387, 231, 374, 354, 73, 45, 352, 375, 367, 35, 320, 305, 84, 0, 389, 257, - 367, 318, 244, 369, 63, 309, 92, 172, 360, 14, 38, 175, 168, 305, 375, 297, 330, 153, 92, 385, 244, 375, - 226, 387, 166, 362, 254, 318, 134, 332, 376, 62, 303, 124, 375, 378, 150, 245, 343, 357, 164, 350, 90, - 330, 84, 232, 304, 345, 135, 345, 349, 370, 238, 278, 388, 171, 83, 40, 119, 181, 250, 280, 110, 91, 188, - 340, 335, 296, 335, 136, 125, 278, 58, 32, 294, 15, 12, 249, 12, 75, 78, 286, 92, 352, 110, 340, 329, 91, - 373, 152, 232, 348, 164, 241, 8, 88, 173, 63, 175, 34, 62, 320, 208, 198, 5, 344, 65, 68, 139, 278, 279, - 203, 87, 349, 36, 284, 104, 343, 169, 355, 375, 3, 348, 232, 209 - }, - { - 20, 50, 136, 170, 302, 127, 127, 168, 73, 100, 55, 14, 14, 134, 127, 73, 39, 92, 329, 356, 209, 375, 356, - 375, 40, 71, 325, 173, 170, 332, 325, 158, 255, 335, 212, 302, 250, 252, 51, 390, 330, 153, 241, 170, 57, - 82, 309, 74, 95, 159, 258, 179, 2, 92, 134, 146, 0, 345, 186, 141, 250, 404, 160, 0, 320, 375, 345, 309, - 59, 350, 354, 34, 367, 102, 137, 356, 336, 56, 341, 79, 258, 278, 152, 286, 319, 241, 303, 75, 199, 241, - 184, 264, 152, 243, 381, 114, 116, 231, 316, 272, 56, 148, 65, 349, 163, 115, 91, 355, 182, 352, 167, 37, - 336, 232, 348, 26, 128, 200, 70, 243, 92, 323, 338, 241, 333, 84, 355, 357, 81, 92, 164, 75, 134, 232, - 375, 265, 332, 32, 48, 246, 329, 243, 241, 278, 15, 378, 147, 348, 196, 88, 235, 173, 6, 198, 134, 254, - 247, 37, 84, 171, 211, 349, 184, 350, 248, 193, 311, 243, 348, 256, 14, 47, 134, 314, 121, 378, 313, 127, - 84, 258, 337, 251, 121, 343, 194, 241, 128, 38, 126, 179, 350 - }, - { - 250, 152, 62, 171, 56, 5, 373, 79, 152, 346, 231, 11, 97, 97, 228, 378, 261, 75, 6, 377, 375, 220, 143, - 372, - 375, 284, 237, 77, 95, 134, 334, 101, 344, 139, 251, 377, 386, 375, 281, 167, 354, 280, 353, 355, 349, - 372, 323, 84, 247, 377, 348, 171, 372, 369, 167, 386, 121, 324, 46, 121, 140, 348, 231, 0, 243, 103, 209, - 237, 100, 11, 178, 225, 167, 264, 262, 92, 346, 332, 42, 49, 292, 344, 353, 114, 286, 84, 386, 84, 357, - 12, 369, 354, 357, 306, 97, 373, 331, 343, 93, 130, 181, 300, 114, 377, 140, 14, 284, 328, 353, 75, 186, - 353, 164, 316, 332, 84, 299, 353, 62, 282, 100, 167, 350, 45, 131, 241, 330, 295, 130, 200, 241, 6, 286, - 32, 312, 354, 119, 14, 84, 316, 57, 52, 345, 389, 58, 125, 323, 350, 97, 107, 242, 83, 282, 333, 325, 31, - 139, 241, 153, 330, 75, 10, 224, 313, 174, 225, 341, 124, 373, 284, 263, 196, 76, 11, 327, 109, 92, 164, - 9, 125, 293, 159, 350, 354, 297, 188, 69, 330, 166, 50, 170 - }, - { - 355, 175, 334, 33, 381, 325, 341, 342, 372, 128, 369, 21, 168, 82, 79, 170, 91, 273, 140, 119, 348, 92, - 383, - 77, 354, 125, 114, 162, 229, 164, 164, 175, 170, 56, 377, 167, 357, 47, 391, 15, 156, 47, 348, 15, 15, 0, - 8, 47, 15, 233, 216, 216, 373, 46, 348, 259, 79, 284, 263, 31, 88, 354, 348, 0, 241, 367, 324, 316, 384, - 309, 333, 309, 75, 376, 34, 208, 375, 373, 378, 306, 348, 250, 121, 68, 353, 200, 348, 129, 169, 343, 73, - 132, 353, 249, 62, 131, 348, 250, 147, 340, 168, 121, 343, 136, 265, 391, 92, 188, 79, 241, 114, 335, - 114, 325, 348, 327, 296, 14, 109, 303, 263, 343, 332, 90, 164, 123, 250, 113, 79, 212, 189, 216, 348, - 152, 166, 55, 348, 330, 361, 228, 353, 168, 86, 88, 309, 187, 317, 35, 84, 236, 215, 129, 128, 358, 348, - 404, 137, 310, 347, 2, 199, 92, 104, 7, 134, 239, 169, 243, 100, 65, 367, 344, 246, 354, 3, 341, 19, 153, - 355, 286, 76, 41, 125, 293, 369, 221, 271, 179, 350, 375, 107 - }, - { - 0, 329, 166, 301, 121, 97, 157, 12, 54, 378, 231, 353, 377, 130, 354, 46, 309, 302, 355, 221, 305, 299, - 345, - 37, 309, 284, 373, 353, 357, 75, 123, 302, 325, 201, 220, 39, 343, 302, 284, 375, 355, 297, 180, 100, - 370, 372, 22, 37, 297, 73, 284, 174, 375, 54, 256, 243, 341, 354, 348, 75, 168, 284, 181, 0, 341, 369, - 308, 77, 15, 15, 164, 355, 353, 179, 164, 313, 241, 278, 354, 263, 323, 84, 141, 18, 336, 282, 355, 53, - 123, 9, 134, 15, 321, 152, 102, 284, 148, 372, 335, 175, 392, 51, 88, 119, 232, 337, 385, 123, 390, 202, - 348, 318, 56, 284, 21, 37, 92, 147, 59, 161, 367, 1, 220, 84, 198, 348, 303, 164, 75, 14, 11, 104, 246, - 349, 358, 138, 86, 98, 171, 68, 214, 74, 203, 353, 294, 152, 92, 282, 121, 55, 169, 348, 334, 14, 47, - 101, 121, 339, 348, 225, 150, 74, 92, 192, 189, 367, 216, 93, 197, 181, 37, 160, 94, 76, 367, 301, 362, - 330, 393, 92, 83, 363, 221, 191, 170, 381, 377, 306, 116, 52, 276 - }, - { - 106, 331, 92, 115, 337, 330, 102, 221, 159, 345, 36, 69, 404, 84, 354, 159, 124, 94, 20, 330, 250, 334, - 241, - 247, 377, 388, 237, 162, 208, 353, 239, 333, 134, 352, 127, 348, 186, 267, 11, 286, 354, 357, 115, 153, - 333, 333, 296, 305, 194, 330, 263, 40, 386, 388, 347, 329, 333, 357, 127, 352, 184, 33, 175, 0, 168, 381, - 116, 127, 323, 127, 340, 61, 14, 343, 14, 366, 325, 374, 184, 170, 74, 188, 347, 272, 150, 83, 188, 155, - 166, 360, 31, 353, 241, 345, 31, 360, 251, 351, 57, 20, 66, 159, 164, 287, 46, 367, 55, 201, 164, 153, - 129, 352, 153, 133, 296, 349, 37, 129, 174, 148, 328, 121, 246, 5, 297, 70, 143, 212, 110, 35, 301, 91, - 1, 76, 109, 398, 2, 2, 301, 111, 314, 37, 229, 162, 26, 234, 241, 350, 13, 296, 62, 189, 231, 136, 168, - 240, 41, 128, 222, 246, 175, 28, 61, 109, 130, 342, 348, 269, 232, 263, 29, 123, 202, 325, 125, 201, 178, - 116, 171, 353, 354, 247, 354, 119, 325, 375, 229, 305, 39, 363, 104 - }, - { - 330, 360, 375, 354, 349, 391, 184, 373, 69, 373, 355, 84, 310, 242, 238, 39, 391, 46, 353, 349, 240, 391, - 106, 383, 175, 158, 345, 306, 369, 304, 383, 332, 70, 304, 249, 45, 357, 78, 143, 296, 39, 54, 357, 352, - 4, 367, 126, 234, 35, 354, 164, 362, 348, 126, 304, 238, 216, 348, 345, 348, 210, 263, 285, 0, 345, 171, - 189, 189, 210, 336, 128, 284, 189, 345, 15, 284, 348, 330, 130, 249, 348, 168, 59, 371, 171, 238, 249, 6, - 373, 375, 6, 176, 84, 200, 64, 332, 127, 325, 328, 182, 370, 84, 79, 92, 241, 243, 241, 250, 344, 332, 5, - 399, 158, 6, 116, 143, 68, 124, 339, 56, 96, 184, 193, 348, 68, 127, 343, 374, 160, 157, 295, 345, 97, - 334, 104, 146, 136, 261, 220, 322, 359, 325, 354, 54, 174, 386, 186, 283, 295, 92, 370, 170, 61, 18, 348, - 63, 37, 227, 50, 343, 346, 115, 157, 330, 32, 120, 220, 375, 128, 250, 270, 79, 249, 3, 101, 180, 215, - 357, 331, 228, 81, 261, 150, 285, 300, 14, 135, 164, 354, 332, 349 - }, - { - 147, 42, 386, 79, 354, 329, 107, 89, 241, 183, 260, 62, 294, 330, 348, 30, 348, 316, 330, 405, 243, 249, - 125, 371, 347, 349, 224, 80, 373, 337, 69, 356, 376, 84, 232, 265, 336, 75, 136, 73, 96, 349, 243, 8, - 330, 258, 33, 215, 82, 357, 348, 246, 232, 104, 114, 349, 137, 64, 348, 376, 330, 87, 260, 0, 123, 303, - 141, 355, 175, 0, 326, 74, 386, 208, 316, 284, 193, 232, 143, 171, 19, 303, 116, 20, 232, 354, 294, 393, - 21, 377, 310, 124, 373, 284, 389, 375, 134, 298, 348, 104, 179, 208, 281, 50, 189, 116, 29, 325, 325, - 186, 203, 370, 131, 136, 168, 335, 343, 119, 42, 123, 300, 349, 68, 284, 305, 319, 330, 258, 354, 37, - 348, 333, 20, 354, 122, 29, 296, 196, 339, 130, 270, 381, 202, 232, 329, 102, 228, 339, 333, 320, 3, 354, - 14, 94, 5, 130, 31, 335, 170, 350, 286, 59, 53, 31, 329, 375, 223, 38, 329, 139, 32, 43, 295, 15, 215, - 116, 40, 231, 55, 346, 393, 208, 84, 33, 348, 348, 314, 345, 27, 139, 343 - }, - { - 312, 348, 348, 341, 371, 228, 110, 273, 283, 389, 389, 20, 378, 37, 358, 238, 314, 243, 84, 368, 184, - 345, - 84, 164, 356, 232, 346, 8, 20, 129, 250, 340, 374, 198, 330, 330, 62, 124, 198, 304, 282, 348, 294, 152, - 138, 11, 385, 337, 114, 128, 37, 145, 179, 237, 284, 197, 143, 349, 137, 377, 38, 333, 314, 0, 196, 162, - 92, 354, 340, 258, 392, 375, 293, 164, 332, 337, 251, 232, 348, 378, 333, 194, 149, 220, 332, 332, 339, - 137, 29, 160, 92, 232, 263, 189, 348, 349, 101, 143, 357, 11, 295, 243, 153, 154, 348, 309, 251, 245, - 337, 81, 32, 324, 39, 116, 52, 357, 153, 75, 163, 383, 127, 14, 297, 243, 352, 131, 127, 38, 40, 170, - 188, 310, 121, 289, 345, 325, 114, 193, 141, 302, 404, 154, 133, 159, 354, 32, 330, 326, 122, 75, 250, - 252, 110, 310, 252, 140, 382, 226, 244, 270, 241, 294, 29, 83, 355, 198, 190, 73, 189, 97, 15, 326, 108, - 325, 161, 88, 286, 173, 175, 346, 294, 74, 171, 184, 179, 341, 226, 320, 114, 193, 131 - }, - { - 3, 67, 353, 273, 142, 243, 294, 0, 64, 107, 356, 375, 145, 249, 334, 372, 353, 361, 309, 54, 98, 114, - 376, - 316, 404, 188, 159, 323, 386, 357, 11, 297, 354, 31, 313, 20, 107, 124, 114, 135, 83, 31, 323, 375, 320, - 341, 329, 354, 311, 152, 385, 177, 337, 246, 282, 107, 177, 347, 134, 366, 134, 332, 312, 0, 183, 240, - 164, 226, 356, 36, 90, 164, 307, 19, 378, 373, 316, 172, 391, 134, 32, 355, 125, 89, 64, 306, 32, 178, - 149, 171, 232, 175, 164, 244, 239, 135, 193, 119, 325, 169, 124, 373, 349, 121, 378, 92, 340, 121, 306, - 343, 126, 172, 116, 343, 263, 297, 329, 157, 325, 385, 135, 399, 9, 330, 186, 119, 378, 241, 330, 295, - 70, 385, 232, 190, 88, 81, 48, 282, 100, 175, 289, 335, 345, 190, 249, 296, 120, 340, 230, 125, 341, 328, - 186, 345, 246, 143, 281, 183, 350, 240, 164, 263, 302, 122, 14, 339, 84, 305, 227, 194, 120, 350, 334, - 158, 26, 116, 179, 119, 166, 378, 348, 175, 341, 88, 286, 294, 278, 280, 314, 31, 157 - }, - { - 391, 231, 3, 232, 332, 344, 383, 164, 143, 146, 302, 154, 70, 383, 44, 386, 374, 12, 212, 387, 74, 345, - 66, - 348, 243, 383, 92, 354, 130, 100, 184, 32, 319, 330, 166, 306, 97, 330, 286, 373, 404, 188, 175, 117, 16, - 86, 157, 144, 80, 329, 200, 323, 116, 60, 332, 0, 123, 167, 78, 187, 139, 346, 284, 0, 166, 104, 332, 70, - 316, 325, 323, 84, 262, 92, 75, 137, 373, 309, 367, 116, 346, 71, 331, 354, 145, 283, 120, 325, 84, 371, - 29, 245, 284, 114, 153, 310, 127, 299, 164, 57, 31, 166, 263, 240, 14, 109, 385, 107, 335, 350, 356, 82, - 109, 6, 10, 102, 58, 189, 353, 35, 214, 243, 243, 329, 168, 243, 119, 125, 125, 388, 344, 329, 132, 363, - 348, 77, 124, 131, 56, 115, 227, 21, 164, 249, 334, 309, 253, 153, 325, 119, 175, 42, 120, 249, 331, 5, - 96, 302, 172, 332, 170, 134, 335, 191, 299, 156, 343, 121, 317, 375, 142, 375, 92, 75, 31, 330, 134, 31, - 131, 217, 189, 84, 14, 354, 40, 293, 81, 345, 329, 354, 14 - }, - { - 127, 115, 315, 387, 119, 347, 193, 125, 71, 125, 295, 153, 116, 341, 372, 129, 373, 15, 376, 386, 339, - 347, - 186, 225, 2, 87, 243, 186, 301, 302, 227, 331, 166, 301, 139, 389, 347, 400, 327, 261, 305, 301, 244, - 164, 293, 383, 20, 226, 268, 232, 271, 89, 386, 329, 350, 120, 311, 172, 139, 300, 284, 296, 323, 0, 109, - 373, 373, 179, 348, 355, 305, 212, 330, 124, 91, 180, 135, 295, 389, 301, 0, 83, 326, 199, 175, 301, 223, - 389, 317, 339, 100, 341, 166, 296, 182, 196, 179, 130, 386, 102, 215, 354, 294, 55, 377, 278, 245, 344, - 256, 286, 176, 128, 236, 29, 164, 237, 321, 332, 301, 62, 325, 75, 131, 16, 129, 32, 14, 31, 217, 5, 355, - 313, 329, 96, 196, 232, 2, 236, 37, 164, 345, 244, 234, 32, 162, 370, 330, 278, 14, 211, 196, 290, 86, - 86, 84, 217, 386, 129, 136, 10, 361, 294, 84, 388, 348, 217, 303, 334, 117, 233, 164, 241, 143, 383, 24, - 375, 329, 5, 172, 278, 16, 48, 31, 92, 333, 128, 354, 377, 91, 323, 152 - }, - { - 14, 325, 172, 62, 270, 387, 348, 175, 145, 244, 52, 241, 32, 305, 182, 352, 31, 83, 131, 16, 286, 404, - 339, - 48, 173, 360, 360, 26, 164, 331, 330, 141, 290, 13, 370, 243, 36, 175, 117, 92, 240, 299, 244, 238, 170, - 273, 339, 332, 36, 153, 294, 172, 203, 120, 235, 299, 79, 127, 251, 346, 305, 333, 354, 0, 128, 392, 168, - 245, 160, 73, 336, 360, 241, 125, 376, 61, 344, 350, 73, 136, 400, 360, 240, 312, 0, 370, 66, 278, 139, - 125, 81, 299, 175, 135, 121, 354, 166, 357, 232, 286, 88, 335, 84, 377, 84, 40, 56, 148, 108, 126, 94, - 334, 309, 171, 241, 81, 279, 103, 74, 285, 172, 251, 323, 386, 143, 333, 309, 191, 121, 294, 15, 96, 383, - 193, 130, 373, 263, 90, 164, 348, 125, 18, 234, 182, 162, 195, 272, 335, 168, 366, 126, 243, 127, 119, - 390, 220, 92, 42, 359, 352, 66, 92, 325, 18, 193, 136, 143, 173, 63, 56, 238, 193, 124, 77, 95, 340, 344, - 113, 220, 179, 330, 121, 166, 241, 350, 241, 116, 154, 345, 48, 323 - }, - { - 385, 272, 243, 385, 162, 14, 312, 341, 347, 74, 104, 305, 250, 82, 55, 348, 2, 387, 343, 64, 378, 113, - 383, - 92, 212, 110, 123, 247, 18, 350, 153, 214, 340, 125, 125, 243, 29, 375, 192, 164, 162, 92, 390, 152, 279, - 231, 156, 70, 356, 46, 404, 16, 10, 175, 332, 151, 173, 75, 175, 125, 158, 20, 243, 0, 220, 31, 333, 125, - 330, 100, 25, 212, 162, 51, 250, 226, 179, 390, 176, 393, 348, 136, 305, 378, 158, 330, 346, 337, 228, - 337, 183, 344, 375, 332, 354, 348, 32, 35, 134, 184, 354, 355, 331, 203, 2, 305, 130, 120, 350, 52, 48, - 341, 370, 240, 24, 250, 175, 14, 360, 326, 325, 357, 306, 329, 280, 241, 29, 180, 164, 232, 191, 220, - 265, 125, 40, 36, 48, 334, 80, 224, 378, 200, 375, 372, 173, 133, 237, 175, 331, 334, 353, 375, 320, 375, - 171, 96, 62, 164, 320, 36, 142, 160, 344, 256, 375, 373, 101, 241, 313, 155, 133, 117, 113, 102, 129, - 176, 135, 3, 340, 79, 97, 84, 136, 386, 301, 171, 40, 82, 70, 243, 371 - }, - { - 375, 350, 120, 386, 20, 305, 261, 13, 172, 341, 156, 31, 370, 370, 133, 5, 65, 136, 168, 208, 187, 180, - 289, - 278, 278, 187, 345, 14, 107, 14, 278, 243, 141, 13, 114, 266, 270, 332, 332, 125, 193, 331, 291, 69, 367, - 203, 369, 231, 331, 171, 100, 14, 266, 110, 323, 91, 91, 78, 40, 333, 102, 193, 0, 0, 154, 167, 404, 313, - 276, 134, 356, 356, 31, 250, 170, 305, 277, 154, 345, 326, 345, 354, 122, 354, 326, 333, 10, 333, 250, - 220, 326, 226, 349, 325, 349, 155, 252, 179, 44, 167, 104, 125, 62, 134, 49, 282, 201, 367, 166, 158, 92, - 236, 134, 249, 71, 44, 35, 404, 29, 134, 341, 186, 350, 373, 81, 302, 300, 335, 90, 52, 90, 293, 18, 261, - 378, 335, 130, 244, 241, 40, 305, 378, 116, 88, 356, 247, 320, 136, 127, 246, 175, 392, 330, 134, 355, - 162, 345, 170, 20, 29, 353, 5, 196, 50, 279, 310, 357, 166, 234, 57, 92, 18, 348, 258, 75, 97, 143, 175, - 375, 348, 373, 116, 164, 220, 284, 375, 251, 175, 372, 209, 324 - }, - { - 158, 281, 251, 0, 310, 212, 302, 139, 110, 252, 43, 323, 69, 241, 153, 305, 323, 234, 332, 330, 121, 31, - 232, 305, 119, 302, 326, 0, 107, 139, 281, 121, 302, 119, 161, 336, 348, 375, 349, 346, 69, 75, 283, 229, - 145, 357, 375, 232, 36, 75, 250, 62, 171, 375, 19, 74, 286, 299, 77, 102, 354, 137, 127, 0, 337, 45, 329, - 331, 278, 283, 240, 373, 332, 59, 229, 348, 72, 178, 349, 134, 373, 175, 283, 332, 349, 378, 346, 259, - 331, 38, 345, 349, 354, 62, 325, 212, 383, 46, 386, 49, 175, 170, 325, 125, 244, 124, 92, 92, 140, 61, - 87, 125, 361, 223, 171, 21, 13, 366, 232, 238, 86, 156, 88, 109, 304, 90, 363, 336, 357, 102, 110, 360, - 184, 354, 32, 208, 241, 283, 347, 33, 345, 121, 21, 107, 102, 341, 153, 2, 194, 319, 343, 220, 330, 202, - 12, 284, 152, 348, 375, 386, 87, 130, 373, 157, 249, 92, 57, 84, 31, 92, 330, 62, 354, 96, 130, 250, 125, - 126, 236, 184, 97, 329, 97, 92, 134, 125, 233, 142, 245, 301, 7 - }, - { - 3, 129, 241, 345, 121, 357, 329, 305, 92, 59, 5, 330, 349, 268, 256, 170, 318, 61, 232, 299, 354, 345, - 82, - 208, 77, 92, 59, 349, 375, 173, 330, 164, 164, 252, 375, 348, 246, 243, 119, 96, 391, 116, 358, 354, 39, - 299, 107, 328, 290, 119, 134, 358, 352, 92, 330, 172, 164, 221, 342, 358, 92, 92, 199, 0, 85, 330, 198, - 82, 227, 357, 37, 346, 3, 329, 63, 58, 116, 64, 198, 35, 367, 171, 241, 377, 114, 369, 349, 378, 319, - 171, 68, 350, 329, 171, 171, 114, 349, 91, 20, 184, 198, 52, 125, 270, 286, 32, 175, 240, 250, 235, 59, - 332, 42, 68, 344, 349, 143, 357, 79, 37, 128, 70, 65, 353, 355, 104, 356, 328, 261, 120, 131, 264, 303, - 95, 384, 199, 220, 243, 173, 68, 138, 175, 124, 282, 377, 393, 98, 373, 250, 375, 131, 101, 68, 345, 150, - 268, 106, 233, 373, 189, 319, 179, 54, 228, 323, 211, 131, 345, 81, 354, 387, 66, 125, 49, 201, 190, 321, - 75, 286, 36, 350, 91, 404, 18, 308, 375, 41, 97, 188, 272, 278 - }, - { - 181, 181, 357, 172, 188, 18, 329, 325, 155, 330, 348, 57, 308, 354, 173, 56, 92, 227, 346, 325, 0, 330, - 92, - 329, 188, 162, 164, 301, 2, 81, 56, 173, 171, 348, 83, 164, 10, 110, 110, 110, 19, 247, 310, 373, 36, - 247, 167, 131, 310, 81, 190, 10, 310, 121, 347, 66, 29, 243, 258, 62, 70, 329, 258, 0, 246, 215, 349, - 268, 199, 321, 389, 8, 348, 220, 306, 14, 129, 114, 228, 19, 349, 302, 306, 129, 3, 112, 95, 242, 313, - 350, 299, 311, 341, 146, 13, 302, 370, 166, 170, 354, 330, 348, 276, 336, 330, 16, 268, 134, 296, 16, 16, - 286, 96, 97, 116, 81, 92, 158, 354, 229, 184, 369, 131, 208, 172, 348, 346, 325, 73, 244, 284, 116, 378, - 341, 303, 347, 346, 329, 107, 187, 33, 345, 116, 354, 325, 71, 10, 341, 15, 318, 172, 182, 279, 357, 348, - 354, 79, 299, 332, 136, 51, 294, 306, 340, 330, 164, 116, 132, 116, 81, 284, 294, 332, 375, 250, 116, 84, - 393, 189, 375, 47, 373, 311, 241, 31, 330, 385, 330, 255, 307, 304 - }, - { - 232, 155, 156, 367, 9, 0, 249, 249, 281, 280, 198, 125, 62, 0, 306, 302, 335, 226, 91, 19, 155, 305, 174, - 121, 127, 342, 92, 125, 126, 31, 302, 116, 332, 243, 70, 321, 125, 158, 325, 258, 84, 321, 251, 91, 325, - 280, 107, 32, 155, 262, 357, 281, 325, 91, 84, 306, 96, 357, 90, 14, 342, 299, 70, 0, 321, 70, 84, 133, - 332, 335, 332, 92, 358, 161, 231, 350, 350, 357, 231, 3, 349, 333, 116, 347, 66, 247, 153, 333, 292, 107, - 340, 348, 340, 97, 295, 153, 241, 72, 124, 121, 405, 213, 346, 386, 252, 243, 193, 307, 241, 72, 184, - 187, 89, 354, 354, 302, 342, 191, 92, 88, 58, 117, 34, 73, 344, 385, 15, 83, 78, 2, 164, 173, 367, 314, - 62, 156, 320, 84, 337, 183, 331, 127, 368, 68, 203, 91, 328, 241, 72, 11, 66, 35, 377, 129, 62, 341, 15, - 372, 103, 271, 247, 250, 73, 61, 126, 22, 188, 20, 140, 375, 84, 84, 340, 190, 147, 73, 191, 57, 283, - 355, 348, 299, 386, 37, 197, 157, 125, 62, 301, 344, 208 - }, - { - 108, 354, 323, 82, 73, 62, 63, 226, 238, 171, 34, 131, 162, 246, 127, 75, 75, 325, 335, 155, 282, 348, - 348, - 143, 72, 354, 237, 162, 311, 124, 315, 121, 153, 124, 179, 313, 36, 350, 357, 116, 107, 131, 318, 318, - 236, 157, 318, 386, 386, 44, 66, 157, 304, 107, 243, 151, 389, 332, 246, 348, 269, 309, 75, 0, 75, 345, - 326, 345, 354, 381, 345, 332, 336, 348, 355, 271, 310, 310, 126, 153, 162, 160, 234, 380, 182, 50, 220, - 109, 127, 97, 343, 345, 121, 278, 263, 188, 18, 299, 232, 265, 296, 153, 184, 143, 194, 234, 36, 140, - 170, 97, 66, 14, 251, 310, 79, 373, 281, 323, 317, 84, 89, 97, 164, 345, 232, 158, 164, 92, 366, 110, - 100, 135, 130, 86, 348, 238, 371, 168, 316, 42, 278, 187, 30, 405, 21, 303, 134, 8, 243, 80, 141, 315, - 123, 224, 354, 374, 97, 143, 238, 21, 20, 356, 198, 304, 63, 293, 284, 341, 302, 14, 208, 232, 74, 142, - 160, 77, 353, 36, 124, 203, 347, 36, 64, 349, 139, 378, 66, 67, 117, 251, 105 - }, - { - 332, 236, 175, 170, 212, 251, 313, 132, 239, 350, 354, 162, 83, 67, 98, 84, 331, 369, 228, 268, 84, 303, - 169, 92, 341, 334, 134, 16, 294, 325, 346, 220, 296, 139, 296, 79, 172, 330, 172, 234, 234, 172, 16, 16, - 16, 168, 16, 273, 83, 339, 346, 369, 294, 220, 172, 81, 79, 81, 284, 24, 92, 66, 294, 0, 320, 369, 384, - 258, 354, 346, 284, 349, 79, 79, 300, 349, 378, 348, 393, 14, 129, 306, 10, 47, 312, 294, 10, 284, 74, - 106, 258, 310, 128, 124, 19, 220, 314, 276, 64, 374, 273, 38, 305, 3, 263, 160, 157, 307, 145, 366, 164, - 90, 75, 54, 177, 172, 139, 125, 159, 246, 134, 1, 244, 221, 12, 60, 143, 154, 97, 123, 229, 135, 304, - 386, 245, 139, 294, 75, 29, 296, 119, 2, 174, 244, 81, 186, 196, 91, 135, 199, 172, 348, 124, 18, 16, - 305, 182, 179, 352, 389, 341, 62, 31, 136, 240, 175, 73, 158, 240, 51, 244, 61, 123, 385, 348, 29, 16, - 376, 282, 54, 375, 14, 386, 196, 286, 404, 92, 84, 159, 143, 258 - }, - { - 47, 333, 346, 135, 77, 161, 330, 20, 205, 75, 21, 137, 69, 297, 354, 330, 220, 154, 104, 284, 125, 383, - 19, - 332, 21, 347, 304, 81, 370, 325, 100, 75, 218, 357, 116, 120, 121, 369, 115, 110, 337, 82, 325, 97, 29, - 295, 305, 20, 90, 330, 153, 172, 296, 332, 347, 326, 196, 305, 182, 14, 354, 339, 130, 0, 270, 318, 381, - 278, 37, 57, 348, 241, 256, 36, 325, 333, 369, 82, 106, 188, 345, 196, 31, 333, 179, 360, 202, 66, 320, - 74, 124, 161, 330, 69, 137, 104, 97, 373, 92, 273, 209, 84, 255, 102, 128, 109, 330, 238, 65, 116, 352, - 133, 355, 10, 373, 97, 68, 175, 250, 37, 294, 77, 375, 98, 339, 176, 20, 164, 116, 354, 332, 309, 329, - 191, 3, 11, 45, 116, 75, 47, 186, 329, 220, 125, 350, 372, 172, 168, 128, 133, 354, 116, 175, 100, 19, - 66, 129, 164, 278, 164, 353, 88, 143, 57, 367, 228, 378, 341, 124, 344, 348, 375, 160, 329, 54, 332, 276, - 378, 81, 97, 325, 354, 354, 57, 156, 348, 115, 54, 174, 124, 272 - }, - { - 347, 20, 82, 20, 208, 14, 238, 316, 107, 81, 125, 3, 2, 332, 357, 82, 236, 336, 180, 354, 237, 243, 62, - 320, - 372, 37, 343, 378, 375, 229, 336, 260, 268, 357, 326, 375, 57, 404, 353, 20, 10, 150, 320, 348, 250, 240, - 250, 132, 238, 371, 355, 231, 377, 134, 378, 217, 134, 232, 389, 124, 171, 373, 368, 0, 84, 346, 284, 14, - 320, 320, 294, 172, 180, 233, 306, 375, 261, 308, 68, 343, 251, 282, 132, 77, 106, 20, 378, 349, 179, - 377, 57, 106, 172, 134, 295, 246, 183, 37, 196, 8, 92, 120, 16, 179, 350, 368, 173, 349, 39, 8, 157, 348, - 63, 232, 63, 250, 348, 295, 330, 248, 384, 15, 220, 311, 69, 143, 354, 343, 134, 354, 348, 29, 199, 258, - 130, 186, 226, 58, 242, 91, 144, 166, 36, 166, 125, 16, 40, 309, 14, 134, 74, 55, 11, 10, 404, 15, 158, - 37, 372, 244, 263, 226, 286, 340, 137, 53, 130, 162, 386, 33, 294, 123, 160, 305, 223, 174, 126, 400, - 196, 65, 66, 57, 171, 214, 104, 153, 5, 304, 107, 241, 108 - }, - { - 167, 107, 316, 341, 318, 137, 75, 36, 337, 294, 175, 383, 377, 281, 233, 154, 306, 157, 387, 143, 241, - 241, - 345, 81, 272, 345, 91, 220, 329, 233, 48, 233, 243, 81, 120, 243, 123, 354, 309, 251, 331, 387, 153, 262, - 294, 98, 320, 318, 296, 243, 36, 375, 172, 231, 308, 330, 26, 70, 345, 355, 388, 334, 278, 0, 241, 375, - 290, 175, 330, 179, 370, 196, 220, 24, 234, 48, 250, 14, 375, 354, 340, 117, 20, 297, 334, 170, 369, 73, - 172, 320, 28, 63, 334, 312, 345, 179, 369, 129, 110, 350, 143, 107, 75, 381, 212, 182, 271, 109, 263, - 236, 116, 243, 249, 92, 30, 121, 91, 188, 84, 232, 265, 332, 109, 129, 95, 69, 349, 37, 107, 97, 143, - 164, 353, 254, 367, 249, 171, 36, 353, 248, 124, 203, 375, 294, 250, 313, 155, 241, 128, 346, 197, 282, - 372, 280, 329, 164, 40, 84, 244, 247, 241, 330, 354, 81, 104, 104, 348, 232, 311, 251, 323, 159, 188, 45, - 261, 201, 84, 153, 143, 84, 296, 354, 353, 174, 249, 15, 197, 246, 5, 182, 183 - }, - { - 131, 348, 347, 372, 236, 377, 345, 361, 404, 308, 333, 92, 290, 134, 330, 119, 164, 234, 260, 349, 234, - 337, - 246, 387, 297, 153, 290, 325, 325, 325, 354, 88, 348, 141, 10, 11, 368, 309, 334, 149, 318, 94, 233, 354, - 299, 238, 334, 227, 136, 54, 196, 168, 174, 334, 361, 309, 18, 151, 175, 90, 127, 142, 127, 0, 160, 272, - 154, 309, 80, 339, 254, 57, 154, 18, 78, 232, 78, 309, 10, 14, 262, 84, 77, 261, 250, 95, 356, 231, 379, - 280, 301, 309, 164, 18, 309, 231, 295, 180, 355, 330, 37, 305, 227, 284, 120, 26, 234, 305, 330, 333, - 376, 370, 288, 184, 231, 121, 226, 278, 123, 188, 31, 166, 192, 164, 70, 250, 85, 350, 247, 331, 284, - 378, 354, 92, 70, 92, 125, 371, 386, 116, 248, 238, 55, 283, 363, 96, 164, 294, 311, 124, 15, 37, 147, - 14, 332, 345, 251, 374, 137, 284, 89, 224, 280, 334, 247, 363, 245, 378, 267, 243, 320, 14, 57, 146, 355, - 334, 373, 153, 120, 115, 96, 81, 164, 14, 37, 297, 192, 69, 175, 71, 102 - }, - { - 374, 387, 292, 125, 74, 116, 156, 241, 166, 373, 231, 180, 270, 182, 182, 275, 340, 169, 243, 243, 202, - 155, - 214, 18, 255, 69, 69, 203, 333, 330, 69, 107, 69, 69, 133, 354, 354, 345, 164, 336, 102, 387, 172, 335, - 279, 186, 241, 241, 86, 340, 354, 318, 241, 167, 88, 234, 14, 241, 340, 39, 345, 369, 354, 0, 59, 258, - 129, 6, 114, 320, 64, 92, 354, 117, 245, 301, 108, 319, 196, 129, 282, 8, 355, 232, 404, 326, 116, 175, - 358, 80, 82, 199, 353, 233, 196, 110, 331, 63, 360, 61, 20, 157, 377, 354, 354, 38, 330, 212, 405, 42, - 278, 348, 14, 376, 8, 80, 91, 175, 378, 363, 330, 280, 325, 188, 285, 26, 38, 188, 246, 211, 124, 249, - 276, 14, 62, 244, 301, 129, 305, 330, 332, 189, 6, 164, 311, 330, 47, 24, 170, 387, 270, 115, 360, 47, - 340, 262, 249, 126, 93, 92, 348, 171, 330, 378, 81, 125, 233, 110, 348, 189, 375, 241, 241, 220, 59, 84, - 250, 133, 245, 169, 386, 360, 201, 372, 126, 37, 66, 88, 377, 348, 97 - }, - { - 335, 107, 232, 171, 320, 20, 249, 237, 84, 14, 92, 325, 250, 64, 20, 353, 103, 232, 209, 374, 303, 228, - 84, - 367, 134, 97, 284, 68, 56, 302, 242, 286, 115, 373, 77, 3, 325, 371, 378, 349, 169, 179, 314, 348, 348, - 19, 325, 128, 148, 335, 332, 91, 121, 160, 84, 142, 339, 74, 137, 309, 190, 280, 367, 0, 301, 246, 354, - 205, 372, 103, 94, 297, 329, 249, 282, 240, 119, 311, 164, 276, 276, 142, 188, 36, 164, 388, 330, 352, - 282, 386, 241, 374, 333, 205, 45, 92, 64, 393, 320, 332, 194, 375, 345, 277, 36, 316, 162, 154, 229, 116, - 309, 340, 106, 305, 160, 21, 128, 330, 134, 164, 343, 284, 54, 73, 248, 342, 50, 17, 10, 302, 125, 84, - 244, 375, 84, 278, 164, 320, 124, 20, 303, 153, 127, 14, 332, 332, 92, 128, 167, 92, 46, 118, 37, 375, - 63, 20, 375, 125, 65, 41, 376, 134, 74, 54, 233, 262, 212, 226, 241, 40, 136, 240, 79, 50, 378, 170, 31, - 169, 390, 335, 375, 64, 196, 339, 196, 232, 116, 136, 279, 97, 391 - }, - { - 245, 97, 377, 68, 157, 81, 208, 348, 154, 175, 133, 32, 131, 178, 171, 388, 164, 188, 387, 375, 209, 116, - 354, 62, 284, 282, 119, 309, 115, 374, 378, 156, 387, 364, 15, 15, 119, 251, 364, 325, 325, 354, 45, 262, - 367, 120, 166, 345, 249, 249, 125, 14, 75, 346, 84, 330, 332, 331, 325, 116, 284, 267, 341, 0, 326, 243, - 109, 329, 227, 272, 172, 180, 284, 284, 154, 386, 308, 302, 220, 91, 352, 243, 241, 326, 267, 282, 166, - 5, 161, 121, 193, 92, 311, 250, 125, 282, 182, 95, 297, 375, 386, 247, 167, 354, 164, 326, 313, 92, 229, - 81, 276, 349, 2, 332, 181, 35, 134, 10, 311, 386, 349, 354, 46, 328, 193, 355, 320, 383, 300, 137, 134, - 179, 250, 39, 248, 176, 329, 360, 197, 5, 172, 11, 336, 353, 80, 6, 237, 209, 175, 297, 84, 115, 303, - 102, 129, 325, 77, 92, 128, 333, 343, 94, 164, 166, 125, 284, 311, 103, 276, 119, 92, 247, 171, 388, 81, - 154, 32, 97, 208, 209, 64, 284, 386, 82, 65, 75, 249, 84, 120, 15, 272 - }, - { - 330, 249, 16, 92, 92, 378, 126, 339, 381, 352, 370, 141, 342, 17, 354, 250, 333, 20, 128, 343, 297, 120, - 392, 320, 278, 79, 136, 170, 343, 191, 330, 366, 333, 82, 100, 115, 150, 364, 272, 369, 88, 102, 350, - 164, 32, 162, 286, 2, 263, 92, 354, 116, 286, 164, 169, 179, 192, 373, 333, 75, 175, 100, 164, 0, 332, - 59, 92, 319, 6, 110, 353, 367, 20, 232, 142, 314, 364, 115, 150, 367, 137, 352, 241, 282, 14, 32, 309, - 326, 325, 251, 126, 227, 243, 325, 330, 116, 88, 5, 241, 302, 100, 220, 161, 16, 342, 182, 193, 352, 102, - 278, 392, 164, 55, 346, 55, 127, 182, 125, 134, 262, 96, 11, 129, 315, 148, 97, 62, 115, 91, 143, 14, - 174, 242, 151, 18, 70, 186, 6, 345, 167, 334, 324, 37, 333, 345, 312, 306, 352, 0, 154, 184, 254, 311, - 92, 386, 339, 251, 133, 18, 119, 169, 185, 121, 189, 92, 137, 378, 189, 241, 5, 281, 170, 56, 40, 353, - 331, 348, 250, 70, 164, 247, 24, 3, 82, 353, 329, 345, 330, 249, 107, 367 - }, - { - 369, 100, 252, 348, 84, 164, 375, 21, 345, 84, 371, 92, 83, 263, 345, 284, 83, 194, 10, 355, 375, 116, - 246, - 102, 82, 326, 369, 284, 354, 85, 220, 136, 136, 232, 119, 373, 10, 345, 344, 374, 80, 83, 326, 223, 56, - 91, 263, 171, 192, 84, 320, 326, 164, 15, 375, 91, 355, 47, 250, 334, 37, 57, 134, 0, 220, 97, 376, 354, - 346, 354, 344, 312, 354, 310, 350, 72, 329, 77, 98, 2, 375, 345, 113, 334, 124, 169, 378, 346, 348, 114, - 175, 263, 197, 91, 258, 334, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 377, 37, 179, 113, 209, 75, 176, 124, 92, 316, 135, 320, 240, 329, 135, 354, 20, 137, 137, 14, 330, 137, - 134, 316, 131, 309, 75, 75, 152, 116, 329, 282, 157, 128, 226, 175, 232, 286, 84, 344, 385, 231, 249, - 243, 11, 64, 175, 252, 125, 134, 316, 344, 355, 241, 164, 347, 383, 146, 74, 154, 283, 241, 131, 0, 348, - 348, 247, 386, 157, 68, 241, 317, 94, 134, 250, 348, 392, 92, 286, 0, 37, 191, 262, 344, 249, 309, 116, - 309, 75, 129, 184, 84, 45, 316, 345, 110, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 - }, - { - 233, 154, 186, 116, 350, 375, 329, 134, 68, 244, 80, 116, 350, 355, 332, 327, 284, 110, 40, 305, 331, - 267, - 172, 92, 116, 243, 343, 107, 47, 47, 348, 220, 345, 92, 164, 310, 147, 309, 309, 348, 316, 180, 334, 90, - 310, 35, 92, 317, 372, 5, 220, 348, 223, 37, 375, 172, 352, 404, 14, 290, 385, 354, 329, 0, 136, 349, - 309, 294, 128, 348, 117, 14, 350, 297, 120, 79, 128, 168, 345, 90, 133, 332, 332, 316, 181, 392, 354, - 350, 175, 317, 332, 342, 348, 232, 378, 179, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - }, - { - 348, 92, 363, 354, 369, 347, 346, 232, 214, 116, 189, 350, 188, 62, 356, 354, 162, 21, 175, 110, 173, - 290, - 356, 350, 251, 250, 164, 176, 284, 244, 334, 171, 342, 113, 377, 329, 154, 243, 94, 355, 297, 110, 249, - 348, 327, 172, 92, 348, 348, 119, 369, 188, 290, 175, 130, 171, 125, 332, 54, 125, 125, 345, 353, 0, 50, - 228, 50, 228, 378, 125, 189, 354, 172, 35, 253, 170, 208, 133, 253, 131, 294, 333, 345, 124, 189, 164, - 370, 131, 241, 171, 345, 50, 181, 110, 33, 84, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - }, - { - 190, 84, 228, 250, 250, 197, 84, 345, 157, 190, 37, 83, 250, 190, 196, 196, 388, 0, 82, 120, 130, 101, - 310, - 315, 117, 152, 114, 37, 111, 348, 57, 330, 319, 196, 243, 369, 345, 186, 345, 356, 305, 345, 345, 345, - 373, 373, 384, 24, 348, 186, 369, 345, 70, 175, 82, 193, 355, 50, 250, 371, 321, 378, 375, 0, 188, 5, 17, - 320, 14, 371, 189, 373, 386, 97, 68, 82, 355, 32, 90, 241, 355, 305, 308, 286, 81, 326, 81, 64, 320, 376, - 250, 283, 284, 284, 313, 330, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 - }, - { - 122, 330, 345, 316, 294, 332, 162, 220, 329, 329, 148, 335, 110, 339, 327, 367, 216, 202, 386, 368, 92, - 386, - 92, 92, 37, 35, 35, 110, 344, 349, 335, 10, 363, 335, 386, 37, 345, 367, 311, 171, 171, 40, 251, 335, - 349, 212, 133, 220, 46, 357, 354, 40, 348, 208, 367, 388, 250, 357, 345, 354, 75, 328, 348, 0, 54, 388, - 63, 40, 130, 344, 110, 349, 183, 227, 328, 227, 345, 183, 173, 95, 143, 55, 171, 55, 249, 249, 17, 44, - 110, 136, 335, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - } - }; - - //罗马字母 - private static readonly string[] _charIndex = new string[] - { - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", "", "", "", "", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", - "20", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", - "20", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "", "" - }; - - //希腊字母 - private static readonly string[] _charIndex2 = new string[] - { - "a", "b", "g", "d", "e", "z", "e", "th", "i", "k", "l", "m", "n", "x", "o", "p", "r", - "s", "t", "u", "ph", "kh", "ps", "o" - }; - - #endregion - - public ChineseSpell() - { - } - - /// - /// 获取汉字的汉语拼音 - /// - /// 欲转换的字符串 - /// SpellOptions枚举值的按位 OR 组合 - /// - public static string GetSpellWord(string chineseStr, SpellOptions options) - { - Encoding encoding = Encoding.GetEncoding("GB2312"); - - byte[] local = encoding.GetBytes(chineseStr); - - int i = 0; - int index; - StringBuilder result = new StringBuilder(); - string tmp = ""; - - while (i < local.Length) - { - // 是否为GBK 字符 - if ((local[i] >= 129) - && (local[i + 1] >= 64)) - { - switch ((int) local[i]) - { - case 163: // 全角 ASCII - { - tmp = ((char) (local[i + 1] - 128)).ToString(); - - if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) - && !( - ((tmp[0] >= 97) && (tmp[0] <= 122)) - || ((tmp[0] >= 65) && (tmp[0] <= 90)) - || ((tmp[0] >= 48) && (tmp[0] <= 57)) - ) - ) - { - // 控制不能输出非数字, 字母的字符 - tmp = ""; - } - - break; - } - - case 162: // 罗马数字 - { - if (local[i + 1] > 160) - { - tmp = _charIndex[(int) local[i + 1] - 160]; - } - else if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == - SpellOptions.TranslateUnknowWordToInterrogation) - { - // 在罗马数字区, 不能翻译的字符非罗马数字 - tmp = "?"; - } - else - { - tmp = ""; - } - - break; - } - - case 166: // 希腊字母 - { - // - // TODO:未实现 - // - break; - } - - default: - { - index = _spellCodeIndex[(int) local[i] - 129, local[i + 1] - 64] - 1; - - if (index == 0) // 无此汉字, 不能翻译的字符, GBK 保留 - { - //是否翻译为问号 - if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == - SpellOptions.TranslateUnknowWordToInterrogation) - { - tmp = "?"; - } - else - { - tmp = ""; - } - } - else if ((options & SpellOptions.FirstLetterOnly) == SpellOptions.FirstLetterOnly) //是单拼音 - { - tmp = _spellMusicCode[index].ToUpper().Substring(0, 1); - } - else - { - tmp = _spellMusicCode[index].ToUpper(); - } - - break; - } - } //end of swicth() - - result.Append(tmp); - i += 2; - } - else // 在 GBK 字符集外, 即半角字符 - { - if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) - || ( - ((local[i] >= 97) && (local[i] <= 122)) - || ((local[i] >= 65) && (local[i] <= 90)) - || ((local[i] >= 48) && (local[i] <= 57)) - ) - ) - { - result.Append(((char) local[i]).ToString().ToUpper()); - } - //note:下行修改过的 - else if ((options & SpellOptions.TranslateSpecialWordToConnect) == - SpellOptions.TranslateSpecialWordToConnect) - { - result.Append("-"); - } - - i ++; - } - } - - return result.ToString(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/Cache/CacheUtil.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/Cache/CacheUtil.cs deleted file mode 100644 index 03bc5ca..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/Cache/CacheUtil.cs +++ /dev/null @@ -1,203 +0,0 @@ -/* - * 由SharpDevelop创建。 - * 用户: newmin - * 日期: 2013/11/24 - * 时间: 17:42 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; -using System.Web; - -namespace J6.DevFw.Framework.Web.Cache -{ - /// - /// Description of CacheUtil. - /// - public sealed class CacheUtil - { - /// - /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 - /// - /// - /// - public static bool CheckClientCacheExpires(int maxAge) - { - /* - Public 指示响应可被任何缓存区缓存。 - Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 - 部分响应消息,此响应消息对于其他用户的请求无效。 - no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) - 根据什么能被缓存 - no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 - 根据缓存超时 - max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 - min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 - max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 - 接收超出超时期指定值之内的响应消息。 - Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 - 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 - 格式: - */ - - - if (maxAge > 0) - { - HttpResponse response = HttpContext.Current.Response; - HttpRequest request = HttpContext.Current.Request; - - string sinceModified = request.Headers.Get("If-Modified-Since"); - - if (!String.IsNullOrEmpty(sinceModified)) - { - //现在时间 - DateTime nowTime = DateTime.Now.ToUniversalTime(); - - //最后修改时间 - DateTime sinceTime; - DateTime.TryParse(sinceModified, out sinceTime); - sinceTime = sinceTime.ToUniversalTime(); - - if ((nowTime - sinceTime).TotalSeconds < maxAge) - { - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return false; - } - } - } - - return true; - } - - /// - /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 - /// - /// - /// - public static bool CheckClientCacheExpires(string etag) - { - string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); - if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) - { - HttpResponse response = HttpContext.Current.Response; - - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return false; - } - return true; - } - - /// - /// 设置客户端保存缓存 - /// - /// - /// - public static void SetClientCache(HttpResponse response, int maxAge) - { - DateTime nowTime = DateTime.Now.ToUniversalTime(); - response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); - response.AddHeader("Last-Modified", nowTime.ToString("r")); - } - - /// - /// 设置客户端保存缓存 - /// - /// - /// - public static void SetClientCache(HttpResponse response, string etag) - { - response.AddHeader("ETag", "\"" + etag + "\""); - } - - /// - /// 输出缓存内容 - /// - /// - /// - /// - /// 是否缓存在客户端 - public static bool Output(HttpResponse response, int maxage, StringCreatorHandler handler) - { - /* - Public 指示响应可被任何缓存区缓存。 - Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 - 部分响应消息,此响应消息对于其他用户的请求无效。 - no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) - 根据什么能被缓存 - no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 - 根据缓存超时 - max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 - min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 - max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 - 接收超出超时期指定值之内的响应消息。 - Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 - 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 - 格式: - */ - - #region 获取缓存状态 - - HttpRequest request = HttpContext.Current.Request; - - //现在时间 - DateTime nowTime = DateTime.Now.ToUniversalTime(); - - - string sinceModified = request.Headers.Get("If-Modified-Since"); - - if (!String.IsNullOrEmpty(sinceModified)) - { - //最后修改时间 - DateTime sinceTime; - DateTime.TryParse(sinceModified, out sinceTime); - sinceTime = sinceTime.ToUniversalTime(); - - if ((nowTime - sinceTime).TotalSeconds < maxage) - { - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return true; - } - } - - #endregion - - #region 输出内容并缓存 - - response.Write(handler()); - - response.AddHeader("Cache-Control", "max-age=" + maxage.ToString()); - response.AddHeader("Last-Modified", nowTime.ToString("r")); - - #endregion - - return false; - } - - /// - /// 输出缓存内容 - /// - /// - /// - /// - /// 是否缓存在客户端 - public static bool Output(HttpResponse response, string etag, StringCreatorHandler handler) - { - string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); - if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) - { - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return true; - } - - response.AddHeader("ETag", "\"" + etag + "\""); - response.Write(handler()); - - return false; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload.cs deleted file mode 100644 index 058187f..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload.cs +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 文件上传 - * Copyright 2012 OPS,All right reseved! - * Newmin(ops.cc) @ 2012-09-29 07:09 - * - */ - -using System; -using System.IO; -using System.Web; - -namespace J6.DevFw.Framework.Web.UI -{ - /// - /// 文件上传工具 - /// - public class FileUpload - { - /// - /// 保存文件夹 - /// - private readonly string _saveAbsoluteDir; - - /// - /// 文件名 - /// - private readonly string _fileName; - - private UploadFileInfo _fileInfo; - - public FileUpload(string saveAbsoluteDir, string fileName) - { - this._saveAbsoluteDir = saveAbsoluteDir; - this._fileName = fileName; - } - - /// - /// 上传 - /// - /// 异步则返回进程ID,同步返回上传文件的路径 - public string Upload() - { - HttpRequest request = HttpContext.Current.Request; - String baseDir = AppDomain.CurrentDomain.BaseDirectory; - string[] process = request.Form["upload_process"].Split('|'); - string processID = process[1], - field = process[0]; - - var postedFile = request.Files[field]; - if (postedFile == null) - { - return null; - } - string fileExt = postedFile.FileName.Substring(postedFile. - FileName.LastIndexOf('.') + 1); //扩展名 - - _fileInfo = new UploadFileInfo - { - Id = processID, - ContentLength = postedFile.ContentLength, - FilePath = String.Format("{0}{1}.{2}", this._saveAbsoluteDir, _fileName, fileExt) - }; - - InitUplDirectory(baseDir, this._saveAbsoluteDir); - saveStream(postedFile, baseDir + _fileInfo.FilePath); - - return _fileInfo.FilePath; - } - - private static void InitUplDirectory(String baseDir, String absDir) - { - //如果文件夹不存在,则创建文件夹 - String dir = baseDir + absDir; - if (!Directory.Exists(dir)) - { - Directory.CreateDirectory(dir).Create(); - } - } - - private void saveStream(HttpPostedFile postedFile, string path) - { - const int bufferSize = 100; //缓冲区大小 - byte[] buffer = new byte[bufferSize]; //缓冲区 - - int bytes; //从流中读取的值 - using (FileStream fs = new FileStream(path, FileMode.Create)) - { - while (true) - { - bytes = postedFile.InputStream.Read(buffer, 0, bufferSize); - if (bytes == 0) - { - break; - } - fs.Write(buffer, 0, bytes); - } - fs.Flush(); - fs.Close(); - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/Page.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/UI/Page.cs deleted file mode 100644 index 9f06426..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/Page.cs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Name : UI.Page - * Author : newmin - * Date : 2010/10/22 - */ - -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Web.UI; -using J6.DevFw.Framework.Web.unused; -using J6.DevFw.Framework.Web.unused.Interface; - -namespace J6.DevFw.Framework.Web.UI -{ - public class Page : System.Web.UI.Page, ICompressionable - { - protected override void Render(HtmlTextWriter writer) - { - /* 注:base.Render(writer)应在所有假设性条件后 */ - if (ConfigurationDictionary.EnableCompression) Compression(writer); //是否启用html压缩的话 - else base.Render(writer); - } - - #region ICompressionable 成员 - - public void Compression(System.Web.UI.HtmlTextWriter writer) - { - StringWriter sr = new StringWriter(); - HtmlTextWriter tw = new HtmlTextWriter(sr); - base.Render(tw); - tw.Flush(); - tw.Dispose(); - StringBuilder sb = new StringBuilder(sr.ToString()); - string outhtml = Regex.Replace(sb.ToString(), "\\r+\\n+\\s+", string.Empty); - writer.Write(outhtml); - sr.Dispose(); - } - - #endregion - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs deleted file mode 100644 index d760eef..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace J6.DevFw.Framework.Web.UI -{ - /// - /// 上传文件信息 - /// - public struct UploadFileInfo - { - /// - /// 文件编号 - /// - public string Id { get; set; } - - /// - /// 保存路径 - /// - public string FilePath { get; set; } - - /// - /// 文件长度 - /// - public int ContentLength { get; set; } - - /// - /// 已上传长度 - /// - public int UploadedLength { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/UrlPager.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/UI/UrlPager.cs deleted file mode 100644 index 3eb5d39..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/UrlPager.cs +++ /dev/null @@ -1,430 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : UrlPager -* Author : Administrator -* Create : 2012/10/9 21:49:44 -* Description : -* -*/ - -using System; -using System.Text; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Framework.Web.UI -{ - public enum PagingFlag - { - Control = 1, - Previous = 1 << 1, - Next = 1 << 2 - } - - - public interface IPagingGetter - { - string Get(int page, int total, int nowPage, PagingFlag flag, out string text); - } - - internal class DefaultPageingGetter : IPagingGetter - { - private static readonly CustomPagingGetter getter; - - static DefaultPageingGetter() - { - getter = new CustomPagingGetter( - "", - "?page=%d", - "第一页", - "最末页", - "上一页", - "下一页" - ); - } - - public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) - { - return getter.Get(page, total, nowPage, flag, out text); - } - } - - public class CustomPagingGetter : IPagingGetter - { - private int pagerLinkCount; - private string firstPageText; - private string lastPageText; - private string nextPageText; - private string previousPageText; - private string pagerLinkFormat; - private string firstLinkFormat; - - public CustomPagingGetter( - string firstLinkFormat, - string pagerLinkFormat, - string firstPageText, - string lastPageText, - string previousPageText, - string nextPageText - ) - { - this.firstLinkFormat = firstLinkFormat; - this.pagerLinkFormat = pagerLinkFormat; - this.firstPageText = firstPageText; - this.lastPageText = lastPageText; - this.nextPageText = nextPageText; - this.previousPageText = previousPageText; - } - - public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) - { - if ((flag & PagingFlag.Control) != 0) - { - if ((flag & PagingFlag.Previous) != 0) - { - text = this.previousPageText; - if (page == 1) - { - return "javascript:;"; - } - else - { - if (nowPage == 1) - { - return this.firstLinkFormat; - } - return String.Format(this.pagerLinkFormat, nowPage); - } - } - else if ((flag & PagingFlag.Next) != 0) - { - text = this.nextPageText; - if (page == total) - { - return "javascript:;"; - } - else - { - return String.Format(this.pagerLinkFormat, nowPage); - } - } - } - - text = nowPage.ToString(); - if (nowPage == 1 && this.firstLinkFormat.Length != 0) - { - return this.firstLinkFormat; - } - return String.Format(this.pagerLinkFormat, nowPage); - } - } - - - public class UrlPager - { - private int _linkCount; - - - internal UrlPager() - { - } - - internal UrlPager(int currentPageIndex, int pageCount) - { - CurrentPageIndex = currentPageIndex; - PageCount = pageCount; - } - - /// - /// 当前页面索引(从1开始) - /// - public int CurrentPageIndex { get; set; } - - /// - /// 页面总数 - /// - public int PageCount { get; set; } - - //获取分页数据 - public IPagingGetter Getter { get; set; } - - /// - /// 链接长度,创建多少个跳页链接 - /// - public int LinkCount - { - get - { - if (this._linkCount == 0) - { - this._linkCount = 10; - } - return this._linkCount; - } - set { this._linkCount = value; } - } - - /// - /// 记录条数 - /// - public int RecordCount { get; set; } - - - /// - /// 下一栏链接文字 - /// - public string NextPagerLinkText { get; set; } - - /// - /// 选页框文本 - /// - public string SelectPageText { get; set; } - - /// - /// 是否允许输入页码调页 - /// - public bool EnableInput { get; set; } - - /// - /// 使用选页 - /// - public bool EnableSelect { get; set; } - - /// - /// 分页详细记录,如果为空字符则用默认,为空则不显示 - /// - public String PagerTotal { get; set; } - - - /// - /// 输入分页链接HTML代码 - /// - /// 例如:?domain=ops.cc&page={0},{0}将会被解析成页码 - /// - /// - public string Pager() - { - string cls; - string linkText = String.Empty; - string linkUrl; - - StringBuilder sb = new StringBuilder(); - - string _pageCount = (this.PageCount == 0 ? 1 : this.PageCount).ToString(); - - //Div Wrap - sb.Append("
"); - - //输出上一页 - if (this.CurrentPageIndex > 1) - { - cls = "previous"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex - 1, PagingFlag.Control | PagingFlag.Previous, out linkText); - } - else - { - cls = "disabled"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Previous, out linkText); - } - sb.Append(String.Format(@"{2}" - , cls, linkUrl, linkText)); - - - //起始页:CurrentPageIndex / 10 * 10+1 - //结束页:(CurrentPageIndex%10==0?CurrentPageIndex-1: CurrentPageIndex) / 10 * 10 - //当前页数能整除10的时候需要减去10页,否则不能选中 - - - //链接页码数量(默认10) - int c = this.LinkCount; - int startPage = (CurrentPageIndex - 1)/c*c + 1; - - bool _gotoPrevious = false; //是否上一栏分页 - - for (int i = 1, j = startPage; - i <= c && j <= PageCount; - i++, j = (CurrentPageIndex%c == 0 ? CurrentPageIndex - 1 : CurrentPageIndex)/c*c + i) - { - //输出页面 - if (j == CurrentPageIndex) - { - _gotoPrevious = j != 1 && j%c == 1; - - if (_gotoPrevious) - { - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - j - 1, 0, out linkText); - sb.Append(String.Format(@"{2}", - cls, linkUrl, "...")); - } - - //如果为页码为当前页 - - sb.Append("").Append(j.ToString()).Append(""); - - - //如果为最后一个页码,则显示下一栏 - if (!_gotoPrevious && j%c == 0 && j != PageCount) - { - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - j + 1, 0, out linkText); - - sb.Append(String.Format(@"{2}", - cls, linkUrl, "...")); - } - } - else - { - //页码不为当前页,则输出页码 - //如果为第一页,用第一页格式 - - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - j, 0, out linkText); - sb.Append(String.Format("{1}", - linkUrl, linkText)); - } - } - - - //显示输入页码框 - //if (EnableInput) sb.Append("").Append(InputButtonText ?? "跳页").Append(""); - - - //输出下一页链接 - if (this.CurrentPageIndex < this.PageCount) - { - cls = "next"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex + 1, PagingFlag.Control | PagingFlag.Next, out linkText); - } - else - { - cls = "disabled"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Next, out linkText); - } - sb.Append(String.Format(@"{2}" - , cls, linkUrl, linkText)); - - - //显示下拉选页框 - if (EnableSelect) - { - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - 1, 0, out linkText); - - //选页框 - StringBuilder selectSb = new StringBuilder(); - selectSb.Append(""); - - //设置下拉框HTML格式 - if (String.IsNullOrEmpty(this.SelectPageText)) this.SelectPageText = "{0}"; - else if (this.SelectPageText.IndexOf("{0}") == -1) this.SelectPageText += "{0}"; - - //将选页框添加到内容中 - sb.Append(String.Format(String.Concat("", this.SelectPageText, ""), - selectSb.ToString())); - } - - - //显示信息 - if (this.PagerTotal != null) - { - const string _pagerTotalFormat = @" 第{0}/{1}页,共{2}条。"; - string _pagerTotal = this.PagerTotal; - if (_pagerTotal == String.Empty) - { - _pagerTotal = _pagerTotalFormat; - } - sb.Append(String.Format(_pagerTotal, - CurrentPageIndex.ToString(), - _pageCount.ToString(), - this.RecordCount.ToString() - )); - } - - //Wrap Close - sb.Append("
"); - - return Regex.Replace(sb.ToString(), "\\s\\s|\\r|\\t", String.Empty); - } - } - - public static class UrlPaging - { - public static IPagingGetter DefaultGetter = new DefaultPageingGetter(); - - public static UrlPager NewPager(int page, int pageCount, IPagingGetter pg) - { - if (pageCount == 0) pageCount = 1; - if (page == 0) page = 1; - - UrlPager p = new UrlPager(page, pageCount); - if (pg == null) - { - pg = DefaultGetter; - } - else - { - p.Getter = pg; - } - - return p; - } - - /// - /// 创建分页信息 - /// - /// - /// - /// - /// - /// - public static string PagerHtml(string firstFormat, string format, int currentPageIndex, int recordCount, - int pageCount) - { - IPagingGetter pg = new CustomPagingGetter( - firstFormat, - format, - "第一页", - "最末页", - "<<上一页", - ">>下一页" - ); - - - UrlPager p = NewPager(currentPageIndex, pageCount, pg); - - // p.PreviousPageText = "<<"; - // p.NextPageText = ">>"; - p.EnableInput = true; - p.SelectPageText = "跳页"; - p.PagerTotal = String.Empty; - p.RecordCount = recordCount; - p.PagerTotal = String.Empty; - return p.Pager(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/VerifyCode.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/UI/VerifyCode.cs deleted file mode 100644 index 8ca1a1a..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/VerifyCode.cs +++ /dev/null @@ -1,399 +0,0 @@ -/* - * VerifyCode 验证码 - * Copyright 2010 OPSoft ,All right reseved! - * Newmin(ops.cc) @ 2010/11/18 - */ - -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Text; -using System.Web; - -namespace J6.DevFw.Framework.Web.UI -{ - /// - /// 验证码组成字符选项 - /// - public enum VerifyWordOptions - { - /// - /// 全数字 - /// - Number, - - /// - /// 全字母 - /// - Letter, - - /// - /// 字母和数字 - /// - LetterAndNumber - - /// - /// 中文字符 - /// - //Chinese - } - - /// - /// 验证码 - /// - public class VerifyCode - { - private delegate bool TestCondition(int number, int[] array); - - private const int _n_s = 48; //数字开始 - private const int _n_e = 57; //数字结束 - private const int _ul_s = 65; //大写字母开始 - private const int _ul_e = 90; //大写字母结束 - private const int _ll_s = 97; //小写字母开始 - private const int _ll_e = 122; //小写字母结束 - private const int wordLength = 62; - - private static int[] wordArray = new int[62]; - - private bool allowRepeat = true; - - static VerifyCode() - { - //初始化,将0-9,A-Z,a-z添加到数组中去 - for (int i = 0; i < 10; i++) - { - wordArray[i] = _n_s + i; - } - for (int i = 0; i < 26; i++) - { - wordArray[36 + i] = _ul_s + i; - wordArray[10 + i] = _ll_s + i; - } - } - - /// - /// 是否允许重复出现 - /// - public bool AllowRepeat - { - get { return allowRepeat; } - set { allowRepeat = value; } - } - - - /* - /// - /// 验证是否与当前验证码输入一致(区分大小写) - /// - /// - /// - public static bool Verify(string verifyString) - { - return Verify(verifyString, false); - } - - - /// - /// 验证是否与当前验证码输入一致 - /// - /// - /// - /// - public static bool Verify(string verifyString, bool ignoreCase) - { - string verifyCode = HttpContext.Current.Session["current_verifycode"] as string; - if (String.IsNullOrEmpty(verifyString)) return false; - return String.Compare(verifyString, verifyCode, ignoreCase) == 0; - } - */ - - /// - /// 获取默认字体 - /// - /// - public Font GetDefaultFont() - { - FontFamily fontFamily; - try - { - fontFamily = FontFamily.GenericSansSerif; - } - catch - { - if (FontFamily.Families.Length != 0) - { - fontFamily = FontFamily.Families[0]; - } - else - { - throw new Exception("计算机上找不到字体!"); - } - } - return new Font(fontFamily, 14, FontStyle.Bold, GraphicsUnit.Pixel); - } - - /// - /// 显示验证码图片 - /// - public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, out string words) - { - return GraphicDrawImage(number, opt, simpleMode, GetDefaultFont(), 22, out words); - } - - /// - /// 显示验证码图片 - /// - public void RenderGraphicImage(int number, VerifyWordOptions opt, bool simpleMode, out string words, - string contentType) - { - HttpContext context = HttpContext.Current; - byte[] data = GraphicDrawImage(number, opt, simpleMode, out words); - - context.Response.BinaryWrite(data); - context.Response.ContentType = contentType ?? "Image/Jpeg"; - } - - /// - /// 显示验证码图片 - /// - public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, Font font, int imageHeight, - out string words) - { - HttpContext context = HttpContext.Current; - - int[] verifyWords = new int[number]; - Random rd = new Random(); - - TestCondition test; - int _tempInt; - - - switch (opt) - { - //纯数字 - case VerifyWordOptions.Number: - - test = (i, array) => - { - if (i == 0) return false; - else if (i < _n_s || i > _n_e) return false; - else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; - return true; - }; - - for (int i = 0; i < number; i++) - { - while (verifyWords[i] == 0) - { - _tempInt = wordArray[rd.Next(wordLength)]; - if (test(_tempInt, verifyWords)) - { - verifyWords[i] = _tempInt; - } - } - } - - break; - - - //纯字母 - case VerifyWordOptions.Letter: - - test = (i, array) => - { - if (i == 0) return false; - else if (i < _ul_s || i > _ll_e || (i > _ul_e && i < _ll_s)) return false; - else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; - return true; - }; - - for (int i = 0; i < number; i++) - { - while (verifyWords[i] == 0) - { - _tempInt = wordArray[rd.Next(wordLength)]; - if (test(_tempInt, verifyWords)) - { - verifyWords[i] = _tempInt; - } - } - } - - break; - - - //字母和数字 - case VerifyWordOptions.LetterAndNumber: - - test = (i, array) => - { - if (i == 0) return false; - else if (!Array.Exists(wordArray, a => a == i)) return false; - else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; - return true; - }; - - for (int i = 0; i < number; i++) - { - while (verifyWords[i] == 0) - { - _tempInt = wordArray[rd.Next(wordLength)]; - if (test(_tempInt, verifyWords)) - { - verifyWords[i] = _tempInt; - } - } - } - - break; - } - - //转换成字母 - StringBuilder sb = new StringBuilder(); - foreach (int i in verifyWords) - { - sb.Append((char) i); - } - - //context.Session["current_verifycode"] = sb.ToString(); - words = sb.ToString(); - - //绘图 - return DrawingImage(verifyWords, simpleMode, font, imageHeight); - } - - /// - /// 绘图 - /// - /// - private byte[] DrawingImage(int[] charNumberArray, bool simpleMode, Font font, int imageHeight) - { - float _fontSize = font.Size; - int _height = imageHeight; - const int _offset = 5; - - Bitmap img = new Bitmap(charNumberArray.Length*(int) _fontSize + _offset, _height); - Graphics g = Graphics.FromImage(img); - g.Clear(Color.White); - - //生成随机生成器 - Random rd = new Random(); - - //画图片的干扰线 - for (int i = 0; i < 25; i++) - { - int x1 = rd.Next(img.Width); - int x2 = rd.Next(img.Width); - int y1 = rd.Next(img.Height); - int y2 = rd.Next(img.Height); - g.DrawLine(new Pen(Color.FromArgb(200, 200, 200)), x1, y1, x2, y2); - } - - FontFamily ffamily = font.FontFamily; - //try - //{ - // ffamily = FontFamily.GenericSerif; - //} - //catch - //{ - // FontFamily[] ffs = FontFamily.Families; - // if (ffs.Length > 1) ffamily = ffs[0]; - // else - // { - // throw new Exception("系统中未找到任何字体!"); - // } - //} - - Brush[] brushs = new SolidBrush[] - { - new SolidBrush(Color.Green), - new SolidBrush(Color.Blue), - new SolidBrush(Color.Red), - new SolidBrush(Color.Black) - //new SolidBrush(Color.Orange) - }; - - - for (int i = 0; i < charNumberArray.Length; i++) - { - g.DrawString(((char) charNumberArray[i]).ToString(), font, brushs[rd.Next(brushs.Length)], - new PointF(_offset + i*(_fontSize - 1), (_height - _fontSize)/2)); - } - - if (!simpleMode) - { - //弯曲图片 - img = TwistImage(img, true, 2, 1); - - //画图片的前景干扰点 - for (int i = 0; i < 100; i++) - { - int x = rd.Next(img.Width); - int y = rd.Next(img.Height); - img.SetPixel(x, y, Color.FromArgb(235, 235, 235)); - } - } - - - MemoryStream stream = new MemoryStream(); - img.Save(stream, ImageFormat.Jpeg); - font.Dispose(); - g.Dispose(); - img.Dispose(); - - byte[] data = stream.ToArray(); - stream.Dispose(); - - return data; - } - - /// - /// 正弦曲线Wave扭曲图片(http://www.51aspx.com/CV/VerifyColorTwistCode/) - /// - /// 图片路径 - /// 如果扭曲则选择为True - /// 波形的幅度倍数,越大扭曲的程度越高,一般为3 - /// 波形的起始相位,取值区间[0-2*PI) - /// - private Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) - { - // const double PI = 3.1415926535897932384626433832795; - - const double PI2 = 6.283185307179586476925286766559; - - Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); - - // 将位图背景填充为白色 - System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); - graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); - graph.Dispose(); - - double dBaseAxisLen = bXDir ? (double) destBmp.Height : (double) destBmp.Width; - - for (int i = 0; i < destBmp.Width; i++) - { - for (int j = 0; j < destBmp.Height; j++) - { - double dx = 0; - dx = bXDir ? (PI2*(double) j)/dBaseAxisLen : (PI2*(double) i)/dBaseAxisLen; - dx += dPhase; - double dy = Math.Sin(dx); - - // 取得当前点的颜色 - int nOldX = 0, nOldY = 0; - nOldX = bXDir ? i + (int) (dy*dMultValue) : i; - nOldY = bXDir ? j : j + (int) (dy*dMultValue); - - System.Drawing.Color color = srcBmp.GetPixel(i, j); - if (nOldX >= 0 && nOldX < destBmp.Width - && nOldY >= 0 && nOldY < destBmp.Height) - { - destBmp.SetPixel(nOldX, nOldY, color); - } - } - } - return destBmp; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs deleted file mode 100644 index 75f2cf7..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Configuration; - -namespace J6.DevFw.Framework.Web.unused -{ - public static class ConfigurationDictionary - { - /// - /// 是否记录错误 - /// - internal static bool RecordError = ConfigurationManager.AppSettings["recordError"] == "true"; - - /// - /// 报告错误的地址 - /// - internal static string ReportErrorUri = System.Configuration.ConfigurationManager.AppSettings["errorReportUri"]; - - /// - /// 是否启用压缩 - /// - internal static bool EnableCompression = - System.Configuration.ConfigurationManager.AppSettings["enableCompression"] == "True"; - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs deleted file mode 100644 index b71172a..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs +++ /dev/null @@ -1,107 +0,0 @@ -/* - * file : exceptionProcess - * author: OPS newmin - * Date : 2010/09/20 - */ - -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Web; - -namespace J6.DevFw.Framework.Web.unused -{ - public static class ExceptionProcess - { - /// - /// 记录错误,记录的文件路径为~/Logs/error.log - /// - /// - /// 当前请求上下文 - /// 触发的异常 - public static void TraceError(HttpContext context, Exception e) - { - StringBuilder sb = new StringBuilder(3000); - sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) - .Append("\tip:").Append(context.Request.UserHostAddress).Append(" \tpath:") - .Append(context.Request.Url.PathAndQuery).Append("\r\n").Append('-', 100).Append("\r\n") - .Append("[message]:").Append(e.Message).Append(" [type]:").Append(e.GetType().ToString()) - .Append("\r\n").Append("[stack]:").Append(e.StackTrace).Append("\r\n"); - using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) - { - sw.WriteLine(sb.ToString()); - sw.Flush(); - sw.Close(); - } - } - - /// - /// 处理远程提交的错误 - /// - /// - /// 当前请求上下文 - /// 触发的异常 - /// 错误地址 - /// ip地址 - public static void PostError(HttpContext context, string errorUri, string ip, string type, string msg, - string trace) - { - StringBuilder sb = new StringBuilder(3000); - sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) - .Append("\tip:").Append(ip).Append(" \tpath:") - .Append(errorUri).Append("\r\n").Append('-', 100).Append("\r\n") - .Append("[message]:").Append(msg).Append(" [type]:").Append(type) - .Append("\r\n").Append("[stack]:").Append(trace).Append("\r\n"); - - using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) - { - sw.WriteLine(sb.ToString()); - sw.Flush(); - sw.Close(); - } - } - - /// - /// 提交错误到远程地址 - /// - /// 当前请求上下文 - /// 接收错误的远程uri - /// 错误地址 - /// 用户IP - /// 错误异常类型 - /// 错误异常消息 - /// 错误异常堆栈 - public static void PostRemoteError(HttpContext context, string remoteUri, Exception e) - { - string reportUri = remoteUri, param = null; - if (string.IsNullOrEmpty(reportUri)) return; - if (reportUri.IndexOf("?") != -1) - { - param = reportUri.Substring(reportUri.IndexOf("?") + 1) + "&"; - reportUri = reportUri.Substring(0, reportUri.IndexOf("?")); - } - StringBuilder sb = new StringBuilder(); - sb.Append(context.Request.Url.ToString().Replace(",", "__")) - .Append(",").Append(context.Request.UserHostAddress).Append(",").Append(e.GetType().ToString()) - .Append(",").Append(e.Message).Append(",").Append(e.StackTrace.Replace(",", "__")); - - param += "error=" + HttpUtility.HtmlEncode(sb.ToString()); - - // context.Response.Write("提交前的参数
" + param); - - WebRequest wr = WebRequest.Create(reportUri); - wr.Method = "POST"; - wr.ContentType = "application/x-www-form-urlencoded"; - wr.ContentLength = param.Length; - using (Stream stream = wr.GetRequestStream()) - { - stream.Write(Encoding.UTF8.GetBytes(param), 0, param.Length); - wr.GetResponse(); - //StreamReader sr = new StreamReader(wr.GetResponse().GetResponseStream()); - //context.Response.Write("接收到的参数:"+sr.ReadToEnd()); - //context.Response.End(); - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs deleted file mode 100644 index 9372cec..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs +++ /dev/null @@ -1,121 +0,0 @@ -/* * - * name : ExecuteHandler.cs - * author : OPS newmin - * date : 09/29 2010 - * note : 用来处理请求,请求的URI参数如:Exc.ashx?cmd=IP,GetIP,127.0.0.1 - * - * 要执行操作的类必需要程序集名称命名空间下: - * 如要执行OPS.Security下的User类,则User类的命名空间为:OPS.Security.User - * 调用方式**.ashx?cmd=User,GetScore,newmin - * - * 2010/10/18 [+] newmin:新增Uri参数task - * 2010/10/18 [!] newmin:修正returnObj为空返回ToString()的Bug - * 2010/11/05 [!] newmin:修正不能接收Session的Bug - * 2010/12/03 [!] nwemin:修正_type为静态类不能创建多个ExecuteHandler的Bug - * 2010/12/06 [+] newmin:添加query支持,可采用*.ashx?class,method,parameters调用 - * [+] newmin:添加无参数时候提示信息 - * [!] newmin:修正不传参数无法返回结果的BUG - * [!] newmin:修正query为?xxxx时候xxxx参数不合法的验证 - * [+] newmin:将cmd参数该为do - * */ - -using System; -using System.Reflection; -using System.Web; - -namespace J6.DevFw.Framework.Web.unused.Handler -{ - public abstract class ExecuteHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState - { - /// - /// 绑定类型用于获取程序集及类型的命名空间 - /// - protected Type handlerType; - - private static char[] chars = {',', ':'}; - - #region IHttpHandler 成员 - - public bool IsReusable { get; set; } - - public void ProcessRequest(HttpContext context) - { - //包含参数task或query包含,号,如?task=class,method或?class,method - - string task = context.Request["do"] ?? ( - context.Request.Url.Query.IndexOfAny(chars) != -1 - ? context.Request.Url.Query.Replace("?", "") - : context.Request["task"]); - - if (String.IsNullOrEmpty(task)) - { - context.Response.Write("ExecuteHandler组件 Power by OPSoft"); - return; - } - else task = task.Replace("+", " "); //将空格做为+号替换 - string[] args = task.Split(chars); - if (args.Length >= 2) - { - //获取执行当前代码的程序集并创建实例 - Assembly ass = Assembly.GetAssembly(handlerType); - object obj = ass.CreateInstance(handlerType.Namespace + "." + args[0], true); - - //获取实例类型 - Type type; - try - { - type = obj.GetType(); - } - catch - { - throw new Exception("无法在命名空间:" + handlerType.Namespace + "下找到类型:" + args[0]); - } - - //未添加WebExecuteAttribute特性的类将不被执行 - object[] attrs = type.GetCustomAttributes(true); - - bool canExecute = false; - IWebExecute iw; - foreach (object o in attrs) - { - //如果添加IWebExecuteableAttribute特性 - //则调用其PreExecuting方法 - iw = o as IWebExecute; - if (iw != null) iw.PreExecuting(); - else - { - //如果添加了WebExecuteableAttribute特性,则允许执行 - if (o as WebExecuteableAttribute != null) canExecute = true; - } - } - if (!canExecute) - { - context.Response.Write("此模块不允许被执行!请在需要执行的类名上添加WebExecuteable特性!"); - return; - } - - //获取方法,及方法上的IWebExecuteableAttribute特性, - //并调用起PreExecuting方法 - MethodInfo method = type.GetMethod(args[1], - BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); - IWebExecute[] execAttr = Array.ConvertAll(method.GetCustomAttributes(false), a => a as IWebExecute); - foreach (IWebExecute a in execAttr) a.PreExecuting(); - //执行方法 - - object returnObj; - - returnObj = method.GetParameters().Length != 0 && args.Length > 2 - ? method.Invoke(obj, task.Substring(args[0].Length + args[1].Length + 2).Split(',')) - : method.Invoke(obj, null); - - - //如国返回String类型或值类型则输出到页面 - bool isValueType = returnObj is ValueType; - if (isValueType || method.ReturnType == typeof (string)) - context.Response.Write((isValueType ? returnObj : returnObj ?? "").ToString()); - } - } - - #endregion - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs deleted file mode 100644 index f1c2088..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Name : HttpMethodAttribute - * Author : OPS newmin - * Date : 2010/10/26 10:05 - */ - -using System; -using System.Web; - -namespace J6.DevFw.Framework.Web.unused.Handler -{ - /// - /// Post请求特性 - /// - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] - public class GetAttribute : Attribute, IWebExecute - { - /// - /// 允许刷新的时间戳,在时间内将停止请求 - /// - public int AllowRefreshMillliSecond { get; set; } - - /// - /// 刷新错误提示信息 - /// - public string RefreshErrorMessage { get; set; } - - public void PreExecuting() - { - if (AllowRefreshMillliSecond > 0) - { - TimeSpan t = new TimeSpan(0, 0, 0, 0, AllowRefreshMillliSecond); - object lastAccessDate = HttpContext.Current.Session["_lastaccessdatetime"]; - if (lastAccessDate == null) HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 - else - { - bool isTimeout = DateTime.Now - (DateTime) lastAccessDate < t; //是否超过指定的再次请求时间 - HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 - if (isTimeout) - { - HttpContext.Current.Response.Write(String.IsNullOrEmpty(RefreshErrorMessage) - ? "Service unavailable!" - : RefreshErrorMessage); - HttpContext.Current.Response.End(); - } - } - } - } - } - - /// - /// Post请求特性 - /// - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public sealed class PostAttribute : GetAttribute, IWebExecute - { - void IWebExecute.PreExecuting() - { - //POST请求 - if (HttpContext.Current.Request.HttpMethod != "POST") - { - HttpContext.Current.Response.Write("请求非法"); - HttpContext.Current.Response.End(); - } - base.PreExecuting(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs deleted file mode 100644 index 8b76460..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs +++ /dev/null @@ -1,19 +0,0 @@ -/* - * name : IWebExecuteableAttribute - * author : Newmin - * date : 2010/11/05 - */ - -namespace J6.DevFw.Framework.Web.unused.Handler -{ - /// - /// 能被WebHandler(.ashx文件)执行的特性接口 - /// - public interface IWebExecute - { - /// - /// 在执行前触发此方法 - /// - void PreExecuting(); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs deleted file mode 100644 index 94c4a01..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs +++ /dev/null @@ -1,19 +0,0 @@ -/* - * name : WebExecuteAttribute - * author : OPS newmin - * Data : 09/20 2010 - * note : 添加此特性才能被ExecuteHandler用反射的方式调用 - */ - -using System; - -namespace J6.DevFw.Framework.Web.unused.Handler -{ - /// - /// 可通过页面请求执行类的操作 - /// - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] - public sealed class WebExecuteableAttribute : Attribute - { - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs deleted file mode 100644 index f22ada9..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* - * file : HttpModuleBase - * author:OPS newmin - * createdate:2010/09/20 - */ - -using System; -using System.Web; - -namespace J6.DevFw.Framework.Web.unused.HttpModule -{ - public abstract class HttpModuleBase : IHttpModule - { - public void Dispose() - { - } - - public void Init(HttpApplication context) - { - //Bind Events - context.BeginRequest += BeginRequest; - context.Error += ProcessError; - context.EndRequest += EndRequest; - } - - /// - /// 开始处理请求时发生 - /// - /// HttpApplication - /// - public abstract void BeginRequest(object sender, EventArgs e); - - /// - /// 当发生错误的时候处理 - /// - /// - /// - public virtual void ProcessError(object sender, EventArgs e) - { - } - - /// - /// 当请求结束时候发生 - /// - /// - /// - public virtual void EndRequest(object sender, EventArgs e) - { - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs deleted file mode 100644 index da8955d..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * file : HttpReportModule - * author:OPS newmin - * createdate:2010/09/20 - */ - -using System; -using System.Web; - -namespace J6.DevFw.Framework.Web.unused.HttpModule -{ - public class HttpReportModule : HttpModuleBase - { - public override void ProcessError(object sender, EventArgs e) - { - HttpContext context = (sender as HttpApplication).Context; - // 记录错误:文件保存在/Logs/error.log - // 以下情况会将错误日志保存在当前应用程序目录下 - // 1.errorReportUri为空 - // 2.web.config中未配置errorReportUri节点 - // 3.errorReportUri键值的domain与当前域一致且当前域不为虚拟目录 - // 其他情况将提交到errorReportUri - - if (ConfigurationDictionary.RecordError) - { - Exception ex = context.Server.GetLastError().InnerException; - string remoteuri = ConfigurationDictionary.ReportErrorUri ?? ""; - string domain = context.Request.Url.Host; - - if (String.IsNullOrEmpty(remoteuri) || - (remoteuri.IndexOf(domain) != -1 && HttpContext.Current.Request.ApplicationPath == "/")) - ExceptionProcess.TraceError(HttpContext.Current, ex); //当前程序域处理错误 - else - ExceptionProcess.PostRemoteError(HttpContext.Current, remoteuri, ex); //不同域或当前域的虚拟目录处理错误 - } - } - - public override void BeginRequest(object sender, EventArgs e) - { - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs b/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs deleted file mode 100644 index 9bfd4b6..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Web.UI; - -namespace J6.DevFw.Framework.Web.unused.Interface -{ - /// - /// 压缩网页接口 - /// - public interface ICompressionable - { - void Compression(HtmlTextWriter writer); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs b/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs deleted file mode 100644 index 22cdaae..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs +++ /dev/null @@ -1,512 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Xml; - -namespace J6.DevFw.Framework.Xml.AutoObject -{ - /// - /// 对象属性 - /// - public struct XmlObjectProperty - { - private string key; - private string name; - private string descript; - - /// - /// 属性键 - /// - public string Key - { - get { return key; } - } - - /// - /// 属性对应的名称 - /// - public string Name - { - get { return name; } - } - - public string Descript - { - get { return descript; } - } - - public XmlObjectProperty(string key, string name) - { - this.key = key; - this.name = name; - this.descript = ""; - } - - public XmlObjectProperty(string key, string name, string descript) - { - this.key = key; - this.name = name; - this.descript = descript; - } - } - - /// - /// XmlObject特性 - /// - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] - public class XmlObjectAttribute : Attribute - { - public string Name { get; set; } - public string Descript { get; set; } - - public XmlObjectAttribute(string name, string description) - { - this.Name = name; - this.Descript = description; - } - } - - - /// - /// XmlObject - /// - public class XmlObject - { - private string key; - private string name; - private string descript; - - /// - /// 属性键 - /// - public string Key - { - get { return key; } - } - - /// - /// 属性对应的名称 - /// - public string Name - { - get { return name; } - } - - /// - /// 描述/值 - /// - public string Descript - { - get { return descript; } - } - - public XmlObject(string key, string name, string descript) - { - this.key = key; - this.name = name; - this.descript = descript; - } - - public XmlObjectProperty[] Properties { get; set; } - - /// - /// 转换为Json - /// - /// - public string ToJson() - { - StringBuilder sb = new StringBuilder(); - sb.Append("{'key':'") - .Append(this.key.Replace("'", "\\'")) - .Append("','name':'") - .Append((this.name ?? "").Replace("'", "\\'")) - .Append("','descript':'") - .Append((this.descript ?? "").Replace("'", "\\'")) - .Append("','properties':"); - - //添加属性 - if (this.Properties == null || this.Properties.Length == 0) - { - sb.Append("[]"); - } - else - { - int i = 0; - - sb.Append("["); - - foreach (XmlObjectProperty pro in this.Properties) - { - if (i++ != 0) - { - sb.Append(","); - } - sb.Append("{'key':'") - .Append(pro.Key.Replace("'", "\\'")) - .Append("','name':'") - .Append((pro.Name ?? "").Replace("'", "\\'")) - .Append("','descript':'") - .Append((pro.Descript ?? "").Replace("'", "\\'")) - .Append("'}"); - } - - sb.Append("]"); - } - - sb.Append("}"); - - return sb.ToString(); - } - - /// - /// 将对象列表转换为json - /// - /// - /// - public static string ToJson(IEnumerable objects) - { - StringBuilder sb = new StringBuilder(); - int i = 0; - - sb.Append("["); - - foreach (XmlObject obj in objects) - { - if (i++ != 0) - { - sb.Append(","); - } - sb.Append(obj.ToJson()); - } - - sb.Append("]"); - - return sb.ToString(); - } - } - - - /// - /// XmlObject特性 - /// - [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class XmlObjectPropertyAttribute : Attribute - { - public string Name { get; set; } - public string Descript { get; set; } - - public XmlObjectPropertyAttribute(string name) - { - this.Name = name; - } - - public XmlObjectPropertyAttribute(string name, string descript) - { - this.Name = name; - this.Descript = descript; - } - } - - public class AutoObjectXml - { - private string filePath; - private XmlDocument xd; - private XmlNode rootNode; - - public AutoObjectXml(string filePath) - { - this.filePath = filePath; - - if (!File.Exists(this.filePath)) - { - File.Create(filePath).Dispose(); - const string initData = "\r\n\r\n"; - - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(this.filePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - - using (TextReader tr = new StreamReader(this.filePath)) - { - xd = new XmlDocument(); - //this.xmlContent = tr.ReadToEnd(); - xd.LoadXml(tr.ReadToEnd()); - - XmlNode xnode = xd.SelectSingleNode("//objects"); - if (xnode == null) - { - throw new NotSupportedException("XML文件中不包含objects节点"); - } - - this.rootNode = xnode; - tr.Dispose(); - } - } - - - /// - /// 获取Objects根节点 - /// - /// - private XmlNode __GetObjectsNode() - { - XmlNode xnode = xd.SelectSingleNode("//objects"); - if (xnode == null) - { - throw new NotSupportedException("XML文件中不包含objects节点"); - } - return xnode; - } - - /// - /// 插入对象到objects节点 - /// - /// - /// - /// - /// - /// - public bool InsertObjectNode(string key, string name, string descript, params XmlObjectProperty[] properties) - { - if (rootNode.SelectSingleNode(String.Format("object[@key='{0}']", key)) != null) return false; //已经存在属性 - XmlNode tempNode; - XmlNode node = xd.CreateElement("object"); - XmlAttribute attr = xd.CreateAttribute("key"); - - //add Key - attr.Value = key; - node.Attributes.Append(attr); - - //add Name - attr = xd.CreateAttribute("name"); - attr.Value = name; - node.Attributes.Append(attr); - - //add Descript - tempNode = xd.CreateElement("descript"); - XmlCDataSection cdd = xd.CreateCDataSection(descript); - tempNode.AppendChild(cdd); - node.AppendChild(tempNode); - - XmlNode attrNode = xd.CreateElement("properties"); - - foreach (XmlObjectProperty obj in properties) - { - //add Property - tempNode = xd.CreateElement("property"); - attr = xd.CreateAttribute("key"); - attr.Value = obj.Key; - tempNode.Attributes.Append(attr); - - attr = xd.CreateAttribute("name"); - attr.Value = obj.Name; - tempNode.Attributes.Append(attr); - - if (!String.IsNullOrEmpty(obj.Descript)) - { - cdd = xd.CreateCDataSection(obj.Descript); - tempNode.AppendChild(cdd); - } - - attrNode.AppendChild(tempNode); - } - node.AppendChild(attrNode); - - //add object - rootNode.AppendChild(node); - - - return true; - } - - /// - /// 从dll读取并插入,对象需指定XmlObject特性,属性可选XmlObjectProperty特性 - /// - /// - /// - public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute, string checkNameSpace) - { - if (!File.Exists(dllPath)) throw new FileNotFoundException(); - Assembly ass = Assembly.LoadFile(dllPath); - bool ckNs = checkNameSpace != null; //是否从指定的命名空间加载 - Type[] types = ass.GetTypes(); - foreach (Type t in types) - { - if (ckNs && !t.Namespace.StartsWith(checkNameSpace)) - { - continue; - } - - this.InsertFromType(t, includeNoProperyAttribute); - } - } - - /// - /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 - /// - /// - /// - public void InsertFromDLL(string dllPath, string checkNameSpace) - { - this.InsertFromDLL(dllPath, false, checkNameSpace); - } - - /// - /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 - /// - /// - /// - public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute) - { - this.InsertFromDLL(dllPath, includeNoProperyAttribute, null); - } - - - private delegate void MemberXmlObjectHandler(MemberInfo member); - - public void InsertFromType(Type type, bool includeNoProperyAttribute) - { - Type t = type; - //加载类型 - object[] objs = t.GetCustomAttributes(typeof (XmlObjectAttribute), false); - if (objs.Length == 0) return; - - XmlObjectAttribute xa = (XmlObjectAttribute) objs[0]; - XmlObjectPropertyAttribute xpa = null; - IList list = new List(); - object[] objAtt; - XmlObjectProperty pro; - - MemberXmlObjectHandler handler = (p) => - { - objAtt = p.GetCustomAttributes(typeof (XmlObjectPropertyAttribute), true); - xpa = objAtt.Length == 0 ? null : (XmlObjectPropertyAttribute) objAtt[0]; - - if (xpa != null || includeNoProperyAttribute) - { - list.Add(new XmlObjectProperty( - p.Name, - xpa == null || xpa.Name == null ? p.Name : xpa.Name, - xpa == null || xpa.Name == null ? "" : xpa.Descript) - ); - } - }; - - - foreach (PropertyInfo p in t.GetProperties(BindingFlags.Public | BindingFlags.Instance)) - { - handler(p); - } - - foreach (MethodInfo p in t.GetMethods(BindingFlags.Public | BindingFlags.Instance)) - { - handler(p); - } - - this.InsertObjectNode(t.Name, xa.Name ?? t.Name, xa.Descript ?? "", list.ToArray()); - } - - /// - /// 删除指定前缀的对象 - /// - /// - public void RemoveObjects(string prefix) - { - XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); - foreach (XmlNode x in list) - { - if (x.Attributes["key"].Value.StartsWith(prefix)) - { - this.rootNode.RemoveChild(x); - } - } - } - - /// - /// 删除所有对象 - /// - public void RemoveAllObjects() - { - XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); - foreach (XmlNode x in list) - { - this.rootNode.RemoveChild(x); - } - } - - public XmlObject GetObject(string objectKey) - { - XmlNode node = this.rootNode.SelectSingleNode(String.Format("object[@key='{0}']", objectKey)); - if (node == null) return null; - - IList prolist = new List(); - XmlObject obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, - node.SelectSingleNode("descript").InnerText); - XmlNodeList proNodes = node.SelectNodes("properties/property"); - foreach (XmlNode n in proNodes) - { - prolist.Add(new XmlObjectProperty( - n.Attributes["key"].Value, - n.Attributes["name"].Value, - n.InnerText)); - } - - obj.Properties = prolist.ToArray(); - - return obj; - } - - /// - /// 获取所有对象 - /// - /// - public IEnumerable GetObjects() - { - IList prolist = new List(); - - XmlNodeList nodes = this.rootNode.SelectNodes("object"); - XmlObject obj; - XmlNodeList proNodes; - foreach (XmlNode node in nodes) - { - obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, - node.SelectSingleNode("descript").InnerText); - proNodes = node.SelectNodes("properties/property"); - - prolist.Clear(); - foreach (XmlNode n in proNodes) - { - prolist.Add(new XmlObjectProperty( - n.Attributes["key"].Value, - n.Attributes["name"].Value, - n.InnerText)); - } - obj.Properties = prolist.ToArray(); - - yield return obj; - } - } - - /// - /// 保存到文件中 - /// - public void Flush() - { - /* - using (TextWriter tr = new StreamWriter(this.filePath)) - { - tr.Write(xmlContent); - tr.Flush(); - tr.Dispose(); - }*/ - - xd.Save(this.filePath); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs b/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs deleted file mode 100644 index 149e456..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; - -namespace J6.DevFw.Framework.Xml.AutoObject -{ - public class AutoXmlTest - { - public static void Test() - { - Xml.AutoObject.AutoObjectXml ax = - new Xml.AutoObject.AutoObjectXml(AppDomain.CurrentDomain.BaseDirectory + "templet/template_dict.xml"); - - ax.RemoveAllObjects(); - - //ax.RemoveObjects("Pro"); - - ax.InsertObjectNode("Temp", "客户", "", new XmlObjectProperty("ID", "客户编号", "1234\nretyt\nfdsf"), - new XmlObjectProperty("RealName", "真实姓名")); - ax.InsertFromDLL(AppDomain.CurrentDomain.BaseDirectory + "bin/spc.dll", null); - ax.Flush(); - - HttpResponse response = HttpContext.Current.Response; - - response.Write(XmlObjectDoc.DocStyleSheet); - - //显示单个对象文档 - // XmlObject obj = ax.GetObject("Temp"); - // response.Write(XmlObjectDoc.GetGrid(obj,-1)); - - - IList objects = new List(ax.GetObjects()); - - response.Write("

Objects

"); - - for (int i = 0; i < objects.Count; i++) - { - response.Write(XmlObjectDoc.GetGrid(objects[i], i + 1)); - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs b/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs deleted file mode 100644 index ce46106..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Text; - -namespace J6.DevFw.Framework.Xml.AutoObject -{ - public static class XmlObjectDoc - { - public const string DocStyleSheet = @""; - - public static string GetGrid(XmlObject obj, int index) - { - const string tpl = @"
-

%object.index%%object.name%(%object.key%)

-

描述:%object.descript%

-

- - - %object.prop% -
属性键:属性名称:备注:
-

-
"; - - - StringBuilder sb = new System.Text.StringBuilder(); - - if (obj.Properties != null) - { - foreach (XmlObjectProperty p in obj.Properties) - { - sb.Append("").Append(p.Key) - .Append("").Append(p.Name).Append("") - .Append(p.Descript).Append(" "); - } - } - - return tpl.Replace("%object.key%", obj.Key) - .Replace("%object.index%", index < 1 ? "" : index.ToString()) - .Replace("%object.name%", obj.Name) - .Replace("%object.descript%", obj.Descript.Replace("\n", "
")) - .Replace("%object.prop%", sb.ToString()); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Xml/XmlDocHelper.cs b/J6/src/core/J6.DevFw.Core/Framework/Xml/XmlDocHelper.cs deleted file mode 100644 index 6aaa34b..0000000 --- a/J6/src/core/J6.DevFw.Core/Framework/Xml/XmlDocHelper.cs +++ /dev/null @@ -1,24 +0,0 @@ -/* - * XMLDocument - * - * Copyright 2010 OPS,All rights reseved! - * date : 2010/11/22 - */ - -using System; -using System.Xml; - -namespace J6.DevFw.Framework.Xml -{ - [Obsolete] - public class XmlDocHelper - { - public static object ReadAttributeValue(string xmlPath, string xpath) - { - XmlDocument x = new XmlDocument(); - x.Load(xmlPath); - XmlNode xn = x.SelectSingleNode(xpath); - return xn.Value; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/FwCtx.cs b/J6/src/core/J6.DevFw.Core/FwCtx.cs deleted file mode 100644 index ce0b772..0000000 --- a/J6/src/core/J6.DevFw.Core/FwCtx.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.IO; -using J6.DevFw.Framework; - - -namespace J6.DevFw -{ - /// - /// 开发框架上下文对象 - /// - public static class FwCtx - { - private static string _physicalPath; - private static Variable _variables; - private static VersionSet _version; - private static int _platformId; - - /// - /// 物理路径 - /// - public static string PhysicalPath - { - get { return _physicalPath ?? (_physicalPath = AppDomain.CurrentDomain.BaseDirectory); } - } - - /// - /// 变量设置 - /// - public static Variable Variables - { - get { return _variables ?? (_variables = new Variable()); } - } - - /// - /// 版本 - /// - public static VersionSet Version - { - get { return _version ?? (_version = new VersionSet()); } - } - - /// - /// 是否运行在非Windows平台 - /// - /// - public static bool Mono() - { - //获取平台编号 - if (_platformId == 0) - { - _platformId = (Int32) Environment.OSVersion.Platform; - } - - return _platformId == 4 || _platformId == 6 || _platformId == 128; - } - - /// - /// 从默认的位置加载程序集 - /// - public static void ResolveAssemblies() - { - InnerAppDomainResolver.Resolve(null); - } - - - /// - /// - /// - /// - public static void ResolveAssembliesByPath(String assemblyFullPath) - { - InnerAppDomainResolver.Resolve(assemblyFullPath); - } - } -} diff --git a/J6/src/core/J6.DevFw.Core/J6.DevFw.Core.csproj b/J6/src/core/J6.DevFw.Core/J6.DevFw.Core.csproj deleted file mode 100644 index 2624092..0000000 --- a/J6/src/core/J6.DevFw.Core/J6.DevFw.Core.csproj +++ /dev/null @@ -1,149 +0,0 @@ - - - - Debug - AnyCPU - 9.0.21022 - 2.0 - {44E05D6C-5B0A-453A-913F-00124D1BF435} - Library - Properties - J6.DevFw - J6.DevFw.Core - v4.0 - 512 - - - - true - full - false - ..\..\..\dist\dll\ - TRACE - prompt - 4 - ..\..\..\dist\dll\J6.DevFw.Core.XML - - - pdbonly - true - ..\Bin\ - TRACE - prompt - 4 - - - true - - - j6.devfw.snk - - - - - - - - - - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Code - - - - - - - - - - ASPXCodeBehind - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/MicroTemplateEngine.cs b/J6/src/core/J6.DevFw.Core/MicroTemplateEngine.cs deleted file mode 100644 index c124339..0000000 --- a/J6/src/core/J6.DevFw.Core/MicroTemplateEngine.cs +++ /dev/null @@ -1,131 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : SimpleTemplateEngine -* Author : Administrator -* Create : 2012/10/26 23:49:52 -* Description : -* -*/ - -using System; -using System.Reflection; -using System.Text.RegularExpressions; - -namespace J6.DevFw -{ - /// - /// 微型模板引擎 - /// - public sealed class MicroTemplateEngine - { - /// - /// 包含方法的类型实例 - /// - private readonly object _classInstance; - - public MicroTemplateEngine(object classInstance) - { - this._classInstance = classInstance; - } - - /// - /// 数据列正则 - /// - private static Regex fieldRegex = new Regex("{([A-Za-z\\[\\]0-9_\u4e00-\u9fa5]+)}"); - - /// - /// 执行解析模板内容 - /// - /// 包含标签方法的类的实例 - /// - /// - public static string Execute(object instance, string html) - { - string resultTxt = html; //返回结果 - - const string tagPattern = "\\$([A-Za-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; - const string paramPattern = "\\s*'([^']+)',*|\\s*(?!=')([^,]+),*"; - - Regex tagRegex = new Regex(tagPattern); //方法正则 - Regex paramRegex = new Regex(paramPattern); //参数正则 - - Type type = instance.GetType(); - MethodInfo method; - string tagName; - object[] parameters; - Type[] parameterTypes; //参数类型数组 - MatchCollection paramMcs; - - resultTxt = tagRegex.Replace(resultTxt, m => - { - tagName = m.Groups[1].Value; - //获得参数 - paramMcs = paramRegex.Matches(m.Groups[2].Value); - parameters = new object[paramMcs.Count]; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parameters.Length]; - for (int i = 0; i < parameterTypes.Length; i++) - { - parameterTypes[i] = typeof (String); - } - method = type.GetMethod( - tagName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - //如果方法存在则执行返回结果,否则返回原始值 - if (method == null) - { - return m.Value; - } - else - { - //数字参数 - string intParamValue; - //则给参数数组赋值 - for (int i = 0; i < paramMcs.Count; i++) - { - intParamValue = paramMcs[i].Groups[2].Value; - if (intParamValue != String.Empty) - { - parameters[i] = intParamValue; - } - else - { - parameters[i] = paramMcs[i].Groups[1].Value; - } - } - - //执行方法并返回结果 - return method.Invoke(instance, parameters).ToString(); - } - }); - return resultTxt; - } - - /// - /// 执行解析模板内容 - /// - /// - /// - public string Execute(string html) - { - return Execute(this._classInstance, html); - } - - /// - /// 替换列中的模板字符 - /// - /// - /// - /// - public string FieldTemplate(string format, Func func) - { - return fieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Properties/AssemblyInfo.cs b/J6/src/core/J6.DevFw.Core/Properties/AssemblyInfo.cs deleted file mode 100644 index 08c62dd..0000000 --- a/J6/src/core/J6.DevFw.Core/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; -using System.Security; - -//公钥: 4c8227bc503db3c5 -// 4C8227BC503DB3C5 - -// 有关程序集的常规信息通过下列属性集 -// 控制。更改这些属性值可修改 -// 与程序集关联的信息。 - -[assembly:AllowPartiallyTrustedCallers] -[assembly: SecurityRules(SecurityRuleSet.Level1)] -[assembly: AssemblyTitle("J6.DevFw - .NET平台开发框架")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("S1N1.COM")] -[assembly: AssemblyProduct("devfw")] -[assembly: AssemblyCopyright("Copyright © S1N1.com 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 属性设置为 true。 - -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID - -[assembly: Guid("bfe2a768-6248-4749-90d9-6b3a754dc758")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.1")] -[assembly: AssemblyFileVersion("1.0.1")] \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Utils/JsonParser.cs b/J6/src/core/J6.DevFw.Core/Utils/JsonParser.cs deleted file mode 100644 index ecff4e9..0000000 --- a/J6/src/core/J6.DevFw.Core/Utils/JsonParser.cs +++ /dev/null @@ -1,215 +0,0 @@ -// -// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. -// -// Project: OPSoft.JSON -// FileName : JsonAnalyzer.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2011/11/26 21:14:30 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Utils -{ - /// - /// JSON分析器 - /// - public class JsonAnalyzer - { - private string jsonString; - private IList keys = new List(); - - public JsonAnalyzer(string json) - { - if (String.IsNullOrEmpty(json)) - { - this.jsonString = "{}"; - } - else - { - this.jsonString = json; - - //将字符中的键存到列表中 - const string pattern = "[\\{,]([^:]+):"; - MatchCollection mc = Regex.Matches(this.jsonString, pattern); - - foreach (Match m in mc) - { - keys.Add(m.Groups[1].Value); - } - } - } - - /// - /// 键的集合 - /// - public string[] Keys - { - get - { - string[] arr = new string[keys.Count]; - keys.CopyTo(arr, 0); - return arr; - } - } - - - /// - /// 获取指定键的值 - /// - /// - /// - public string GetValue(string key) - { - // Regex reg = new Regex(key+String.Intern(":'*(?[^'|,|\\}]+)")); - Regex reg = new Regex(key + String.Intern(":(?'[^']+|(?!')[^,|}]+)")); - if (reg.IsMatch(jsonString)) - { - return reg.Match(jsonString).Groups["value"].Value.Replace("'", String.Empty); - } - return String.Empty; - } - - /// - /// 设置指定键的值并返回新的JSON字符串,如果不存在键,则返回空 - /// - public string SetValue(string key, string value) - { - string newJsonString = String.Empty; - - Regex reg = new Regex(key + String.Intern(":(?'*)(?[^'|,|\\}]+)")); - if (reg.IsMatch(jsonString)) - { - if (reg.Match(jsonString).Groups["reff"].Value == "'") - { - value = "'" + value; - } - newJsonString = reg.Replace(jsonString, String.Format("{0}:{1}", key, value)); - - //更新到数据 - jsonString = newJsonString; - } - - return newJsonString; - } - - /// - /// 添加新的键值,如果存在键返回false - /// - /// - /// - /// - public bool Append(string key, string value) - { - Regex reg = new Regex(key + String.Intern(":(?'*)(?[^'|,|\\}]+)")); - if (reg.IsMatch(jsonString)) return false; - else - { - StringBuilder sb = new StringBuilder(); - sb.Append(this.jsonString.Substring(0, this.jsonString.LastIndexOf('}'))); - if (sb.Length != 1) - { - sb.Append(","); - } - - sb.Append(key).Append(":'").Append(value).Append("'") - .Append("}"); - - keys.Add(key); //添加到KEYS集合 - this.jsonString = sb.ToString(); //更新到数据 - - return true; - } - } - - public IDictionary ConvertToDictionary() - { - return ConvertToDictionary(jsonString); - } - - /// - /// 将JSON转为字典 - /// - /// - /// - public static IDictionary ConvertToDictionary(string jsonString) - { - IDictionary dict = new Dictionary(); - const string pattern = "(?(?!\\{|,|')[^:]+):(?'[^']+|(?!')[^,|}]+)"; //非{和'以及,开头,匹配键和值 - Regex reg = new Regex(pattern); - if (reg.IsMatch(jsonString)) - { - MatchCollection mc = reg.Matches(jsonString); - foreach (Match m in mc) - { - dict.Add(m.Groups["key"].Value, m.Groups["value"].Value.Replace("'", String.Empty)); - } - } - return dict; - } - - /// - /// 将Hashtable转为Json字符串 - /// - /// - /// - public static string ToJson(Hashtable hash) - { - StringBuilder sb = new StringBuilder(); - var fieldCount = hash.Count; - int i = 0; - sb.Append("{"); - foreach (object key in hash.Keys) - { - sb.Append("\"").Append(key).Append("\":"); - if ((hash[key] as string) != null) - { - if (hash[key].ToString().StartsWith("[")) - { - sb.Append(hash[key].ToString()); - } - else - { - sb.Append("\"").Append(hash[key].ToString()).Append("\""); - } - } - else - { - if (hash[key].ToString() == "True" || hash[key].ToString() == "False") - { - sb.Append(hash[key].ToString().ToLower()); - } - else - { - sb.Append(hash[key].ToString()); - } - } - if (++i < fieldCount) - { - sb.Append(","); - } - } - - sb.Append("}"); - - return sb.ToString(); - } - - /// - /// 返回对象的JSON表示 - /// - /// - public override string ToString() - { - return jsonString; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Utils/MultiThreadProcess.cs b/J6/src/core/J6.DevFw.Core/Utils/MultiThreadProcess.cs deleted file mode 100644 index 5434972..0000000 --- a/J6/src/core/J6.DevFw.Core/Utils/MultiThreadProcess.cs +++ /dev/null @@ -1,119 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : MultiThreadProcess.cs -* Author : Administrator -* Create : 2012/11/11 20:02:29 -* Description : -* -*/ - - -using System; -using System.Collections.Generic; -using System.Threading; - -namespace J6.DevFw.Utils -{ - /// - /// 多线程处理事件 - /// - public delegate void ThreadProcessHandler(T t); - - /// - /// 多线程处理 - /// - public class MultiThreadProcess - { - /// - /// 线程数量 - /// - private int threadCount; - - /// - /// 线程堆栈,用于轮询线程 - /// - private Stack threadStack; - - /// - /// 线程集合 - /// - private Thread[] threads; - - private bool isAlive = true; - - /// - /// 是否活动中 - /// - public bool IsAlive - { - get { return isAlive; } - } - - public MultiThreadProcess(int threads, int processTimes) - { - this.threadCount = threads; - this.threads = new Thread[threads]; - - //初始化线程堆栈 - this.threadStack = new Stack(processTimes); - for (int i = processTimes; i > 0; i--) - { - this.threadStack.Push(i); - } - } - - /// - /// 开始执行线程 - /// - /// - /// - /// - public void Start(ThreadProcessHandler handler, T t) - { - while (this.isAlive) - { - for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) - { - if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) - { - threads[i] = new Thread(() => - { - lock (this.threadStack) - { - if (this.threadStack.Count > 0) - { - this.threadStack.Pop(); - handler(t); - } - } - }); - - threads[i].Name = String.Format("thread{0}", i.ToString()); - threads[i].Start(); - } - } - - if (this.threadStack.Count == 0) - { - do - { - bool hasThreadRunning = false; - for (int i = 0; i < threadCount; i++) - { - if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) - hasThreadRunning = true; - } - if (!hasThreadRunning) - { - this.isAlive = false; - } - } while (this.isAlive); - - //设置线程任务完成 - this.isAlive = false; - } - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Utils/ZipUtility.cs b/J6/src/core/J6.DevFw.Core/Utils/ZipUtility.cs deleted file mode 100644 index 906310d..0000000 --- a/J6/src/core/J6.DevFw.Core/Utils/ZipUtility.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Packaging; -using System.Web; - -//(WindowsBase.dll) - -namespace J6.DevFw.Utils -{ - public class ZipUtility - { - /// - /// Extract a container Zip. NOTE: container must be created as Open Packaging Conventions (OPC) specification - /// - /// The folder to extract the package to - /// The package file - /// override existing files - /// - public static bool UncompressFile(string folderName, string compressedFileName, bool overrideExisting) - { - bool result = false; - try - { - if (!File.Exists(compressedFileName)) - { - return result; - } - - DirectoryInfo directoryInfo = new DirectoryInfo(folderName); - if (!directoryInfo.Exists) - directoryInfo.Create(); - - using (Package package = Package.Open(compressedFileName, FileMode.Open, FileAccess.Read)) - { - foreach (PackagePart packagePart in package.GetParts()) - { - ExtractPart(packagePart, folderName, overrideExisting); - } - } - - result = true; - } - catch (Exception e) - { - throw new Exception("Error unzipping file " + compressedFileName, e); - } - - return result; - } - - private static void ExtractPart(PackagePart packagePart, string targetDirectory, bool overrideExisting) - { - string stringPart = targetDirectory + HttpUtility.UrlDecode(packagePart.Uri.ToString()).Replace('\\', '/'); - - if (!Directory.Exists(Path.GetDirectoryName(stringPart))) - Directory.CreateDirectory(Path.GetDirectoryName(stringPart)); - - if (!overrideExisting && File.Exists(stringPart)) - return; - using (FileStream fileStream = new FileStream(stringPart, FileMode.Create)) - { - packagePart.GetStream().CopyTo(fileStream); - } - } - - /// - /// Add a folder along with its subfolders to a Package - /// - /// The folder to add - /// The package to create - /// Override exsisitng files - /// - public static bool PackageFolder(string folderName, string compressedFileName, bool overrideExisting) - { - if (folderName.EndsWith(@"\")) - folderName = folderName.Remove(folderName.Length - 1); - bool result = false; - if (!Directory.Exists(folderName)) - { - return result; - } - - if (!overrideExisting && File.Exists(compressedFileName)) - { - return result; - } - try - { - using (Package package = Package.Open(compressedFileName, FileMode.Create)) - { - IEnumerable fileList = null; - // Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); - - - foreach (string fileName in fileList) - { - //The path in the package is all of the subfolders after folderName - string pathInPackage; - pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, string.Empty) + "/" + - Path.GetFileName(fileName); - - Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative)); - PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", - CompressionOption.Maximum); - using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) - { - fileStream.CopyTo(packagePartDocument.GetStream()); - } - } - } - result = true; - } - catch (Exception e) - { - throw new Exception("Error zipping folder " + folderName, e); - } - - return result; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Variable.cs b/J6/src/core/J6.DevFw.Core/Variable.cs deleted file mode 100644 index f0f8119..0000000 --- a/J6/src/core/J6.DevFw.Core/Variable.cs +++ /dev/null @@ -1,30 +0,0 @@ - -namespace J6.DevFw -{ - /// - /// - /// - public class Variable - { - - /// - /// 临时目录 - /// - public string TempPath = "tmp/"; - - /// - /// 资源路径 - /// - public string AssetsPath = "framework/assets/"; - - /// - /// 插件默认图标 - /// - public string PLUGIN_DEFAULT_ICON = "framework/assets/images/app_icon.png"; - - /// - /// 程序集路径 - /// - public string AssemblyPath = "framework/lib"; - } -} diff --git a/J6/src/core/J6.DevFw.Core/Version.cs b/J6/src/core/J6.DevFw.Core/Version.cs deleted file mode 100644 index da51b09..0000000 --- a/J6/src/core/J6.DevFw.Core/Version.cs +++ /dev/null @@ -1,43 +0,0 @@ - - -using System; - -namespace J6.DevFw -{ - /// - /// - /// - public class VersionSet - { - private string _versionStr; - - /// - /// 主要版本号 - /// - public string MajorVersion = "0"; - - /// - /// 次要版本号 - /// - public string MinorVersion = "0"; - - /// - /// 修订版本号 - /// - public string BuildNumber = "1"; - - - /// - /// 获取版本号 - /// - /// - public string GetVersion() - { - return this._versionStr ?? - (this._versionStr = - String.Format("{0}.{1}.{2}", this.MajorVersion, this.MinorVersion, this.BuildNumber)); - - - } - } -} diff --git a/J6/src/core/J6.DevFw.Data/DataBaseAccess.cs b/J6/src/core/J6.DevFw.Data/DataBaseAccess.cs deleted file mode 100644 index 47a8210..0000000 --- a/J6/src/core/J6.DevFw.Data/DataBaseAccess.cs +++ /dev/null @@ -1,673 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : DataBaseAccess.cs -// Date : 8/19/2011 -// Author : -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using System.Text.RegularExpressions; -using J6.DevFw.Data.Extensions; - -namespace J6.DevFw.Data -{ - public class DataBaseAccess - { - private readonly IDataBase dbFactory; - private static readonly Regex procedureRegex = new Regex("\\s"); - private IList _totalSqls; - private bool _totalOpen; - private int _commandTimeout = 30000; - - /// - /// ʵݿʶ - /// - /// - /// - public DataBaseAccess(DataBaseType type, string connectionString) - { - if (connectionString.IndexOf("$ROOT$") != -1) - { - connectionString = connectionString.Replace("$ROOT$", AppDomain.CurrentDomain.BaseDirectory); - } - - this.DbType = type; - - switch (type) - { - case DataBaseType.OLEDB: - dbFactory = new OleDbFactory(connectionString); - break; - case DataBaseType.SQLite: - dbFactory = new SQLiteFactory(connectionString); - break; - case DataBaseType.MonoSQLite: - dbFactory = new MonoSQLiteFactory(connectionString); - break; - case DataBaseType.SQLServer: - dbFactory = new SqlServerFactory(connectionString); - break; - case DataBaseType.MySQL: - dbFactory = new MySqlFactory(connectionString); - break; - } - } - - /// - /// ִʱʱ䣬ĬΪ30000(30) - /// - public int CommandTimeout - { - get { return this._commandTimeout; } - set - { - if (value <= 2000) - { - throw new ArgumentException("Чֵ"); - } - this._commandTimeout = value; - } - } - - private DbConnection CreateOpenedConnection() - { - DbConnection connection = dbFactory.GetConnection(); - connection.Open(); - return connection; - } - - /// - /// ͳ - /// - public void StartNewTotal() - { - if (!_totalOpen) - _totalOpen = true; - if (_totalSqls == null) - _totalSqls = new List(); - else - _totalSqls.Clear(); - } - - public IList GetTotalSqls() - { - if (this._totalSqls == null) - throw new Exception("ʹStartNewTotal()ʼͳ"); - return this._totalSqls; - } - - private void AddTotalSql(string sql) - { - _totalSqls.Add(sql); - } - - - /// - /// ݿ - /// - public DataBaseType DbType { get; private set; } - - /// - /// ݿ - /// - public IDataBase DataBaseAdapter - { - get { return this.dbFactory; } - } - - /// - /// һ - /// - /// - /// - /// - public DbParameter NewParameter(string name, object value) - { - return dbFactory.CreateParameter(name, value); - } - - private DbCommand CreateCommand(string sql) - { - DbCommand cmd = this.dbFactory.CreateCommand(sql); - cmd.CommandTimeout = this._commandTimeout; - return cmd; - } - - /// - /// һ,ָΪ - /// - /// - /// - /// - /// - public DbParameter NewParameter(string name, object value, ParameterDirection direction) - { - DbParameter parameter = dbFactory.CreateParameter(name, value); - parameter.Direction = direction; - return parameter; - } - - /// - /// ִвѯ - /// - /// - /// - public int ExecuteNonQuery(string commandText) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - return ExecuteNonQuery(commandText, parameters); - } - - /// - /// ִвѯ - /// - /// - /// - /// - public int ExecuteNonQuery(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - - int result = 0; - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; - - cmd.Connection = conn; - if (parameters != null) cmd.Parameters.AddRange(parameters); - - result = cmd.ExecuteNonQuery(); - } - return result; - } - - /// - /// زѯĵһеһֵ - /// - /// - /// - public object ExecuteScalar(string commandText) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - return ExecuteScalar(commandText, parameters); - } - - /// - /// زѯĵһеһֵ - /// - /// - /// - /// - public object ExecuteScalar(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - object obj; - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; - - if (parameters != null) cmd.Parameters.AddRange(parameters); - - obj = cmd.ExecuteScalar(); - } - return obj; - } - - /// - /// ȡDataReaderе - /// - /// - /// - public DbDataReader ExecuteReader(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; - - if (parameters != null) cmd.Parameters.AddRange(parameters); - - return cmd.ExecuteReader(); - } - } - - /// - /// ȡDataReaderе - /// - /// - /// - public void ExecuteReader(string commandText, DataReaderFunc func) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - ExecuteReader(commandText, func, parameters); - } - - /// - /// ȡDataReaderе - /// - /// - /// - /// - public void ExecuteReader(string commandText, DataReaderFunc func, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) - ? CommandType.Text - : CommandType.StoredProcedure; - - if (parameters != null) cmd.Parameters.AddRange(parameters); - - func(cmd.ExecuteReader()); - } - } - - /// - /// ݿжȡݲڴ - /// - /// - /// - public DataSet GetDataSet(string commandText) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - return GetDataSet(commandText, parameters); - } - - /// - /// ݿжȡݲڴ - /// - /// - /// - /// - public DataSet GetDataSet(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - - DataSet ds = new DataSet(); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, commandText); - - - if (parameters != null) - { - adapter.SelectCommand.Parameters.AddRange(parameters); - //ԶжT-SQLǴ洢 - adapter.SelectCommand.CommandType = procedureRegex.IsMatch(commandText) - ? CommandType.Text - : CommandType.StoredProcedure; - } - - adapter.Fill(ds); - } - return ds; - } - - public T ToEntity(string commandText) where T : new() - { - return ToEntity(commandText, null); - } - - - /// - /// ѯתΪʵ - /// - /// - /// - /// - /// - public T ToEntity(string commandText, params DbParameter[] parameters) where T : new() - { - if (this._totalOpen) this.AddTotalSql(commandText); - - T t = default(T); - ExecuteReader(commandText, (reader) => - { - if (reader.HasRows) - { - t = reader.ToEntity(); - } - }, parameters); - return t; - } - - /// - /// DataReaderݲתʵ༯ - /// - /// - /// - /// - public IList ToEntityList(string commandText) where T : new() - { - return ToEntityList(commandText, null); - } - - /// - /// DataReaderݲתʵ༯ - /// - /// - /// - /// - /// - public IList ToEntityList(string commandText, params DbParameter[] parameters) where T : new() - { - if (this._totalOpen) this.AddTotalSql(commandText); - - IList list = null; - - ExecuteReader(commandText, (reader) => - { - if (reader.HasRows) - { - list = reader.ToEntityList(); - } - }, parameters); - - return list ?? new List(); - } - - /// - /// ִнű(Mysql) - /// - /// sqlű - /// ָɴݿ - /// - public int ExecuteScript(string sql, string delimiter) - { - int result = -1; - using (DbConnection conn = this.CreateOpenedConnection()) - { - result = dbFactory.ExecuteScript(conn, sql, delimiter); - } - - return result; - } - - #region µ᷽ʽ - - /// - /// ִвѯ - /// - /// - /// - public int ExecuteNonQuery(params SqlQuery[] sqls) - { - if (this._totalOpen) - foreach (SqlQuery sql in sqls) - this.AddTotalSql(sql.Sql); - - if (sqls.Length == 0) throw new ArgumentOutOfRangeException("sqls", "SQLEntityӦָһ!"); - - DbTransaction trans = null; - DbCommand cmd; - int result = 0; - - DbConnection conn = this.CreateOpenedConnection(); - - //Ӳ - trans = conn.BeginTransaction(); - - - SqlEntityHandler sh = s => - { - //Command, - cmd = this.CreateCommand(s.Sql); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(s.Sql) - ? CommandType.Text - : CommandType.StoredProcedure; - - //Ӳ - if (s.Parameters != null) cmd.Parameters.AddRange(s.ToParams(dbFactory)); - - //ʹ - - cmd.Transaction = trans; - - result += cmd.ExecuteNonQuery(); - }; - - try - { - foreach (SqlQuery sql in sqls) - { - sh(sql); - } - - //ύ - - trans.Commit(); - } - catch (DbException ex) - { - //ִ,ع - trans.Rollback(); - - //׳쳣 - throw ex; - } - finally - { - //ر - conn.Close(); - } - - - return result; - } - - /// - /// ȡDataReaderе - /// - /// - /// - public void ExecuteReader(SqlQuery sql, DataReaderFunc func) - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(sql.Sql); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(sql.Sql) ? CommandType.Text : CommandType.StoredProcedure; - - if (sql.Parameters != null) - cmd.Parameters.AddRange(sql.ToParams(dbFactory)); - - func(cmd.ExecuteReader()); - } - } - - - /// - /// ݿжȡݲڴ - /// - /// - /// - public DataSet GetDataSet(SqlQuery sql) - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - DataSet ds = new DataSet(); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, sql.Sql); - - if (sql.Parameters != null) - { - adapter.SelectCommand.Parameters.AddRange(sql.ToParams(dbFactory)); - //ԶжT-SQLǴ洢 - adapter.SelectCommand.CommandType = procedureRegex.IsMatch(sql.Sql) - ? CommandType.Text - : CommandType.StoredProcedure; - } - - adapter.Fill(ds); - } - - return ds; - } - - - /// - /// زѯĵһеһֵ - /// - /// - /// - public object ExecuteScalar(SqlQuery sql) - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - - object obj; - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(sql.Sql); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(sql.Sql) - ? CommandType.Text - : CommandType.StoredProcedure; - - if (sql.Parameters != null) cmd.Parameters.AddRange(sql.ToParams(dbFactory)); - obj = cmd.ExecuteScalar(); - } - - return obj; - } - - /// - /// ѯתΪʵ - /// - /// - /// - /// - /// - public T ToEntity(SqlQuery sql) where T : new() - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - - T t = default(T); - this.ExecuteReader(sql, (reader) => - { - if (reader.HasRows) - { - t = reader.ToEntity(); - } - }); - - - return t; - } - - /// - /// DataReaderݲתʵ༯ - /// - /// - /// - /// - public IList ToEntityList(SqlQuery sql) where T : new() - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - - IList list = null; - - this.ExecuteReader(sql, (reader) => - { - if (reader.HasRows) - { - list = reader.ToEntityList(); - } - }); - - return list ?? new List(); - } - - #endregion - - #region Hashtableȡ - - public int ExecuteNonQuery(string commandText, Hashtable data) - { - var parameters = GetParametersFromHashTable(data); - return this.ExecuteNonQuery(commandText, parameters); - } - - public object ExecuteScalar(string commandText, Hashtable data) - { - return this.ExecuteScalar(commandText, this.GetParametersFromHashTable(data)); - } - - public void ExecuteReader(string commandText, Hashtable data, DataReaderFunc func) - { - this.ExecuteReader(commandText, func, this.GetParametersFromHashTable(data)); - } - - public DataSet GetDataSet(string commandText, Hashtable data) - { - return this.GetDataSet(commandText, this.GetParametersFromHashTable(data)); - } - - private DbParameter[] GetParametersFromHashTable(Hashtable data) - { - DbParameter[] parameters = new DbParameter[data.Keys.Count]; - - int i = 0; - foreach (DictionaryEntry d in data) - { - parameters[i++] = this.NewParameter("@" + d.Key, d.Value); - } - return parameters; - } - - #endregion - - /* - /// - /// ͷԴ - /// - public void Dispose() - { - if (conn!=null && conn.State != ConnectionState.Closed) - { - conn.Dispose(); - } - } - - ~DataBaseAccess() - { - this.Dispose(); - } - */ - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/DataBaseType.cs b/J6/src/core/J6.DevFw.Data/DataBaseType.cs deleted file mode 100644 index 256a531..0000000 --- a/J6/src/core/J6.DevFw.Data/DataBaseType.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : DataBaseType.cs -// Date : 8/19/2011 -// Author : -// -// - -namespace J6.DevFw.Data -{ - /// - /// ݿ - /// - public enum DataBaseType - { - SQLServer, - - /// - /// SQLiteݿ - /// - SQLite, - - /// - ///Mono SQLite - /// - MonoSQLite, - - /// - /// mysqlݿ - /// - MySQL, - - /// - /// Accessݿ - /// - OLEDB - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/DataDelegate.cs b/J6/src/core/J6.DevFw.Data/DataDelegate.cs deleted file mode 100644 index db8e033..0000000 --- a/J6/src/core/J6.DevFw.Data/DataDelegate.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : ReadDataFunc.cs -// Date : 8/19/2011 -// Author : -// Modify: -// 2013-05-26 18:00 newmin [+]: SqlEntityHandler -// -// - -using System.Data.Common; - -namespace J6.DevFw.Data -{ - /// - /// ݶȡ - /// - /// - public delegate void DataReaderFunc(DbDataReader reader); - - /// - /// SQLʵ - /// - /// - public delegate void SqlEntityHandler(SqlQuery sql); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/DataUtility.cs b/J6/src/core/J6.DevFw.Data/DataUtility.cs deleted file mode 100644 index 6d19bdd..0000000 --- a/J6/src/core/J6.DevFw.Data/DataUtility.cs +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Data.Extensions -// FileName : ObjectExtensions.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2012/05/24 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using J6.DevFw.Data.Extensions; - -namespace J6.DevFw.Data -{ - /// - /// 数据实用辅助类 - /// - public static class DataUtility - { - /// - /// 转换DataTable为实体列表 - /// - /// - /// - /// - public static IList ConvertToEntityList(DataTable table) where T : new() - { - return table.ToEntityList(); - } - - /// - ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) - /// - public static IList ConvertToEntityList(DbDataReader reader) where T : new() - { - return reader.ToEntityList(); - } - - public static T ConvertToEntity(DataRow row) where T : new() - { - return row.ToEntity(); - } - - /// - ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据) - /// - public static T ConvertToEntity(DbDataReader reader) where T : new() - { - return reader.ToEntity(); - } - - /// - /// 生成SQL语句参数对象数组 - /// - /// 实体类型 - /// - /// 数据库类型 - /// 字段,用空格隔开多个字段。参数名称需与字段名称一致! - /// - public static DbParameter[] GetDbParameter(T obj, DataBaseType dbtype, String fields) - { - return obj.GetDbParameter(dbtype, fields); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Extensions/CLR_DataExtensions.cs b/J6/src/core/J6.DevFw.Data/Extensions/CLR_DataExtensions.cs deleted file mode 100644 index 17b2b99..0000000 --- a/J6/src/core/J6.DevFw.Data/Extensions/CLR_DataExtensions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Data.Common; - -namespace J6.DevFw.Data.Extensions -{ - public static class CLR_DataExtensions - { - /// - /// 获取DataReader的列名 - /// - /// - /// - /// - public static String[] GetColumns(this DbDataReader reader, bool lower) - { - String[] columns = new String[reader.FieldCount]; - for (int i = 0, j = columns.Length; i < j; i++) - { - columns[i] = lower ? reader.GetName(i).ToLower() : reader.GetName(i); - } - return columns; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Extensions/DataExtensions.cs b/J6/src/core/J6.DevFw.Data/Extensions/DataExtensions.cs deleted file mode 100644 index f28f444..0000000 --- a/J6/src/core/J6.DevFw.Data/Extensions/DataExtensions.cs +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Copyright 2010 OPS,All rights reseved ! - * name : 泛型扩展 - * author : newmin - * date : 2010/11/08 07:31 - * - * 2010/12/13 00:30 newmin [!]:添加数据表字段为DBNull赋值给对象异常时候忽略的处理 - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using System.Reflection; -using System.Text; - -namespace J6.DevFw.Data.Extensions -{ - public static class DataTableExtensions - { - /// - ///将当前DataTable中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) - /// - public static IList ToEntityList(this DataTable table) where T : new() - { - IList list = new List(); - T t; - object rowData; - - //获取各自的属性 - PropertyInfo[] props = GetTSetterProperties(); - PropertyInfo _p; - - - int propertiesCount = -1, - //对应的属性数量 - hasFoundPropertiesCount = 0; //已经赋值的数量 - - - foreach (DataRow dr in table.Rows) - { - t = new T(); - foreach (DataColumn c in table.Columns) - { - _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); - if (_p == null) continue; - - rowData = dr[c.ColumnName]; - try - { - if (!(rowData is DBNull)) - { - if (_p.PropertyType.IsEnum) - { - if (rowData.GetType() == typeof (Int32)) - { - _p.SetValue(t, Convert.ToInt32(rowData), null); - } - else - { - _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); - } - } - else - { - _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); - } - } - } - catch - { - continue; - } - - //计算是否已经赋值完成 - if (++hasFoundPropertiesCount == propertiesCount) - { - hasFoundPropertiesCount = 0; - break; - } - } - list.Add(t); - - - //对所有属性赋值后跳出循环 - if (propertiesCount == -1) - { - propertiesCount = hasFoundPropertiesCount; - } - } - return list; - } - - /// - ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) - /// - public static IList ToEntityList(this DbDataReader reader) where T : new() - { - IList list = new List(); - T t; - - //获取表结构 - DataTable schemaTable = reader.GetSchemaTable(); - - //表结构列名 - string columnName; - - //获取泛型的的所有属性 - PropertyInfo[] props = GetTSetterProperties(); - PropertyInfo pro; - object rowData; - - int propertiesCount = -1, - //对应的属性数量 - hasFoundPropertiesCount = 0; //已经赋值的数量 - - while (reader.Read()) - { - t = new T(); - - foreach (DataRow dr in schemaTable.Rows) - { - columnName = dr["ColumnName"].ToString(); - pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); - if (pro == null) continue; - - //如果数据库中的值不为空,则赋值 - if (!((rowData = reader[columnName]) is DBNull)) - { - try - { - if (pro.PropertyType.IsEnum) - { - if (rowData.GetType() == typeof (Int32)) - { - pro.SetValue(t, Convert.ToInt32(rowData), null); - } - else - { - pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); - } - } - else - { - pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); - } - } - - catch - { - continue; - } - - //计算是否已经赋值完成 - if (++hasFoundPropertiesCount == propertiesCount) - { - hasFoundPropertiesCount = 0; - break; - } - } - } - list.Add(t); - - - //对所有属性赋值后跳出循环 - if (propertiesCount == -1) - { - propertiesCount = hasFoundPropertiesCount; - } - } - return list; - } - - - public static T ToEntity(this DataRow row) where T : new() - { - T t = new T(); - CopyToEntity(row, t); - return t; - } - - public static void CopyToEntity(this DataRow row, T t) - { - //获取各自的属性 - PropertyInfo[] props = GetTSetterProperties(); - PropertyInfo _p; - object rowData; - int enumValue; - - - foreach (DataColumn c in row.Table.Columns) - { - _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); - rowData = row[c.ColumnName]; - - try - { - if (_p != null && !(rowData is DBNull)) - { - if (_p.PropertyType.IsEnum) - { - int.TryParse(rowData.ToString(), out enumValue); - - if (enumValue != 0) - { - _p.SetValue(t, enumValue, null); - } - else - { - _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); - } - } - else - { - _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); - } - } - } - catch - { - continue; - } - } - } - - private static PropertyInfo[] GetTSetterProperties() - { - return new List(GetEnumeratorProperties()).ToArray(); - } - - private static IEnumerable GetEnumeratorProperties() - { - PropertyInfo[] props = typeof (T).GetProperties(); - - foreach (PropertyInfo pro in props) - { - if (pro.CanWrite && pro.GetIndexParameters().Length == 0) - { - yield return pro; - } - } - } - - public static T ToEntity(this DbDataReader reader) where T : new() - { - T t = new T(); - if (reader.Read()) - { - CopyToEntity(reader, t); - } - return t; - } - - /// - ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据,DataReader游标已经指向实体数据对应位置) - /// - public static void CopyToEntity(this DbDataReader reader, T t) - { - //获取表结构 - DataTable schemaTable = reader.GetSchemaTable(); - - //表结构列名 - string columnName; - - //获取泛型的的所有属性 - PropertyInfo[] props = GetTSetterProperties(); - PropertyInfo pro; - object rowData; - - - int propertiesCount = props.Length, - //属性数量 - hasFoundPropertiesCount = 0; //已经赋值的数量 - - - foreach (DataRow dr in schemaTable.Rows) - { - columnName = dr["ColumnName"].ToString(); - pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); - if (pro == null) continue; - - - if (!((rowData = reader[columnName]) is DBNull)) - { - try - { - if (pro.PropertyType.IsEnum) - { - if (rowData.GetType() == typeof (Int32)) - { - pro.SetValue(t, Convert.ToInt32(rowData), null); - } - else - { - pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); - } - } - else - { - pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); - } - } - catch - { - continue; - } - } - - if (++hasFoundPropertiesCount == propertiesCount) - { - hasFoundPropertiesCount = 0; - break; - } - } - } - - - /// - /// 生成SQL语句参数对象数组 - /// - /// 实体类型 - /// - /// 数据库类型 - /// 字段,用空格隔开多个字段。参数名称需与字段名称一致! - /// - public static DbParameter[] GetDbParameter(this T obj, DataBaseType dbtype, String fields) - { - DbParameter[] parameters; - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - - - type = obj.GetType(); - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - switch (dbtype) - { - case DataBaseType.MonoSQLite: - parameters = new Mono.Data.Sqlite.SqliteParameter[fieldCount]; - break; - - case DataBaseType.OLEDB: - parameters = new System.Data.OleDb.OleDbParameter[fieldCount]; - break; - case DataBaseType.SQLite: - parameters = new System.Data.SQLite.SQLiteParameter[fieldCount]; - break; - case DataBaseType.MySQL: - parameters = new MySql.Data.MySqlClient.MySqlParameter[fieldCount]; - break; - default: - case DataBaseType.SQLServer: - parameters = new System.Data.SqlClient.SqlParameter[fieldCount]; - break; - } - - - string fieldName; - - for (int i = 0; i < fieldCount; i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - - switch (dbtype) - { - case DataBaseType.MonoSQLite: - parameters[i] = new Mono.Data.Sqlite.SqliteParameter(String.Format("@{0}", fieldName), proValue); - break; - - case DataBaseType.SQLite: - parameters[i] = new System.Data.SQLite.SQLiteParameter(String.Format("@{0}", fieldName), - proValue); - break; - case DataBaseType.OLEDB: - parameters[i] = new System.Data.OleDb.OleDbParameter(String.Format("@{0}", fieldName), proValue); - break; - - case DataBaseType.MySQL: - parameters[i] = new MySql.Data.MySqlClient.MySqlParameter(String.Format("@{0}", fieldName), - proValue); - break; - - default: - case DataBaseType.SQLServer: - parameters[i] = new System.Data.SqlClient.SqlParameter(String.Format("@{0}", fieldName), - proValue); - break; - } - } - return parameters; - } - - /// - /// 生成SQL语句参数对象数组 - /// - /// 实体类型 - /// - /// 数据库类型 - /// 字段,用空格隔开多个字段。参数名称需与字段名称一致! - /// - public static object[,] GetDbParameter(this T obj, String fields) - { - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - object[,] parameters; - - type = obj.GetType(); - - bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); - - - if (autoPro) - { - PropertyInfo[] pros = - type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - parameters = new object[pros.Length, 2]; - - int i = 0; - foreach (PropertyInfo _pro in pros) - { - proValue = _pro.GetValue(obj, null); - parameters[i, 0] = String.Format("@{0}", _pro.Name); - parameters[i, 1] = proValue; - ++i; - } - } - else - { - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - - //参数数组 - parameters = new object[fieldCount, 2]; - - - string fieldName; - - for (int i = 0; i < parameters.GetLength(0); i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - - parameters[i, 0] = String.Format("@{0}", fieldName); - parameters[i, 1] = proValue; - } - } - return parameters; - } - - /// - /// 自动生成插入SQL语句 - /// - /// - /// - /// - /// - /// - public static string AutoInsertSQL(this T obj, string fields, bool setValue) - { - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); - - StringBuilder sb = new StringBuilder(); - - type = obj.GetType(); - - - sb.Append("INSERT INTO ").Append(type.Name).Append("("); - - - String temp1 = ""; - String temp2 = ""; - - if (autoPro) - { - PropertyInfo[] pros = - type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - int i = 0; - foreach (PropertyInfo _pro in pros) - { - if (i != 0) - { - temp1 += ","; - temp2 += ","; - } - temp1 += _pro.Name; - - if (setValue) - { - //获取对象的值 - proValue = _pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); - } - temp2 += proValue; - } - else - { - temp2 += "@" + _pro.Name; - } - ++i; - } - } - else - { - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - - - string fieldName; - - for (int i = 0; i < fieldCount; i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - - if (i != 0) - { - temp1 += ","; - temp2 += ","; - } - temp1 += fieldName; - - if (setValue) - { - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - temp2 += proValue; - } - else - { - temp2 += "@" + fieldName; - } - } - } - - - sb.Append(temp1).Append(")VALUES(").Append(temp2).Append(")"); - - return sb.ToString(); - } - - /// - /// 自动生成更新SQL语句 - /// - /// - /// - /// - /// - /// - /// - public static string AutoUpdateSQL(this T obj, string fields, string primaryKey, bool setValue) - { - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); - - StringBuilder sb = new StringBuilder(); - - type = obj.GetType(); - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - - sb.Append("UPDATE ").Append(type.Name).Append(" SET "); - - - string fieldName; - - if (autoPro) - { - string primaryValue = String.Empty; - - PropertyInfo[] pros = - type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - int i = 0; - foreach (PropertyInfo _pro in pros) - { - //主键值 - if (String.Compare(_pro.Name, primaryKey, true) == 0) - { - proValue = _pro.GetValue(obj, null); - primaryValue = proValue.ToString(); - continue; - } - - if (i != 0) - { - sb.Append(","); - } - - sb.Append(_pro.Name).Append("="); - - if (setValue) - { - //获取对象的值 - proValue = _pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); - } - - sb.Append(proValue.ToString()); - } - else - { - sb.Append("@" + _pro.Name); - } - - ++i; - } - sb.Append(" WHERE ").Append(primaryKey).Append("=").Append(setValue ? primaryValue : "@" + primaryKey); - } - else - { - for (int i = 0; i < fieldCount; i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - - if (i != 0) - { - sb.Append(","); - } - - sb.Append(fieldName).Append("="); - - if (setValue) - { - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - sb.Append(proValue); - } - else - { - sb.Append("@" + fieldName); - } - } - } - return sb.ToString(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/IDataBase.cs b/J6/src/core/J6.DevFw.Data/IDataBase.cs deleted file mode 100644 index e64c52a..0000000 --- a/J6/src/core/J6.DevFw.Data/IDataBase.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// -// Generated by StarUML(tm) C# Add-In -// -// @ Project : OPS.Data -// @ File Name : IDataBase.cs -// @ Date : 8/18/2011 -// @ Author : ���� -// -// - -using System.Data.Common; - -namespace J6.DevFw.Data -{ - public interface IDataBase - { - string ConnectionString { get; } - DbConnection GetConnection(); - DbParameter CreateParameter(string name, object value); - DbCommand CreateCommand(string sql); - DbDataAdapter CreateDataAdapter(DbConnection connection, string sql); - - /// - /// ִ�нű� - /// - /// Sql�ű� - /// �ָ����Ĭ��Ϊ";" - /// - int ExecuteScript(DbConnection conn, string sql, string delimiter); - } - - public abstract class DataBaseFactory : IDataBase - { - protected string connectionString; - - public DataBaseFactory(string connectionString) - { - this.connectionString = connectionString; - } - - public string ConnectionString - { - get { return this.connectionString; } - } - - public abstract DbConnection GetConnection(); - - public abstract DbParameter CreateParameter(string name, object value); - - public abstract DbCommand CreateCommand(string commandText); - - public abstract DbDataAdapter CreateDataAdapter(DbConnection connection, string commandText); - - public abstract int ExecuteScript(DbConnection connection, string sql, string delimiter); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/ISqlFormat.cs b/J6/src/core/J6.DevFw.Data/ISqlFormat.cs deleted file mode 100644 index f545152..0000000 --- a/J6/src/core/J6.DevFw.Data/ISqlFormat.cs +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 用户: newmin - * 日期: 2013/12/4 - * 时间: 6:26 - * - * 修改说明: - */ - -using System; - -namespace J6.DevFw.Data -{ - /// - /// 提供将字符串格式化的函数 - /// - public delegate string ISqlFormatHandler(string source); - - - public interface ISqlFormat - { - string Format(string source, params string[] objs); - } - - public class SqlFormat : ISqlFormat - { - public string Format(string source, params string[] objs) - { - if (objs.Length == 0) return source; - return String.Format(source, objs); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/J6.DevFw.Data.csproj b/J6/src/core/J6.DevFw.Data/J6.DevFw.Data.csproj deleted file mode 100644 index 0bb4121..0000000 --- a/J6/src/core/J6.DevFw.Data/J6.DevFw.Data.csproj +++ /dev/null @@ -1,100 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {1D053644-937A-4D8E-9740-43823183A39A} - Library - Properties - J6.DevFw.Data - J6.DevFw.Data - v4.0 - 512 - - - - true - full - false - ..\..\..\dist\dll\ - DEBUG;TRACE - prompt - 4 - AnyCPU - ..\..\..\dist\dll\J6.DevFw.Data.xml - - - pdbonly - true - ..\..\Bin\ - TRACE - prompt - 4 - - - true - - - ops.data.snk - - - - ..\..\..\..\weixinmp\src\dev.fw\dll\Mono.Data.Sqlite.dll - - - ..\..\..\..\weixinmp\src\dev.fw\dll\mysql.data.dll - - - - - - ..\..\..\..\weixinmp\src\dev.fw\dll\System.Data.SQLite.dll - - - - - - - - - Code - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/MonoSQLiteFactory.cs b/J6/src/core/J6.DevFw.Data/MonoSQLiteFactory.cs deleted file mode 100644 index 700ad2d..0000000 --- a/J6/src/core/J6.DevFw.Data/MonoSQLiteFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLiteFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using Mono.Data.Sqlite; - -namespace J6.DevFw.Data -{ - public class MonoSQLiteFactory : DataBaseFactory - { - public MonoSQLiteFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new SqliteConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new SqliteParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new SqliteCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new SqliteDataAdapter(sql, (SqliteConnection) connection); - } - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/MySqlFactory.cs b/J6/src/core/J6.DevFw.Data/MySqlFactory.cs deleted file mode 100644 index 412b39f..0000000 --- a/J6/src/core/J6.DevFw.Data/MySqlFactory.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLiteFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using MySql.Data.MySqlClient; - -namespace J6.DevFw.Data -{ - public class MySqlFactory : DataBaseFactory - { - public MySqlFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new MySqlConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new MySqlParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new MySqlCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new MySqlDataAdapter(sql, (MySqlConnection) connection); - } - - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - MySqlScript script = new MySqlScript((MySqlConnection) conn, sql); - - if (!string.IsNullOrEmpty(delimiter)) - { - script.Delimiter = delimiter; - } - - return script.Execute(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/OleDbFactory.cs b/J6/src/core/J6.DevFw.Data/OleDbFactory.cs deleted file mode 100644 index 37f4867..0000000 --- a/J6/src/core/J6.DevFw.Data/OleDbFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : OLEDBFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using System.Data.OleDb; - -namespace J6.DevFw.Data -{ - public class OleDbFactory : DataBaseFactory - { - public OleDbFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new OleDbConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new OleDbParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new OleDbCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new OleDbDataAdapter(sql, (OleDbConnection) connection); - } - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/EntityHelper.cs b/J6/src/core/J6.DevFw.Data/Orm/EntityHelper.cs deleted file mode 100644 index d2268af..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/EntityHelper.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Reflection; -using J6.DevFw.Data.Orm.Mapping; - -namespace J6.DevFw.Data.Orm -{ - public static class EntityHelper - { - public static IEntityManager GetManager(DataBaseAccess db) where Entity : class - { - return new EntityManager(db); - } - - public static PropertyInfo GetProperty(string properName) where Entity : class - { - Type type = typeof (Entity); - PropertyInfo p = type.GetProperty(properName); - if (p == null) throw new DataMappingException("该实体:" + type.ToString() + "没有属性:" + properName); - return p; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/EntityManager.cs b/J6/src/core/J6.DevFw.Data/Orm/EntityManager.cs deleted file mode 100644 index 61306ed..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/EntityManager.cs +++ /dev/null @@ -1,293 +0,0 @@ -/*------------------------------------------- - * Name : 实体操作管理 - * Author : Sonven - * Create : 2009-10-06 10:30 - * LastModify 2009-10-08 14:17 - * - * 1.修正Get方法如果没有返回数据行返回对象不为空 | Sonven 14:18 08/10 - * - * Note - * --------------------------------------------*/ - -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; -using System.Reflection; -using System.Text; -using J6.DevFw.Data.Orm.Mapping; - -namespace J6.DevFw.Data.Orm -{ - /// - /// 实体管理器 - /// - /// - public class EntityManager : IEntityManager where Entity : class - { - private string tableName; - private PropertyInfo[] properties; - private DataBaseAccess db; - - public EntityManager(DataBaseAccess db) - { - object[] attrs; //datatableAttribtue - attrs = typeof (Entity).GetCustomAttributes(typeof (DataTableAttribute), true); - if (attrs.Length == 0) throw new DataMappingException("此类未加上DataTable特性!"); - DataTableAttribute tb = attrs[0] as DataTableAttribute; - tableName = tb.Name; - - properties = typeof (Entity).GetProperties(); - - this.db = db; - } - - /// - /// 向数据库添加一个实体 - /// - /// - public void Insert(Entity entity) - { - ColumnAttribute col; //列 - - string filedStr = null; - string paramStr = null; - IList parameters = new List(); - object[] attrs; //columnAttributes - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - col = attrs[0] as ColumnAttribute; - if (col.AutoGeneried) continue; //如果为自动创建 - else - { - if (col.Name == null) col.Name = p.Name; - filedStr += col.Name + ","; - paramStr += "@" + col.Name + ","; - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); - } - } - db.ExecuteNonQuery("insert into " + tableName + " (" + filedStr.Remove(filedStr.Length - 1) + - ")values(" + paramStr.Remove(paramStr.Length - 1) + ")", - parameters.ToArray()); - } - - - public void Save(object primaryValue, Entity entity) - { - if (primaryValue == null) - { - Insert(entity); - return; - } - StringBuilder sb = new StringBuilder(300); - sb.Append("UPDATE " + tableName + " SET "); - - IList parameters = new List(); - string fieldName = null; - ColumnAttribute col; //列 - object[] attrs; - string primaryKey = "id"; - - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - col = attrs[0] as ColumnAttribute; - if (col.AutoGeneried) continue; //如果为自动创建 - else if (col.IsPrimaryKey) - { - primaryKey = col.Name; - continue; - } - else - { - if (col.Name == null) col.Name = p.Name; - sb.Append(col.Name).Append("=@").Append(col.Name).Append(","); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); - } - } - - sb.Remove(sb.Length - 1, 1); //删除最后的, - - - // fieldName = primaryField.GetFieldName(); - sb.Append(" where " + primaryKey + "=@" + primaryKey); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + primaryKey, primaryValue)); - db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); - } - - - /// - /// 根据主键删除数据库记录 - /// - /// - public void Delete(FieldValueDictionary field) - { - string fieldName = field.GetFieldName(); - db.ExecuteNonQuery("delete from " + tableName + " where " + fieldName + - "=@" + fieldName, db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); - } - - /// - /// 更新实体 - /// - /// - /// - public void Update(PrimaryKeyValueDictionary primaryField, params FieldValueDictionary[] fields) - { - StringBuilder sb = new StringBuilder(300); - sb.Append("update " + tableName + " set "); - - IList parameters = new List(); - string fieldName = null; - foreach (FieldValueDictionary f in fields) - { - fieldName = f.GetFieldName(); - sb.Append(fieldName + "=@" + fieldName + ","); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, f.Value)); - } - sb.Remove(sb.Length - 1, 1); //删除最后的, - fieldName = primaryField.GetFieldName(); - sb.Append(" where " + fieldName + "=@" + fieldName); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, primaryField.Value)); - - db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); - } - - - /// - /// 根据主键获取单个实体 - /// - /// - /// - public Entity Get(PrimaryKeyValueDictionary primaryField) - { - string fieldName = primaryField.GetFieldName(); - string sql = "SELECT TOP 1 * FROM " + tableName + - " WHERE " + fieldName + "=@" + fieldName; - - Entity obj = null; - ColumnAttribute attr; - Type type = typeof (Entity); - Assembly ass = type.Assembly; - - - db.ExecuteReader(new SqlQuery(sql, new object[,] - { - {"@" + fieldName, primaryField.Value} - }), rd => - { - object[] attrs; //columnAttributes - while (rd.Read()) - { - obj = ass.CreateInstance(type.ToString(), true) as Entity; - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - attr = attrs[0] as ColumnAttribute; - p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], - p.PropertyType), null); - } - break; - } - }); - - return obj; - } - - public Entity Get(FieldValueDictionary field) - { - string fieldName = field.GetFieldName(); - string sql = "SELECT TOP 1 * FROM " + tableName + - " WHERE " + fieldName + "=@" + fieldName; - - Entity obj = null; - ColumnAttribute attr; - Type type = typeof (Entity); - Assembly ass = type.Assembly; - - - db.ExecuteReader(new SqlQuery(sql, new object[,] - { - {"@" + fieldName, field.Value} - }), rd => - { - object[] attrs; //columnAttributes - while (rd.Read()) - { - obj = ass.CreateInstance(type.ToString(), true) as Entity; - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - attr = attrs[0] as ColumnAttribute; - p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], - p.PropertyType), null); - } - break; - } - }); - - return obj; - } - - public IEnumerable GetEntityList(params FieldValueDictionary[] fields) - { - string fieldName = null; - IList parameters = new List(); - StringBuilder sb = new StringBuilder("select * from " + tableName, 400); - - if (fields.Count() != 0) - { - sb.Append(" WHERE "); - int i = 0; - foreach (FieldValueDictionary field in fields) - { - fieldName = field.GetFieldName(); - if (i != 0) - { - sb.Append("AND "); - } - sb.Append(fieldName + "=@" + fieldName).Append(" "); - - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); - ++i; - } - } - - ColumnAttribute attr; - Type type = typeof (Entity); - Assembly ass = type.Assembly; - - IList list = new List(); - Entity entity; //单个实体 - - object[] attrs; //特性集合 - db.ExecuteReader(sb.ToString(), - rd => - { - while (rd.Read()) - { - entity = ass.CreateInstance(type.ToString(), true) as Entity; - - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - attr = attrs[0] as ColumnAttribute; - - p.SetValue(entity, Convert.ChangeType(rd[attr.Name ?? p.Name], p.PropertyType), null); - } - list.Add(entity); - } - }, - parameters.ToArray()); //获取数据 - - - return list; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/FieldValueDectionary.cs b/J6/src/core/J6.DevFw.Data/Orm/FieldValueDectionary.cs deleted file mode 100644 index 8f5ddfc..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/FieldValueDectionary.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System.Reflection; -using J6.DevFw.Data.Orm.Mapping; - -namespace J6.DevFw.Data.Orm -{ - /// - /// 数据库字段与值字典 - /// - public class FieldValueDictionary - { - public FieldValueDictionary() - { - } - - public FieldValueDictionary(PropertyInfo proper, object value) - { - Field = proper; - Value = value; - } - - /// - /// 数据库字段对应的属性 - /// - public PropertyInfo Field { get; set; } - - /// - /// 数据库字段对应属性的值 - /// - public object Value { get; set; } - - /// - /// 是否对应数据库主键字段 - /// - public virtual bool IsPrimaryKeyField - { - get - { - object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), false); - if (attrs.Length > 0) - { - ColumnAttribute att = attrs[0] as ColumnAttribute; - return att != null && att.IsPrimaryKey; - } - return false; - } - } - - /// - /// 获取属性对应的数据库字段 - /// - /// - public string GetFieldName() - { - object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) return null; - ColumnAttribute attr = attrs[0] as ColumnAttribute; - return attr.Name == null || attr.Name == "" ? Field.Name : attr.Name; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/FieldValueException.cs b/J6/src/core/J6.DevFw.Data/Orm/FieldValueException.cs deleted file mode 100644 index b995fec..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/FieldValueException.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace J6.DevFw.Data.Orm -{ - public class FieldValueException : ApplicationException - { - public FieldValueException() - { - } - - public FieldValueException(string message) : base(message) - { - } - - public override string Message - { - get { return base.Message ?? "数据库字段与映射发生错误!"; } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/IEntityManager.cs b/J6/src/core/J6.DevFw.Data/Orm/IEntityManager.cs deleted file mode 100644 index 77f242b..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/IEntityManager.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; - -namespace J6.DevFw.Data.Orm -{ - public interface IEntityManager where Entity : class - { - void Insert(Entity entity); - void Delete(FieldValueDictionary field); - void Update(PrimaryKeyValueDictionary parmaryField, params FieldValueDictionary[] filds); - Entity Get(PrimaryKeyValueDictionary parmaryField); - Entity Get(FieldValueDictionary parmaryField); - IEnumerable GetEntityList(params FieldValueDictionary[] fileds); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs b/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs deleted file mode 100644 index 07ee93f..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs +++ /dev/null @@ -1,48 +0,0 @@ -/*----------------------------------- - * Name : DataColumnMappingAttribute - * Author : Sonven - * Create : 2009-12-04 10:15 - * LastModify - * Note - * ---------------------------------*/ - -using System; - -namespace J6.DevFw.Data.Orm.Mapping -{ - /// - ///提供对数据表的列的映射 - /// - [AttributeUsage(AttributeTargets.Property, Inherited = true)] - public class ColumnAttribute : Attribute - { - public ColumnAttribute() - { - } - - public ColumnAttribute(string name) - { - Name = name; - } - - /// - /// 列名,如果列名与属性名称相同可省略 - /// - public string Name { get; set; } - - /// - /// 是否为主键 - /// - public bool IsPrimaryKey { get; set; } - - /// - /// 是否由数据库自动创建 - /// - public bool AutoGeneried { get; set; } - - /// - /// 匹配模式(Regex,用于验证数据是否正确) - /// - public string Parttern { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataMappingException.cs b/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataMappingException.cs deleted file mode 100644 index f79856d..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataMappingException.cs +++ /dev/null @@ -1,45 +0,0 @@ -/*-------------------------------------- - * Name : DataMappingException - * Author : Sonven - * Create : 2009-12-04 10:18 - * LastModify - * Note - *-------------------------------------*/ - -using System; - -namespace J6.DevFw.Data.Orm.Mapping -{ - public class DataMappingException : ApplicationException - { - private string message; - private object source; - private string sourceId; - - public DataMappingException(string message) - { - this.message = message; - } - - public DataMappingException(string source, string message) : this(message) - { - this.sourceId = source; - } - - public DataMappingException(object source, string message) : this(message) - { - this.source = source; - } - - public override string Message - { - get { return message; } - } - - public override string Source - { - get { return sourceId; } - set { base.Source = value; } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataTableAttribute.cs b/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataTableAttribute.cs deleted file mode 100644 index 0d4c899..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/Mapping/DataTableAttribute.cs +++ /dev/null @@ -1,52 +0,0 @@ -/* --------------------------------- - * Name : DataTableMapping - * Author : Sonven - * Create : 2009-12-04 10:20 - * LastModify - * Note - * ---------------------------------*/ - -using System; - -namespace J6.DevFw.Data.Orm.Mapping -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)] - public class DataTableAttribute : Attribute - { - private string name; - private Type type; - private ISqlFormat format; - - public DataTableAttribute(string name) - { - this.name = name; - } - - /// - /// 数据库表的名称 - /// - public string Name - { - get - { - if (name == null) - throw new DataMappingException("数据映射的表名不能为空!"); - return this.format == null ? name : this.format.Format(name); - } - set { name = value; } - } - - /// - /// 实现了Ops.Data.ISqlFormat接口的类型 - /// - public Type Format - { - get { return type; } - set - { - type = value; - format = Activator.CreateInstance(value) as ISqlFormat; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs b/J6/src/core/J6.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs deleted file mode 100644 index 4bdc9cb..0000000 --- a/J6/src/core/J6.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; - -namespace J6.DevFw.Data.Orm -{ - public class PrimaryKeyValueDictionary : FieldValueDictionary - { - public PrimaryKeyValueDictionary() - { - } - - public PrimaryKeyValueDictionary(PropertyInfo proper, object value) - { - base.Field = proper; - base.Value = value; - } - - public override bool IsPrimaryKeyField - { - get - { - if (!base.IsPrimaryKeyField) - throw new FieldValueException("不是主键不能用做选取和删除操作!"); - return true; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/SQLiteFactory.cs b/J6/src/core/J6.DevFw.Data/SQLiteFactory.cs deleted file mode 100644 index 84b852c..0000000 --- a/J6/src/core/J6.DevFw.Data/SQLiteFactory.cs +++ /dev/null @@ -1,50 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLiteFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using System.Data.SQLite; - -namespace J6.DevFw.Data -{ - public class SQLiteFactory : DataBaseFactory - { - public SQLiteFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new SQLiteConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new SQLiteParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new SQLiteCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new SQLiteDataAdapter(sql, (SQLiteConnection) connection); - } - - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/SqlQuery.cs b/J6/src/core/J6.DevFw.Data/SqlQuery.cs deleted file mode 100644 index b6d0b10..0000000 --- a/J6/src/core/J6.DevFw.Data/SqlQuery.cs +++ /dev/null @@ -1,80 +0,0 @@ -// -// -// Copryright 2013 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SqlEntity.cs -// Date : 05/27/2013 -// Author : 刘铭 -// -// - -using System; -using System.Data.Common; - -namespace J6.DevFw.Data -{ - /// - /// SQL查询实体 - /// - public class SqlQuery - { - private object[,] _parameters; - - - public SqlQuery(string sql) - { - this.Sql = sql; - } - - public SqlQuery(string sql, object[,] parameters) - { - if (parameters != null) - { - if (parameters.GetLength(0) != 0 && parameters.GetLength(1) != 2) - { - throw new ArgumentOutOfRangeException("Parameters", "多纬数组的二维长度必须为2"); - } - } - this._parameters = parameters; - - this.Sql = sql; - } - - /// - /// SQL语句 - /// - public String Sql { get; set; } - - /// - /// 参数 - /// - /// this.Parameters = new object[,]{ - /// {"@age","age"}, - /// {"@name","name"} - /// }; - /// - public object[,] Parameters - { - get { return this._parameters; } - } - - - /// - /// 转换为参数 - /// - /// - /// - public DbParameter[] ToParams(IDataBase db) - { - DbParameter[] parameters = new DbParameter[this.Parameters.GetLength(0)]; - - for (int i = 0; i < parameters.Length; i++) - { - parameters[i] = db.CreateParameter(this.Parameters[i, 0].ToString(), this.Parameters[i, 1]); - } - - return parameters; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/SqlServerFactory.cs b/J6/src/core/J6.DevFw.Data/SqlServerFactory.cs deleted file mode 100644 index 02479e7..0000000 --- a/J6/src/core/J6.DevFw.Data/SqlServerFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLServerFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using System.Data.SqlClient; - -namespace J6.DevFw.Data -{ - public class SqlServerFactory : DataBaseFactory - { - public SqlServerFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new SqlConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new SqlParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new SqlCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new SqlDataAdapter(sql, (SqlConnection) connection); - } - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/BasePluginHost.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/BasePluginHost.cs deleted file mode 100644 index d9e594c..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/BasePluginHost.cs +++ /dev/null @@ -1,357 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text.RegularExpressions; -using J6.DevFw.Framework; - -namespace J6.DevFw.PluginKernel -{ - /// - /// - /// - public abstract class BasePluginHost : IPluginHost - { - internal static IDictionary plugins; - - protected static LogFile Log; - private PluginHostAttribute _attr = null; - - - static BasePluginHost() - { - plugins = new Dictionary(); - - string appDirectory = AppDomain.CurrentDomain.BaseDirectory; - - string pluginDirectory = String.Concat( - appDirectory, - PluginConfig.PLUGIN_DIRECTORY); - - //清空日志 - string pluginTmpDirectory = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY); - if (!Directory.Exists(pluginTmpDirectory)) - { - Directory.CreateDirectory(pluginTmpDirectory); - } - Log = new LogFile(String.Format("{0}plugin_load.log", - pluginTmpDirectory), false); - Log.Truncate(); - - if (Directory.Exists(pluginDirectory)) - { - LoadPluginFromDirectory(pluginDirectory); - } - else - { - Directory.CreateDirectory(pluginDirectory).Create(); - } - - //加载程序集的.so文件 - loadFromAppDomain(); - } - - /// - /// 从目录中加载插件 - /// - /// - private static void LoadPluginFromDirectory(string pluginDirectory) - { - bool loadResult = true; - - //多个后缀的情况下 - IList files = new List(10); - - string[] multExt = PluginConfig.GetFilePartterns(); - foreach (String ext in multExt) - { - String[] searchedExt = Directory.GetFiles(pluginDirectory, ext); - foreach (String sext in searchedExt) - { - files.Add(sext); - } - } - - if (Log != null) - { - Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading" - + "\r\n========================================\r\n" - + "Directory:{1} \t Total DLL:{2}\r\n", - DateTime.Now, pluginDirectory.Replace("\\", "/"), - files.Count.ToString())); - } - foreach (string file in files) - { - if (!LoadPlugin(file)) - { - loadResult = false; - } - } - - if (Log != null) - { - Log.Println(String.Format("load complete!result:{0}", loadResult ? "Ok" : "Error")); - } - } - - /// - /// 加载单个插件 - /// - /// - public static bool LoadPlugin(string pluginFile) - { - try - { - byte[] bytes = File.ReadAllBytes(pluginFile); - Assembly ass = Assembly.Load(bytes); - loadFromAssembly(ass); - } - catch (ReflectionTypeLoadException exc) - { - if (Log != null) - { - Log.Println(String.Format("Assembly {0} happend exception:{1}\r\nExceptions:\r\n", - pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] { '/', '\\' }) + 1), - exc.Message)); - foreach (Exception e in exc.LoaderExceptions) - { - Log.Println(e.Message); - } - - } - return false; - } - catch (Exception err) - { - if (Log != null) - { - Log.Println(String.Format("\r\nAssembly {0} happend exception:{1}", - pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] { '/', '\\' }) + 1), - err.Message)); - } - return false; - } - return true; - } - - /// - /// - /// - private static void loadFromAppDomain() - { - string dir = AppDomain.CurrentDomain.BaseDirectory + "bin"; - if (!Directory.Exists(dir)) return; - string[] dllFiles = Directory.GetFiles(dir, "*.so"); - - Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading From Bin" - + "\r\n========================================\r\n" - + "Total .so file : {1}\r\n", - DateTime.Now, - dllFiles.Length.ToString())); - - foreach (string f in dllFiles) - { - LoadPlugin(f); - } - } - - /// - /// 从程序集中加载插件 - /// - /// - /// - private static bool loadFromAssembly(Assembly assembly) - { - PluginPackAttribute attribute = null; - IPlugin plugin = null; - - var attbs = assembly.GetCustomAttributes(typeof(PluginPackAttribute), false); - - if (attbs.Length != 0) - { - attribute = (PluginPackAttribute)attbs[0]; - } - else - { - // foreach (Attribute attr in assembly.GetCustomAttributes(false)) - // { - // if (attr.ToString().IndexOf("PluginPackAttribute") != -1) - // { - // attribute = (PluginPackAttribute) attr; - // - // Log.Println(attribute.Name); - // } - // else - // { - // Log.Println(attr.ToString()); - // } - // } - // - // Log.Println(assembly.GetName().Name+" not a plugin!"); - return false; - } - - var types = assembly.GetTypes(); - foreach (Type type in types) - { - if (type.IsClass) - { - foreach (Type t in type.GetInterfaces()) - { - if (t == typeof(IPlugin)) - { - plugin = Activator.CreateInstance(type) as IPlugin; - if (plugin == null) - { - continue; - } - - if (attribute != null) - { - plugins.Add(plugin, attribute); - } - } - } - } - } - - if (Log != null) - { - Log.Println(String.Format("{0}({1}) be found ; version is {2}.", - attribute.Name, - assembly.GetName().Name, - attribute.Version)); - } - return true; - } - - public bool LoadFromAssembly(Assembly assembly) - { - return loadFromAssembly(assembly); - } - - /// - /// 连接插件 - /// - /// - public virtual bool Connect() - { - Iterate( - (p, a) => - { - if (a.State == PluginState.Normal) - { - p.Connect(this); - } - } - ); - return true; - } - - /// - /// 迭代插件 - /// - /// - public void Iterate(PluginHandler handler) - { - foreach (IPlugin p in plugins.Keys) - { - if (CanAdapter(p)) - { - handler(p, plugins[p]); - } - } - } - - public virtual void Run() - { - Iterate((p, i) => - { - if (i.State == PluginState.Normal) - { - p.Run(); - } - }); - } - - public virtual void Pause() - { - Iterate((p, i) => { i.State = PluginState.Stop; }); - } - - public bool Run(string pluginId) - { - var runed = false; - Iterate((p, i) => - { - if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) - { - p.Run(); - runed = true; - } - }); - return runed; - } - - public bool Pause(string pluginId) - { - var runed = false; - Iterate((p, i) => - { - if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) - { - i.State = PluginState.Stop; - runed = true; - } - }); - return runed; - } - - /// - /// 检查是否能适配插件 - /// - public bool CanAdapter(IPlugin plugin) - { - if (this.Attribute == null || String.IsNullOrEmpty(this.Attribute.TypePattern)) - { - return true; - } - return Regex.IsMatch(plugin.GetType().Name, this.Attribute.TypePattern, RegexOptions.IgnoreCase); - } - - /// - /// 附加日志 - /// - /// - public void Logln(string content) - { - if (Log != null) - { - Log.Printf("{0:yyyy-MM-dd HH:mm:ss}\r\n========================================\r\n{1}\r\n\r\n", - DateTime.Now, content); - } - } - - private PluginHostAttribute Attribute - { - get - { - if (_attr == null) - { - var ppas = GetType().GetCustomAttributes(typeof(PluginHostAttribute), true); - if (ppas.Length != 0) - { - _attr = (PluginHostAttribute)ppas[0]; - } - } - return _attr; - } - } - - - public PluginPackAttribute GetAttribute(IPlugin plugin) - { - return PluginUtil.GetAttribute(plugin); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/DefaultSettingKeys.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/DefaultSettingKeys.cs deleted file mode 100644 index 9e087b6..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/DefaultSettingKeys.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; - -namespace J6.DevFw.PluginKernel -{ - public static class DefaultSettingKeys - { - /// - /// 插件状态 - /// - public static String State = "state"; - - /// - /// 重写的URL标识 - /// - public static String OverrideUrlIndent = "override.url.indent"; - } -} diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs deleted file mode 100644 index 4399357..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using J6.DevFw.PluginKernel; - -namespace Com.PluginKernel.Demo -{ - public class DemoPluginApp : BasePluginHost - { - public event PluginHandler OnPrinting; - - public override bool Connect() - { - Iterate((p, i) => - { - Console.WriteLine("连接插件:" + i.Name + " 作者:" + i.Author + " 版本:" + i.Version); - p.Connect(this); - }); - - return true; - } - - public void Print(string message) - { - var result = true; - if (OnPrinting != null) - { - OnPrinting(message, ref result); - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/IPlugin.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/IPlugin.cs deleted file mode 100644 index ce26b77..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/IPlugin.cs +++ /dev/null @@ -1,63 +0,0 @@ -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件接口 - /// - public interface IPlugin - { - /// - /// 连接插件 - /// - /// - /// - PluginConnectionResult Connect(IPluginHost app); - - - /// - /// 安装 - /// - bool Install(); - - /// - /// 卸载 - /// - /// - bool Uninstall(); - - /// - /// 运行 - /// - void Run(); - - /// - /// 暂停运行 - /// - void Pause(); - - /// - /// 返回插件操作的消息 - /// - /// - string GetMessage(); - - /// - /// 获取插件的属性 - /// - /// - PluginPackAttribute GetAttribute(); - - /// - /// 打印日志 - /// - /// - void Logln(string line); - - /// - /// 开放调用 - /// - /// - /// - /// - object Call(string method, params object[] parameters); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs deleted file mode 100644 index c499dfe..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace J6.DevFw.PluginKernel -{ - public interface IPluginHandleProxy - { - /// - /// 处理请求,如在Web中可用来处理Get请求 - /// - /// - /// - /// - void HandleRequest(T context, - string pluginWorkIndent, - ref bool handleResult); - - /// - /// 使用指定的类型处理请求,如果action不正确则抛出异常 - /// - /// - /// - /// - /// - /// 返回请求的结果,这通常返回String - object HandleRequestUse( - HandleClass t, - T context, - string action); - - /// - /// 使用指定的类型处理请求,如果action不正确则抛出异常 - /// - /// - /// - /// - /// - /// 请求来源 - /// 返回请求的结果,这通常返回String - object HandleRequestUse( - HandleClass t, - T context, - string action, - string source); - - /// - /// 注册处理事件 - /// - /// - /// - /// - /// - bool Register(IPlugin plugin, PluginHandler reqHandler); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/IPluginHost.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/IPluginHost.cs deleted file mode 100644 index 737a82e..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/IPluginHost.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System.Reflection; - -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件宿主接口 - /// - public interface IPluginHost - { - /// - /// 连接所有插件 - /// - /// - bool Connect(); - - /// - /// 从程序集中加载插件 - /// - /// - /// - bool LoadFromAssembly(Assembly assembly); - - /// - /// 获取插件信息 - /// - /// - /// - PluginPackAttribute GetAttribute(IPlugin plugin); - - /// - /// 迭代插件集合 - /// - /// - void Iterate(PluginHandler handler); - - /// - /// 运行所有插件 - /// - void Run(); - - /// - /// 停用所有插件 - /// - void Pause(); - - /// - /// 运行指定的插件 - /// - /// - /// - bool Run(string pluginId); - - /// - /// 停用指定的插件 - /// - /// - /// - bool Pause(string pluginId); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/J6.DevFw.PluginKernel.csproj b/J6/src/core/J6.DevFw.PluginKernel/kernel/J6.DevFw.PluginKernel.csproj deleted file mode 100644 index 6a07426..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/J6.DevFw.PluginKernel.csproj +++ /dev/null @@ -1,91 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {CAD14DCC-112C-4B28-98EB-1CE143D09033} - Library - Properties - J6.DevFw.PluginKernel - J6.DevFw.PluginKernel - v4.0 - 512 - - - - true - full - false - ..\..\..\..\dist\dll\ - DEBUG;TRACE - prompt - 4 - ..\..\..\..\dist\dll\J6.DevFw.PluginKernel.xml - - - pdbonly - true - ..\..\..\Bin\ - TRACE - prompt - 4 - - - true - - - false - - - pluginKernel.snk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - - - - - \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Logger.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/Logger.cs deleted file mode 100644 index efcbd6e..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/Logger.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using System.Text; -using J6.DevFw.Framework; -using J6.DevFw.Framework.Extensions; - -namespace J6.DevFw.PluginKernel -{ - /// - /// - /// - public static class Logger - { - private static LogFile _logFile; - - private static LogFile GetFile() - { - DateTime dt = DateTime.Now; - int unixInt = dt.Date.DayOfYear; - - if (_logFile == null || unixInt != _logFile.Seed) - { - string logDir = AppDomain.CurrentDomain.BaseDirectory + PluginConfig.PLUGIN_TMP_DIRECTORY; - - //创建日志目录 - if (!Directory.Exists(logDir)) - { - Directory.CreateDirectory(logDir).Create(); - } - - _logFile = new LogFile(String.Format("{0}/p{1:yyyyMMdd}.log", logDir, dt), false); - _logFile.Seed = unixInt; - _logFile.FileEncoding = Encoding.UTF8; - } - return _logFile; - } - - /// - /// 记录异常 - /// - /// 引起异常的地址,比如网址 - /// - public static void PrintException(string addr, Exception except) - { - if (!PluginConfig.PLUGIN_LOG_OPENED) return; - - LogFile log = GetFile(); - DateTime dt = DateTime.Now; - - Exception exc = except; - - if (exc.InnerException != null) - { - exc = except.InnerException; - } - - Hashtable hash = new Hashtable(); - hash.Add("addr", addr ?? "application"); - hash.Add("message", exc.Message); - hash.Add("stack", exc.StackTrace); - hash.Add("time", String.Format("{0:yyyy-MM-dd HH:mm:ss}", dt)); - hash.Add("source", exc.Source); - - //附加记录 - log.Println(PluginConfig.PLUGIN_LOG_EXCEPT_FORMAT.Template(hash)); - - throw except; //继续抛出异常 - } - - /// - /// - /// - /// - public static void Println(string line) - { - if (!PluginConfig.PLUGIN_LOG_OPENED) return; - - LogFile log = GetFile(); - log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} {1}", DateTime.Now, line)); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginConfig.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginConfig.cs deleted file mode 100644 index 1d8390c..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginConfig.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace J6.DevFw.PluginKernel -{ - /// - /// - /// - public class PluginConfig - { - /// - /// 插件目录名称,以"/"结尾 - /// - public static string PLUGIN_DIRECTORY = "plugins/"; - - /// - /// 插件临时文件存放目录,以"/"结尾。用于存放日志,临时文件等 - /// - public static string PLUGIN_TMP_DIRECTORY = "tmp/plugin/"; - - /// - /// 插件日志是否打开,默认为关闭 - /// - public static bool PLUGIN_LOG_OPENED = false; - - /// - /// 插件异常日志格式,默认为:<{time}>:{message}\r\nSource:{source}\r\nAddress:{addr}\r\nStack:{stack}\r\n\r\n - /// - public static string PLUGIN_LOG_EXCEPT_FORMAT = - "**{time}** [Exeption] -{message}\r\nSource:{source} - Addr:{addr}\r\nStack:{stack}\r\n\r\n"; - - /// - /// 插件文件后缀,多个后缀用","隔开 - /// 默认加载bin目录下的.so文件 - /// - public static string PLUGIN_FILE_PARTTERN = "*.so,*.dll"; - - /// - /// - /// - /// - public static string[] GetFilePartterns() - { - return (PLUGIN_FILE_PARTTERN ?? "*.dll").Split(','); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginConnectionResult.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginConnectionResult.cs deleted file mode 100644 index 4d6c79f..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginConnectionResult.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace J6.DevFw.PluginKernel -{ - /// - /// 表示插件与主程序连接的结果 - /// - /// - public enum PluginConnectionResult - { - /// - /// - /// - Failed, - - /// - /// 与版本号不匹配 - /// - NotMatch, - - /// - /// - /// - Success - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginException.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginException.cs deleted file mode 100644 index ddc1678..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginException.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件异常 - /// - public class PluginException : Exception - { - /// - /// - /// - /// - public PluginException(string message) : base(message) - { - } - - public override string HelpLink - { - get { return "http://www.s1n1.com"; } - set { throw new NotImplementedException(); } - } - - public override string Message - { - get { return "[ Plugin] -" + base.Message; } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHandleProxy.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHandleProxy.cs deleted file mode 100644 index b286a95..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHandleProxy.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件处理代理类 - /// - /// - public abstract class PluginHandleProxy : IPluginHandleProxy - { - private static IDictionary> reqHandlers; - - static PluginHandleProxy() - { - reqHandlers = new Dictionary>(); - } - - /// - /// 扩展模块GET请求,返回false则应立即截断请求 - /// - /// - /// - public virtual void HandleRequest(T context, - string pluginWorkIndent, - ref bool handleResult) - { - pluginWorkIndent = pluginWorkIndent.ToLower(); - - //处理扩展 - if (reqHandlers.Keys.Contains(pluginWorkIndent)) - { - reqHandlers[pluginWorkIndent](context, ref handleResult); - } - } - - - /// - /// 注册扩展处理程序 - /// - /// 扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件 - /// 委托PluginHandler的实例 - /// 委托PluginHandler的实例 - /// - public bool Register(IPlugin plugin, - PluginHandler reqHandler) - { - Type type = plugin.GetType(); - PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); - string indent = attr.WorkIndent; - - if (reqHandler == null || reqHandlers.Keys.Contains(indent)) - { - return false; - } - - if (reqHandler != null) - { - reqHandlers.Add(indent, reqHandler); - } - - return true; - } - - - public object HandleRequestUse(THandleClass t, T context, string action, string source) - { - Type type = t.GetType(); - MethodInfo method = type.GetMethod( - action, - BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); - - if (method != null) - { - return method.Invoke(t, new object[] { context }); - } - throw new PluginException("无效请求:" + action); - } - - public object HandleRequestUse( - THandleClass t, - T context, - string action) - { - return HandleRequestUse(t, context, action, null); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHandler.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHandler.cs deleted file mode 100644 index 59e661d..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHandler.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件处理事件 - /// - /// - /// - public delegate void PluginHandler(T t, ref bool b); - - public delegate void PluginHandler(T t, T1 t1, ref bool b); - - public delegate void PluginHandler(T t, T1 t1, T2 t2, ref bool b); - - public delegate void PluginHandler(T t, T1 t1, T2 t2, T3 t3, ref bool b); - - - /// - /// 插件处理事件 - /// - /// - /// - public delegate void PluginHandler(IPlugin plugin, PluginPackAttribute info); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHostAttribute.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHostAttribute.cs deleted file mode 100644 index 06fd994..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginHostAttribute.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; - -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件信息 - /// - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] - public class PluginHostAttribute : Attribute - { - public PluginHostAttribute() - { - } - - public PluginHostAttribute(string name, string descript) - { - Name = name; - Descript = descript; - } - - /// - /// 插件名称 - /// - public string Name { get; set; } - - /// - /// 插件应用描述 - /// - public string Descript { get; set; } - - /// - /// 插件类名格式(正则表达式) - /// 默认为空,不限制 - /// - public string TypePattern { get; set; } - - /// - /// 记录日志 - /// - private bool WriteLog { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs deleted file mode 100644 index 834140e..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; - -namespace J6.DevFw.PluginKernel -{ - /// - /// Ϣ - /// - [Obsolete] - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] - public class PluginInfoAttribute : Attribute - { - /// - /// - /// - public PluginInfoAttribute() - { - } - - /// - /// - /// - /// - /// - /// - /// - [Obsolete] - public PluginInfoAttribute(string name, string author, string webpage, string descript) - { - } - - private string id; - - /// - /// - /// - public string ID - { - get - { - if (id == null) - { - id = String.Format("{0}{1}", GetType().Assembly.GetName().Name, - IndexNum == 0 ? string.Empty : "_" + IndexNum); - } - return id; - } - } - - /// - /// ,ļ - /// - public int IndexNum { get; set; } - - /// - /// Ϣ - /// - public object Tag { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginPackAttribute.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginPackAttribute.cs deleted file mode 100644 index cbf718b..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginPackAttribute.cs +++ /dev/null @@ -1,167 +0,0 @@ -using System; -using System.IO; -using J6.DevFw.Framework; - -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件包信息 - /// - [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)] - public class PluginPackAttribute : Attribute - { - private SettingFile settings { get; set; } - - /// - /// - /// - /// - public PluginPackAttribute(string workerIndent) - { - this.WorkIndent = workerIndent; - bool isChanged = false; - var dirPath = String.Concat( - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - workerIndent, - "/"); - - if (!Directory.Exists(dirPath)) - { - Directory.CreateDirectory(dirPath).Create(); - } - - settings = new SettingFile(string.Concat(dirPath, "plugin.config")); - - if (!settings.Contains("state")) - { - settings.Add("state", "Normal"); - isChanged = true; - } - if (!settings.Contains("override.url.indent")) - { - settings.Add("override.url.indent", ""); - isChanged = true; - } - - if (isChanged) - { - settings.Flush(); - } - } - - public PluginPackAttribute(string workerIndent, string icon, string name, string author, string portalUrl) - : - this(workerIndent) - { - Icon = icon; - Name = name; - Author = author; - PortalUrl = portalUrl; - } - - private string version; - private string _workSpace; - - /// - /// 工作目录标识,较好的命名:com.myplugin 或 mycompany.myplugin - /// 将会在plugins目录下生成目录,存放需要的文件 - /// - public string WorkIndent { get; set; } - - /// - /// 插件图标 - /// - public string Icon { get; set; } - - /// - /// 插件名称 - /// - public string Name { get; set; } - - /// - /// 插件作者 - /// - public string Author { get; set; } - - /// - /// 官方主页 - /// - public string WebPage { get; set; } - - /// - /// 版本号(主版本号.次版本号.修订版本号),与程序集版本号一致 - /// - public string Version - { - get - { - if (version == null) - { - var v = GetType().Assembly.GetName().Version; - version = String.Format("{0}.{1}.{2}", v.Major, v.Minor, v.Revision); - } - return version; - } - } - - /// - /// 设置地址 - /// - public string ConfigUrl { get; set; } - - /// - /// 插件入口地址 - /// - public string PortalUrl { get; set; } - - /// - /// 插件描述信息 - /// - public string Description { get; set; } - - /// - /// 工作目录(插件根目录),如:C:/plugins/com.plugin.demo/ - /// - public string WorkSpace - { - get - { - return this._workSpace ?? (this._workSpace = - String.Concat( - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - this.WorkIndent, - "/" - )); - } - } - - /// - /// 插件状态 - /// - public PluginState State - { - get - { - return (settings["state"] == "1" || settings["state"] == "Normal") - ? PluginState.Normal - : PluginState.Stop; - } - set - { - var state = value.ToString(); - settings["state"] = state; - settings.Flush(); - } - } - - /// - /// 插件配置 - /// - public SettingFile Settings - { - get { return settings; } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginState.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginState.cs deleted file mode 100644 index 04049e8..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginState.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件状态 - /// - public enum PluginState - { - /// - /// 正常 - /// - Normal = 1, - - /// - /// 停止 - /// - Stop = 0 - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginUtil.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginUtil.cs deleted file mode 100644 index df0ca54..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/PluginUtil.cs +++ /dev/null @@ -1,361 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Reflection; -using J6.DevFw.Framework.Extensions; -using J6.DevFw.Framework.Graphic; -using J6.DevFw.Framework.Net; -using J6.DevFw.Utils; - -namespace J6.DevFw.PluginKernel -{ - /// - /// 插件工具 - /// - public static class PluginUtil - { - /// - /// 插件属性字典 - /// - private static IDictionary attrDicts; - - /// - /// 迭代插件 - /// - /// - public static void Iterate(PluginHandler handler) - { - foreach (IPlugin p in BasePluginHost.plugins.Keys) - { - handler(p, BasePluginHost.plugins[p]); - } - } - - /// - /// - /// - /// - /// - public static PluginPackAttribute GetAttribute(IPlugin plugin) - { - return GetAttributeByType(plugin.GetType()); - } - - private static PluginPackAttribute GetAttributeByType(Type type) - { - //int key = type.Assembly.GetHashCode(); - //if (attrDicts == null) - //{ - // attrDicts = new Dictionary(); - //} - - //if (!attrDicts.Keys.Contains(key)) - //{ - - object[] attrs = type.Assembly.GetCustomAttributes(typeof(PluginPackAttribute), false); - if (attrs.Length == 0) - throw new Exception("assembly not contain any plugin package attribute!"); - - PluginPackAttribute attr = (PluginPackAttribute)attrs[0]; - //attrDicts.Add(key, attr); - return attr; - //} - - // return attrDicts[key]; - } - - /// - /// 获取插件 - /// - /// - /// - public static IPlugin GetPlugin(string workerIndent, out PluginPackAttribute attr) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - attr = plugins[p]; - return p; - } - } - - attr = null; - return null; - } - - /// - /// 根据类型获取插件 - /// - /// - /// - public static IPlugin GetPluginByType(Type t) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (p.GetType() == t) - { - return p; - } - } - return null; - } - - - /// - /// 获取插件包信息 - /// - /// - /// - public static PluginPackAttribute GetPluginPackAttribute(string workerIndent) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - return plugins[p]; - } - } - return null; - } - - /// - /// 获取插件 - /// - /// - /// - public static IEnumerable GetPlugins(string workerIndent) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - yield return p; - } - } - } - - - /// - /// 获取插件的图标 - /// - /// - /// - public static byte[] GetPluginIcon(string workerIndent, int width, int height, string defaultIconPath) - { - string icon = null; - var iconExist = false; - byte[] data; - - Iterate((p, a) => - { - if (String.Compare(a.WorkIndent, workerIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - icon = String.Format("{0}{1}{2}/{3}", - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - workerIndent, a.Icon); - } - }); - - if (!String.IsNullOrEmpty(icon)) - { - iconExist = File.Exists(icon); - } - - resetIcon: - if (!iconExist) - { - icon = defaultIconPath; - } - - var bit = (Bitmap)null; - try - { - using (bit = new Bitmap(icon)) - { - var ms = GraphicsHelper.MakeThumbnail(bit, ImageSizeMode.AutoSuit, width, height, null); - data = ms.ToArray(); - ms.Dispose(); - bit.Dispose(); - } - } - catch - { - iconExist = false; - goto resetIcon; - } - finally - { - if (bit != null) - { - bit.Dispose(); - } - } - - return data; - } - - /// - /// 移除插件 - /// - /// - /// - public static bool RemovePlugin(string workerIndent) - { - PluginPackAttribute attr; - var plugin = GetPlugin(workerIndent, out attr); - - if (plugin != null) - { - try - { - plugin.Uninstall(); - } - catch - { - // ignored - } - - var dirName = String.Format("{0}{1}/{2}/", - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - attr.WorkIndent - ); - - if (Directory.Exists(dirName)) - { - Directory.Delete(dirName, true); - - var dllName = String.Format("{0}{1}/{2}", - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - plugin.GetType().Assembly.Location - ); - - File.Delete(dllName); - } - - return true; - } - - return false; - } - - /// - /// 安装/升级插件 - /// - /// - /// - /// - public static bool InstallPlugin(string url, PluginHandler handler) - { - var installResult = false; - string appDirectory = AppDomain.CurrentDomain.BaseDirectory; - var pluginPath = String.Concat( - appDirectory, - PluginConfig.PLUGIN_DIRECTORY); - - var tempDir = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY, "plugin/"); - var fileName = tempDir + "dl_pack_" + String.Empty.RandomLetters(16) + ".zip"; - - if (Directory.Exists(tempDir)) - { - Directory.Delete(tempDir, true); - } - Directory.CreateDirectory(tempDir).Create(); - - var dir = new DirectoryInfo(tempDir); - - var data = HttpClient.DownloadFile(url, null); - using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) - { - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - - IList pluginAttrs = new List(GetPluginPackInfo(fileName)); - - if (pluginAttrs.Count != 0) - { - ZipUtility.UncompressFile(pluginPath, fileName, false); - - string[] multExt = PluginConfig.GetFilePartterns(); - foreach (String ext in multExt) - { - foreach (FileInfo file in dir.GetFiles(ext)) - { - File.Delete(pluginPath + file.Name); - file.MoveTo(pluginPath + file.Name); - } - } - - - if (handler != null) - { - var result = false; - foreach (PluginPackAttribute attr in pluginAttrs) - { - handler(attr, ref result); - } - } - - installResult = true; - } - - Directory.Delete(tempDir, true); - - return installResult; - } - - /// - /// 获取插件包的信息 - /// - /// - /// - public static IEnumerable GetPluginPackInfo(string fileName) - { - var tempDir = String.Concat(AppDomain.CurrentDomain, PluginConfig.PLUGIN_TMP_DIRECTORY, "tmp/"); - - if (Directory.Exists(tempDir)) - { - Directory.Delete(tempDir, true); - } - Directory.CreateDirectory(tempDir).Create(); - - var dir = new DirectoryInfo(tempDir); - - ZipUtility.UncompressFile(tempDir, fileName, false); - - Assembly ass; - string[] multExt = PluginConfig.GetFilePartterns(); - foreach (String ext in multExt) - { - var files = dir.GetFiles(ext); - foreach (FileInfo f in files) - { - ass = Assembly.Load(File.ReadAllBytes(f.FullName)); - - var attbs = ass.GetCustomAttributes(typeof(PluginPackAttribute), false); - foreach (object attb in attbs) - { - if (attb is PluginPackAttribute) - { - yield return (PluginPackAttribute)attb; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs deleted file mode 100644 index fa2eba0..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Text.RegularExpressions; -using System.Web; - -namespace J6.DevFw.PluginKernel.Web -{ - /// - /// B/S插件宿主 - /// - [PluginHost("B/S插件宿主", "使用{module}.sh/{action}访问自定义扩展")] - public abstract class BaseWebPluginHost : BasePluginHost, IWebPluginHost - { - protected WebPluginHandleProxy WebHandler; - - /// - /// - /// - protected BaseWebPluginHost() - { - } - - /// - /// - /// - /// - protected BaseWebPluginHost(WebPluginHandleProxy _webHandler) - { - this.WebHandler = _webHandler; - } - - /// - /// 注册扩展处理程序 - /// - /// 扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件 - /// 委托PluginHandler的实例 - /// 委托PluginHandler的实例 - /// - public bool Register(IPlugin plugin, PluginHandler getReqHandler, - PluginHandler postReqHandler) - { - return this.WebHandler.Register(plugin, getReqHandler, postReqHandler); - } - - - /// - /// 扩展模块GET请求,返回false则应立即截断请求 - /// - /// - /// - public virtual void HttpPluginRequest(HttpContext context, string extendName, ref bool result) - { - extendName = extendName.ToLower(); - this.WebHandler.HandleGetRequest(context, extendName, ref result); - } - - - /// - /// 扩展模块POST请求,返回false则应立即截断请求 - /// - /// - /// - public virtual void HttpPluginPost(HttpContext context, string extendName, ref bool result) - { - extendName = extendName.ToLower(); - this.WebHandler.HandlePostRequest(context, extendName, ref result); - } - - /// - /// 获取请求路径 - /// - /// - /// - public string GetRequestPath(HttpContext context) - { - Match match = Regex.Match(context.Request.Path, "/(.+?)/([^\\?]+)"); - return match == Match.Empty ? "" : match.Groups[2].Value; - } - - /// - /// 扩展插件Action请求,为插件提供Action功能 - /// - /// - /// - /// - public virtual bool HandleRequestUse(T t, HttpContext context, bool isPostRequest) - { - string path = this.GetRequestPath(context); - return this.HandleCustomRequestUse(t, context, path, isPostRequest); - } - - - public bool HandleCustomRequestUse(T t, HttpContext context, string path, bool isPostRequest) - { - string action = null; - - if (path.Length != 0) - { - action = path.IndexOf('/') == -1 ? path : path.Substring(0, path.IndexOf('/')); - } - action = String.Concat(action ?? "default", isPostRequest ? "_post" : ""); - - try - { - object obj = this.WebHandler.HandleRequestUse( - t - , context - , action - , context.Request.RawUrl); - - - if (obj != null) - { - context.Response.Write(obj.ToString()); - } - return true; - } - catch (PluginException exc) - { - Logger.Println("[ Request][ Error]" + exc.Message + ";url :" + context.Request.RawUrl); - throw exc.InnerException ?? exc; - } - catch (Exception exc) - { - Logger.PrintException(context.Request.RawUrl, exc); - throw; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs deleted file mode 100644 index a9898c4..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Web; - -namespace J6.DevFw.PluginKernel.Web -{ - /// - /// B/S插件宿主 - /// - public interface IWebPluginHost : IPluginHost - { - /// - /// 注册扩展处理程序 - /// - /// - /// 委托PluginHandler的实例 - /// 委托PluginHandler的实例 - /// - bool Register(IPlugin plugin, PluginHandler getReqHandler, - PluginHandler postReqHandler); - - #region 调用插件 - - /// - /// 扩展模块GET请求,返回false则应立即截断请求 - /// - /// - /// - /// - void HttpPluginRequest(HttpContext context, string pluginName, ref bool result); - - /// - /// 扩展模块POST请求,返回false则应立即截断请求 - /// - /// - /// - /// - void HttpPluginPost(HttpContext context, string pluginName, ref bool result); - - #endregion - - /// - /// 获取请求路径 - /// - /// - /// - string GetRequestPath(HttpContext context); - - /// - /// 扩展插件Action请求,为插件提供Action功能 - /// - /// - /// - /// - bool HandleRequestUse(T t, HttpContext context, bool isPostRequest); - - - /// - /// 为自定义请求提供Action功能 - /// - /// - /// - /// - bool HandleCustomRequestUse(T t, HttpContext context, String path,bool isPostRequest); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs b/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs deleted file mode 100644 index 8c02fe3..0000000 --- a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Web; - -namespace J6.DevFw.PluginKernel.Web -{ - /// - /// - /// - /// - public class WebPluginHandleProxy : PluginHandleProxy - { - private static readonly IDictionary> postHandlers; - - static WebPluginHandleProxy() - { - postHandlers = new Dictionary>(); - } - - public virtual void HandleGetRequest(T context, - string pluginWorkIndent, - ref bool handleResult) - { - this.HandleRequest(context, pluginWorkIndent, ref handleResult); - } - - public virtual void HandlePostRequest(T context, - string pluginWorkIndent, - ref bool handleResult) - { - pluginWorkIndent = pluginWorkIndent.ToLower(); - - //处理扩展 - if (postHandlers.Keys.Contains(pluginWorkIndent)) - { - postHandlers[pluginWorkIndent](context, ref handleResult); - } - } - - - /// - /// 注册处理事件 - /// - /// - /// - /// - /// - public bool Register(IPlugin plugin, PluginHandler getHandler, PluginHandler postHandler) - { - Type type = plugin.GetType(); - PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); - string indent = attr.WorkIndent; - - if (postHandler == null || postHandlers.Keys.Contains(indent)) - { - return false; - } - postHandlers.Add(indent, postHandler); - - return base.Register(plugin, getHandler); - } - - - // - // 此段代码仅供参考 - // - private bool HandleRequestUse2(HandleClass t, T context, bool isPostRequest, string requestPath) - { - string action = null; - HttpContext httpContext = HttpContext.Current; - - if (requestPath.Length != 0) - { - action = requestPath.IndexOf('/') == -1 - ? requestPath - : requestPath.Substring(0, requestPath.IndexOf('/')); - } - - if (action == null) action = "default"; - - //交由C#处理 - - Type type = t.GetType(); - MethodInfo method = type.GetMethod( - String.Concat(action, isPostRequest ? "_post" : ""), - BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); - if (method != null) - { - try - { - if (method.ReturnType == typeof (String)) - { - httpContext.Response.Write( - method.Invoke(t, new object[] {context}) as String - ); - } - else - { - method.Invoke(t, new object[] {context}); - } - } - catch (Exception exc) - { - Logger.PrintException(httpContext.Request.RawUrl, exc); - } - - return true; - } - return false; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/CSharpProvider.cs b/J6/src/core/J6.DevFw.Template/Compiler/CSharpProvider.cs deleted file mode 100644 index 8dddcb8..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/CSharpProvider.cs +++ /dev/null @@ -1,298 +0,0 @@ -using System; -using System.CodeDom.Compiler; -using System.Text; -using Microsoft.CSharp; -using J6.DevFw.Template.Compiler.Text; - -namespace J6.DevFw.Template.Compiler -{ - public class CSharpProvider : IDisposable - { - #region Private fields - - private CSharpCodeProvider _CSharpCodePrivoder; - private CompilerParameters _CompilerParameters = new CompilerParameters(); - private CompilerResults _Clr; - private string _Code; - private DateTime _LstFileTime = DateTime.Parse("1900-1-1"); - private AppDomain _AppDomain; - private string _AssemblyFileName = "DynamicTemp.dll"; - private bool _RemoveAssemblyFile; - private Encoding _SourceCodeFileEncoding = Encoding.Default; - private DotNetReferences _DotNetReferences = new DotNetReferences(); - - #endregion - - #region Public Properties - - /// - /// Manage the references - /// - public DotNetReferences References - { - get { return _DotNetReferences; } - } - - /// - /// Get or set the output assembly file name for the dynamic source code - /// - public string AssemblyFileName - { - get { return _AssemblyFileName; } - - set { _AssemblyFileName = value; } - } - - /// - /// The compilier parameters - /// - public CompilerParameters CompilerParameters - { - get { return _CompilerParameters; } - } - - /// - /// If this property set to true, - /// When the object intance from this class dispose, - /// the assembly File that is compiled will be deleted. - /// - public bool RemoveAssemblyFile - { - get { return _RemoveAssemblyFile; } - - set { _RemoveAssemblyFile = value; } - } - - /// - /// Get or set the encoding of source code file - /// - public Encoding SourceCodeFileEncoding - { - get { return _SourceCodeFileEncoding; } - - set { _SourceCodeFileEncoding = value; } - } - - #endregion - - #region Private methods - - private void LoadReference(string code) - { - foreach (string reference in References.GetReferences()) - { - if (reference != null) - { - if (_CompilerParameters.ReferencedAssemblies.IndexOf(reference) < 0) - { - _CompilerParameters.ReferencedAssemblies.Add(reference); - } - } - } - - foreach (string nameSpace in ReferenceInCode.GetNameSpacesInSourceCode(code)) - { - string referenceDll = References[nameSpace]; - if (referenceDll != null) - { - if (_CompilerParameters.ReferencedAssemblies.IndexOf(referenceDll) < 0) - { - _CompilerParameters.ReferencedAssemblies.Add(referenceDll); - } - } - } - } - - - /// - /// Create the instance named or inherited by typeFullName - /// - /// code string or source code file name - /// the full name of type - /// from file or from code string - /// instance object - /// If the type named or inherited by typefullname does not exits, return null - private object InnerCreateInstance(string code, string typeFullName, bool fromFile) - { - bool reCompile = false; - - if (fromFile) - { - reCompile = CompileFromFile(code); - } - else - { - reCompile = Compile(code); - } - - if (reCompile) - { - AppDomainSetup appDomainSetup; - - appDomainSetup = new AppDomainSetup(); - appDomainSetup.LoaderOptimization = LoaderOptimization.SingleDomain; - appDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; - appDomainSetup.ShadowCopyDirectories = appDomainSetup.ApplicationBase; - appDomainSetup.ShadowCopyFiles = "true"; - _AppDomain = AppDomain.CreateDomain(AssemblyFileName, null, appDomainSetup); - } - - RemoteLoader remoteLoader = - (RemoteLoader) _AppDomain.CreateInstance("Compiler.Dynamic", "RemoteAccess.RemoteLoader").Unwrap(); - return remoteLoader.Create(AssemblyFileName, typeFullName, null); - } - - #endregion - - #region Constructor - - public CSharpProvider() - { - } - - ~CSharpProvider() - { - try - { - Dispose(); - } - catch - { - } - } - - #endregion - - #region Public methods - - /// - /// Compiler From source code file - /// - /// The file name of source code - /// - public bool CompileFromFile(string sourceCodeFileName) - { - DateTime fileTime = System.IO.File.GetLastWriteTime(sourceCodeFileName); - - if (_LstFileTime == fileTime) - { - return false; - } - - _LstFileTime = fileTime; - - string code = File.ReadFileToString(sourceCodeFileName, SourceCodeFileEncoding); - - bool removeAssemblyFile = RemoveAssemblyFile; - RemoveAssemblyFile = true; - Dispose(); - RemoveAssemblyFile = removeAssemblyFile; - - _CSharpCodePrivoder = new CSharpCodeProvider(); - - LoadReference(code); - _Code = code; - _CompilerParameters.GenerateInMemory = false; - _CompilerParameters.OutputAssembly = AssemblyFileName; - - string[] files = new string[1]; - files[0] = sourceCodeFileName; - - _Clr = _CSharpCodePrivoder.CompileAssemblyFromFile(_CompilerParameters, files); - - if (_Clr.Errors.HasErrors) - { - throw new CompilerException(code, _Clr.Errors); - } - - return true; - } - - public bool Compile(string code) - { - if (code == _Code) - { - return false; - } - - bool removeAssemblyFile = RemoveAssemblyFile; - RemoveAssemblyFile = true; - Dispose(); - RemoveAssemblyFile = removeAssemblyFile; - - _Code = code; - _CSharpCodePrivoder = new CSharpCodeProvider(); - - LoadReference(code); - - _CompilerParameters.GenerateInMemory = false; - _CompilerParameters.OutputAssembly = AssemblyFileName; - - _Clr = _CSharpCodePrivoder.CompileAssemblyFromSource(_CompilerParameters, code); - - if (_Clr.Errors.HasErrors) - { - throw new CompilerException(code, _Clr.Errors); - } - - return true; - } - - - /// - /// Create the instance named or inherited by typeFullName - /// - /// source code string - /// the full name of type - /// instance object - /// If the type named or inherited by typefullname does not exits, return null - public object CreateInstance(string code, string typeFullName) - { - return InnerCreateInstance(code, typeFullName, false); - } - - /// - /// Create the instance named or inherited by typeFullName - /// - /// source code file - /// the full name of type - /// instance object - /// If the type named or inherited by typefullname does not exits, return null - public object CreateInstanceFromFile(string fileName, string typeFullName) - { - return InnerCreateInstance(fileName, typeFullName, true); - } - - #endregion - - #region IDisposable Members - - public void Dispose() - { - if (_AppDomain != null) - { - AppDomain.Unload(_AppDomain); - _AppDomain = null; - } - - _Clr = null; - - GC.Collect(); - - if (RemoveAssemblyFile) - { - if (System.IO.File.Exists(AssemblyFileName)) - { - System.IO.File.Delete(AssemblyFileName); - } - - if (System.IO.File.Exists(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb")) - { - System.IO.File.Delete(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb"); - } - } - } - - #endregion - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/CompilerException.cs b/J6/src/core/J6.DevFw.Template/Compiler/CompilerException.cs deleted file mode 100644 index b170ae0..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/CompilerException.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.CodeDom.Compiler; -using System.Text; - -namespace J6.DevFw.Template.Compiler -{ - public class CompilerException : Exception - { - private string _Code; - private CompilerErrorCollection _Errors; - - public string Code - { - get { return _Code; } - } - - public CompilerErrorCollection Errors - { - get { return _Errors; } - } - - public CompilerException(string code, CompilerErrorCollection errors) - { - _Code = code; - _Errors = errors; - } - - public override string ToString() - { - StringBuilder message = new StringBuilder(); - - foreach (CompilerError err in _Errors) - { - message.AppendFormat("({0}): error {1}: {2}", err.Line, err.ErrorNumber, err.ErrorText); - } - - return message.ToString(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/DotNetReferences.cs b/J6/src/core/J6.DevFw.Template/Compiler/DotNetReferences.cs deleted file mode 100644 index 2bf6224..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/DotNetReferences.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using J6.DevFw.Template.Compiler.Text; - -namespace J6.DevFw.Template.Compiler -{ - public class DotNetReferences - { - #region Private fields - - private List _References = new List(); - - #endregion - - #region Private methods - - #endregion - - #region Public methods - - public void Add(string reference) - { - _References.Add(reference); - } - - public void Remove(string reference) - { - _References.Remove(reference); - } - - public IEnumerable GetReferences() - { - foreach (string reference in _References) - { - yield return reference; - } - } - - public string this[string nameSpace] - { - get { return ReferenceInCode.GetDefaultReferenceDllName(nameSpace); } - } - - #endregion - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/RemoteLoader.cs b/J6/src/core/J6.DevFw.Template/Compiler/RemoteLoader.cs deleted file mode 100644 index 2945b9c..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/RemoteLoader.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Reflection; - -namespace J6.DevFw.Template.Compiler -{ - /// - /// Factory class to create objects exposing IRemoteInterface - /// - internal class RemoteLoader : MarshalByRefObject - { - private Type _Type; - - public RemoteLoader() - { - } - - /// Factory method to create an instance of the type whose name is specified, - /// using the named assembly file and the constructor that best matches the specified parameters. - /// The name of a file that contains an assembly where the type named typeName is sought. - /// The name of the preferred type. - /// An array of arguments that match in number, order, and type the parameters of the constructor to invoke, or null for default constructor. - /// The return value is the created object represented as ILiveInterface. - public object Create(string assemblyFile, string typeName, object[] constructArgs) - { - if (_Type == null) - { - string asmName = System.IO.Path.GetFileNameWithoutExtension(assemblyFile); - - AppDomain.CurrentDomain.Load(asmName); - - Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies(); - Assembly asm = null; - - foreach (Assembly a in asms) - { - if (System.IO.Path.GetFileName(a.Location) - .Equals(assemblyFile, StringComparison.CurrentCultureIgnoreCase)) - { - asm = a; - } - } - - Type[] types = asm.GetTypes(); - - Type matchType = null; - - foreach (Type type in types) - { - if (type.FullName == typeName) - { - matchType = type; - break; - } - - if (type.BaseType != null) - { - if (type.BaseType.FullName == typeName) - { - matchType = type; - break; - } - } - - if (type.GetInterface(typeName) != null) - { - matchType = type; - break; - } - } - - if (matchType == null) - { - return null; - } - - _Type = matchType; - } - - return Activator.CreateInstance(_Type); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/Text/File.cs b/J6/src/core/J6.DevFw.Template/Compiler/Text/File.cs deleted file mode 100644 index 9c04c10..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/Text/File.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.IO; -using System.Text; - -namespace J6.DevFw.Template.Compiler.Text -{ - internal class File - { - public static String ReadFileToString(String fileName, Encoding encoding) - { - using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) - { - StreamReader sr = new StreamReader(fs, encoding); - return sr.ReadToEnd(); - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/Text/ReferenceInCode.cs b/J6/src/core/J6.DevFw.Template/Compiler/Text/ReferenceInCode.cs deleted file mode 100644 index 1e7edcd..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/Text/ReferenceInCode.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System.Collections.Generic; - -namespace J6.DevFw.Template.Compiler.Text -{ - internal class ReferenceInCode - { - private static readonly string[] _SystemSpecRefs = - { - "System.Configuration", - "System.Configuration.Install", - "System.Data", - "System.Data.SqlClient", - "System.Data.SqlXml", - "System.Deployment", - "System.Design", - "Sysemt.DirecoryServices", - "System.DirectoryServices.Protocols", - "System.Drawing", - "System.Drawing.Design", - "System.EnterpriseServices", - "System.Management", - "System.Messaging", - "System.Runtime.Remoting", - "System.Runtime.Serialization.Formatters.Soap", - "System.Security", - "System.ServiceProcess", - "System.Transactions", - "System.Web", - "System.Web.Mobile", - "System.Web.RegularExpressions", - "System.Web.Services", - "System.Windows.Forms", - "System.Xml" - }; - - private static string GetSystemReferenceDllName(string namespaceText) - { - foreach (string sysSpecRef in _SystemSpecRefs) - { - if (namespaceText.IndexOf(sysSpecRef) == 0) - { - return sysSpecRef + ".dll"; - } - } - - return "System.dll"; - } - - public static List GetNameSpacesInSourceCode(string code) - { - return Regx.GetMatchStrings(code, @"using\s+(.+?)\s*;", false); - } - - public static string GetDefaultReferenceDllName(string namespaceText) - { - namespaceText = namespaceText.Trim(); - - if (namespaceText.IndexOf("System") == 0) - { - return GetSystemReferenceDllName(namespaceText); - } - else - { - return namespaceText + ".dll"; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Compiler/Text/Regx.cs b/J6/src/core/J6.DevFw.Template/Compiler/Text/Regx.cs deleted file mode 100644 index aab3561..0000000 --- a/J6/src/core/J6.DevFw.Template/Compiler/Text/Regx.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Template.Compiler.Text -{ - internal class Regx - { - public static List GetMatchStrings(String text, String regx, - bool ignoreCase) - { - List output = new List(); - - Regex reg; - - int index = 0; - int begin = 0; - index = regx.IndexOf("(.+)"); - if (index < 0) - { - index = regx.IndexOf("(.+?)"); - if (index >= 0) - { - begin = index + 5; - } - } - else - { - begin = index + 4; - } - - if (index >= 0) - { - String endText = regx.Substring(begin); - - if (GetMatch(text, endText, ignoreCase) == "") - { - return output; - } - } - - if (ignoreCase) - { - reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); - } - else - { - reg = new Regex(regx, RegexOptions.Singleline); - } - - MatchCollection m = reg.Matches(text); - - if (m.Count == 0) - { - return output; - } - - for (int j = 0; j < m.Count; j++) - { - int count = m[j].Groups.Count; - - for (int i = 1; i < count; i++) - { - output.Add(m[j].Groups[i].Value.Trim()); - } - } - - return output; - } - - public static String GetMatch(String text, String regx, bool ignoreCase) - { - Regex reg; - - int index = 0; - int begin = 0; - index = regx.IndexOf("(.+)"); - if (index < 0) - { - index = regx.IndexOf("(.+?)"); - if (index >= 0) - { - begin = index + 5; - } - } - else - { - begin = index + 4; - } - - if (index >= 0) - { - String endText = regx.Substring(begin); - - if (endText != "") - { - if (GetMatch(text, endText, ignoreCase) == "") - { - return ""; - } - } - } - - if (ignoreCase) - { - reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); - } - else - { - reg = new Regex(regx, RegexOptions.Singleline); - } - - String ret = ""; - Match m = reg.Match(text); - - if (m.Groups.Count > 0) - { - ret = m.Groups[m.Groups.Count - 1].Value; - } - - return ret; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Embed.Designer.cs b/J6/src/core/J6.DevFw.Template/Embed.Designer.cs deleted file mode 100644 index c294186..0000000 --- a/J6/src/core/J6.DevFw.Template/Embed.Designer.cs +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34209 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace J6.DevFw.Template { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Embed { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Embed() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("J6.DevFw.Template.Embed", typeof(Embed).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 <!DOCTYPE HTML> - ///<html> - ///<head> - /// <title>${title} - ASP.NET模板系统 - Power by opsoft</title> - /// <style type="text/css"> - /// body { margin: 0; } - /// - /// * { - /// font-size: 12px; - /// font-family: Tahoma; - /// } - /// - /// .center { text-align: Center; } - /// - /// #footer { - /// background: #e5e5e5; - /// color: #006699; - /// text-align: center; - /// line-height: 30px; - /// } - /// - /// a { - /// color: #006699; - /// outline: no [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string SysTemplatePage { - get { - return ResourceManager.GetString("SysTemplatePage", resourceCulture); - } - } - } -} diff --git a/J6/src/core/J6.DevFw.Template/J6.DevFw.Template.csproj b/J6/src/core/J6.DevFw.Template/J6.DevFw.Template.csproj deleted file mode 100644 index 97411bd..0000000 --- a/J6/src/core/J6.DevFw.Template/J6.DevFw.Template.csproj +++ /dev/null @@ -1,103 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693} - Library - Properties - J6.DevFw.Template - J6.DevFw.Template - v4.0 - 512 - - - - true - full - false - ..\..\..\dist\dll\ - DEBUG;TRACE - prompt - 4 - ..\..\..\dist\dll\J6.DevFw.Template.xml - - - pdbonly - true - ..\Bin\ - TRACE - prompt - 4 - - - true - - - template.snk - - - - - - - - - - - - - - - - - True - True - Embed.resx - - - - - - - - - - - - - - - - - - - - - - - - - - - ResXFileCodeGenerator - Embed.Designer.cs - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/Properties/AssemblyInfo.cs b/J6/src/core/J6.DevFw.Template/Properties/AssemblyInfo.cs deleted file mode 100644 index cb0b3fd..0000000 --- a/J6/src/core/J6.DevFw.Template/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Reflection; -using System.Security; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -//publicKey:7baff2e0bbd0ef52 - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 - -[assembly: AllowPartiallyTrustedCallers] -[assembly: AssemblyTitle("ASP.NET模板引擎 v2.2")] -[assembly: AssemblyDescription("asp.net模板引擎")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("OPSoft(www.J6.DevFwcc)")] -[assembly: AssemblyProduct("OPSoft.Template")] -[assembly: AssemblyCopyright("Copyright © OPSoft 2013")] -[assembly: AssemblyTrademark("OPSoft")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 - -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID - -[assembly: Guid("129b8456-d420-43e2-9376-b16530a1d6af")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("2.3.0.0")] -[assembly: AssemblyFileVersion("2.3.0.0")] \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/embed/SysTemplatePage.html b/J6/src/core/J6.DevFw.Template/embed/SysTemplatePage.html deleted file mode 100644 index 465da87..0000000 --- a/J6/src/core/J6.DevFw.Template/embed/SysTemplatePage.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - ${title} - ASP.NET模板系统 - Power by opsoft - - - -${content} - - - \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/Config.cs b/J6/src/core/J6.DevFw.Template/old/Config.cs deleted file mode 100644 index b682900..0000000 --- a/J6/src/core/J6.DevFw.Template/old/Config.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:ITemplate.cs -// Author:newmin -// Create:2011/06/05 -// - -namespace J6.DevFw.Template -{ - public delegate void TemplatePageHandler(TemplatePage page); - - public class Config - { - private static readonly string _version; - - public static string Version - { - get { return "2.1"; } - } - - /// - /// 是否启用Html压缩 - /// - public static bool EnabledCompress = true; - - /// - /// 是否将模板缓存 - /// - public static bool EnabledCache = true; - - /// - /// 是否共享URL参数值 - /// - public static bool UrlQueryShared = true; - - /// - /// 共享HttpItem传递的数据 - /// - public static bool HttpItemShared = true; - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/Delegate.cs b/J6/src/core/J6.DevFw.Template/old/Delegate.cs deleted file mode 100644 index 01839c2..0000000 --- a/J6/src/core/J6.DevFw.Template/old/Delegate.cs +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:delegate.cs -// Author:newmin -// Create:2011/06/28 -// - -namespace J6.DevFw.Template -{ - /// - /// 模板呈现处理 - /// - /// 模板内容 - /// 数据对象 - public delegate void TemplateHandler(T obj, ref string templateContent); - - public delegate void TemplateBehavior(); -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/Eval.cs b/J6/src/core/J6.DevFw.Template/old/Eval.cs deleted file mode 100644 index 6ed48ea..0000000 --- a/J6/src/core/J6.DevFw.Template/old/Eval.cs +++ /dev/null @@ -1,444 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2013/09/05 -// - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text.RegularExpressions; -using System.Web; - -namespace J6.DevFw.Template -{ - public sealed class Eval - { - /// - /// 添加到数据项 - /// - /// - public static void ToItem(string expression) - { - //$item:x=123 - } - - /// - /// 赋值到变量 - /// - /// - public static string SetToVariable(IDataContrainer dc, string content) - { - //正则模式,支持以下 - // //$menu="123456\" f" sdf - // $menu=12 fsdf - // $menu=item:123456 - // $menu=>getmenu(test,item,get) - const string expressionPattern = - "(/*/*)\\$([_a-zA-Z][a-zA-Z0-9_]*)\\s*=\\s*(\"(\\\\\"|[^\"\\\\\\n])*\"|[^<>\\s\\\\\\n\"\\$/]+)(\\s+\\B)*"; - //设置表达式 - const string specialVarPattern = "(item|cache|query):(.+)"; //特殊数据 - - string outHtml, - varName, - varValue, - varKey; - - Match valueMatch; - - outHtml = Regex.Replace(content, expressionPattern, m => - { - //注释 - if (m.Groups[1].Value != "") return String.Empty; - - - //获取变量及表达式 - varName = m.Groups[2].Value; - varValue = m.Groups[3].Value; - - if (Regex.IsMatch(varValue, specialVarPattern, RegexOptions.IgnoreCase)) - { - valueMatch = Regex.Match(varValue, specialVarPattern, RegexOptions.IgnoreCase); - varKey = valueMatch.Groups[2].Value; - - switch (valueMatch.Groups[1].Value.ToLower()) - { - case "item": - dc.DefineVariable(varName, HttpContext.Current.Items[varKey]); - break; - case "cache": - dc.DefineVariable(varName, HttpRuntime.Cache[varKey]); - break; - case "query": - dc.DefineVariable(varName, HttpContext.Current.Request[varKey]); - break; - } - } - else - { - string varRealValue = Regex.Replace(varValue, "\\B\"|\"\\B", String.Empty); - - //如果为字符,否则读取指定值的变量 - if (Regex.IsMatch(varValue, "\\B\"|\"\\B")) - { - dc.DefineVariable(varName, varRealValue); - } - else - { - object obj = dc.GetVariable(varRealValue); - if (obj != null) - { - if (obj is Variable) - { - dc.DefineVariable(varName, (Variable) obj); - } - else - { - dc.DefineVariable(varName, obj.ToString()); - } - } - else - { - string message = ""; - int i = 0; - foreach (string key in dc.GetDefineVariable().Keys) - { - message += (++i == 1 ? "" : "," + key); - } - throw new NotSupportedException("数据引用键错误:" + m.Value + "\n" - + - (message != "" - ? "受支持可引用的数据键包括" + message + "\n使用\"$" + varName + - "=>键\"进行调用!" - : "")); - } - } - } - - return String.Empty; - }, RegexOptions.Singleline); - return outHtml; - } - - /// - /// 执行方法并将返回值赋予变量 - /// - /// - /// - /// - public static string EvalMethodToVar(IDataContrainer dc, string content, object data) - { - //正则模式,支持以下 - // //$menu="123456\" f" sdf - // $menu=12 fsdf - // $menu=item:123456 - // $menu=>getmenu(test,item,get) - const string expressionPattern = - "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)\\s*=>\\s*([a-zA-Z][a-zA-Z0-9_]*)\\((([^\\)]|\\\\\\))*)\\)(\\s+\\B)*"; //设置表达式 - - string outHtml, - varName, - methodName, - paramArray; - - Type type = data.GetType(); - MethodInfo method; - Type[] parameterTypes; - object[] parameters; - int parametersNum; - - - outHtml = Regex.Replace(content, expressionPattern, m => - { - //注释 - if (m.Groups[1].Value != "") return String.Empty; - - - //获取变量及表达式 - varName = m.Groups[2].Value; - methodName = m.Groups[3].Value; - paramArray = m.Groups[4].Value.Replace("\\,", "__CSP__"); - - parameters = paramArray.Trim().Length == 0 ? new object[0] : paramArray.Split(','); - parametersNum = parameters.Length; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parametersNum]; - for (int i = 0; i < parametersNum; i++) - { - parameterTypes[i] = typeof (String); - parameters[i] = - Regex.Replace(parameters[i].ToString(), "\\B\"|\"\\B", String.Empty).Replace("__CSP__", ","); - } - - method = type.GetMethod( - methodName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - if (method != null) - { - Type returnType = method.ReturnType; - if (returnType != typeof (void)) - { - object result = method.Invoke(data, parameters); - if (result != null) - { - if (returnType.IsPrimitive || returnType == typeof (String)) - { - dc.DefineVariable(varName, (result ?? "").ToString()); - } - else - { - dc.DefineVariable(varName, - new Variable {Key = varName, Value = result, Type = returnType}); - } - } - } - } - - /* - else - { - //throw new MissingMethodException("在对象中找不到"); - - Config.DC.DefineVar(varName, "在对象中找不到方法"+methodName+""+ - (parametersNum==0?"":",参数"+parametersNum.ToString()+"个") - +"。"); - } - */ - - return String.Empty; - }, RegexOptions.Singleline); - return outHtml; - } - - /// - /// 执行方法并将返回值赋予变量 - /// - /// - /// - /// - [Obsolete] - public static string EntityVariable(IDataContrainer dc, string content) - { - //正则模式,支持以下 - // //$menu="123456\" f" sdf - // $menu=12 fsdf - // $menu=item:123456 - // $menu=>getmenu(test,item,get) - const string expressionPattern = "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)=>([a-zA-Z0-9_]+)(\\s+\\B)*"; //设置表达式 - - string outHtml = content, - varName, - entityName; - - - outHtml = Regex.Replace(content, expressionPattern, m => - { - //注释 - if (m.Groups[1].Value != "") return String.Empty; - - //获取变量及表达式 - varName = m.Groups[2].Value; - entityName = m.Groups[3].Value; - - object obj = dc.GetVariable(entityName); - if (obj != null && obj is Variable) - { - Variable var = (Variable) obj; - obj = var.Value; - Type type = var.Type; - - //解析属性的值 - PropertyInfo[] pros = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); - foreach (PropertyInfo pro in pros) - { - outHtml = Regex.Replace(outHtml, - String.Format("\\$\\{0}{1}\\.{1}{2}", "\\{", varName, pro.Name, "\\}"), - m2 => { return (pro.GetValue(obj, null) ?? "").ToString(); }, RegexOptions.IgnoreCase); - } - } - return String.Empty; - }, RegexOptions.Singleline); - return outHtml; - } - - - public static string Complie(IDataContrainer dc, string html, object data) - { - string outHtml; - - //======= 设置变量 ======// - outHtml = SetToVariable(dc, html); - - //======= 求方法 =======// - if (data != null) - { - outHtml = EvalMethodToVar(dc, outHtml, data); - } - - // outHtml = EntityVariable(dc, outHtml); - - return outHtml; - } - - internal static string ResolveEntityProperties(IDataContrainer dc, string templateHtml) - { - const string keyParttern = "\\$\\{([a-zA-Z][a-zA-Z0-9_]*)\\.([A-Z_a-z][a-zA-Z0-9_]*)\\}"; - IDictionary entityKeys = new Dictionary(); - IDictionary entityValues = new Dictionary(); - - string entityName, proName; - Variable var; - PropertyInfo pro; - object varValue; - - templateHtml = Regex.Replace(templateHtml, keyParttern, m => - { - entityName = m.Groups[1].Value; - proName = m.Groups[2].Value; - - if (!entityValues.Keys.Contains(entityName)) - { - varValue = dc.GetVariable(entityName); - entityValues.Add(entityName, varValue != null ? (Variable) varValue : default(Variable)); - } - - var = entityValues[entityName]; - if (var.Value != null) - { - //解析属性的值 - pro = var.Type.GetProperty(entityName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro != null) - { - return (pro.GetValue(var.Value, null) ?? "").ToString(); - } - - string message = ""; - int i = 0; - foreach ( - PropertyInfo p in - var.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | - BindingFlags.IgnoreCase)) - { - message += (++i == 1 ? "" : ",") + p.Name; - } - - throw new NotSupportedException("不支持的属性调用${" + var.Key + "." + proName + "}\n" + var.Key + - "支持可选的属性:" + message + "\n使用\"${" + var.Key + ".属性}\"进行调用!"); - } - return String.Empty; - }); - return templateHtml; - } - - /// - /// 解析变量 - /// - /// - /// - /// - internal static string ResolveVariable(string templateHtml, Variable variable) - { - // - // ${obj.name}; - // 字典方式 ${obj.__dict__[key]} - // 不支持的属性,默认以_开头 - // a-z下划线或中文开头 - // - string keyParttern = "\\$\\{" + variable.Key + - "\\.([A-Z_a-z\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*|__dict__\\[([^\\]]+)\\])\\}"; - string proName, dictKey; - PropertyInfo pro = null; - IDictionary propDict = null; - - templateHtml = Regex.Replace(templateHtml, keyParttern, m => - { - proName = m.Groups[1].Value; - if (variable.Value != null) - { - //解析属性的值 - pro = variable.Type.GetProperty(proName, - BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.IgnoreCase); - if (pro != null) - { - return (pro.GetValue(variable.Value, null) ?? "").ToString(); - } - - #region 获取字典 - - if (!String.IsNullOrEmpty(m.Groups[2].Value)) - { - //获取属性字典,并缓存 - if (propDict == null) - { - pro = variable.Type.GetProperty("__dict__", - BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | - BindingFlags.IgnoreCase); - if (pro != null) - { - if (pro.PropertyType != typeof (IDictionary)) - { - throw new TypeLoadException("__dict__属性的类型应为IDictionary"); - } - else - { - propDict = pro.GetValue(variable.Value, null) as IDictionary; - } - } - else - { - //未定义字典 - throw new TypeLoadException("字典不存在!"); - } - } - - //获取值 - dictKey = m.Groups[2].Value; - if (propDict.ContainsKey(dictKey)) - { - return propDict[dictKey]; - } - else - { - //字典不存在值 - return String.Empty; - } - } - - #endregion - - string message = ""; - TemplateVariableFieldAttribute[] attr; - int i = 0; - foreach ( - PropertyInfo p in - variable.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | - BindingFlags.NonPublic | BindingFlags.IgnoreCase)) - { - if (!p.Name.StartsWith("_")) - { - attr = - (TemplateVariableFieldAttribute[]) - p.GetCustomAttributes(typeof (TemplateVariableFieldAttribute), true); - //message += (++i == 1 ? "" : ",") + p.Name; - message += (++i == 1 ? "\n=================================\n" : "\n") + p.Name + "\t : \t" + - (attr.Length > 0 ? attr[0].Descript : ""); - } - } - - throw new NotSupportedException("不支持的属性调用${" + variable.Key + "." + proName + "}\n\n" + variable.Key + - "支持下列可选属性:" + message + "\n\n注:使用\"${" + variable.Key + - ".属性}\"进行调用,属性不区分大小写。"); - } - return m.Value; - }); - return templateHtml; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/HttpDataContainer.cs b/J6/src/core/J6.DevFw.Template/old/HttpDataContainer.cs deleted file mode 100644 index 80d8b5e..0000000 --- a/J6/src/core/J6.DevFw.Template/old/HttpDataContainer.cs +++ /dev/null @@ -1,124 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2013/09/05 -// - -using System; -using System.Collections.Generic; -using System.Web; - -namespace J6.DevFw.Template -{ - /// - /// HTTP数据容器 - /// - internal sealed class HttpDataContrainer : IDataContrainer - { - private IDictionary varDict; - - public HttpDataContrainer() - { - object obj = HttpContext.Current.Items["__tpl_var_define__"]; - if (obj != null) - { - varDict = obj as IDictionary; - } - else - { - varDict = new Dictionary(); - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - } - } - - public string GetTemplatePageCacheContent(string templateID) - { - if (TemplateCache.templateDictionary.ContainsKey(templateID)) - { - return HttpRuntime.Cache["tpl_cache_" + templateID] as string; - } - return null; - } - - public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) - { - HttpRuntime.Cache.Insert("tpl_cache_" + templateID, content, - new System.Web.Caching.CacheDependency(dependFileName), DateTime.Now.AddDays(30), TimeSpan.Zero); - } - - public void DefineVariable(string key, T value) - { - if (value == null) return; //防止非法参数 - - /* - IDictionary varDict; - object obj = HttpContext.Current.Items["__tpl_var_define__"]; - if (obj != null) - { - varDict = obj as IDictionary; - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - } - else - { - varDict = new Dictionary(); - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - }*/ - - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - - //如果不是基元类型,则保存类型 - Type t = typeof (T); - if (t == typeof (String) || t.IsPrimitive) - { - varDict.Add(key, value); - } - else - { - varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); - } - - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - } - - public void DefineVariable(string key, Variable variable) - { - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - variable.Key = key; - varDict.Add(key, variable); - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - } - - public object GetVariable(string key) - { - if (this.varDict.Keys.Contains(key)) - { - return varDict[key]; - } - return null; - } - - public IDictionary GetDefineVariable() - { - /* - object obj = HttpContext.Current.Items["__tpl_var_define__"]; - if (obj != null) - { - return obj as IDictionary; - } - return null; - */ - - return this.varDict; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/IDataContrainer.cs b/J6/src/core/J6.DevFw.Template/old/IDataContrainer.cs deleted file mode 100644 index 77c4969..0000000 --- a/J6/src/core/J6.DevFw.Template/old/IDataContrainer.cs +++ /dev/null @@ -1,59 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2013/09/05 -// - -using System.Collections.Generic; - -namespace J6.DevFw.Template -{ - /// - /// IDataContainer接口 - /// - public interface IDataContrainer - { - /// - /// 获取模板页缓存内容 - /// - /// - /// - string GetTemplatePageCacheContent(string templateID); - - /// - /// 设置模板页缓存内容 - /// - /// - /// - /// - void SetTemplatePageCacheContent(string templateID, string content, string dependFileName); - - /// - /// 设置变量 - /// - /// - /// - void DefineVariable(string key, T variable); - - /// - /// 定义变量 - /// - /// - /// - void DefineVariable(string key, Variable variable); - - /// - /// 获取变量 - /// - /// - /// - object GetVariable(string key); - - /// - /// 获取自定义变量 - /// - /// - IDictionary GetDefineVariable(); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/ITemplate.cs b/J6/src/core/J6.DevFw.Template/old/ITemplate.cs deleted file mode 100644 index 57ed2a7..0000000 --- a/J6/src/core/J6.DevFw.Template/old/ITemplate.cs +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:ITemplate.cs -// Author:newmin -// Create:2011/06/05 -// - -namespace J6.DevFw.Template -{ - public interface ITemplate - { - /// - /// 读取模板 - /// - /// - /// - string Read(string templateID); - - /// - /// 压缩模板 - /// - /// - void Compress(string templateID); - - /// - /// 压缩Html - /// - /// - string CompressHtml(string html); - - /// - /// 根据模板路径获取模板的ID - /// 计算规则:小写文件名的16位md5 - /// - /// - /// - string GetTemplateID(string filePath); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/ITemplateVariableObject.cs b/J6/src/core/J6.DevFw.Template/old/ITemplateVariableObject.cs deleted file mode 100644 index 7726417..0000000 --- a/J6/src/core/J6.DevFw.Template/old/ITemplateVariableObject.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace J6.DevFw.Template -{ - /// - /// 模板变量对象 - /// - public interface ITemplateVariableObject - { - /// - /// 数据字典 - /// - IDictionary __dict__ { get; } - - /// - /// 添加数据 - /// - /// - /// - void AddData(string key, string data); - - /// - /// 删除数据 - /// - /// - void RemoveData(string key); - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/MD5.cs b/J6/src/core/J6.DevFw.Template/old/MD5.cs deleted file mode 100644 index d3aa7ea..0000000 --- a/J6/src/core/J6.DevFw.Template/old/MD5.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Text; - -namespace J6.DevFw.Template -{ - internal class MD5 - { - /// - /// 用md5加密 - /// - /// - /// - public static string Encode(String str) - { - StringBuilder sb = new StringBuilder(); - var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 - // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  - byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); - foreach (byte b in s) - { - sb.Append(b.ToString("x2")); - } - return sb.ToString(); - } - - /// - /// 16位MD5加密 - /// - /// - /// - public static string EncodeTo16(String str) - { - //取32位的中间部分 - var md5 = System.Security.Cryptography.MD5.Create(); - return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8) - .Replace("-", String.Empty); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/NormalDataContrainer.cs b/J6/src/core/J6.DevFw.Template/old/NormalDataContrainer.cs deleted file mode 100644 index e3bb707..0000000 --- a/J6/src/core/J6.DevFw.Template/old/NormalDataContrainer.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace J6.DevFw.Template -{ - internal class NormalDataContrainer : IDataContrainer - { - private IDictionary varDict; - - public string GetTemplatePageCacheContent(string templateID) - { - throw new Exception(); - } - - public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) - { - } - - public void DefineVariable(string key, T value) - { - if (value == null) return; //防止非法参数 - - - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - - //如果不是基元类型,则保存类型 - Type t = typeof (T); - if (t == typeof (String) || t.IsPrimitive) - { - varDict.Add(key, value); - } - else - { - varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); - } - } - - public void DefineVariable(string key, Variable variable) - { - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - variable.Key = key; - varDict.Add(key, variable); - } - - public object GetVariable(string key) - { - if (this.varDict.Keys.Contains(key)) - { - return varDict[key]; - } - return null; - } - - public IDictionary GetDefineVariable() - { - if (varDict == null) - { - varDict = new Dictionary(); - } - return varDict; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/SimpleTplEngine.cs b/J6/src/core/J6.DevFw.Template/old/SimpleTplEngine.cs deleted file mode 100644 index 6ebf9b5..0000000 --- a/J6/src/core/J6.DevFw.Template/old/SimpleTplEngine.cs +++ /dev/null @@ -1,257 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : SimpleTemplateEngine -* Author : Administrator -* Create : 2012/10/26 23:49:52 -* Description : -* Mofify: -* 2013-04-11 10:29 newmin [+]: 添加TemplateAttribute特性判断是否为返回数据, 返回数据的方法不再限制为私有 -* 2013-04-23 22:45 newmin [+]: 支持私有,公共,受保护的成员调用 -* 2013-04-23 22:46 newmin [+]: 支持int参数,如$tpl(3,'c,a,r') -* 2013-04-26 17:15 newmin [+]: 支持method -*/ - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Template -{ - /// - /// 简单模板解析类 - /// - public sealed class SimpleTplEngine - { - /// - /// 包含方法的类型实例 - /// - private object classInstance; - - /// - /// - /// - /// - /// - public SimpleTplEngine(object classInstance, bool counter) - { - this.classInstance = classInstance; - if (counter) - { - this.Count = new List(); - } - } - - /// - /// 计数 - /// - public IList Count; - - - /// - /// 数据列正则 - /// - private static readonly Regex FieldRegex = new Regex("{([a-z0-9_\\]\\[\u4e00-\u9fa5]+)}"); - - /// - /// 编译模版方法 - /// - /// - private void ComplieTemplateMethod(ref string html) - { - //返回结果 - const string methodPattern = "\\@([A-Za-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)\\s*([\\S\\s]+)@each\\s*off"; - //@each(id){ $nav() } - const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; - - Regex methodRegex = new Regex(methodPattern); //方法正则 - - //如果不包括方法,则直接返回 - if (!methodRegex.IsMatch(html)) - { - return; - } - - - Regex paramRegex = new Regex(paramPattern); //参数正则 - - Type type = this.classInstance.GetType(); - MethodInfo method; - string tagName; - string tagFormat; - object[] parameters; - Type[] parameterTypes; //参数类型数组 - MatchCollection paramMcs; - - - html = methodRegex.Replace(html, m => - { - tagName = m.Groups[1].Value; - tagFormat = m.Groups[3].Value; - - //获得参数 - paramMcs = paramRegex.Matches(m.Groups[2].Value); - - //参数,多添加一个tagFormat参数 - parameters = new object[paramMcs.Count + 1]; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parameters.Length]; - for (int i = 0; i < parameterTypes.Length; i++) - { - parameterTypes[i] = typeof(String); - } - - method = type.GetMethod( - tagName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - - //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 - if (method == null || method.GetCustomAttributes(typeof(TemplateMethodAttribute), true).Length == 0) - { - return m.Value; - } - //数字参数 - string intParamValue; - //则给参数数组赋值 - for (int i = 0; i < paramMcs.Count; i++) - { - intParamValue = paramMcs[i].Groups[2].Value; - if (intParamValue != String.Empty) - { - parameters[i] = intParamValue; - } - else - { - parameters[i] = paramMcs[i].Groups[1].Value; - } - } - - parameters[parameters.Length - 1] = tagFormat; - - if (this.Count != null) - this.Count.Add(String.Format("Method:{0},{1:mmssfff}", method.Name, DateTime.Now)); - - //执行方法并返回结果 - return method.Invoke(this.classInstance, parameters).ToString(); - }); - } - - /// - /// 执行解析模板内容 - /// - /// - /// - public void ComplieTemplateTag(ref string html) - { - //返回结果 - - const string tagPattern = "\\$([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; - const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; - - Regex tagRegex, - paramRegex; - - tagRegex = new Regex(tagPattern); //方法正则 - - if (!tagRegex.IsMatch(html)) - { - return; - } - - paramRegex = new Regex(paramPattern); //参数正则 - - Type type = this.classInstance.GetType(); - MethodInfo method; - string tagName; - object[] parameters; - Type[] parameterTypes; //参数类型数组 - MatchCollection paramMcs; - - html = tagRegex.Replace(html, m => - { - tagName = m.Groups[1].Value; - - //获得参数 - paramMcs = paramRegex.Matches(m.Groups[2].Value); - - //参数 - parameters = new object[paramMcs.Count]; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parameters.Length]; - for (int i = 0; i < parameterTypes.Length; i++) - { - parameterTypes[i] = typeof(String); - } - - method = type.GetMethod( - tagName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - - //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 - if (method == null || method.GetCustomAttributes(typeof(TemplateTagAttribute), true) == null) - { - return m.Value; - } - else - { - //数字参数 - string intParamValue; - //则给参数数组赋值 - for (int i = 0; i < paramMcs.Count; i++) - { - intParamValue = paramMcs[i].Groups[2].Value; - if (intParamValue != String.Empty) - { - parameters[i] = intParamValue; - } - else - { - parameters[i] = paramMcs[i].Groups[1].Value; - } - } - - if (this.Count != null) - this.Count.Add(String.Format("Tag:{0},{1:mmssfff}", method.Name, DateTime.Now)); - - //执行方法并返回结果 - return method.Invoke(this.classInstance, parameters).ToString(); - } - }); - } - - /// - /// 执行解析模板内容 - /// - /// - /// - public string Execute(string html) - { - string resultHtml = html; - this.ComplieTemplateMethod(ref resultHtml); - this.ComplieTemplateTag(ref resultHtml); - return resultHtml; - } - - /// - /// 替换列中的模板字符 - /// - /// - /// - /// - public static string FieldTemplate(string format, Func func) - { - return FieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/Template.cs b/J6/src/core/J6.DevFw.Template/old/Template.cs deleted file mode 100644 index 281fc5d..0000000 --- a/J6/src/core/J6.DevFw.Template/old/Template.cs +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:Template.cs -// Author:newmin -// Create:2011/06/13 -// - -using System; -using System.IO; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Template -{ - /// - /// 模板实体 - /// - public sealed class Template - { - /// - /// 模板ID - /// - public string ID { get; set; } - - /// - /// 模板路径 - /// - public string FilePath { get; set; } - - /// - /// 模板注释(第一个html注释) - /// - public string Comment - { - get - { - //读取文件开头部分注释 - Regex reg = new Regex("", RegexOptions.Multiline); - - //保存内容到变量,避免重复读取 - string content = null; - - using (StreamReader sr = new StreamReader(FilePath)) - { - content = sr.ReadToEnd(); - } - Match match = reg.Match(content); - - - return match == null ? String.Empty : match.Groups[1].Value; - } - } - - - /// - /// 模板内容 - /// - public string Content - { - get - { - string content; - IDataContrainer dc = new HttpDataContrainer(); - - //从缓存中读取模板内容 - if (Config.EnabledCache) - { - content = dc.GetTemplatePageCacheContent(this.ID); - if (content != null) return content; - } - - if (String.IsNullOrEmpty(this.FilePath)) throw new ArgumentNullException("模板文件不存在!" + this.FilePath); - - //读取内容并缓存 - StreamReader sr = new StreamReader(this.FilePath); - content = sr.ReadToEnd(); - sr.Dispose(); - - - string partialFilePath = ""; - //读取模板里的部分视图 - content = TemplateRegexUtility.partialRegex.Replace(content, m => - { - string _path = m.Groups[1].Value; - string tplID = TemplateUtility.GetPartialTemplateID(_path, this.FilePath, out partialFilePath); - return Regex.Replace(m.Value, _path, tplID); - }); - - - //替换系统标签 - content = TemplateRegexUtility.Replace(content, m => { return TemplateCache.Tags[m.Groups[1].Value]; }); - - - //压缩模板代码 - if (false || Config.EnabledCompress) - { - content = TemplateUtility.CompressHtml(content); - } - - //缓存模板 - if (Config.EnabledCache) dc.SetTemplatePageCacheContent(this.ID, content, this.FilePath); - - return content; - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplateAttribute.cs b/J6/src/core/J6.DevFw.Template/old/TemplateAttribute.cs deleted file mode 100644 index 327f54a..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplateAttribute.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; - -namespace J6.DevFw.Template -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] - public class TemplateTagAttribute : Attribute - { - } - - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] - public class TemplateMethodAttribute : Attribute - { - } - - /// - /// 变量字段属性 - /// - [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)] - public class TemplateVariableFieldAttribute : Attribute - { - public TemplateVariableFieldAttribute() - { - } - - public TemplateVariableFieldAttribute(string descript) - { - this.Descript = descript; - } - - public string Descript { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplateCache.cs b/J6/src/core/J6.DevFw.Template/old/TemplateCache.cs deleted file mode 100644 index 0439de6..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplateCache.cs +++ /dev/null @@ -1,105 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateCache.cs -// Author:newmin -// Create:2011/06/05 -// - -using System; -using System.Collections.Generic; - -namespace J6.DevFw.Template -{ - /// - /// 模板缓存 - /// - public static class TemplateCache - { - /// - /// 模板编号列表 - /// - internal static IDictionary templateDictionary = new Dictionary(); - - /// - /// 标签词典 - /// - public static readonly TagCollection Tags = new TagCollection(); - - - /// - /// 标签 - /// - public class TagCollection - { - private static IDictionary tagDictionary = new Dictionary(); - - public string this[string key] - { - get - { - if (!tagDictionary.ContainsKey(key)) return "${" + key + "}"; - return tagDictionary[key]; - } - set - { - if (tagDictionary.ContainsKey(key)) tagDictionary[key] = value; - else tagDictionary.Add(key, value); - } - } - - public void Add(string key, string value) - { - if (tagDictionary.ContainsKey(key)) - throw new ArgumentException("键:" + key + "已经存在!"); - else tagDictionary.Add(key, value); - } - } - - /// - /// 注册模板 - /// - /// - /// - internal static void RegisterTemplate(string templateID, string filePath) - { - templateID = templateID.ToLower(); - if (!templateDictionary.ContainsKey(templateID)) - { - templateDictionary.Add(templateID, new Template - { - ID = templateID, - FilePath = filePath - }); - } - } - - /// - /// 如果模板字典包含改模板则获取缓存 - /// - /// - /// - internal static string GetTemplateContent(string templateID) - { - string _templateID = templateID.ToLower(); - - if (templateDictionary.ContainsKey(_templateID)) - { - return templateDictionary[_templateID].Content; - } - //throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在,ID:", templateID)); - throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在。", templateID)); - } - - /// - /// 清除所有模板缓存 - /// - //internal static void Clear() - //{ - // templateDictionary = null; - // foreach (System.Collections.DictionaryEntry k in HttpRuntime.Cache) - // { - // if (k.Key.ToString().StartsWith("tpl_")) HttpRuntime.Cache.Remove(k.Key.ToString()); - // } - //} - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplateNames.cs b/J6/src/core/J6.DevFw.Template/old/TemplateNames.cs deleted file mode 100644 index 48b640e..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplateNames.cs +++ /dev/null @@ -1,22 +0,0 @@ -// -// File : TemplateNames.cs -// Name : 模板命名 -// Author : newmin -// Date : 2012-03-04 -// - -namespace J6.DevFw.Template -{ - public enum TemplateNames - { - /// - /// 以16位md5标识的ID - /// - ID, - - /// - /// 以文件名为标识 - /// - FileName - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplatePage.cs b/J6/src/core/J6.DevFw.Template/old/TemplatePage.cs deleted file mode 100644 index 7cff381..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplatePage.cs +++ /dev/null @@ -1,287 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplatePage.cs -// Author:newmin -// Create:2011/06/06 -// - -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text; -using System.Web; -using System.Threading; - -namespace J6.DevFw.Template -{ - /// - /// 模板页 - /// - public class TemplatePage - { - /// - /// 模板初始化,替换数据之前发生的事件 - /// - public event TemplateHandler OnPreInit; - - /// - /// 模板呈现之前发生的事件 - /// - public event TemplateHandler OnPreRender; - - - private string _templateId; - private IDataContrainer dc; - - /// - /// 模板数据 - /// - private IDictionary data = new Dictionary(); - - private string _templateHtml; - - /// - /// - /// - public TemplatePage() - { - if (HttpContext.Current != null) - { - dc = new HttpDataContrainer(); - } - else - { - dc = new NormalDataContrainer(); - } - } - - public TemplatePage(string templateId) - : this() - { - this._templateId = templateId; - } - - public TemplatePage(string templateId, object templateData) - : this(templateId) - { - this.AddDataObject(templateData); - } - - /// - /// 模板编号 - /// - public string TemplateID - { - get { return _templateId; } - set { _templateId = value; } - } - - /// - /// 模板内容 - /// - public string TemplateContent - { - get { return _templateHtml; } - set - { - if (!String.IsNullOrEmpty(_templateId)) - throw new ArgumentException("已经指定模板ID,将自动读取模板内容,无法在过程中设置模板的内容!", "TemplateContent"); - _templateHtml = value; - } - } - - /// - /// 模板处理对象,用于在OnPreInit和OnInit事件中处理的数据对象 - /// - public object TemplateHandleObject { get; set; } - - /// - /// 添加变量 - /// - /// - /// - public TemplatePage AddVariable(string key, T value) - { - dc.DefineVariable(key, value); - return this; - } - - /// - /// 添加匿名对象实例 - /// - /// - public void AddDataObject(object templateData) - { - //替换传入的标签参数 - PropertyInfo[] properties = templateData.GetType().GetProperties(); - object dataValue; - foreach (PropertyInfo p in properties) - { - dataValue = p.GetValue(templateData, null); - if (dataValue != null) - { - data.Add(p.Name, dataValue); - } - } - } - - - internal void PreRender(object obj, ref string content) - { - if (this.OnPreRender != null) - { - this.OnPreRender(obj, ref content); - } - } - - internal void PreInit(object obj, ref string content) - { - if (this.OnPreInit != null && obj != null) - { - this.OnPreInit(obj, ref content); - } - } - - - public override string ToString() - { - DateTime dt = DateTime.Now; - - //指定了模板ID - if (!String.IsNullOrEmpty(_templateId)) - { - //读取内容 - _templateHtml = TemplateUtility.Read(_templateId); - - //替换部分视图 - _templateHtml = TemplateRegexUtility.ReplacePartial(_templateHtml); - } - - //HttpContext.Current.Response.Write("
1." + (DateTime.Now - dt).Milliseconds.ToString()); - //初始化之前发生 - this.PreInit(this.TemplateHandleObject, ref _templateHtml); - - //如果参数不为空,则替换标签并返回内容 - if (this.data.Count != 0) - { - foreach (string key in this.data.Keys) - { - _templateHtml = TemplateRegexUtility.ReplaceHtml(_templateHtml, key, this.data[key].ToString()); - } - } - - // HttpContext.Current.Response.Write("
2." + (DateTime.Now - dt).Milliseconds.ToString()); - //执行模板语法 - _templateHtml = Eval.Complie(dc, _templateHtml, this.TemplateHandleObject); - - - //替换自定义变量 - IDictionary defineVars = dc.GetDefineVariable(); - - if (defineVars != null && defineVars.Count != 0) - { - foreach (string key in defineVars.Keys) - { - if (defineVars[key] is Variable) - { - _templateHtml = Eval.ResolveVariable(_templateHtml, (Variable) defineVars[key]); - } - else - { - _templateHtml = TemplateRegexUtility.ReplaceHtml(_templateHtml, key, - (defineVars[key] ?? "").ToString()); - } - } - } - - // HttpContext.Current.Response.Write("
3." + (DateTime.Now - dt).Milliseconds.ToString()); - - //解析实体的值 - //templateHtml = Eval.ExplanEntityProperties(dc,templateHtml); - - //呈现之前处理 - this.PreRender(this.TemplateHandleObject, ref _templateHtml); - - // HttpContext.Current.Response.Write("
4."+(DateTime.Now - dt).Milliseconds.ToString()); - - return _templateHtml; - } - - /// - /// 压缩后的字符 - /// - /// - public string ToCompressedString() - { - return TemplateUtility.CompressHtml(ToString()); - } - - /// - /// 输出Html,并终止响应 - /// - public void Render() - { - HttpContext.Current.Response.Write(this.ToString()); - try - { - HttpContext.Current.Response.End(); - } - catch (ThreadAbortException exc) - { - - } - } - - /// - /// 使用指定编码保存成为本地文件 - /// - /// 包含路径的文件名称,如:/html/default.html - /// - /// - /// - public void SaveToFile(string fileName, Encoding coder, bool compressed, out string html) - { - string filePath = AppDomain.CurrentDomain.BaseDirectory + fileName; - - //FileShare.None 独占方式打开 - - FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None); - - //byte[] bytes = coder.GetBytes(this.ToString()); - //fs.Write(bytes, 0, bytes.Length); - - StreamWriter sr = new StreamWriter(fs, coder); - - html = compressed - ? this.ToCompressedString() - : this.ToString(); - - sr.Write(html); - - sr.Flush(); - fs.Flush(); - sr.Dispose(); - fs.Dispose(); - } - - /// - /// 保存成为本地文件(Unicode) - /// - /// 包含路径的文件名称,如:/html/default.html - public void SaveToFile(string fileName) - { - string html; - SaveToFile(fileName, Encoding.UTF8, false, out html); - } - - /// - /// 保存成为本地文件(Unicode) - /// - /// 包含路径的文件名称,如:/html/default.html - public void SaveToFile(string fileName, out string html) - { - SaveToFile(fileName, Encoding.UTF8, false, out html); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplateRegexUtility.cs b/J6/src/core/J6.DevFw.Template/old/TemplateRegexUtility.cs deleted file mode 100644 index d7280c3..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplateRegexUtility.cs +++ /dev/null @@ -1,85 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:RegexUtility.cs -// Author:newmin -// Create:2011/06/05 -// - -using System.Text.RegularExpressions; - -namespace J6.DevFw.Template -{ - public sealed class TemplateRegexUtility - { - private static readonly Regex tagRegex = new Regex("\\${([a-zA-Z\u4e00-\u9fa5\\._]+)}"); - - //部分页匹配模式 - internal static Regex partialRegex = new Regex("\\${partial:\"(.+?)\"}"); - - public static string Replace(string templateID, string tagKey, string tagValue) - { - return null; - } - - /// - /// 替换模板数据 - /// - /// - /// - /// - internal static string ReplaceTemplate(string templateID, MatchEvaluator eval) - { - string html = TemplateUtility.Read(templateID); - - return TemplateRegexUtility.Replace(html, eval); - } - - /// - /// 替换标签 - /// - /// - /// - /// - public static string Replace(string html, MatchEvaluator eval) - { - //如果包含部分视图,则替换成部分视图的内容 - //ReplacePartial(html); - - //替换匹配 - return tagRegex.Replace(html, eval); - } - - internal static string ReplaceHtml(string html, string tagKey, string tagValue) - { - return Regex.Replace(html, "\\${" + tagKey + "}", tagValue, RegexOptions.IgnoreCase); - } - - - /// - /// 替换模板的部分视图 - /// - /// - /// - internal static string ReplacePartial(string html) - { - //匹配的部分视图编号 - string matchValue; - - //如果包含部分视图,则替换成部分视图的内容 - if (partialRegex.IsMatch(html)) - { - //替换模板里的部分视图,并将内容添加到模板内容中 - html = Regex.Replace(html, "\\${partial:\"(.+?)\"}", match => - { - matchValue = match.Groups[1].Value; - return Regex.IsMatch(matchValue, "^[a-z0-9]+$", RegexOptions.IgnoreCase) - ? TemplateUtility.Read(match.Groups[1].Value) - : match.Value; - }); - } - - //返回替换部分视图后的内容 - return html; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplateRegister.cs b/J6/src/core/J6.DevFw.Template/old/TemplateRegister.cs deleted file mode 100644 index 8c33a49..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplateRegister.cs +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateRegister.cs -// Author:newmin -// Create:2011/06/28 -// - -using System; -using System.IO; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Template -{ - /// - /// 模板注册 - /// - public class TemplateRegister - { - private DirectoryInfo directory; - private TemplateNames nametype; - - /// - /// 注册模板时发生 - /// - public event TemplateBehavior OnRegister; - - public TemplateRegister(string directoryPath, TemplateNames nametype) - { - this.nametype = nametype; - this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); - if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); - } - - public TemplateRegister(string directoryPath) - { - this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); - if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); - } - - public TemplateRegister(DirectoryInfo templateDirectory, TemplateNames nametype) - { - this.nametype = nametype; - this.directory = templateDirectory; - if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); - } - - /// - /// 注册模板 - /// - public void Register() - { - //注册模板 - RegisterTemplates(directory, this.nametype); - - //触发注册模板事件 - if (OnRegister != null) OnRegister(); - } - - //递归方式注册模板 - private static void RegisterTemplates(DirectoryInfo dir, TemplateNames nametype) - { - // tml 为模板文件,防止可以被直接浏览 - Regex allowExt = new Regex("(.html|.tml|.phtml)$", RegexOptions.IgnoreCase); - foreach (FileInfo file in dir.GetFiles()) - { - if (allowExt.IsMatch(file.Extension)) - { - TemplateCache.RegisterTemplate(TemplateUtility.GetTemplateId(file.FullName, nametype), file.FullName); - } - } - foreach (DirectoryInfo _dir in dir.GetDirectories()) - { - //如果文件夹是可见的 - if ((_dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) - { - RegisterTemplates(_dir, nametype); - } - } - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/TemplateUtility.cs b/J6/src/core/J6.DevFw.Template/old/TemplateUtility.cs deleted file mode 100644 index 4c9cd6f..0000000 --- a/J6/src/core/J6.DevFw.Template/old/TemplateUtility.cs +++ /dev/null @@ -1,252 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2011/06/05 -// - -using System; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using J6.DevFw.Template; - -namespace J6.DevFw.Template -{ - public sealed class TemplateUtility - { - internal static string Read(string templateID) - { - //从缓存中获取模板内容 - return TemplateCache.GetTemplateContent(templateID); - } - - /// - /// 使用模板引擎自带的压缩程序压缩代码 - /// - /// - /// - public static string CompressHtml(string html) - { - //html = Regex.Replace(html, ">(\\s)+<", "><"); - ////html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); - //html = Regex.Replace(html, "|\r|\n|\t|(\\s\\s)", String.Empty); - //return html; - - html = Regex.Replace(html, ">(\\s)+<", "><"); - - //替换 //单行注释 - html = Regex.Replace(html, "[\\s|\\t]+\\/\\/[^\\n]*(?=\\n)", String.Empty); - - //替换多行注释 - //const string multCommentPattern = ""; - html = Regex.Replace(html, "/\\*[^\\*]+\\*/", String.Empty); - - //替换 - html = Regex.Replace(html, "", String.Empty); - - //html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); - html = Regex.Replace(html, "\r|\n|\t|(\\s\\s)", String.Empty); - - return html; - } - - internal static string GetTemplateId(string filePath, TemplateNames nametype) - { - Match match = Regex.Match(filePath, "templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase); - if (String.IsNullOrEmpty(match.Value)) throw new Exception("模版页文件名:" + filePath + "不合法"); - - string fileName = match.Groups[2].Value; - if (!fileName.ToLower().EndsWith(".phtml") && nametype == TemplateNames.FileName) - { - string id = String.Format("{0}{1}", - match.Groups[1].Value, - match.Groups[2].Value) - .Replace('\\', '/'); - - return id.Substring(0, id.LastIndexOf('.')); - } - else - { - return MD5.EncodeTo16(Regex.Replace(fileName, "/|\\\\", String.Empty).ToLower()); - } - } - - /// - /// 获取部分模板的编号 - /// - /// - /// - /// - internal static string GetPartialTemplateID(string _path, string tmpPath, out string partialFilePath) - { - string _filepath = tmpPath; - string _filename = _path; - - // - // inc/header.html - // - - if (!_path.StartsWith("/")) - { - DirectoryInfo p_wrap = null, - p_par = null, - p_curr = new FileInfo(_filepath).Directory; - - - //exsample path: ../../inc/top.phtml - if (Regex.IsMatch(_path, "^\\.\\./")) - { - Regex pathRegex = new Regex("\\.\\./"); - int dirlayer = pathRegex.Matches(_path).Count; - _filename = pathRegex.Replace(_filename, String.Empty); - - int i = 0; - do - { - if (p_par != null) - { - p_wrap = p_par; - p_par = p_par.Parent; - } - else - { - p_par = p_curr.Parent; - } - - if (p_wrap != null) - { - p_curr = p_wrap; - } - } while (++i <= dirlayer); - - _filename = String.Format("{0}/{1}", p_curr.Name, _filename); - } - else - { - // - //exsample path: inc/top.phtml - // - - do - { - if (p_par != null) - { - p_wrap = p_par; - p_par = p_par.Parent; - } - else - { - p_par = p_curr.Parent; - } - - if (p_wrap != null) - { - p_curr = p_wrap; - } - - _filename = String.Format("{0}/{1}", p_curr.Name, _filename); - } while (String.Compare(p_par.Name, "templates", true) != 0); - } - } - - // - //TODO:测试 - // - partialFilePath = _filename; - - return MD5.EncodeTo16(Regex.Replace(_filename, "/|\\\\", String.Empty).ToLower()); - } - - /// - /// 显示模板信息到页面 - /// - public static void PrintTemplatesInfo() - { - string templateContent = Embed.SysTemplatePage; - StringBuilder sb = new StringBuilder(); - - sb.Append(@" - - - - - - "); - - Template tpl; - string tplFileName, tplContent; //模板文件名,内容 - int i = 0; - - foreach (string key in TemplateCache.templateDictionary.Keys) - { - tpl = TemplateCache.templateDictionary[key]; - tplFileName = - new Regex("templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase).Match(tpl.FilePath).Groups[2].Value - .Replace("\\", "/"); - tplContent = tpl.Content; - - sb.Append(""); -a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -btn.handler.call(_81); -}); -return a; -}; -if(_83.showPageList){ -var ps=$(""); -ps.bind("change",function(){ -_83.pageSize=parseInt($(this).val()); -_83.onChangePageSize.call(_81,_83.pageSize); -_88(_81,_83.pageNumber); -}); -for(var i=0;i<_83.pageList.length;i++){ -$("").text(_83.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -$("").appendTo(tr); -} -bb.first=_85("first"); -bb.prev=_85("prev"); -$("").appendTo(tr); -$("").html(_83.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _87=parseInt($(this).val())||1; -_88(_81,_87); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -$("").appendTo(tr); -bb.next=_85("next"); -bb.last=_85("last"); -if(_83.showRefresh){ -$("").appendTo(tr); -bb.refresh=_85("refresh"); -} -if(_83.buttons){ -$("").appendTo(tr); -if($.isArray(_83.buttons)){ -for(var i=0;i<_83.buttons.length;i++){ -var btn=_83.buttons[i]; -if(btn=="-"){ -$("").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(btn.handler||function(){ -}); -a.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_83.buttons).appendTo(td).show(); -} -} -$("
").appendTo(_84); -$("
").appendTo(_84); -}; -function _88(_89,_8a){ -var _8b=$.data(_89,"pagination").options; -_8c(_89,{pageNumber:_8a}); -_8b.onSelectPage.call(_89,_8b.pageNumber,_8b.pageSize); -}; -function _8c(_8d,_8e){ -var _8f=$.data(_8d,"pagination"); -var _90=_8f.options; -var bb=_8f.bb; -$.extend(_90,_8e||{}); -var ps=$(_8d).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_90.pageSize+""); -_90.pageSize=parseInt(ps.val()); -} -var _91=Math.ceil(_90.total/_90.pageSize)||1; -if(_90.pageNumber<1){ -_90.pageNumber=1; -} -if(_90.pageNumber>_91){ -_90.pageNumber=_91; -} -bb.num.val(_90.pageNumber); -bb.after.html(_90.afterPageText.replace(/{pages}/,_91)); -var _92=_90.displayMsg; -_92=_92.replace(/{from}/,_90.total==0?0:_90.pageSize*(_90.pageNumber-1)+1); -_92=_92.replace(/{to}/,Math.min(_90.pageSize*(_90.pageNumber),_90.total)); -_92=_92.replace(/{total}/,_90.total); -$(_8d).find("div.pagination-info").html(_92); -bb.first.add(bb.prev).linkbutton({disabled:(_90.pageNumber==1)}); -bb.next.add(bb.last).linkbutton({disabled:(_90.pageNumber==_91)}); -_93(_8d,_90.loading); -}; -function _93(_94,_95){ -var _96=$.data(_94,"pagination"); -var _97=_96.options; -var bb=_96.bb; -_97.loading=_95; -if(_97.showRefresh){ -_96.bb.refresh.linkbutton({iconCls:(_97.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_98,_99){ -if(typeof _98=="string"){ -return $.fn.pagination.methods[_98](this,_99); -} -_98=_98||{}; -return this.each(function(){ -var _9a; -var _9b=$.data(this,"pagination"); -if(_9b){ -_9a=$.extend(_9b.options,_98); -}else{ -_9a=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_98); -$.data(this,"pagination",{options:_9a}); -} -_80(this); -_8c(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_93(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_93(this,false); -}); -},refresh:function(jq,_9c){ -return jq.each(function(){ -_8c(this,_9c); -}); -},select:function(jq,_9d){ -return jq.each(function(){ -_88(this,_9d); -}); -}}; -$.fn.pagination.parseOptions=function(_9e){ -var t=$(_9e); -return $.extend({},$.parser.parseOptions(_9e,[{total:"number",pageSize:"number",pageNumber:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,onSelectPage:function(_9f,_a0){ -},onBeforeRefresh:function(_a1,_a2){ -},onRefresh:function(_a3,_a4){ -},onChangePageSize:function(_a5){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _a6=$(this).pagination("options"); -if(_a6.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _a7=$(this).pagination("options"); -if(_a7.pageNumber>1){ -$(this).pagination("select",_a7.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _a8=$(this).pagination("options"); -var _a9=Math.ceil(_a8.total/_a8.pageSize); -if(_a8.pageNumber<_a9){ -$(this).pagination("select",_a8.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _aa=$(this).pagination("options"); -var _ab=Math.ceil(_aa.total/_aa.pageSize); -if(_aa.pageNumber<_ab){ -$(this).pagination("select",_ab); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _ac=$(this).pagination("options"); -if(_ac.onBeforeRefresh.call(this,_ac.pageNumber,_ac.pageSize)!=false){ -$(this).pagination("select",_ac.pageNumber); -_ac.onRefresh.call(this,_ac.pageNumber,_ac.pageSize); -} -}}}}; -})(jQuery); -(function($){ -function _ad(_ae){ -var _af=$(_ae); -_af.addClass("tree"); -return _af; -}; -function _b0(_b1){ -var _b2=[]; -_b3(_b2,$(_b1)); -function _b3(aa,_b4){ -_b4.children("li").each(function(){ -var _b5=$(this); -var _b6=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_b5.attr("checked")?true:undefined)}); -_b6.text=_b5.children("span").html(); -if(!_b6.text){ -_b6.text=_b5.html(); -} -var _b7=_b5.children("ul"); -if(_b7.length){ -_b6.children=[]; -_b3(_b6.children,_b7); -} -aa.push(_b6); -}); -}; -return _b2; -}; -function _b8(_b9){ -var _ba=$.data(_b9,"tree").options; -$(_b9).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _bb=tt.closest("div.tree-node"); -if(!_bb.length){ -return; -} -_bb.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _bc=tt.closest("div.tree-node"); -if(!_bc.length){ -return; -} -_bc.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _bd=tt.closest("div.tree-node"); -if(!_bd.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_121(_b9,_bd[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_e5(_b9,_bd[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_162(_b9,_bd[0]); -_ba.onClick.call(_b9,_c0(_b9,_bd[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _be=$(e.target).closest("div.tree-node"); -if(!_be.length){ -return; -} -_162(_b9,_be[0]); -_ba.onDblClick.call(_b9,_c0(_b9,_be[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _bf=$(e.target).closest("div.tree-node"); -if(!_bf.length){ -return; -} -_ba.onContextMenu.call(_b9,e,_c0(_b9,_bf[0])); -e.stopPropagation(); -}); -}; -function _c1(_c2){ -var _c3=$(_c2).find("div.tree-node"); -_c3.draggable("disable"); -_c3.css("cursor","pointer"); -}; -function _c4(_c5){ -var _c6=$.data(_c5,"tree"); -var _c7=_c6.options; -var _c8=_c6.tree; -_c6.disabledNodes=[]; -_c8.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_c9){ -var p=$("
").appendTo("body"); -p.html(" "+$(_c9).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_c7.onBeforeDrag.call(_c5,_c0(_c5,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _ca=$(this).find("span.tree-indent"); -if(_ca.length){ -e.data.offsetWidth-=_ca.length*_ca.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_c7.onStartDrag.call(_c5,_c0(_c5,this)); -var _cb=_c0(_c5,this); -if(_cb.id==undefined){ -_cb.id="easyui_tree_node_id_temp"; -_15a(_c5,_cb); -} -_c6.draggingNodeId=_cb.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_c6.disabledNodes.length;i++){ -$(_c6.disabledNodes[i]).droppable("enable"); -} -_c6.disabledNodes=[]; -var _cc=_160(_c5,_c6.draggingNodeId); -if(_cc&&_cc.id=="easyui_tree_node_id_temp"){ -_cc.id=""; -_15a(_c5,_cc); -} -_c7.onStopDrag.call(_c5,_cc); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_cd){ -if(_c7.onDragEnter.call(_c5,this,_c0(_c5,_cd))==false){ -_ce(_cd,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_c6.disabledNodes.push(this); -} -},onDragOver:function(e,_cf){ -if($(this).droppable("options").disabled){ -return; -} -var _d0=_cf.pageY; -var top=$(this).offset().top; -var _d1=top+$(this).outerHeight(); -_ce(_cf,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_d0>top+(_d1-top)/2){ -if(_d1-_d0<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_d0-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_c7.onDragOver.call(_c5,this,_c0(_c5,_cf))==false){ -_ce(_cf,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_c6.disabledNodes.push(this); -} -},onDragLeave:function(e,_d2){ -_ce(_d2,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_c7.onDragLeave.call(_c5,this,_c0(_c5,_d2)); -},onDrop:function(e,_d3){ -var _d4=this; -var _d5,_d6; -if($(this).hasClass("tree-node-append")){ -_d5=_d7; -_d6="append"; -}else{ -_d5=_d8; -_d6=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_c7.onBeforeDrop.call(_c5,_d4,_154(_c5,_d3),_d6)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_d5(_d3,_d4,_d6); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _ce(_d9,_da){ -var _db=$(_d9).draggable("proxy").find("span.tree-dnd-icon"); -_db.removeClass("tree-dnd-yes tree-dnd-no").addClass(_da?"tree-dnd-yes":"tree-dnd-no"); -}; -function _d7(_dc,_dd){ -if(_c0(_c5,_dd).state=="closed"){ -_119(_c5,_dd,function(){ -_de(); -}); -}else{ -_de(); -} -function _de(){ -var _df=$(_c5).tree("pop",_dc); -$(_c5).tree("append",{parent:_dd,data:[_df]}); -_c7.onDrop.call(_c5,_dd,_df,"append"); -}; -}; -function _d8(_e0,_e1,_e2){ -var _e3={}; -if(_e2=="top"){ -_e3.before=_e1; -}else{ -_e3.after=_e1; -} -var _e4=$(_c5).tree("pop",_e0); -_e3.data=_e4; -$(_c5).tree("insert",_e3); -_c7.onDrop.call(_c5,_e1,_e4,_e2); -}; -}; -function _e5(_e6,_e7,_e8){ -var _e9=$.data(_e6,"tree").options; -if(!_e9.checkbox){ -return; -} -var _ea=_c0(_e6,_e7); -if(_e9.onBeforeCheck.call(_e6,_ea,_e8)==false){ -return; -} -var _eb=$(_e7); -var ck=_eb.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_e8){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_e9.cascadeCheck){ -_ec(_eb); -_ed(_eb); -} -_e9.onCheck.call(_e6,_ea,_e8); -function _ed(_ee){ -var _ef=_ee.next().find(".tree-checkbox"); -_ef.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_ee.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_ef.addClass("tree-checkbox1"); -}else{ -_ef.addClass("tree-checkbox0"); -} -}; -function _ec(_f0){ -var _f1=_12c(_e6,_f0[0]); -if(_f1){ -var ck=$(_f1.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_f2(_f0)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_f3(_f0)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_ec($(_f1.target)); -} -function _f2(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _f3(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _f4(_f5,_f6){ -var _f7=$.data(_f5,"tree").options; -var _f8=$(_f6); -if(_f9(_f5,_f6)){ -var ck=_f8.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_e5(_f5,_f6,true); -}else{ -_e5(_f5,_f6,false); -} -}else{ -if(_f7.onlyLeafCheck){ -$("").insertBefore(_f8.find(".tree-title")); -} -} -}else{ -var ck=_f8.find(".tree-checkbox"); -if(_f7.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_e5(_f5,_f6,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _fa=true; -var _fb=true; -var _fc=_fd(_f5,_f6); -for(var i=0;i<_fc.length;i++){ -if(_fc[i].checked){ -_fb=false; -}else{ -_fa=false; -} -} -if(_fa){ -_e5(_f5,_f6,true); -} -if(_fb){ -_e5(_f5,_f6,false); -} -} -} -} -} -}; -function _fe(_ff,ul,data,_100){ -var opts=$.data(_ff,"tree").options; -data=opts.loadFilter.call(_ff,data,$(ul).prev("div.tree-node")[0]); -if(!_100){ -$(ul).empty(); -} -var _101=[]; -var _102=[]; -var _103=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_104(ul,data,_103); -if(opts.dnd){ -_c4(_ff); -}else{ -_c1(_ff); -} -if(_101.length){ -_e5(_ff,_101[0],false); -} -for(var i=0;i<_102.length;i++){ -_e5(_ff,_102[i],true); -} -setTimeout(function(){ -_109(_ff,_ff); -},0); -var _105=null; -if(_ff!=ul){ -var node=$(ul).prev(); -_105=_c0(_ff,node[0]); -} -opts.onLoadSuccess.call(_ff,_105,data); -function _104(ul,_106,_107){ -for(var i=0;i<_106.length;i++){ -var li=$("
  • ").appendTo(ul); -var item=_106[i]; -if(item.state!="open"&&item.state!="closed"){ -item.state="open"; -} -var node=$("
    ").appendTo(li); -node.attr("node-id",item.id); -$.data(node[0],"tree-node",{id:item.id,text:item.text,iconCls:item.iconCls,attributes:item.attributes}); -$("").html(opts.formatter.call(_ff,item)).appendTo(node); -if(opts.checkbox){ -if(opts.onlyLeafCheck){ -if(item.state=="open"&&(!item.children||!item.children.length)){ -if(item.checked){ -$("").prependTo(node); -}else{ -$("").prependTo(node); -} -} -}else{ -if(item.checked){ -$("").prependTo(node); -_102.push(node[0]); -}else{ -$("").prependTo(node); -if(_106==data){ -_101.push(node[0]); -} -} -} -} -if(item.children&&item.children.length){ -var _108=$("
      ").appendTo(li); -if(item.state=="open"){ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -}else{ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -_108.css("display","none"); -} -_104(_108,item.children,_107+1); -}else{ -if(item.state=="closed"){ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -}else{ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -} -} -for(var j=0;j<_107;j++){ -$("").prependTo(node); -} -} -}; -}; -function _109(_10a,ul,_10b){ -var opts=$.data(_10a,"tree").options; -if(!opts.lines){ -return; -} -if(!_10b){ -_10b=true; -$(_10a).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_10a).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _10c=$(_10a).tree("getRoots"); -if(_10c.length>1){ -$(_10c[0].target).addClass("tree-root-first"); -}else{ -if(_10c.length==1){ -$(_10c[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var node=$(this).children("div.tree-node"); -var ul=node.next("ul"); -if(ul.length){ -if($(this).next().length){ -_10d(node); -} -_109(_10a,ul,_10b); -}else{ -_10e(node); -} -}); -var _10f=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_10f.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _10e(node,_110){ -var icon=node.find("span.tree-icon"); -icon.prev("span.tree-indent").addClass("tree-join"); -}; -function _10d(node){ -var _111=node.find("span.tree-indent, span.tree-hit").length; -node.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_111-1)+")").addClass("tree-line"); -}); -}; -}; -function _112(_113,ul,_114,_115){ -var opts=$.data(_113,"tree").options; -_114=_114||{}; -var _116=null; -if(_113!=ul){ -var node=$(ul).prev(); -_116=_c0(_113,node[0]); -} -if(opts.onBeforeLoad.call(_113,_116,_114)==false){ -return; -} -var _117=$(ul).prev().children("span.tree-folder"); -_117.addClass("tree-loading"); -var _118=opts.loader.call(_113,_114,function(data){ -_117.removeClass("tree-loading"); -_fe(_113,ul,data); -if(_115){ -_115(); -} -},function(){ -_117.removeClass("tree-loading"); -opts.onLoadError.apply(_113,arguments); -if(_115){ -_115(); -} -}); -if(_118==false){ -_117.removeClass("tree-loading"); -} -}; -function _119(_11a,_11b,_11c){ -var opts=$.data(_11a,"tree").options; -var hit=$(_11b).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var node=_c0(_11a,_11b); -if(opts.onBeforeExpand.call(_11a,node)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_11b).next(); -if(ul.length){ -if(opts.animate){ -ul.slideDown("normal",function(){ -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -}); -}else{ -ul.css("display","block"); -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -} -}else{ -var _11d=$("
        ").insertAfter(_11b); -_112(_11a,_11d[0],{id:node.id},function(){ -if(_11d.is(":empty")){ -_11d.remove(); -} -if(opts.animate){ -_11d.slideDown("normal",function(){ -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -}); -}else{ -_11d.css("display","block"); -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -} -}); -} -}; -function _11e(_11f,_120){ -var opts=$.data(_11f,"tree").options; -var hit=$(_120).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var node=_c0(_11f,_120); -if(opts.onBeforeCollapse.call(_11f,node)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_120).next(); -if(opts.animate){ -ul.slideUp("normal",function(){ -opts.onCollapse.call(_11f,node); -}); -}else{ -ul.css("display","none"); -opts.onCollapse.call(_11f,node); -} -}; -function _121(_122,_123){ -var hit=$(_123).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_11e(_122,_123); -}else{ -_119(_122,_123); -} -}; -function _124(_125,_126){ -var _127=_fd(_125,_126); -if(_126){ -_127.unshift(_c0(_125,_126)); -} -for(var i=0;i<_127.length;i++){ -_119(_125,_127[i].target); -} -}; -function _128(_129,_12a){ -var _12b=[]; -var p=_12c(_129,_12a); -while(p){ -_12b.unshift(p); -p=_12c(_129,p.target); -} -for(var i=0;i<_12b.length;i++){ -_119(_129,_12b[i].target); -} -}; -function _12d(_12e,_12f){ -var c=$(_12e).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_12f); -var ntop=n.offset().top; -if(c[0].tagName!="BODY"){ -var ctop=c.offset().top; -if(ntopctop+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(ntop); -} -}; -function _130(_131,_132){ -var _133=_fd(_131,_132); -if(_132){ -_133.unshift(_c0(_131,_132)); -} -for(var i=0;i<_133.length;i++){ -_11e(_131,_133[i].target); -} -}; -function _134(_135){ -var _136=_137(_135); -if(_136.length){ -return _136[0]; -}else{ -return null; -} -}; -function _137(_138){ -var _139=[]; -$(_138).children("li").each(function(){ -var node=$(this).children("div.tree-node"); -_139.push(_c0(_138,node[0])); -}); -return _139; -}; -function _fd(_13a,_13b){ -var _13c=[]; -if(_13b){ -_13d($(_13b)); -}else{ -var _13e=_137(_13a); -for(var i=0;i<_13e.length;i++){ -_13c.push(_13e[i]); -_13d($(_13e[i].target)); -} -} -function _13d(node){ -node.next().find("div.tree-node").each(function(){ -_13c.push(_c0(_13a,this)); -}); -}; -return _13c; -}; -function _12c(_13f,_140){ -var ul=$(_140).parent().parent(); -if(ul[0]==_13f){ -return null; -}else{ -return _c0(_13f,ul.prev()[0]); -} -}; -function _141(_142,_143){ -_143=_143||"checked"; -if(!$.isArray(_143)){ -_143=[_143]; -} -var _144=[]; -for(var i=0;i<_143.length;i++){ -var s=_143[i]; -if(s=="checked"){ -_144.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_144.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_144.push("span.tree-checkbox2"); -} -} -} -} -var _145=[]; -$(_142).find(_144.join(",")).each(function(){ -var node=$(this).parent(); -_145.push(_c0(_142,node[0])); -}); -return _145; -}; -function _146(_147){ -var node=$(_147).find("div.tree-node-selected"); -if(node.length){ -return _c0(_147,node[0]); -}else{ -return null; -} -}; -function _148(_149,_14a){ -var node=$(_14a.parent); -var data=_14a.data; -if(!data){ -return; -} -data=$.isArray(data)?data:[data]; -if(!data.length){ -return; -} -var ul; -if(node.length==0){ -ul=$(_149); -}else{ -if(_f9(_149,node[0])){ -var _14b=node.find("span.tree-icon"); -_14b.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_14b); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=node.next(); -if(!ul.length){ -ul=$("
          ").insertAfter(node); -} -} -_fe(_149,ul[0],data,true); -_f4(_149,ul.prev()); -}; -function _14c(_14d,_14e){ -var ref=_14e.before||_14e.after; -var _14f=_12c(_14d,ref); -var data=_14e.data; -if(!data){ -return; -} -data=$.isArray(data)?data:[data]; -if(!data.length){ -return; -} -_148(_14d,{parent:(_14f?_14f.target:null),data:data}); -var li=$(); -var last=_14f?$(_14f.target).next().children("li:last"):$(_14d).children("li:last"); -for(var i=0;i").prependTo(node); -if(ul[0]!=_151){ -ul.remove(); -} -} -if(_153){ -_f4(_151,_153.target); -} -_109(_151,_151); -}; -function _154(_155,_156){ -function _157(aa,ul){ -ul.children("li").each(function(){ -var node=$(this).children("div.tree-node"); -var _158=_c0(_155,node[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_158.children=[]; -_157(_158.children,sub); -} -aa.push(_158); -}); -}; -if(_156){ -var _159=_c0(_155,_156); -_159.children=[]; -_157(_159.children,$(_156).next()); -return _159; -}else{ -return null; -} -}; -function _15a(_15b,_15c){ -var opts=$.data(_15b,"tree").options; -var node=$(_15c.target); -var _15d=_c0(_15b,_15c.target); -if(_15d.iconCls){ -node.find(".tree-icon").removeClass(_15d.iconCls); -} -var data=$.extend({},_15d,_15c); -$.data(_15c.target,"tree-node",data); -node.attr("node-id",data.id); -node.find(".tree-title").html(opts.formatter.call(_15b,data)); -if(data.iconCls){ -node.find(".tree-icon").addClass(data.iconCls); -} -if(_15d.checked!=data.checked){ -_e5(_15b,_15c.target,data.checked); -} -}; -function _c0(_15e,_15f){ -var node=$.extend({},$.data(_15f,"tree-node"),{target:_15f,checked:$(_15f).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_f9(_15e,_15f)){ -node.state=$(_15f).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return node; -}; -function _160(_161,id){ -var node=$(_161).find("div.tree-node[node-id=\""+id+"\"]"); -if(node.length){ -return _c0(_161,node[0]); -}else{ -return null; -} -}; -function _162(_163,_164){ -var opts=$.data(_163,"tree").options; -var node=_c0(_163,_164); -if(opts.onBeforeSelect.call(_163,node)==false){ -return; -} -$("div.tree-node-selected",_163).removeClass("tree-node-selected"); -$(_164).addClass("tree-node-selected"); -opts.onSelect.call(_163,node); -}; -function _f9(_165,_166){ -var node=$(_166); -var hit=node.children("span.tree-hit"); -return hit.length==0; -}; -function _167(_168,_169){ -var opts=$.data(_168,"tree").options; -var node=_c0(_168,_169); -if(opts.onBeforeEdit.call(_168,node)==false){ -return; -} -$(_169).css("position","relative"); -var nt=$(_169).find(".tree-title"); -var _16a=nt.outerWidth(); -nt.empty(); -var _16b=$("").appendTo(nt); -_16b.val(node.text).focus(); -_16b.width(_16a+20); -_16b.height(document.compatMode=="CSS1Compat"?(18-(_16b.outerHeight()-_16b.height())):18); -_16b.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_16c(_168,_169); -return false; -}else{ -if(e.keyCode==27){ -_170(_168,_169); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_16c(_168,_169); -}); -}; -function _16c(_16d,_16e){ -var opts=$.data(_16d,"tree").options; -$(_16e).css("position",""); -var _16f=$(_16e).find("input.tree-editor"); -var val=_16f.val(); -_16f.remove(); -var node=_c0(_16d,_16e); -node.text=val; -_15a(_16d,node); -opts.onAfterEdit.call(_16d,node); -}; -function _170(_171,_172){ -var opts=$.data(_171,"tree").options; -$(_172).css("position",""); -$(_172).find("input.tree-editor").remove(); -var node=_c0(_171,_172); -_15a(_171,node); -opts.onCancelEdit.call(_171,node); -}; -$.fn.tree=function(_173,_174){ -if(typeof _173=="string"){ -return $.fn.tree.methods[_173](this,_174); -} -var _173=_173||{}; -return this.each(function(){ -var _175=$.data(this,"tree"); -var opts; -if(_175){ -opts=$.extend(_175.options,_173); -_175.options=opts; -}else{ -opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_173); -$.data(this,"tree",{options:opts,tree:_ad(this)}); -var data=_b0(this); -if(data.length&&!opts.data){ -opts.data=data; -} -} -_b8(this); -if(opts.lines){ -$(this).addClass("tree-lines"); -} -if(opts.data){ -_fe(this,this,opts.data); -}else{ -if(opts.dnd){ -_c4(this); -}else{ -_c1(this); -} -} -_112(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,data){ -return jq.each(function(){ -_fe(this,this,data); -}); -},getNode:function(jq,_176){ -return _c0(jq[0],_176); -},getData:function(jq,_177){ -return _154(jq[0],_177); -},reload:function(jq,_178){ -return jq.each(function(){ -if(_178){ -var node=$(_178); -var hit=node.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -node.next().remove(); -_119(this,_178); -}else{ -$(this).empty(); -_112(this,this); -} -}); -},getRoot:function(jq){ -return _134(jq[0]); -},getRoots:function(jq){ -return _137(jq[0]); -},getParent:function(jq,_179){ -return _12c(jq[0],_179); -},getChildren:function(jq,_17a){ -return _fd(jq[0],_17a); -},getChecked:function(jq,_17b){ -return _141(jq[0],_17b); -},getSelected:function(jq){ -return _146(jq[0]); -},isLeaf:function(jq,_17c){ -return _f9(jq[0],_17c); -},find:function(jq,id){ -return _160(jq[0],id); -},select:function(jq,_17d){ -return jq.each(function(){ -_162(this,_17d); -}); -},check:function(jq,_17e){ -return jq.each(function(){ -_e5(this,_17e,true); -}); -},uncheck:function(jq,_17f){ -return jq.each(function(){ -_e5(this,_17f,false); -}); -},collapse:function(jq,_180){ -return jq.each(function(){ -_11e(this,_180); -}); -},expand:function(jq,_181){ -return jq.each(function(){ -_119(this,_181); -}); -},collapseAll:function(jq,_182){ -return jq.each(function(){ -_130(this,_182); -}); -},expandAll:function(jq,_183){ -return jq.each(function(){ -_124(this,_183); -}); -},expandTo:function(jq,_184){ -return jq.each(function(){ -_128(this,_184); -}); -},scrollTo:function(jq,_185){ -return jq.each(function(){ -_12d(this,_185); -}); -},toggle:function(jq,_186){ -return jq.each(function(){ -_121(this,_186); -}); -},append:function(jq,_187){ -return jq.each(function(){ -_148(this,_187); -}); -},insert:function(jq,_188){ -return jq.each(function(){ -_14c(this,_188); -}); -},remove:function(jq,_189){ -return jq.each(function(){ -_150(this,_189); -}); -},pop:function(jq,_18a){ -var node=jq.tree("getData",_18a); -jq.tree("remove",_18a); -return node; -},update:function(jq,_18b){ -return jq.each(function(){ -_15a(this,_18b); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_c4(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_c1(this); -}); -},beginEdit:function(jq,_18c){ -return jq.each(function(){ -_167(this,_18c); -}); -},endEdit:function(jq,_18d){ -return jq.each(function(){ -_16c(this,_18d); -}); -},cancelEdit:function(jq,_18e){ -return jq.each(function(){ -_170(this,_18e); -}); -}}; -$.fn.tree.parseOptions=function(_18f){ -var t=$(_18f); -return $.extend({},$.parser.parseOptions(_18f,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_190,_191,_192){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_190,dataType:"json",success:function(data){ -_191(data); -},error:function(){ -_192.apply(this,arguments); -}}); -},loadFilter:function(data,_193){ -return data; -},onBeforeLoad:function(node,_194){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_195){ -},onCheck:function(node,_196){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_197,_198){ -},onDragOver:function(_199,_19a){ -},onDragLeave:function(_19b,_19c){ -},onBeforeDrop:function(_19d,_19e,_19f){ -},onDrop:function(_1a0,_1a1,_1a2){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); -(function($){ -function init(_1a3){ -$(_1a3).addClass("progressbar"); -$(_1a3).html("
          "); -return $(_1a3); -}; -function _1a4(_1a5,_1a6){ -var opts=$.data(_1a5,"progressbar").options; -var bar=$.data(_1a5,"progressbar").bar; -if(_1a6){ -opts.width=_1a6; -} -bar._outerWidth(opts.width)._outerHeight(opts.height); -bar.find("div.progressbar-text").width(bar.width()); -bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); -}; -$.fn.progressbar=function(_1a7,_1a8){ -if(typeof _1a7=="string"){ -var _1a9=$.fn.progressbar.methods[_1a7]; -if(_1a9){ -return _1a9(this,_1a8); -} -} -_1a7=_1a7||{}; -return this.each(function(){ -var _1aa=$.data(this,"progressbar"); -if(_1aa){ -$.extend(_1aa.options,_1a7); -}else{ -_1aa=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1a7),bar:init(this)}); -} -$(this).progressbar("setValue",_1aa.options.value); -_1a4(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_1ab){ -return jq.each(function(){ -_1a4(this,_1ab); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_1ac){ -if(_1ac<0){ -_1ac=0; -} -if(_1ac>100){ -_1ac=100; -} -return jq.each(function(){ -var opts=$.data(this,"progressbar").options; -var text=opts.text.replace(/{value}/,_1ac); -var _1ad=opts.value; -opts.value=_1ac; -$(this).find("div.progressbar-value").width(_1ac+"%"); -$(this).find("div.progressbar-text").html(text); -if(_1ad!=_1ac){ -opts.onChange.call(this,_1ac,_1ad); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_1ae){ -return $.extend({},$.parser.parseOptions(_1ae,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1af,_1b0){ -}}; -})(jQuery); -(function($){ -function init(_1b1){ -$(_1b1).addClass("tooltip-f"); -}; -function _1b2(_1b3){ -var opts=$.data(_1b3,"tooltip").options; -$(_1b3).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ -_1ba(_1b3,e); -}).bind(opts.hideEvent+".tooltip",function(e){ -_1c0(_1b3,e); -}).bind("mousemove.tooltip",function(e){ -if(opts.trackMouse){ -opts.trackMouseX=e.pageX; -opts.trackMouseY=e.pageY; -_1b4(_1b3); -} -}); -}; -function _1b5(_1b6){ -var _1b7=$.data(_1b6,"tooltip"); -if(_1b7.showTimer){ -clearTimeout(_1b7.showTimer); -_1b7.showTimer=null; -} -if(_1b7.hideTimer){ -clearTimeout(_1b7.hideTimer); -_1b7.hideTimer=null; -} -}; -function _1b4(_1b8){ -var _1b9=$.data(_1b8,"tooltip"); -if(!_1b9||!_1b9.tip){ -return; -} -var opts=_1b9.options; -var tip=_1b9.tip; -if(opts.trackMouse){ -t=$(); -var left=opts.trackMouseX+opts.deltaX; -var top=opts.trackMouseY+opts.deltaY; -}else{ -var t=$(_1b8); -var left=t.offset().left+opts.deltaX; -var top=t.offset().top+opts.deltaY; -} -switch(opts.position){ -case "right": -left+=t._outerWidth()+12+(opts.trackMouse?12:0); -top-=(tip._outerHeight()-t._outerHeight())/2; -break; -case "left": -left-=tip._outerWidth()+12+(opts.trackMouse?12:0); -top-=(tip._outerHeight()-t._outerHeight())/2; -break; -case "top": -left-=(tip._outerWidth()-t._outerWidth())/2; -top-=tip._outerHeight()+12+(opts.trackMouse?12:0); -break; -case "bottom": -left-=(tip._outerWidth()-t._outerWidth())/2; -top+=t._outerHeight()+12+(opts.trackMouse?12:0); -break; -} -tip.css({left:left,top:top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); -opts.onPosition.call(_1b8,left,top); -}; -function _1ba(_1bb,e){ -var _1bc=$.data(_1bb,"tooltip"); -var opts=_1bc.options; -var tip=_1bc.tip; -if(!tip){ -tip=$("
          "+"
          "+"
          "+"
          "+"
          ").appendTo("body"); -_1bc.tip=tip; -_1bd(_1bb); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); -_1b5(_1bb); -_1bc.showTimer=setTimeout(function(){ -_1b4(_1bb); -tip.show(); -opts.onShow.call(_1bb,e); -var _1be=tip.children(".tooltip-arrow-outer"); -var _1bf=tip.children(".tooltip-arrow"); -var bc="border-"+opts.position+"-color"; -_1be.add(_1bf).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_1be.css(bc,tip.css(bc)); -_1bf.css(bc,tip.css("backgroundColor")); -},opts.showDelay); -}; -function _1c0(_1c1,e){ -var _1c2=$.data(_1c1,"tooltip"); -if(_1c2&&_1c2.tip){ -_1b5(_1c1); -_1c2.hideTimer=setTimeout(function(){ -_1c2.tip.hide(); -_1c2.options.onHide.call(_1c1,e); -},_1c2.options.hideDelay); -} -}; -function _1bd(_1c3,_1c4){ -var _1c5=$.data(_1c3,"tooltip"); -var opts=_1c5.options; -if(_1c4){ -opts.content=_1c4; -} -if(!_1c5.tip){ -return; -} -var cc=typeof opts.content=="function"?opts.content.call(_1c3):opts.content; -_1c5.tip.children(".tooltip-content").html(cc); -opts.onUpdate.call(_1c3,cc); -}; -function _1c6(_1c7){ -var _1c8=$.data(_1c7,"tooltip"); -if(_1c8){ -_1b5(_1c7); -var opts=_1c8.options; -if(_1c8.tip){ -_1c8.tip.remove(); -} -if(opts._title){ -$(_1c7).attr("title",opts._title); -} -$.removeData(_1c7,"tooltip"); -$(_1c7).unbind(".tooltip").removeClass("tooltip-f"); -opts.onDestroy.call(_1c7); -} -}; -$.fn.tooltip=function(_1c9,_1ca){ -if(typeof _1c9=="string"){ -return $.fn.tooltip.methods[_1c9](this,_1ca); -} -_1c9=_1c9||{}; -return this.each(function(){ -var _1cb=$.data(this,"tooltip"); -if(_1cb){ -$.extend(_1cb.options,_1c9); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_1c9)}); -init(this); -} -_1b2(this); -_1bd(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_1ba(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_1c0(this,e); -}); -},update:function(jq,_1cc){ -return jq.each(function(){ -_1bd(this,_1cc); -}); -},reposition:function(jq){ -return jq.each(function(){ -_1b4(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1c6(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_1cd){ -var t=$(_1cd); -var opts=$.extend({},$.parser.parseOptions(_1cd,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!opts.content){ -opts.content=opts._title; -} -return opts; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_1ce){ -},onPosition:function(left,top){ -},onDestroy:function(){ -}}; -})(jQuery); -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1cf(node){ -node._remove(); -}; -function _1d0(_1d1,_1d2){ -var opts=$.data(_1d1,"panel").options; -var _1d3=$.data(_1d1,"panel").panel; -var _1d4=_1d3.children("div.panel-header"); -var _1d5=_1d3.children("div.panel-body"); -if(_1d2){ -if(_1d2.width){ -opts.width=_1d2.width; -} -if(_1d2.height){ -opts.height=_1d2.height; -} -if(_1d2.left!=null){ -opts.left=_1d2.left; -} -if(_1d2.top!=null){ -opts.top=_1d2.top; -} -} -opts.fit?$.extend(opts,_1d3._fit()):_1d3._fit(false); -_1d3.css({left:opts.left,top:opts.top}); -if(!isNaN(opts.width)){ -_1d3._outerWidth(opts.width); -}else{ -_1d3.width("auto"); -} -_1d4.add(_1d5)._outerWidth(_1d3.width()); -if(!isNaN(opts.height)){ -_1d3._outerHeight(opts.height); -_1d5._outerHeight(_1d3.height()-_1d4._outerHeight()); -}else{ -_1d5.height("auto"); -} -_1d3.css("height",""); -opts.onResize.apply(_1d1,[opts.width,opts.height]); -_1d3.find(">div.panel-body>div").triggerHandler("_resize"); -}; -function _1d6(_1d7,_1d8){ -var opts=$.data(_1d7,"panel").options; -var _1d9=$.data(_1d7,"panel").panel; -if(_1d8){ -if(_1d8.left!=null){ -opts.left=_1d8.left; -} -if(_1d8.top!=null){ -opts.top=_1d8.top; -} -} -_1d9.css({left:opts.left,top:opts.top}); -opts.onMove.apply(_1d7,[opts.left,opts.top]); -}; -function _1da(_1db){ -$(_1db).addClass("panel-body"); -var _1dc=$("
          ").insertBefore(_1db); -_1dc[0].appendChild(_1db); -_1dc.bind("_resize",function(){ -var opts=$.data(_1db,"panel").options; -if(opts.fit==true){ -_1d0(_1db); -} -return false; -}); -return _1dc; -}; -function _1dd(_1de){ -var opts=$.data(_1de,"panel").options; -var _1df=$.data(_1de,"panel").panel; -if(opts.tools&&typeof opts.tools=="string"){ -_1df.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(opts.tools); -} -_1cf(_1df.children("div.panel-header")); -if(opts.title&&!opts.noheader){ -var _1e0=$("
          "+opts.title+"
          ").prependTo(_1df); -if(opts.iconCls){ -_1e0.find(".panel-title").addClass("panel-with-icon"); -$("
          ").addClass(opts.iconCls).appendTo(_1e0); -} -var tool=$("
          ").appendTo(_1e0); -tool.bind("click",function(e){ -e.stopPropagation(); -}); -if(opts.tools){ -if(typeof opts.tools=="string"){ -$(opts.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); -}); -}else{ -for(var i=0;i").addClass(opts.tools[i].iconCls).appendTo(tool); -if(opts.tools[i].handler){ -t.bind("click",eval(opts.tools[i].handler)); -} -} -} -} -if(opts.collapsible){ -$("").appendTo(tool).bind("click",function(){ -if(opts.collapsed==true){ -_1fb(_1de,true); -}else{ -_1f0(_1de,true); -} -return false; -}); -} -if(opts.minimizable){ -$("").appendTo(tool).bind("click",function(){ -_201(_1de); -return false; -}); -} -if(opts.maximizable){ -$("").appendTo(tool).bind("click",function(){ -if(opts.maximized==true){ -_204(_1de); -}else{ -_1ef(_1de); -} -return false; -}); -} -if(opts.closable){ -$("").appendTo(tool).bind("click",function(){ -_1e1(_1de); -return false; -}); -} -_1df.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_1df.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1e2(_1e3){ -var _1e4=$.data(_1e3,"panel"); -var opts=_1e4.options; -if(opts.href){ -if(!_1e4.isLoaded||!opts.cache){ -if(opts.onBeforeLoad.call(_1e3)==false){ -return; -} -_1e4.isLoaded=false; -_1e5(_1e3); -if(opts.loadingMessage){ -$(_1e3).html($("
          ").html(opts.loadingMessage)); -} -$.ajax({url:opts.href,cache:false,dataType:"html",success:function(data){ -_1e6(opts.extractor.call(_1e3,data)); -opts.onLoad.apply(_1e3,arguments); -_1e4.isLoaded=true; -}}); -} -}else{ -if(opts.content){ -if(!_1e4.isLoaded){ -_1e5(_1e3); -_1e6(opts.content); -_1e4.isLoaded=true; -} -} -} -function _1e6(_1e7){ -$(_1e3).html(_1e7); -if($.parser){ -$.parser.parse($(_1e3)); -} -}; -}; -function _1e5(_1e8){ -var t=$(_1e8); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").tooltip("destroy"); -}; -function _1e9(_1ea){ -$(_1ea).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _1eb(_1ec,_1ed){ -var opts=$.data(_1ec,"panel").options; -var _1ee=$.data(_1ec,"panel").panel; -if(_1ed!=true){ -if(opts.onBeforeOpen.call(_1ec)==false){ -return; -} -} -_1ee.show(); -opts.closed=false; -opts.minimized=false; -var tool=_1ee.children("div.panel-header").find("a.panel-tool-restore"); -if(tool.length){ -opts.maximized=true; -} -opts.onOpen.call(_1ec); -if(opts.maximized==true){ -opts.maximized=false; -_1ef(_1ec); -} -if(opts.collapsed==true){ -opts.collapsed=false; -_1f0(_1ec); -} -if(!opts.collapsed){ -_1e2(_1ec); -_1e9(_1ec); -} -}; -function _1e1(_1f1,_1f2){ -var opts=$.data(_1f1,"panel").options; -var _1f3=$.data(_1f1,"panel").panel; -if(_1f2!=true){ -if(opts.onBeforeClose.call(_1f1)==false){ -return; -} -} -_1f3._fit(false); -_1f3.hide(); -opts.closed=true; -opts.onClose.call(_1f1); -}; -function _1f4(_1f5,_1f6){ -var opts=$.data(_1f5,"panel").options; -var _1f7=$.data(_1f5,"panel").panel; -if(_1f6!=true){ -if(opts.onBeforeDestroy.call(_1f5)==false){ -return; -} -} -_1e5(_1f5); -_1cf(_1f7); -opts.onDestroy.call(_1f5); -}; -function _1f0(_1f8,_1f9){ -var opts=$.data(_1f8,"panel").options; -var _1fa=$.data(_1f8,"panel").panel; -var body=_1fa.children("div.panel-body"); -var tool=_1fa.children("div.panel-header").find("a.panel-tool-collapse"); -if(opts.collapsed==true){ -return; -} -body.stop(true,true); -if(opts.onBeforeCollapse.call(_1f8)==false){ -return; -} -tool.addClass("panel-tool-expand"); -if(_1f9==true){ -body.slideUp("normal",function(){ -opts.collapsed=true; -opts.onCollapse.call(_1f8); -}); -}else{ -body.hide(); -opts.collapsed=true; -opts.onCollapse.call(_1f8); -} -}; -function _1fb(_1fc,_1fd){ -var opts=$.data(_1fc,"panel").options; -var _1fe=$.data(_1fc,"panel").panel; -var body=_1fe.children("div.panel-body"); -var tool=_1fe.children("div.panel-header").find("a.panel-tool-collapse"); -if(opts.collapsed==false){ -return; -} -body.stop(true,true); -if(opts.onBeforeExpand.call(_1fc)==false){ -return; -} -tool.removeClass("panel-tool-expand"); -if(_1fd==true){ -body.slideDown("normal",function(){ -opts.collapsed=false; -opts.onExpand.call(_1fc); -_1e2(_1fc); -_1e9(_1fc); -}); -}else{ -body.show(); -opts.collapsed=false; -opts.onExpand.call(_1fc); -_1e2(_1fc); -_1e9(_1fc); -} -}; -function _1ef(_1ff){ -var opts=$.data(_1ff,"panel").options; -var _200=$.data(_1ff,"panel").panel; -var tool=_200.children("div.panel-header").find("a.panel-tool-max"); -if(opts.maximized==true){ -return; -} -tool.addClass("panel-tool-restore"); -if(!$.data(_1ff,"panel").original){ -$.data(_1ff,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; -} -opts.left=0; -opts.top=0; -opts.fit=true; -_1d0(_1ff); -opts.minimized=false; -opts.maximized=true; -opts.onMaximize.call(_1ff); -}; -function _201(_202){ -var opts=$.data(_202,"panel").options; -var _203=$.data(_202,"panel").panel; -_203._fit(false); -_203.hide(); -opts.minimized=true; -opts.maximized=false; -opts.onMinimize.call(_202); -}; -function _204(_205){ -var opts=$.data(_205,"panel").options; -var _206=$.data(_205,"panel").panel; -var tool=_206.children("div.panel-header").find("a.panel-tool-max"); -if(opts.maximized==false){ -return; -} -_206.show(); -tool.removeClass("panel-tool-restore"); -$.extend(opts,$.data(_205,"panel").original); -_1d0(_205); -opts.minimized=false; -opts.maximized=false; -$.data(_205,"panel").original=null; -opts.onRestore.call(_205); -}; -function _207(_208){ -var opts=$.data(_208,"panel").options; -var _209=$.data(_208,"panel").panel; -var _20a=$(_208).panel("header"); -var body=$(_208).panel("body"); -_209.css(opts.style); -_209.addClass(opts.cls); -if(opts.border){ -_20a.removeClass("panel-header-noborder"); -body.removeClass("panel-body-noborder"); -}else{ -_20a.addClass("panel-header-noborder"); -body.addClass("panel-body-noborder"); -} -_20a.addClass(opts.headerCls); -body.addClass(opts.bodyCls); -if(opts.id){ -$(_208).attr("id",opts.id); -}else{ -$(_208).attr("id",""); -} -}; -function _20b(_20c,_20d){ -$.data(_20c,"panel").options.title=_20d; -$(_20c).panel("header").find("div.panel-title").html(_20d); -}; -var TO=false; -var _20e=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_20e){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_20e=false; -var _20f=$("body.layout"); -if(_20f.length){ -_20f.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_20e=true; -TO=false; -},200); -}); -$.fn.panel=function(_210,_211){ -if(typeof _210=="string"){ -return $.fn.panel.methods[_210](this,_211); -} -_210=_210||{}; -return this.each(function(){ -var _212=$.data(this,"panel"); -var opts; -if(_212){ -opts=$.extend(_212.options,_210); -_212.isLoaded=false; -}else{ -opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_210); -$(this).attr("title",""); -_212=$.data(this,"panel",{options:opts,panel:_1da(this),isLoaded:false}); -} -_1dd(this); -_207(this); -if(opts.doSize==true){ -_212.panel.css("display","block"); -_1d0(this); -} -if(opts.closed==true||opts.minimized==true){ -_212.panel.hide(); -}else{ -_1eb(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_213){ -return jq.each(function(){ -_20b(this,_213); -}); -},open:function(jq,_214){ -return jq.each(function(){ -_1eb(this,_214); -}); -},close:function(jq,_215){ -return jq.each(function(){ -_1e1(this,_215); -}); -},destroy:function(jq,_216){ -return jq.each(function(){ -_1f4(this,_216); -}); -},refresh:function(jq,href){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(href){ -$.data(this,"panel").options.href=href; -} -_1e2(this); -}); -},resize:function(jq,_217){ -return jq.each(function(){ -_1d0(this,_217); -}); -},move:function(jq,_218){ -return jq.each(function(){ -_1d6(this,_218); -}); -},maximize:function(jq){ -return jq.each(function(){ -_1ef(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_201(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_204(this); -}); -},collapse:function(jq,_219){ -return jq.each(function(){ -_1f0(this,_219); -}); -},expand:function(jq,_21a){ -return jq.each(function(){ -_1fb(this,_21a); -}); -}}; -$.fn.panel.parseOptions=function(_21b){ -var t=$(_21b); -return $.extend({},$.parser.parseOptions(_21b,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(data){ -var _21c=/]*>((.|[\n\r])*)<\/body>/im; -var _21d=_21c.exec(data); -if(_21d){ -return _21d[1]; -}else{ -return data; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_21e,_21f){ -},onMove:function(left,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); -(function($){ -function _220(_221,_222){ -var opts=$.data(_221,"window").options; -if(_222){ -if(_222.width){ -opts.width=_222.width; -} -if(_222.height){ -opts.height=_222.height; -} -if(_222.left!=null){ -opts.left=_222.left; -} -if(_222.top!=null){ -opts.top=_222.top; -} -} -$(_221).panel("resize",opts); -}; -function _223(_224,_225){ -var _226=$.data(_224,"window"); -if(_225){ -if(_225.left!=null){ -_226.options.left=_225.left; -} -if(_225.top!=null){ -_226.options.top=_225.top; -} -} -$(_224).panel("move",_226.options); -if(_226.shadow){ -_226.shadow.css({left:_226.options.left,top:_226.options.top}); -} -}; -function _227(_228,_229){ -var _22a=$.data(_228,"window"); -var opts=_22a.options; -var _22b=opts.width; -if(isNaN(_22b)){ -_22b=_22a.window._outerWidth(); -} -if(opts.inline){ -var _22c=_22a.window.parent(); -opts.left=(_22c.width()-_22b)/2+_22c.scrollLeft(); -}else{ -opts.left=($(window)._outerWidth()-_22b)/2+$(document).scrollLeft(); -} -if(_229){ -_223(_228); -} -}; -function _22d(_22e,_22f){ -var _230=$.data(_22e,"window"); -var opts=_230.options; -var _231=opts.height; -if(isNaN(_231)){ -_231=_230.window._outerHeight(); -} -if(opts.inline){ -var _232=_230.window.parent(); -opts.top=(_232.height()-_231)/2+_232.scrollTop(); -}else{ -opts.top=($(window)._outerHeight()-_231)/2+$(document).scrollTop(); -} -if(_22f){ -_223(_22e); -} -}; -function _233(_234){ -var _235=$.data(_234,"window"); -var win=$(_234).panel($.extend({},_235.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_235.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_235.options.onBeforeDestroy.call(_234)==false){ -return false; -} -if(_235.shadow){ -_235.shadow.remove(); -} -if(_235.mask){ -_235.mask.remove(); -} -},onClose:function(){ -if(_235.shadow){ -_235.shadow.hide(); -} -if(_235.mask){ -_235.mask.hide(); -} -_235.options.onClose.call(_234); -},onOpen:function(){ -if(_235.mask){ -_235.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_235.shadow){ -_235.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_235.options.left,top:_235.options.top,width:_235.window._outerWidth(),height:_235.window._outerHeight()}); -} -_235.window.css("z-index",$.fn.window.defaults.zIndex++); -_235.options.onOpen.call(_234); -},onResize:function(_236,_237){ -var opts=$(this).panel("options"); -$.extend(_235.options,{width:opts.width,height:opts.height,left:opts.left,top:opts.top}); -if(_235.shadow){ -_235.shadow.css({left:_235.options.left,top:_235.options.top,width:_235.window._outerWidth(),height:_235.window._outerHeight()}); -} -_235.options.onResize.call(_234,_236,_237); -},onMinimize:function(){ -if(_235.shadow){ -_235.shadow.hide(); -} -if(_235.mask){ -_235.mask.hide(); -} -_235.options.onMinimize.call(_234); -},onBeforeCollapse:function(){ -if(_235.options.onBeforeCollapse.call(_234)==false){ -return false; -} -if(_235.shadow){ -_235.shadow.hide(); -} -},onExpand:function(){ -if(_235.shadow){ -_235.shadow.show(); -} -_235.options.onExpand.call(_234); -}})); -_235.window=win.panel("panel"); -if(_235.mask){ -_235.mask.remove(); -} -if(_235.options.modal==true){ -_235.mask=$("
          ").insertAfter(_235.window); -_235.mask.css({width:(_235.options.inline?_235.mask.parent().width():_238().width),height:(_235.options.inline?_235.mask.parent().height():_238().height),display:"none"}); -} -if(_235.shadow){ -_235.shadow.remove(); -} -if(_235.options.shadow==true){ -_235.shadow=$("
          ").insertAfter(_235.window); -_235.shadow.css({display:"none"}); -} -if(_235.options.left==null){ -_227(_234); -} -if(_235.options.top==null){ -_22d(_234); -} -_223(_234); -if(_235.options.closed==false){ -win.window("open"); -} -}; -function _239(_23a){ -var _23b=$.data(_23a,"window"); -_23b.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_23b.options.draggable==false,onStartDrag:function(e){ -if(_23b.mask){ -_23b.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_23b.shadow){ -_23b.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_23b.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_23b.proxy){ -_23b.proxy=$("
          ").insertAfter(_23b.window); -} -_23b.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(_23b.window._outerWidth()); -_23b.proxy._outerHeight(_23b.window._outerHeight()); -setTimeout(function(){ -if(_23b.proxy){ -_23b.proxy.show(); -} -},500); -},onDrag:function(e){ -_23b.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_23b.options.left=e.data.left; -_23b.options.top=e.data.top; -$(_23a).window("move"); -_23b.proxy.remove(); -_23b.proxy=null; -}}); -_23b.window.resizable({disabled:_23b.options.resizable==false,onStartResize:function(e){ -_23b.pmask=$("
          ").insertAfter(_23b.window); -_23b.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_23b.window._outerWidth(),height:_23b.window._outerHeight()}); -if(!_23b.proxy){ -_23b.proxy=$("
          ").insertAfter(_23b.window); -} -_23b.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(e.data.width); -_23b.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_23b.proxy.css({left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(e.data.width); -_23b.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_23b.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_220(_23a); -_23b.pmask.remove(); -_23b.pmask=null; -_23b.proxy.remove(); -_23b.proxy=null; -}}); -}; -function _238(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_238().width,height:_238().height}); -},50); -}); -$.fn.window=function(_23c,_23d){ -if(typeof _23c=="string"){ -var _23e=$.fn.window.methods[_23c]; -if(_23e){ -return _23e(this,_23d); -}else{ -return this.panel(_23c,_23d); -} -} -_23c=_23c||{}; -return this.each(function(){ -var _23f=$.data(this,"window"); -if(_23f){ -$.extend(_23f.options,_23c); -}else{ -_23f=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_23c)}); -if(!_23f.options.inline){ -document.body.appendChild(this); -} -} -_233(this); -_239(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _240=jq.panel("options"); -var _241=$.data(jq[0],"window").options; -return $.extend(_241,{closed:_240.closed,collapsed:_240.collapsed,minimized:_240.minimized,maximized:_240.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_242){ -return jq.each(function(){ -_220(this,_242); -}); -},move:function(jq,_243){ -return jq.each(function(){ -_223(this,_243); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_227(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_22d(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_227(this); -_22d(this); -_223(this); -}); -}}; -$.fn.window.parseOptions=function(_244){ -return $.extend({},$.fn.panel.parseOptions(_244),$.parser.parseOptions(_244,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); -(function($){ -function _245(_246){ -var cp=document.createElement("div"); -while(_246.firstChild){ -cp.appendChild(_246.firstChild); -} -_246.appendChild(cp); -var _247=$(cp); -_247.attr("style",$(_246).attr("style")); -$(_246).removeAttr("style").css("overflow","hidden"); -_247.panel({border:false,doSize:false,bodyCls:"dialog-content"}); -return _247; -}; -function _248(_249){ -var opts=$.data(_249,"dialog").options; -var _24a=$.data(_249,"dialog").contentPanel; -if(opts.toolbar){ -if($.isArray(opts.toolbar)){ -$(_249).find("div.dialog-toolbar").remove(); -var _24b=$("
          模板编号模板类型文件名模板注释文件路径
          ").Append((++i).ToString()).Append("") - .Append(key.ToLower()).Append("") - .Append( - - //RegexUtility.partialRegex.IsMatch(tplContent) && tplContent.IndexOf("") != -1 - !tpl.FilePath.EndsWith(".phtml") - ? "<span style=\"color:#333\">模板页面</span>" - : "<span style=\"color:#006699\">部分视图</span>") - .Append("</td><td>/").Append(tplFileName).Append("</td><td>").Append(tpl.Comment) - .Append("</td><td>").Append(tpl.FilePath).Append("</td></tr>"); - } - - sb.Append(@"<tr><td colspan=""6"" align=""center"" style=""background:#f0f0f0;color:#333""> - 部分视图扩展名为“.phtml”,可允许格式如: -   A:${partial:""inc/header.phtml""} -   B:${partial:""/tmpdir/inc/header.phtml""} -   C:${partial:""../../inc/header.phtml""} - </td></tr>"); - - sb.Append( - "</table><script type=\"text/javascript\">dynamicTable(document.getElementsByTagName('table')[0]);</script>"); - - templateContent = TemplateRegexUtility.Replace(templateContent, match => - { - switch (match.Groups[1].Value) - { - case "title": - return "模板信息"; - case "content": - return sb.ToString(); - case "year": - return DateTime.Now.Year.ToString(); - } - return String.Empty; - }); - - System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; - response.Write(TemplateUtility.CompressHtml(templateContent)); - response.End(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/Variable.cs b/J6/src/core/J6.DevFw.Template/old/Variable.cs deleted file mode 100644 index e4e0c3f..0000000 --- a/J6/src/core/J6.DevFw.Template/old/Variable.cs +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:Variable.cs -// Author:newmin -// Create:2013/09/10 -// - -using System; - -namespace J6.DevFw.Template -{ - /// <summary> - /// 变量 - /// </summary> - public struct Variable - { - public string Key { get; set; } - public object Value { get; set; } - public Type Type { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/temp/EventLog.cs b/J6/src/core/J6.DevFw.Template/old/temp/EventLog.cs deleted file mode 100644 index f98de2a..0000000 --- a/J6/src/core/J6.DevFw.Template/old/temp/EventLog.cs +++ /dev/null @@ -1,50 +0,0 @@ -// -// Copyright (C) 2011 S1N1.COM,All right reseved. -// Name:EventLog.cs -// Author:newmin -// Create:2011/06/13 -// - -using System; -using System.Text; - -namespace J6.DevFw.Template.temp -{ - /// <summary> - /// 事件日志 - /// </summary> - [Obsolete] - internal sealed class EventLog - { - private static StringBuilder _csb = new StringBuilder(); - - - internal EventLog() - { - } - - public string Content - { - get { return _csb.ToString(); } - } - - /// <summary> - /// 附加日志 - /// </summary> - /// <param name="logText"></param> - public void Append(string logText) - { - _csb.Append(logText); - } - - public void Clear() - { - _csb.Remove(0, _csb.Length); - } - - public override string ToString() - { - return _csb.ToString(); - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/test.cs b/J6/src/core/J6.DevFw.Template/old/test.cs deleted file mode 100644 index 57ae1ba..0000000 --- a/J6/src/core/J6.DevFw.Template/old/test.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace J6.DevFw.Template -{ - internal class test - { - private void Main() - { - TemplatePage tp = new TemplatePage(); - tp.TemplateContent = "$m=item KEY:${item.key} Note:${item.note}<br />${m.key}"; - tp.AddVariable("item", new {Key = "Key", Note = "Note"}); - var x = System.Web.HttpContext.Current.Items; - string y = tp.ToString(); - // return y; - } - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Web/Cache/CacheFactory.cs b/J6/src/core/J6.DevFw.Web/Cache/CacheFactory.cs deleted file mode 100644 index 85c69e1..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/CacheFactory.cs +++ /dev/null @@ -1,24 +0,0 @@ -using J6.DevFw.Web.Cache.Compoment; - -namespace J6.DevFw.Web.Cache -{ - /// <summary> - /// - /// </summary> - public static class CacheFactory - { - private static ICache _cacheInstance; - - /// <summary> - /// - /// </summary> - public static ICache Sington - { - get - { - return _cacheInstance ?? (_cacheInstance = new BasicCache(new DependCache())); - // return cacheInstance ?? (cacheInstance = new CmsCache(new LevelDbCacheProvider())); - } - } - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/CacheUpdateAttribute.cs b/J6/src/core/J6.DevFw.Web/Cache/CacheUpdateAttribute.cs deleted file mode 100644 index 1a096ff..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/CacheUpdateAttribute.cs +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:46 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using J6.DevFw.Web.Cache.Compoment; - -namespace J6.DevFw.Web.Cache -{ - /// <summary> - /// Description of CacheUpdateAttribute. - /// </summary> - [AttributeUsage(AttributeTargets.Method)] - public class CacheUpdateAttribute:Attribute,ICacheUpdatePolicy - { - /// <summary> - /// - /// </summary> - /// <param name="cacheKey"></param> - public CacheUpdateAttribute(string cacheKey) - { - this.Key=cacheKey; - } - /// <summary> - /// - /// </summary> - /// <param name="sign"></param> - public CacheUpdateAttribute(CacheSign sign) - { - this.Key=sign.ToString(); - } - - /// <summary> - /// - /// </summary> - public string Key{get;private set;} - - - public void Clear() - { - CacheFactory.Sington.Clear(this.Key); - } - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/BasicCache.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/BasicCache.cs deleted file mode 100644 index df9d141..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/BasicCache.cs +++ /dev/null @@ -1,149 +0,0 @@ - -/* -* Copyright(C) 2010-2013 S1N1.COM -* -* File Name : TemplateUrlRule -* Author : Newmin (new.min@msn.com) -* Create : 2013/05/21 19:59:54 -* Description : -* -*/ - -using System; -using System.Web; -using J6.DevFw.Framework; -using J6.DevFw.Framework.Web.Cache; - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// CMS缓存处理 - /// </summary> - public class BasicCache : ICache - { - private readonly ICache dependCache; - private static string _cacheSha1ETag; //客户端ETag - - internal BasicCache(ICache cache) - { - dependCache = cache; - this.Reset(null); - } - - /// <summary> - /// 获取缓存结果 - /// </summary> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - public T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return dependCache.GetCachedResult<T>(cacheKey, func); - } - - public T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return dependCache.GetResult<T>(cacheKey, func); - } - - /// <summary> - /// 重置系统缓存(不包括Framework Cache) - /// </summary> - /// <param name="handler"></param> - public void Reset(FwHandler handler) - { - //清除系统缓存 - _cacheSha1ETag = dependCache.Rebuilt(); - - if (handler != null) - { - handler(); - } - } - - /// <summary> - /// - /// </summary> - /// <param name="seconds"></param> - /// <returns></returns> - public bool CheckClientCacheExpires(int seconds) - { - return CacheUtil.CheckClientCacheExpires(seconds); - } - - /// <summary> - /// - /// </summary> - /// <returns></returns> - public bool CheckClientCacheExpiresByEtag() - { - return CacheUtil.CheckClientCacheExpires(_cacheSha1ETag); - } - - - /// <summary> - /// - /// </summary> - /// <param name="response"></param> - /// <param name="seconds"></param> - public void SetClientCache(HttpResponse response, int seconds) - { - CacheUtil.SetClientCache(response, seconds); - } - - /// <summary> - /// - /// </summary> - /// <param name="response"></param> - public void SetClientCacheByEtag(HttpResponse response) - { - CacheUtil.SetClientCache(response, _cacheSha1ETag); - } - - /// <summary> - /// - /// </summary> - /// <param name="response"></param> - /// <param name="handler"></param> - public void ETagOutput(HttpResponse response,StringCreatorHandler handler) - { - CacheUtil.Output(response,_cacheSha1ETag,handler); - } - - #region 接口方法 - - public void Insert(string key, object value, DateTime absoluteExpireTime) - { - dependCache.Insert(key, value, absoluteExpireTime); - } - - public void Insert(string key, object value, string filename) - { - dependCache.Insert(key, value, filename); - } - - public void Insert(string key, object value) - { - dependCache.Insert(key, value); - } - - public void Clear(string keySign) - { - dependCache.Clear(keySign); - } - - public object Get(string cacheKey) - { - return dependCache.Get(cacheKey); - } - - public string Rebuilt() - { - return dependCache.Rebuilt(); - } - - #endregion - - - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs deleted file mode 100644 index 6a10ab8..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:55 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -namespace J6.DevFw.Web.Cache.Compoment -{ - - /// <summary> - /// 创建缓存数据结果事件 - /// </summary> - /// <returns></returns> - public delegate T BuiltCacheResultHandler<T>(); -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/CacheBase.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/CacheBase.cs deleted file mode 100644 index b25e00a..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/CacheBase.cs +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:54 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Collections; -using System.Web; -using System.Web.Caching; - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// 缓存基础类 - /// </summary> - public class CacheBase : ICache - { - - private T GetCacheResult<T>(string cacheKey, BuiltCacheResultHandler<T> func, bool autoCache) - { - T data = default(T); - - object _data = this.Get(cacheKey); - if (_data == null) - { - data = func(); - - if (autoCache) this.Insert(cacheKey, data); - } - else - { - data = (T)_data; - } - return data; - } - - - - public virtual void Insert(string key, object value, DateTime absoluteExpireTime) - { - HttpRuntime.Cache.Insert(key, value,null,absoluteExpireTime,TimeSpan.Zero); - } - - public virtual void Insert(string key, object value) - { - HttpRuntime.Cache.Insert(key, value); - } - - public void Insert(string key, object value, string filename) - { - HttpRuntime.Cache.Insert(key, value, new CacheDependency(filename) - , System.Web.Caching.Cache.NoAbsoluteExpiration - , TimeSpan.Zero); - } - - public virtual void Clear(string keySign) - { - if (keySign != null) - { - foreach (DictionaryEntry dict in HttpRuntime.Cache) - { - if (dict.Key.ToString().Contains(keySign)) - HttpRuntime.Cache.Remove(dict.Key.ToString()); - } - } - } - - public virtual object Get(string key) - { - return HttpRuntime.Cache[key]; - } - - public virtual string Rebuilt() - { - return ""; - } - - - - /// <summary> - /// 获取缓存结果 - /// </summary> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - public T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return GetCacheResult<T>(cacheKey, func,true); - } - - - - public T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return GetCacheResult<T>(cacheKey, func, false); - } - - - - - public virtual void Reset(FwHandler handler) - { - } - - } - -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/CacheSign.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/CacheSign.cs deleted file mode 100644 index 5bb703c..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/CacheSign.cs +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:54 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// 缓存符号 - /// </summary> - public enum CacheSign:int - { - Unknown =1, - Site = 1 << 1, - Comm = 1 << 2, - Archive = 1 << 3, - - /// <summary> - /// 栏目 - /// </summary> - Category= 1 << 4, - Link = 1 << 5, - Property = 1 << 6, - Template = 1 << 7, - TemplateBind = 1 << 8, - Module = 1 << 9 - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs deleted file mode 100644 index c018801..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:58 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Reflection; - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// Description of CmsCacheUtility. - /// </summary> - public class CmsCacheUtility - { - public static void EvalCacheUpdate<T>(MethodInfo method) where T:Attribute,ICacheUpdatePolicy - { - object[] attrs=method.GetCustomAttributes(typeof(T),false); - if(attrs.Length!=0) - { - (attrs[0] as ICacheUpdatePolicy).Clear(); - } - } - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/DependCache.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/DependCache.cs deleted file mode 100644 index 3d64e0b..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/DependCache.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.IO; -using System.Text; -using System.Web; -using System.Web.Caching; -using J6.DevFw.Framework.IO; -using Ops.Cms.Cache; - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// 注入缓存 - /// </summary> - public class DependCache : CacheBase - { - private static readonly string cacheDependFile; - - internal DependCache() { } - static DependCache() - { - cacheDependFile = Variables.PhysicPath + "config/cache.pid"; - } - - public override void Insert(string key, object value, DateTime absoluteExpireTime) - { - HttpRuntime.Cache.Insert(key, value, new CacheDependency(cacheDependFile), absoluteExpireTime, TimeSpan.Zero); - } - - public override void Insert(string key, object value) - { - HttpRuntime.Cache.Insert(key, value, new CacheDependency(cacheDependFile), - System.Web.Caching.Cache.NoAbsoluteExpiration, - System.Web.Caching.Cache.NoSlidingExpiration); - } - - /// <summary> - /// 重建缓存 - /// </summary> - public override string Rebuilt() - { - //初始化config文件夹 - if (!Directory.Exists(String.Concat(Variables.PhysicPath, "config/"))) - { - Directory.CreateDirectory(String.Concat(Variables.PhysicPath, "config/")).Create(); - } - - using (FileStream fs = new FileStream(cacheDependFile, FileMode.OpenOrCreate, FileAccess.Write)) - { - byte[] pid = Encoding.UTF8.GetBytes(new Random().Next(1000, 5000).ToString()); - fs.Seek(0, SeekOrigin.Begin); - fs.Write(pid, 0, pid.Length); - fs.Flush(); - } - - return IoUtil.GetFileSHA1(cacheDependFile); - - //FileInfo file = new FileInfo(cacheDependFile); - //file.LastWriteTimeUtc = DateTime.UtcNow; - } - - } -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/ICache.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/ICache.cs deleted file mode 100644 index 6f18172..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/ICache.cs +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:53 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// - /// </summary> - public interface ICache - { - /// <summary> - /// - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <param name="absoluteExpireTime"></param> - void Insert(string key, object value, DateTime absoluteExpireTime); - - /// <summary> - /// - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <param name="filename"></param> - void Insert(string key, object value, String filename); - - /// <summary> - /// - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - void Insert(string key, object value); - - - /// <summary> - /// 清除缓存KEY带指定符号的缓存 - /// </summary> - /// <param name="keySign"></param> - void Clear(string keySign); - - /// <summary> - /// - /// </summary> - /// <param name="cacheKey"></param> - /// <returns></returns> - object Get(string cacheKey); - - /// <summary> - /// - /// </summary> - /// <param name="handler"></param> - void Reset(FwHandler handler); - - /// <summary> - /// 获取缓存过的结果,如果没有缓存则自动缓存永不失效 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func); - - /// <summary> - /// 获取缓存结果,如果未缓存则调用委托产生的缓存结果 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func); - - /// <summary> - /// - /// </summary> - /// <returns></returns> - string Rebuilt(); - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs b/J6/src/core/J6.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs deleted file mode 100644 index eab3fb9..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:49 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -namespace J6.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// Description of ICacheUpdatePolicy. - /// </summary> - public interface ICacheUpdatePolicy - { - /// <summary> - /// 清理缓存 - /// </summary> - void Clear(); - } -} diff --git a/J6/src/core/J6.DevFw.Web/Cache/Variables.cs b/J6/src/core/J6.DevFw.Web/Cache/Variables.cs deleted file mode 100644 index 2b35730..0000000 --- a/J6/src/core/J6.DevFw.Web/Cache/Variables.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace Ops.Cms.Cache -{ - /// <summary> - /// - /// </summary> - internal class Variables - { - public static string PhysicPath = AppDomain.CurrentDomain.BaseDirectory; - } -} diff --git a/J6/src/core/J6.DevFw.Web/FwHandler.cs b/J6/src/core/J6.DevFw.Web/FwHandler.cs deleted file mode 100644 index 492ba28..0000000 --- a/J6/src/core/J6.DevFw.Web/FwHandler.cs +++ /dev/null @@ -1,11 +0,0 @@ - - -namespace J6.DevFw.Web -{ - - /// <summary> - /// 处理行为 - /// </summary> - /// <returns></returns> - public delegate void FwHandler(); -} diff --git a/J6/src/core/J6.DevFw.Web/J6.DevFw.Web.csproj b/J6/src/core/J6.DevFw.Web/J6.DevFw.Web.csproj deleted file mode 100644 index 27c3da6..0000000 --- a/J6/src/core/J6.DevFw.Web/J6.DevFw.Web.csproj +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{4F756EAD-0C41-499C-AE91-660892B444AC}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>J6.DevFw.Web</RootNamespace> - <AssemblyName>J6.DevFw.Web</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\dist\dll\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DocumentationFile> - </DocumentationFile> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Web" /> - <Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\dll\System.Web.Mvc.dll</HintPath> - </Reference> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Cache\Compoment\BuiltCacheResultHandler.cs" /> - <Compile Include="Cache\Compoment\CacheSign.cs" /> - <Compile Include="Cache\Compoment\BasicCache.cs" /> - <Compile Include="Cache\Compoment\CacheBase.cs" /> - <Compile Include="Cache\Compoment\CmsCacheUtility.cs" /> - <Compile Include="Cache\Compoment\DependCache.cs" /> - <Compile Include="Cache\Compoment\ICacheUpdatePolicy.cs" /> - <Compile Include="Cache\Compoment\ICache.cs" /> - <Compile Include="Cache\CacheFactory.cs" /> - <Compile Include="Cache\CacheUpdateAttribute.cs" /> - <Compile Include="Cache\Variables.cs" /> - <Compile Include="PageDataItems.cs" /> - <Compile Include="FwHandler.cs" /> - <Compile Include="Plugin\PluginRouteHandler.cs" /> - <Compile Include="TemplatePageVariable.cs" /> - <Compile Include="WebConf.cs" /> - <Compile Include="Plugin\WebPluginApp.cs" /> - <Compile Include="Plugin\IPluginApp.cs" /> - <Compile Include="WebCtx.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup /> - <ItemGroup> - <ProjectReference Include="..\J6.DevFw.Core\J6.DevFw.Core.csproj"> - <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> - <Name>AtNet.DevFw.Core</Name> - </ProjectReference> - <ProjectReference Include="..\J6.DevFw.PluginKernel\kernel\J6.DevFw.PluginKernel.csproj"> - <Project>{cad14dcc-112c-4b28-98eb-1ce143d09033}</Project> - <Name>AtNet.DevFw.PluginKernel</Name> - </ProjectReference> - <ProjectReference Include="..\J6.DevFw.Template\J6.DevFw.Template.csproj"> - <Project>{275cae3e-a9e0-4de0-8031-e9137bbdd693}</Project> - <Name>AtNet.DevFw.Template</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Web/PageDataItems.cs b/J6/src/core/J6.DevFw.Web/PageDataItems.cs deleted file mode 100644 index f12fdd3..0000000 --- a/J6/src/core/J6.DevFw.Web/PageDataItems.cs +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : CmsContext.cs - * author : newmin (new.min@msn.com) - * date : 2014/12/01 23:00:00 - * description : - * history : - */ - -using System.Web; - -namespace J6.DevFw.Web -{ - /// <summary> - /// 页面数据项 - /// </summary> - public class PageDataItems - { - public object this[object key] - { - get - { - return HttpContext.Current.Items[key]; - } - set - { - HttpContext.Current.Items[key] = value; - } - } - } - -} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Web/Properties/AssemblyInfo.cs b/J6/src/core/J6.DevFw.Web/Properties/AssemblyInfo.cs deleted file mode 100644 index 19a4839..0000000 --- a/J6/src/core/J6.DevFw.Web/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("J6.DevFw.Web")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("J6.DevFw.Web")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("25fb3c6a-8e42-414e-8c61-79da4af46a93")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 生成号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/J6/src/core/J6.DevFw.Web/TemplatePageVariable.cs b/J6/src/core/J6.DevFw.Web/TemplatePageVariable.cs deleted file mode 100644 index 0e2c9eb..0000000 --- a/J6/src/core/J6.DevFw.Web/TemplatePageVariable.cs +++ /dev/null @@ -1,152 +0,0 @@ -using System; -using J6.DevFw.PluginKernel; -using J6.DevFw.Template; -using J6.DevFw.Web.Cache.Compoment; - -namespace J6.DevFw.Web -{ - /// <summary> - /// - /// </summary> - public class TemplatePageVariable - { - private string _domain; - private string _frameworkPath; - private string _templatePath; - private string _pluginRootPath; - private string _sitemap; - private string _resDomain; - - - [TemplateVariableField("版本")] - public string Version - { - get { return FwCtx.Version.GetVersion(); } - } - - /// <summary> - /// 域名 - /// </summary> - [TemplateVariableField("站点域名")] - public string Domain - { - get - { - if (_domain == null) - { - _domain = WebCtx.Domain; - } - return _domain; - } - } - - - /// <summary> - /// 框架路径 - /// </summary> - [TemplateVariableField("框架资源根路径")] - private string FrameworkPath - { - get - { - if (_frameworkPath == null) - { - _frameworkPath = String.Format("{0}{1}", this.Domain, - FwCtx.Variables.AssetsPath.Substring(0, FwCtx.Variables.AssetsPath.Length - 1) - ); - } - - return _frameworkPath; - } - } - -// [TemplateVariableField("模板根路径")] -// private string TemplatePath -// { -// get -// { -// if (_templatePath == null) -// { -// string cacheKey = String.Format("{0}_s{1}_template_path", -// CacheSign.Site.ToString(), -// site.SiteId.ToString() -// ); -// -// _templatePath= Ops.Cms.Cache.GetCachedResult(cacheKey, () => -// { -// return String.Format( -// "{0}/templates/{1}", -// this.ResDomain, -// site.Tpl -// ); -// }); -// -// } -// -// return _templatePath; -// } -// } -// - - - [TemplateVariableField("插件根路径")] - public string PluginPath - { - get - { - if (_pluginRootPath == null) - { - _pluginRootPath = String.Format("{0}/{1}", - this.Domain, - PluginConfig.PLUGIN_DIRECTORY); - - _pluginRootPath = _pluginRootPath.Remove(_pluginRootPath.Length - 1); - } - return _pluginRootPath; - } - } - - [TemplateVariableField("框架资源根路径")] - public string Fpath { get { return this.FrameworkPath; } } - -// [TemplateVariableField("模板根路径")] -// public string Tpath { get { return this.TemplatePath; } } -// -// [TemplateVariableField("资源域名路径")] -// public string Rdomain { get { return this.ResDomain; } } - - [TemplateVariableField("插件根路径")] - public string Ppath { get { return this.PluginPath; } } - - - /// <summary> - ///标题 - /// </summary> - [TemplateVariableField("网页(当前页)标题")] - public string Title { get; set; } - - /// <summary> - /// 子标题 - /// </summary> - [TemplateVariableField("子标题")] - public string SubTitle { get; set; } - - /// <summary> - /// 关键词 - /// </summary> - [TemplateVariableField("关键词")] - public string Keywords { get; set; } - - /// <summary> - /// 描述 - /// </summary> - [TemplateVariableField("描述")] - public string Description { get; set; } - - /// <summary> - /// 页码 - /// </summary> - [TemplateVariableField("当前页面(带分页页面)的页码")] - public int PageIndex { get; set; } - } -} diff --git a/J6/src/core/J6.DevFw.Web/WebConf.cs b/J6/src/core/J6.DevFw.Web/WebConf.cs deleted file mode 100644 index 843f5df..0000000 --- a/J6/src/core/J6.DevFw.Web/WebConf.cs +++ /dev/null @@ -1,42 +0,0 @@ - - -namespace J6.DevFw.Web -{ - /// <summary> - /// - /// </summary> - public static class WebConf - { - /// <summary> - /// 是否支持GZip压缩 - /// </summary> - public static bool Opti_SupportGZip = false; - - /// <summary> - /// 调试模式 - /// </summary> - public static bool Opti_Debug = false; - - /// <summary> - /// 客户端缓存 - /// </summary> - public static bool Opti_ClientCache { get { return Opti_ClientCacheSeconds > 0; } } - - /// <summary> - /// 客户端缓存秒数 - /// </summary> - public static int Opti_ClientCacheSeconds = 0; - - /// <summary> - /// 首页缓存秒数 - /// </summary> - public static int Opti_IndexCacheSeconds = 0; - - /// <summary> - /// GC回收间隔(默认30分钟回收一次) - /// </summary> - public static int Opti_GC_Collect_Interval = 3600000 * 30; - - - } -} diff --git a/J6/src/core/J6.DevFw.Web/WebCtx.cs b/J6/src/core/J6.DevFw.Web/WebCtx.cs deleted file mode 100644 index ad5542d..0000000 --- a/J6/src/core/J6.DevFw.Web/WebCtx.cs +++ /dev/null @@ -1,396 +0,0 @@ -using System; -using System.IO; -using System.IO.Compression; -using System.Text; -using System.Web; -using J6.DevFw.Framework.Web.Cache; -using J6.DevFw.PluginKernel.Web; -using J6.DevFw.Web.Cache; -using J6.DevFw.Web.Cache.Compoment; -using J6.DevFw.Web.Plugin; - -namespace J6.DevFw.Web -{ - /// <summary> - /// Ӧó - /// </summary> - public class WebCtx - { - - /// <summary> - /// ־ļ - /// </summary> - public static string ErrorFilePath; - - private const string KeyCtxDomain = "_ctx_domain"; - - - /// <summary> - /// ǷΪĿ¼ - /// </summary> - public bool IsVirtualDirectoryRunning = false; - - public static global::System.Web.HttpContext Context - { - get { return global::System.Web.HttpContext.Current; } - } - - - /// <summary> - /// Դ - /// </summary> - public object Source { get; set; } - - public HttpResponse Response { get { return Context.Response; } } - public HttpRequest Request { get { return Context.Request; } } - - - static WebCtx() - { - ErrorFilePath = AppDomain.CurrentDomain.BaseDirectory + "tmp/logs/error.log"; - } - - /// <summary> - /// վ - /// </summary> - private string _siteDomain; - private PageDataItems _dataItems; - private string _staticDomain; - private string _resouceDomain; - private string _host; - private string _siteAppPath; - private static IPluginApp _extends; - - /// <summary> - /// ʱ - /// </summary> - public static event FwHandler OnBeginRequest; - - - /// <summary> - /// ǰHost,˿ڣ磺www.ops.cc:8080 - /// </summary> - public string Host - { - get - { - var context = Context; - if (this._host == null) - { - this._host = String.Format("{0}{1}", context.Request.Url.Host, - context.Request.Url.Port != 80 ? ":" + context.Request.Url.Port.ToString() : ""); - } - return this._host; - } - } - - /// <summary> - /// ϵͳӦóĿ¼ - /// </summary> - public string ApplicationPath - { - get { return Context.Request.ApplicationPath; } - } - - /// <summary> - /// չ - /// </summary> - public static IPluginApp Plugin - { - get - { - if (_extends == null) - { - var handler = new WebPluginHandleProxy<System.Web.HttpContext>(); - _extends = new WebPluginApp(handler); - } - return _extends; - } - } - - - public static ICache Cache - { - get { return CacheFactory.Sington; } - } - -// /// <summary> -// /// -// /// </summary> -// public string SiteDomain -// { -// get -// { -// if (_siteDomain == null) -// { -// string host = String.Format("{0}{1}", context.Request.Url.Host, -// context.Request.Url.Port != 80 ? ":" + context.Request.Url.Port.ToString() : ""); -// -// _siteDomain= String.Format("http://{0}{1}{2}", -// host, -// this.ApplicationPath=="/"?"":this.ApplicationPath, -// this.SiteAppPath=="/"?"/":this.SiteAppPath+"/" -// ); -// -//// this._siteDomain = this.CurrentSite.FullDomain; -//// -//// if (this._siteDomain.IndexOf("#") != -1) -//// { -//// this._siteDomain = this._siteDomain.Replace( -//// "#", host); -//// } -// } -// return _siteDomain; -// } -// } - -// /// <summary> -// /// Դ -// /// </summary> -// public string ResourceDomain -// { -// get -// { -// if (this._resouceDomain == null) -// { -// //RES DOMAIN -// if (this.IsVirtualDirectoryRunning) -// { -// this._resouceDomain = String.Empty; -// } -// } -// return this._resouceDomain ?? (this._resouceDomain = this.SiteDomain); -// } -// } -// -// /// <summary> -// /// ̬Դ -// /// </summary> -// public string StaticDomain -// { -// get -// { -// if (this._staticDomain == null) -// { -// if (Settings.SERVER_STATIC_ENABLED && Settings.SERVER_STATIC.Length != 0) -// { -// this._staticDomain = String.Concat("http://", Settings.SERVER_STATIC, "/"); -// } -// else -// { -// this._staticDomain = this.ResourceDomain == String.Empty ? "/" : this.ResourceDomain; -// } -// } -// -// return this._staticDomain; -// } -// } - /// <summary> - /// - /// </summary> - public PageDataItems Items - { - get - { - if (_dataItems == null) - { - _dataItems = new PageDataItems(); - } - return _dataItems; - } - } - public static string Domain - { - get - { - HttpContext context = Context; - String domain = context.Items[KeyCtxDomain] as String; - if (domain == null) - { - HttpRequest request = Context.Request; - String applicationPath = request.ApplicationPath; - domain = String.Format("{0}://{1}{2}{3}", - request.Url.Scheme, - request.Url.Host, - context.Request.Url.Port != 80 ? ":" + request.Url.Port.ToString() : "", - applicationPath == "/" ? "" : applicationPath - ); - context.Items[KeyCtxDomain] = domain; - } - - return domain; - } - set { Context.Items[KeyCtxDomain] = value; } - } - - - public static void SaveErrorLog(Exception exception) - { - lock (ErrorFilePath) - { - HttpRequest req = Context.Request; - - if (!File.Exists(ErrorFilePath)) - { - string dir = AppDomain.CurrentDomain.BaseDirectory + "tmp/logs"; - if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); - File.Create(ErrorFilePath).Close(); - } - Context.Response.Write((File.Exists(ErrorFilePath).ToString())); - using (FileStream fs = new FileStream(ErrorFilePath, FileMode.Append, FileAccess.Write)) - { - StreamWriter sw = new StreamWriter(fs); - StringBuilder sb = new StringBuilder(); - - sb.Append("---------------------------------------------------------------------\r\n") - .Append("[]IP:").Append(req.UserHostAddress) - .Append("\tʱ䣺").Append(DateTime.Now.ToString()) - .Append("\r\n[Ϣ]").Append(exception.Message) - .Append("\r\n[·]").Append(req.Url.PathAndQuery) - .Append(" -> Դ").Append(req.Headers["referer"] ?? "") - .Append("\r\n[ջ]").Append(exception.StackTrace) - .Append("\r\n\r\n"); - - sw.Write(sb.ToString()); - - sw.Flush(); - sw.Dispose(); - fs.Dispose(); - } - } - } - - -// public bool CheckSiteState() -// { -// if (this.CurrentSite.State == SiteState.Normal) -// { -// return true; -// } -// else if (this.CurrentSite.State == SiteState.Closed) -// { -// this.RenderNotfound(); -// } -// else if (this.CurrentSite.State == SiteState.Paused) -// { -// this.Render("<h1 style=\"color:red;text-align:center;font-size:16px;padding:20px\">վά,ͣʣ</h1>"); -// //this.RenderNotfound("<h1 style=\"color:red\">վά,ͣʣ</h1>"); -// } -// return false; -// } - - /// <summary> - /// ÿͻ˻(̨û沢ʱ>0) - /// </summary> - /// <returns></returns> - public bool CheckAndSetClientCache() - { - if (WebConf.Opti_ClientCache && WebConf.Opti_ClientCacheSeconds > 0) - { - if (CacheUtil.CheckClientCacheExpires(WebConf.Opti_ClientCacheSeconds)) - { - CacheUtil.SetClientCache(this.Response, WebConf.Opti_ClientCacheSeconds); - } - else - { - return false; - } - } - return true; - } - - - /// <summary> - /// ÿͻ˻(Զʱ,λ) - /// </summary> - /// <returns></returns> - public bool CheckAndSetClientCache(int maxAge) - { - if (maxAge > 0) - { - if (CacheUtil.CheckClientCacheExpires(maxAge)) - { - CacheUtil.SetClientCache(this.Response, maxAge); - } - else - { - return false; - } - } - return true; - } - - - /// <summary> - /// - /// </summary> - /// <param name="html"></param> - public void Render(string html) - { - HttpResponse response = this.Response; - - response.Write(html); - - //GZipѹ - if (WebConf.Opti_SupportGZip) - { - response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); - response.AddHeader("Content-Encoding", "gzip"); - } - /* - else - { - response.Filter=new DeflateStream(response.Filter,CompressionMode.Compress); - response.AddHeader("Content-Encoding", "deflate"); - }*/ - - response.AddHeader("X-AspNet-Version", String.Format("J6.DevFw - v{0}", FwCtx.Version.GetVersion())); - response.AddHeader("Support-URL", "github.com/J6/devfw"); - } - -// -// /// <summary> -// /// ʾ400ҳ -// /// </summary> -// /// <returns></returns> -// public void RenderNotfound() -// { -// this.RenderNotfound("File not found!", null); -// } -// -// /// <summary> -// /// ʾ400ҳ -// /// </summary> -// /// <returns></returns> -// public void RenderNotfound(string message, TemplatePageHandler handler) -// { -// Response.StatusCode = 404; -// -// string html = null; -// try -// { -// TemplatePage tpl = new TemplatePage(String.Format("/{0}/not_found", this.CurrentSite.Tpl)); -// if (handler != null) -// { -// handler(tpl); -// } -// tpl.Render(); -// return; -// } -// catch -// { -// html = "File not found!"; -// } -// -// Response.Write(html); -// } -// -// public string ComposeUrl(string url) -// { -// if (url.StartsWith("/")) -// throw new ArgumentException("URL\"/\"ͷ!"); -// -// return String.Concat(this.SiteDomain, url); -// } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/Config.cs b/J6/src/examples/com.mapfre.weixin/Config.cs deleted file mode 100644 index 2735246..0000000 --- a/J6/src/examples/com.mapfre.weixin/Config.cs +++ /dev/null @@ -1,191 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : Config.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using J6.DevFw.Framework; -using J6.DevFw.PluginKernel; -using Senparc.Weixin.MP.TenPayLib; -using Senparc.Weixin.MP.TenPayLibV3; - -namespace Com.Plugin -{ - /// <summary> - /// Description of Config. - /// </summary> - public class Config - { - /// <summary> - /// 是否为开发模式 - /// </summary> - public static bool DebugMode = !true; - - private static IPlugin app; - - internal static PluginPackAttribute PluginAttr; - public static string DB_PREFIX=""; - - public static void Init(IPlugin plugin) - { - app = plugin; - PluginAttr = plugin.GetAttribute(); - initCfg(PluginAttr); - InitWeixin(PluginAttr.Settings); - - //提供微信支付信息 - var weixinPay_PartnerId = PluginAttr.Settings["WeixinPay_PartnerId"]; - var weixinPay_Key = PluginAttr.Settings["WeixinPay_Key"]; - var weixinPay_AppId = PluginAttr.Settings["WeixinPay_AppId"]; - var weixinPay_AppKey = PluginAttr.Settings["WeixinPay_AppKey"]; - var weixinPay_TenpayNotify = PluginAttr.Settings["WeixinPay_TenpayNotify"]; - var tenPayV3_MchId = PluginAttr.Settings["TenPayV3_MchId"]; - var tenPayV3_Key = PluginAttr.Settings["TenPayV3_Key"]; - var tenPayV3_AppId = PluginAttr.Settings["TenPayV3_AppId"]; - var tenPayV3_AppSecret = PluginAttr.Settings["TenPayV3_AppSecret"]; - var tenPayV3_TenpayNotify = PluginAttr.Settings["TenPayV3_TenpayNotify"]; - var weixinPayInfo = new TenPayInfo(weixinPay_PartnerId, weixinPay_Key, weixinPay_AppId, weixinPay_AppKey, weixinPay_TenpayNotify); - TenPayInfoCollection.Register(weixinPayInfo); - var tenPayV3Info = new TenPayV3Info(tenPayV3_AppId, tenPayV3_AppSecret, tenPayV3_MchId, tenPayV3_Key, - tenPayV3_TenpayNotify); - TenPayV3InfoCollection.Register(tenPayV3Info); - - - - } - - public static void InitWeixin(SettingFile set) - { - Variables.Token = set["Weixin_Token"]; - Variables.AppId = set["Weixin_AppId"]; - Variables.AppSecret = set["Weixin_AppSecret"]; - Variables.AppEncodeString = set["Weixin_AppEncodeString"]; - Variables.ApiDomain = set["Weixin_ApiDomain"]; - Variables.MenuButtons = set["Weixin_MenuButtons"]; - Variables.WxWelcomeMessage = set["Weixin_WelcomeMessage"] ?? ""; - Variables.WxEnterMessage = set["Weixin_EnterMessage"] ?? ""; - Variables.WxDefaultResponseMessage = set["Weixin_DefaultResponseMessage"]??""; - } - - private static void initCfg(PluginPackAttribute attr) - { - - //初始化配置 - bool isChanged = false; - if (!attr.Settings.Contains("WeixinPay_PartnerId")) - { - attr.Settings.Set("WeixinPay_PartnerId", ""); - isChanged = true; - } - if (!attr.Settings.Contains("WeixinPay_Key")) - { - attr.Settings.Set("WeixinPay_Key", ""); - isChanged = true; - } - if (!attr.Settings.Contains("WeixinPay_AppId")) - { - attr.Settings.Set("WeixinPay_AppId", ""); - isChanged = true; - } - if (!attr.Settings.Contains("WeixinPay_AppKey")) - { - attr.Settings.Set("WeixinPay_AppKey", ""); - isChanged = true; - } - if (!attr.Settings.Contains("WeixinPay_TenpayNotify")) - { - attr.Settings.Set("WeixinPay_TenpayNotify", ""); - isChanged = true; - } - if (!attr.Settings.Contains("TenPayV3_MchId")) - { - attr.Settings.Set("TenPayV3_MchId", ""); - isChanged = true; - } - - if (!attr.Settings.Contains("TenPayV3_Key")) - { - attr.Settings.Set("TenPayV3_Key", ""); - isChanged = true; - } - - if (!attr.Settings.Contains("TenPayV3_AppId")) - { - attr.Settings.Set("TenPayV3_AppId", ""); - isChanged = true; - } - if (!attr.Settings.Contains("TenPayV3_AppSecret")) - { - attr.Settings.Set("TenPayV3_AppSecret", ""); - isChanged = true; - } - if (!attr.Settings.Contains("TenPayV3_TenpayNotify")) - { - attr.Settings.Set("TenPayV3_TenpayNotify", ""); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_AppId")) - { - attr.Settings.Set("Weixin_AppId", "填写微信AppId"); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_AppSecret")) - { - attr.Settings.Set("Weixin_AppSecret", "填写微信AppSecret"); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_AppEncodeString")) - { - attr.Settings.Set("Weixin_AppEncodeString", "填写微信App解密字符串"); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_Token")) - { - attr.Settings.Set("Weixin_Token", "填写微信token"); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_ApiDomain")) - { - attr.Settings.Set("Weixin_ApiDomain", "填写用于对接微信的域名:如http://www.ops.cc/weixin/。"); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_WelcomeMessage")) - { - attr.Settings.Set("Weixin_WelcomeMessage", "欢迎来到微信!"); - isChanged = true; - } - - if (!attr.Settings.Contains("Weixin_EnterMessage")) - { - attr.Settings.Set("Weixin_EnterMessage", ""); - isChanged = true; - } - - - if (!attr.Settings.Contains("Weixin_MenuButtons")) - { - attr.Settings.Set("Weixin_MenuButtons", "填写微信自定义按钮"); - isChanged = true; - } - - if (isChanged) attr.Settings.Flush(); - } - - public static void Logln(String line) - { - app.Logln(line); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/BaseHandle.cs b/J6/src/examples/com.mapfre.weixin/Core/BaseHandle.cs deleted file mode 100644 index acf45ec..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/BaseHandle.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Data; -using System.IO; -using System.Web; -using J6.DevFw.Data; -using J6.DevFw.Framework.Extensions; -using J6.DevFw.Template; -using Com.Plugin.Core.Utils; -using J6.DevFw.Framework.Web.UI; -using J6.DevFw.PluginKernel; -using J6.DevFw.Web; -using J6.DevFw.Web.Plugin; - -namespace Com.Plugin.Core -{ - internal class BaseHandle - { - private IPluginApp _app; - private IPlugin _plugin; - - public BaseHandle(IPluginApp app, IPlugin plugin) - { - this._app = app; - this._plugin = plugin; - } - - - /// <summary> - /// 上传文件 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - public string Upload_post(HttpContext context) - { - string uploadfor = context.Request["for"]; - DateTime dt = DateTime.Now; - string dir = string.Format("{0}{1}/uploads/{2:yyyyMMdd}/", - PluginConfig.PLUGIN_DIRECTORY, - Config.PluginAttr.WorkIndent , dt); - string name = String.Format("{0}{1:HHss}{2}", - String.IsNullOrEmpty(uploadfor) ? "" : uploadfor + "_", - dt, String.Empty.RandomLetters(4)); - - string file = new FileUpload(dir, name).Upload(); - return "{" + String.Format("url:'{0}'", file) + "}"; - } - - - /// <summary> - /// 导出 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - public string Export_Setup(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return null; - - TemplatePage page = this._app.GetPage(this._plugin,"mg/export_setup.html"); - page.AddVariable("page", new TemplatePageVariable()); - page.AddVariable("export", new { setup = ExportHandle.Setup(context.Request["portal"]) }); - return page.ToString(); - } - - /// <summary> - /// 导出数据源 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - public string Export_GetExportData_post(HttpContext context) - { - return ExportHandle.GetExportData(context); - } - - public void Export_ProcessExport(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return; - ExportHandle.ProcessExport(context); - } - - public string Export_Import(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return null; - - TemplatePage page = this._app.GetPage(this._plugin, "admin/export_import.html"); - page.AddVariable("page", new TemplatePageVariable()); - page.AddVariable("case", new { json = new object() }); - return page.ToString(); - } - - public string Export_Import_post(HttpContext context) - { - // try - // { - FileInfo file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + context.Request["file"]); - DataTable dt = NPOIHelper.ImportFromExcel(file.FullName).Tables[0]; - //DataView dv = dt.DefaultView; - //dv.Sort = "财务编号 ASC"; - SqlQuery[] querys = new SqlQuery[dt.Rows.Count]; - int i = 0; - DateTime importTime = DateTime.Now; - foreach (DataRow dr in dt.Rows) - { - const string insertSql = @" "; - } - - int rows = IocObject.GetDao().ExecuteNonQuery(querys); - if (rows < 0) rows = 0; - return "{result:true,message:'导入完成,共导入" + rows.ToString() + "条!'}"; - /* } - catch (Exception exc) - { - return "{result:false,message:'"+exc.Message+"!'}"; - }*/ - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/DbGenerator.cs b/J6/src/examples/com.mapfre.weixin/Core/DbGenerator.cs deleted file mode 100644 index 33af2a7..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/DbGenerator.cs +++ /dev/null @@ -1,34 +0,0 @@ - -using J6.DevFw.Data; - -namespace Com.Plugin.Core -{ - public class DbGenerator - { - private string _connString; - - internal DbGenerator() - { - } - - /// <summary> - /// 数据库访问对象 - /// </summary> - public DataBaseAccess New() - { - if (_connString == null) - { - _connString = Config.PluginAttr.Settings["db_conn"]; - //if (_connString.Contains("$ROOT")) - //{ - // string dir = PluginUtil.GetAttribute<Main>().WorkSpace; - // _connString = _connString.Replace("$ROOT", dir.Substring(0, dir.Length - 1)); - //} - } - return new DataBaseAccess( - DataBaseType.SQLServer, - _connString - ); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/Helper.cs b/J6/src/examples/com.mapfre.weixin/Core/Helper.cs deleted file mode 100644 index 584b1e7..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Helper.cs +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : Helper.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Data; -using System.Web; -using J6.DevFw.Framework.Extensions; -using Newtonsoft.Json; - -namespace Com.Plugin.Core -{ - internal class Helper - { - private static string _domain; - - - public static void PagerJson(HttpResponse rsp,DataTable rows, string pager) - { - const string fmt = "{'pager':'%pager%','rows':%html%}"; - rsp.Write(fmt.Template( - pager.Replace("'", "\\'"), - JsonConvert.SerializeObject(rows) - )); - rsp.ContentType = "application/json"; - } - - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs b/J6/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs deleted file mode 100644 index a1341aa..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : IDataLogic.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Collections; -using System.Data; - -namespace Com.Plugin.Core.ILogic -{ - /// <summary> - /// Description of ICustomer. - /// </summary> - public interface IDataLogic - { - DataTable GetQueryView(string queryName, Hashtable hash, int pageSize, int currentPageIndex, out int totalCount); - - DataRow GetTotalView(string queryName, Hashtable hash); - - string GetColumnMappingString(string queryName); - - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/IocObject.cs b/J6/src/examples/com.mapfre.weixin/Core/IocObject.cs deleted file mode 100644 index a41c35f..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/IocObject.cs +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : IocObject.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using J6.DevFw.Data; -using Com.Plugin.Core.ILogic; -using Com.Plugin.Core.Logic; -using Com.Plugin.ILogic; -using Com.Plugin.Logic; -using StructureMap; - -namespace Com.Plugin.Core -{ - /// <summary> - /// Description of LogicHelper. - /// </summary> - public class IocObject - { - static IocObject() - { - ObjectFactory.Configure(o => - { - o.For<DbGenerator>().Singleton().Use(new DbGenerator()); - o.For<IDataLogic>().Singleton().Use<DataLogic>(); - o.For<IWeixinResLogic>().Singleton().Use<WeixinResLogic>(); - } - ); - - Data = ObjectFactory.GetInstance<IDataLogic>(); - WeixinRes = ObjectFactory.GetInstance<IWeixinResLogic>(); - _dao = ObjectFactory.GetInstance<DbGenerator>(); - } - - public static readonly IWeixinResLogic WeixinRes; - - internal static readonly IDataLogic Data; - private static DbGenerator _dao; - - public static DataBaseAccess GetDao() - { - return _dao.New(); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs b/J6/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs deleted file mode 100644 index 7d70fea..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : DataLogic.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Text.RegularExpressions; -using Com.Plugin.Core.ILogic; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.IO; -using J6.DevFw.Data; -using J6.DevFw.Framework.Extensions; -using J6.DevFw.Toolkit.Data.Export; - -namespace Com.Plugin.Core.Logic -{ - internal class DataLogic : IDataLogic - { - private IDictionary<string, ExportItemConfig> configDict; - private readonly string _baseDirectory; - private static Regex reg = new Regex("(DROP|SELECT|DELETE|UPDATE)\\s",RegexOptions.IgnoreCase); - - public DataLogic() - { - this.configDict = new Dictionary<string, ExportItemConfig>(); - _baseDirectory = Config.PluginAttr.WorkSpace; - } - - private ExportItemConfig GetConfigByQueryName(string queryName) - { - if (!this.configDict.ContainsKey(queryName)) - { - string filePath = _baseDirectory + "query/" + queryName + ".config"; - - if (!File.Exists(filePath)) - { - throw new Exception("不包含查询:" + queryName); - } - ExportItemConfig cfg = ExportUtil.GetExportItemFormXml( - File.ReadAllText(filePath) - , null); - - this.configDict.Add(queryName, cfg); - } - return this.configDict[queryName]; - } - - public DataTable GetQueryView(string queryName, Hashtable hash, int pageSize, int currentPageIndex, - out int totalCount) - { - DataBaseAccess db = IocObject.GetDao(); - - string query = this.GetConfigByQueryName(queryName).Query; - string queryTotal = this.GetConfigByQueryName(queryName).Total; - - //添加分页参数 - if (hash != null) - { - foreach (DictionaryEntry o in hash) - { - if (reg.IsMatch(o.Value.ToString())) - { - throw new ArgumentException("含有不安全的查询!"); - } - - } - hash.Add("page_start", currentPageIndex<=0?0:(currentPageIndex - 1) * pageSize); - hash.Add("page_end", (currentPageIndex) * pageSize); - hash.Add("page_size", pageSize); - - - //格式化 - query = query.Template(hash); - // throw new Exception(query + "/" + currentPageIndex+"/"+pageSize); - if (!String.IsNullOrEmpty(queryTotal)) - { - queryTotal = queryTotal.Template(hash); - } - } - - - //获取分页结果 - DataTable dataTable = db.GetDataSet(query, hash).Tables[0]; - - //获取统计数据 - if (!String.IsNullOrEmpty(queryTotal)) - { - object data = db.ExecuteScalar(queryTotal, hash); - int.TryParse(data.ToString(), out totalCount); - } - else - { - totalCount = dataTable.Rows.Count; - } - - return dataTable; - } - - public string GetColumnMappingString(string queryName) - { - return this.GetConfigByQueryName(queryName).ColumnMappingString; - } - - public DataRow GetTotalView(string queryName, Hashtable hash) - { - throw new NotImplementedException(); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/SqlFormat.cs b/J6/src/examples/com.mapfre.weixin/Core/SqlFormat.cs deleted file mode 100644 index ef08204..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/SqlFormat.cs +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : SqlFormat.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using J6.DevFw.Data; - -namespace Com.Plugin.Core -{ - /// <summary> - /// Description of OrmMapping. - /// </summary> - internal class SqlFormat:ISqlFormat - { - public string Format(string source,params string[] objs) - { - source=source.Replace("$PREFIX_",Config.DB_PREFIX); - if(objs.Length!=0){ - source=String.Format(source,objs); - } - return source; - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs b/J6/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs deleted file mode 100644 index 2e682ef..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : ExportItem.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Collections; -using System.Collections.Generic; -using System.Data; -using J6.DevFw.Toolkit.Data.Export; - -namespace Com.Plugin.Core.Utils -{ - public class ExportItem:BaseDataExportPortal - { - public ExportItem(string queryName, DataColumnMapping[] columns):base(columns) - { - this.PortalKey = queryName; - } - - public override DataTable GetShemalAndData( Hashtable hash,out int totalCount) - { - return IocObject.Data.GetQueryView( - this.PortalKey, - hash, - hash.ContainsKey("pageSize") ? int.Parse(hash["pageSize"].ToString()) : 100000, - hash.ContainsKey("pageIndex") ? int.Parse(hash["pageIndex"].ToString()) : 1, out totalCount); - } - - public override DataRow GetTotalView(Hashtable hash) - { - return IocObject.Data.GetTotalView( - this.PortalKey, - hash); - } - - - public override sealed string PortalKey { get; set; } - } - - - public class ExportItemManager - { - private static readonly IDictionary<string, IDataExportPortal> exportPortals; - - static ExportItemManager() - { - exportPortals = new Dictionary<string, IDataExportPortal>(); - } - - public static IDataExportPortal GetPortal(string queryName) - { - if (!exportPortals.Keys.Contains(queryName)) - { - DataColumnMapping[] columns = - ExportUtil.GetColumnMappings(IocObject.Data.GetColumnMappingString(queryName)); - - exportPortals.Add(queryName,new ExportItem(queryName,columns)); - } - return exportPortals[queryName]; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs b/J6/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs deleted file mode 100644 index e812f6b..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : LocaledExcelExportProvider.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Collections.Generic; -using System.Data; -using System.IO; -using J6.DevFw.Toolkit.Data.Export; -using NPOI.HSSF.UserModel; -using NPOI.SS.UserModel; - -namespace Com.Plugin.Core.Utils -{ - public sealed class LocaledExcelExportProvider : IDataExportProvider - { - public byte[] Export(DataTable dt, IDictionary<string, string> columns) - { - HSSFWorkbook wb = new HSSFWorkbook(); - MemoryStream ms = new MemoryStream(); - - ISheet sheet = wb.CreateSheet("Sheet1"); - - //填充表头 - IRow dataRow = sheet.CreateRow(0); - - bool isReColumn = !(columns == null || columns.Count == 0); - - int tmpInt = 0; - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - dataRow.CreateCell(tmpInt++).SetCellValue(columns[columnName]); - } - } - else - { - foreach (DataColumn column in dt.Columns) - { - dataRow.CreateCell(tmpInt++).SetCellValue(column.ColumnName); - } - } - - //填充内容 - for (int i = 0; i < dt.Rows.Count; i++) - { - dataRow = sheet.CreateRow(i + 1); - - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - dataRow.CreateCell(tmpInt++).SetCellValue(dt.Rows[i][columnName].ToString()); - } - } - else - { - for (int j = 0; j < dt.Columns.Count; j++) - { - dataRow.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString()); - } - } - } - - - wb.Write(ms); - //rsp.AddHeader("Content-Disposition", string.Format("attachment; filename=EmptyWorkbook.xls")); - //rsp.BinaryWrite(ms.ToArray()); - - wb = null; - ms.Close(); - byte[] bytes = ms.ToArray(); - ms.Dispose(); - - return bytes; - } - - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs b/J6/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs deleted file mode 100644 index e5c5fee..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : LocaledExcelExportProvider.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Web; -using J6.DevFw.Toolkit.Data.Export; -using J6.DevFw.Toolkit.Data.Export.ExportProvider; -using J6.DevFw.Toolkit.Data.Export.UI; -using Newtonsoft.Json; - -namespace Com.Plugin.Core.Utils -{ - - public class ExportHandle - { - public static string Setup(string portal) - { - IDataExportPortal dp = ExportItemManager.GetPortal(portal); - return WebExportOptionUIBuilder.BuildColumnCheckHtml(dp); - } - - public static string GetExportData(HttpContext context) - { - IDataExportPortal portal = ExportItemManager.GetPortal(context.Request.QueryString["portal"]); - ExportParams parameter = DataExportDirector.GetExportParams( - context.Request["params"], null); - int pageIndex, pageSize; - - if (context.Request["page"] != null) - { - int.TryParse(context.Request["page"], out pageIndex); - parameter.Parameters.Add("pageIndex", pageIndex); - } - - if (context.Request["rows"] != null) - { - int.TryParse(context.Request["rows"], out pageSize); - parameter.Parameters.Add("pageSize", pageSize); - } - - int totalCount; - DataTable dt = portal.GetShemalAndData(parameter.Parameters, out totalCount); - return JsonConvert.SerializeObject(new { total = totalCount, rows = dt }); - } - - public static void ProcessExport(HttpContext context) - { - IList<string> columnFields; - IDataExportProvider provider; - string extension; - string portal = context.Request["portal"]; - string columns = context.Request["columns"]; - - //获取导出提供者 - switch (context.Request["exportFormat"] ?? "excel") - { - default: - case "excel": - provider = new LocaledExcelExportProvider(); - extension = "xls"; - break; - case "csv": - provider = new CsvExportProvider(); - extension = "csv"; - break; - case "txt": - provider = new TextExportProvider(); - extension = "txt"; - break; - } - - - //获取列名 - // Regex reg = new Regex("^export_fields\\[\\d+\\]$", RegexOptions.IgnoreCase); - columnFields = new List<string>(); - -// foreach (string key in context.Request.QueryString.Keys) -// { -// if (reg.IsMatch(key)) -// { -// columnFields.Add(context.Request.QueryString[key]); -// } -// } - - - IDataExportPortal _portal = ExportItemManager.GetPortal(context.Request.QueryString["portal"]); - if (_portal == null) throw new ArgumentNullException("_portal"); - - ExportParams parameter = DataExportDirector.GetExportParams(context.Request["params"], columnFields.ToArray()); - - - byte[] bytes = DataExportDirector.Export(_portal, parameter, provider); - - context.Response.BinaryWrite(bytes); - context.Response.ContentType = "application/octet-stream"; - context.Response.AppendHeader("Content-Disposition", String.Format("attachment;filename=\"{0:yyyyMMdd-hhssfff}.{1}\"", - DateTime.Now, - extension)); - - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs b/J6/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs deleted file mode 100644 index 6838c5c..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs +++ /dev/null @@ -1,298 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : NPOIHelper.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Data; -using System.IO; -using System.Web; -using NPOI.HSSF.UserModel; -using NPOI.SS.UserModel; - -namespace Com.Plugin.Core.Utils -{ - public class NPOIHelper - { - private static int ExcelMaxRow = 65535; - - /// <summary> - /// 由DataSet导出Excel - /// </summary> - /// <param name="sourceTable">要导出数据的DataTable</param> - /// <param name="sheetName">工作表名称</param> - /// <returns>Excel工作表</returns> - private static Stream ExportDataSetToExcel(DataSet sourceDs) - { - HSSFWorkbook workbook = new HSSFWorkbook(); - MemoryStream ms = new MemoryStream(); - - for (int i = 0; i < sourceDs.Tables.Count; i++) - { - HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(sourceDs.Tables[i].TableName); - HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); - // handling header. - foreach (DataColumn column in sourceDs.Tables[i].Columns) - headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); - // handling value. - int rowIndex = 1; - foreach (DataRow row in sourceDs.Tables[i].Rows) - { - HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); - foreach (DataColumn column in sourceDs.Tables[i].Columns) - { - dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); - } - rowIndex++; - } - } - workbook.Write(ms); - ms.Flush(); - ms.Position = 0; - workbook = null; - return ms; - } - - /// <summary> - /// 由DataSet导出Excel - /// </summary> - /// <param name="sourceTable">要导出数据的DataTable</param> - /// <param name="fileName">指定Excel工作表名称</param> - /// <returns>Excel工作表</returns> - public static void ExportDataSetToExcel(DataSet sourceDs, string fileName) - { - //检查是否有Table数量超过65325 - for (int t = 0; t < sourceDs.Tables.Count; t++) - { - if (sourceDs.Tables[t].Rows.Count > ExcelMaxRow) - { - DataSet ds = GetdtGroup(sourceDs.Tables[t].Copy()); - sourceDs.Tables.RemoveAt(t); - //将得到的ds插入 sourceDs中 - for (int g = 0; g < ds.Tables.Count; g++) - { - DataTable dt = ds.Tables[g].Copy(); - sourceDs.Tables.Add(dt); - } - t--; - } - } - - MemoryStream ms = ExportDataSetToExcel(sourceDs) as MemoryStream; - HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); - HttpContext.Current.Response.BinaryWrite(ms.ToArray()); - HttpContext.Current.ApplicationInstance.CompleteRequest(); - //HttpContext.Current.Response.End(); - ms.Close(); - ms = null; - } - - /// <summary> - /// 由DataTable导出Excel - /// </summary> - /// <param name="sourceTable">要导出数据的DataTable</param> - /// <returns>Excel工作表</returns> - private static Stream ExportDataTableToExcel(DataTable sourceTable) - { - HSSFWorkbook workbook = new HSSFWorkbook(); - MemoryStream ms = new MemoryStream(); - HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(sourceTable.TableName); - HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); - // handling header. - foreach (DataColumn column in sourceTable.Columns) - headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); - // handling value. - int rowIndex = 1; - foreach (DataRow row in sourceTable.Rows) - { - HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); - foreach (DataColumn column in sourceTable.Columns) - { - dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); - } - rowIndex++; - } - workbook.Write(ms); - ms.Flush(); - ms.Position = 0; - sheet = null; - headerRow = null; - workbook = null; - return ms; - } - - /// <summary> - /// 由DataTable导出Excel - /// </summary> - /// <param name="sourceTable">要导出数据的DataTable</param> - /// <param name="fileName">指定Excel工作表名称</param> - /// <returns>Excel工作表</returns> - public static void ExportDataTableToExcel(DataTable sourceTable, string fileName) - { - //如数据超过65325则分成多个Table导出 - if (sourceTable.Rows.Count > ExcelMaxRow) - { - DataSet ds = GetdtGroup(sourceTable); - //导出DataSet - ExportDataSetToExcel(ds, fileName); - } - else - { - MemoryStream ms = ExportDataTableToExcel(sourceTable) as MemoryStream; - HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); - HttpContext.Current.Response.BinaryWrite(ms.ToArray()); - HttpContext.Current.ApplicationInstance.CompleteRequest(); - //HttpContext.Current.Response.End(); - ms.Close(); - ms = null; - } - } - - /// <summary> - /// 传入行数超过65325的Table,返回DataSet - /// </summary> - /// <param name="dt"></param> - /// <returns></returns> - public static DataSet GetdtGroup(DataTable dt) - { - string tablename = dt.TableName; - - DataSet ds = new DataSet(); - ds.Tables.Add(dt); - - double n = dt.Rows.Count / Convert.ToDouble(ExcelMaxRow); - - //创建表 - for (int i = 1; i < n; i++) - { - DataTable dtAdd = dt.Clone(); - dtAdd.TableName = tablename + "_" + i.ToString(); - ds.Tables.Add(dtAdd); - } - - //分解数据 - for (int i = 1; i < ds.Tables.Count; i++) - { - //新表行数达到最大 或 基表数量不足 - while (ds.Tables[i].Rows.Count != ExcelMaxRow && ds.Tables[0].Rows.Count != ExcelMaxRow) - { - ds.Tables[i].Rows.Add(ds.Tables[0].Rows[ExcelMaxRow].ItemArray); - ds.Tables[0].Rows.RemoveAt(ExcelMaxRow); - - } - } - - return ds; - } - - /// <summary> - /// 由DataTable导出Excel - /// </summary> - /// <param name="sourceTable">要导出数据的DataTable</param> - /// <param name="fileName">指定Excel工作表名称</param> - /// <returns>Excel工作表</returns> - public static void ExportDataTableToExcelModel(DataTable sourceTable, string modelpath, string modelName, - string fileName, string sheetName) - { - int rowIndex = 2; //从第二行开始,因为前两行是模板里面的内容 - int colIndex = 0; - FileStream file = new FileStream(modelpath + modelName + ".xls", FileMode.Open, FileAccess.Read); - //读入excel模板 - HSSFWorkbook hssfworkbook = new HSSFWorkbook(file); - HSSFSheet sheet1 = (HSSFSheet)hssfworkbook.GetSheet("Sheet1"); - sheet1.GetRow(0).GetCell(0).SetCellValue("excelTitle"); //设置表头 - foreach (DataRow row in sourceTable.Rows) - { - //双循环写入sourceTable中的数据 - rowIndex++; - colIndex = 0; - HSSFRow xlsrow = (HSSFRow)sheet1.CreateRow(rowIndex); - foreach (DataColumn col in sourceTable.Columns) - { - xlsrow.CreateCell(colIndex).SetCellValue(row[col.ColumnName].ToString()); - colIndex++; - } - } - sheet1.ForceFormulaRecalculation = true; - FileStream fileS = new FileStream(modelpath + fileName + ".xls", FileMode.Create); //保存 - hssfworkbook.Write(fileS); - fileS.Close(); - file.Close(); - } - - - public static DataSet ImportFromExcel(string excelPath) - { - DataSet ds = new DataSet(); - using (FileStream file = new FileStream(excelPath, FileMode.Open, FileAccess.Read)) - { - HSSFWorkbook hssfworkbook = new HSSFWorkbook(file); - - ISheet sheet = hssfworkbook.GetSheetAt(0); - ds.Tables.Add(GetDataTableFromSheet(sheet)); - } - return ds; - } - - private static DataTable GetDataTableFromSheet(ISheet sheet) - { - System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); - - DataTable dt = new DataTable(); - - int rowIndex = 0; - string columnName = null; - while (rows.MoveNext()) - { - IRow row = (IRow)rows.Current; - //添加列 - if (rowIndex++ == 0) - { - for (int i = 0; i < row.LastCellNum; i++) - { - ICell cell = row.GetCell(i); - if (cell == null) - { - columnName = "C" + i.ToString(); - } - - else - { - columnName = cell.ToString(); - } - dt.Columns.Add(columnName); - } - } - else - { - //添加行 - DataRow dr = dt.NewRow(); - for (int i = 0; i < row.LastCellNum; i++) - { - ICell cell = row.GetCell(i); - - if (cell == null) - { - dr[i] = null; - } - - else - { - dr[i] = cell.ToString(); - } - } - - dt.Rows.Add(dr); - } - } - - return dt; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs b/J6/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs deleted file mode 100644 index c44f193..0000000 --- a/J6/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : VerifyCodeManager.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Web; - -namespace Com.Plugin.Core.Utils -{ - /// <summary> - /// 验证码管理器 - /// </summary> - internal static class VerifyCodeManager - { - /// <summary> - /// 添加词语 - /// </summary> - /// <param name="word"></param> - public static void AddWord(string word) - { - if (word != null) - { - HttpContext.Current.Session["$manager.login.verifycode"] = word; - } - } - - /// <summary> - /// 比较验证码 - /// </summary> - /// <param name="inputWord"></param> - /// <returns></returns> - public static bool Compare(string inputWord) - { - var sess = HttpContext.Current.Session["$manager.login.verifycode"]; - if (sess != null) - { - return String.Compare(inputWord, sess.ToString(), true) == 0; - } - return true; - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Entity/ArticleRes.cs b/J6/src/examples/com.mapfre.weixin/Entity/ArticleRes.cs deleted file mode 100644 index c5be027..0000000 --- a/J6/src/examples/com.mapfre.weixin/Entity/ArticleRes.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using Com.Plugin.Core; - -namespace Com.Plugin.Entity -{ - public class ArticleRes:IWxRes - { - public int Id { get; set; } - - public string GetKey() - { - return this.ResKey; - } - public int Type() - { - return this.TypeId; - } - public string ResKey { get; set; } - public int TypeId { get; set; } - public DateTime CreateTime { get; set; } - public DateTime UpdateTime { get; set; } - public String TypeName { get; set; } - - public IList<ArticleResItem> Items { get; set; } - - - public int Save() - { - return IocObject.WeixinRes.Save(this); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Entity/ArticleResItem.cs b/J6/src/examples/com.mapfre.weixin/Entity/ArticleResItem.cs deleted file mode 100644 index 0999107..0000000 --- a/J6/src/examples/com.mapfre.weixin/Entity/ArticleResItem.cs +++ /dev/null @@ -1,38 +0,0 @@ - -using Com.Plugin.Core; - -namespace Com.Plugin.Entity -{ - public class ArticleResItem - { - private ArticleRes _art; - - public ArticleResItem() - { - - } - public ArticleResItem(ArticleRes art) - { - this._art = art; - } - public int Id { get; set; } - - public string Title { get; set; } - public string Description { get; set; } - public string Content { get; set; } - public string Url { get; set; } - public string Pic { get; set; } - public int Sort { get; set; } - public bool Enabled { get; set; } - - public void SetArticle(ArticleRes art) - { - this._art = art; - } - - public int Save() - { - return IocObject.WeixinRes.SaveArticleItem(this._art.Id, this); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Entity/IWxRes.cs b/J6/src/examples/com.mapfre.weixin/Entity/IWxRes.cs deleted file mode 100644 index 564928a..0000000 --- a/J6/src/examples/com.mapfre.weixin/Entity/IWxRes.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Com.Plugin.Entity -{ - public interface IWxRes - { - string GetKey(); - int Type(); - int Save(); - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Entity/TextRes.cs b/J6/src/examples/com.mapfre.weixin/Entity/TextRes.cs deleted file mode 100644 index 6e39f7f..0000000 --- a/J6/src/examples/com.mapfre.weixin/Entity/TextRes.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using Com.Plugin.Core; - -namespace Com.Plugin.Entity -{ - public class TextRes:IWxRes - { - public int Id { get; set; } - - public string GetKey() - { - return this.ResKey; - } - public string ResKey { get; set; } - public int TypeId { get; set; } - public string Content { get; set; } - public DateTime CreateTime { get; set; } - public DateTime UpdateTime { get; set; } - public String TypeName { get; set; } - - - public int Save() - { - return IocObject.WeixinRes.Save(this); - } - - public int Type() - { - return this.TypeId; - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/ILogic/IWeixinResLogic.cs b/J6/src/examples/com.mapfre.weixin/ILogic/IWeixinResLogic.cs deleted file mode 100644 index 44624d2..0000000 --- a/J6/src/examples/com.mapfre.weixin/ILogic/IWeixinResLogic.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Com.Plugin.Entity; - -namespace Com.Plugin.ILogic -{ - public interface IWeixinResLogic - { - IWxRes GetResById(int id); - bool CheckResKey(int id, string resKey); - int Save(IWxRes res); - ArticleResItem GetArticleItem(int id); - int SaveArticleItem(int id, ArticleResItem item); - IWxRes GetResByKey(string resKey); - void DeleteRes(int resId); - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs b/J6/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs deleted file mode 100644 index bd1d062..0000000 --- a/J6/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs +++ /dev/null @@ -1,371 +0,0 @@ -using System; -using System.Collections.Generic; -using J6.DevFw.Data; -using J6.DevFw.Data.Extensions; -using Com.Plugin.Core; -using Com.Plugin.Entity; -using Com.Plugin.ILogic; - -namespace Com.Plugin.Logic -{ - public class WeixinResLogic : IWeixinResLogic - { - private DbGenerator _dao; - - public WeixinResLogic(DbGenerator dao) - { - this._dao = dao; - } - - public IWxRes GetResById(int id) - { - IWxRes res = null; - DataBaseAccess db = this._dao.New(); - db.ExecuteReader("SELECT Id ,ResKey,TypeId,TypeName,CreateTime,UpdateTime FROM wx_res WHERE Id=" + id.ToString(), rd => - { - if (rd.Read()) - { - int typeId = rd.GetInt32(2); - if (typeId == 1) - { - res = new TextRes - { - CreateTime = rd.GetDateTime(4), - UpdateTime = rd.GetDateTime(5), - TypeId = typeId, - TypeName = rd.GetString(3), - ResKey = rd.GetString(1), - Id = rd.GetInt32(0) - }; - } - else - { - res = new ArticleRes - { - CreateTime = rd.GetDateTime(4), - UpdateTime = rd.GetDateTime(5), - TypeId = typeId, - ResKey = rd.GetString(1), - TypeName = rd.GetString(3), - Id = rd.GetInt32(0) - }; - } - } - }); - - if (res != null) - { - TextRes tRes; - ArticleRes atRes; - - if ((tRes = (res as TextRes)) != null) - { - db.ExecuteReader("SELECT Content FROM wx_text Where resid=" + tRes.Id.ToString(), rd => - { - if (rd.Read()) - { - tRes.Content = rd.GetString(0); - } - }); - } - else - { - atRes = res as ArticleRes; - - db.ExecuteReader("SELECT * FROM wx_art_item WHERE resid=" + atRes.Id.ToString() + " ORDER BY sort,id", rd => - { - if (rd.HasRows) - { - atRes.Items = rd.ToEntityList<ArticleResItem>(); - } - - }); - - if (atRes.Items != null) - { - foreach (var articleResItem in atRes.Items) - { - articleResItem.SetArticle(atRes); - } - } - else - { - atRes.Items = new List<ArticleResItem>(); - } - } - } - - return res; - } - - - public bool CheckResKey(int id, string resKey) - { - object result = this._dao.New().ExecuteScalar(new SqlQuery( - "SELECT count(0) FROM wx_res WHERE resKey =@resKey AND ( id<>@id OR @id=0)", - new object[,] - { - {"@resKey",resKey}, - {"@id",id} - })); - - return Convert.ToInt32(result) == 0; - } - - - public int Save(IWxRes res) - { - TextRes textRes = res as TextRes; - if (textRes != null) - { - return SaveTextRes(textRes); - } - else - { - ArticleRes artRes = res as ArticleRes; - return this.SaveArticleRes(artRes); - - } - } - - - private int SaveArticleRes(ArticleRes artRes) - { - DataBaseAccess db = this._dao.New(); - var data = new object[,] - { - {"@Id", artRes.Id}, - {"@ResKey", artRes.ResKey}, - {"@CreateTime", artRes.CreateTime}, - {"@UpdateTime", artRes.UpdateTime}, - {"@TypeId", artRes.TypeId}, - {"@TypeName", artRes.TypeName} - }; - - if (artRes.Id > 0) - { - db.ExecuteNonQuery(new SqlQuery("UPDATE wx_res SET reskey=@resKey,updatetime=@updatetime WHERE id=@Id", data)); - } - else - { - int row = db.ExecuteNonQuery(new SqlQuery(@"INSERT INTO wx_res (ResKey,TypeId,TypeName,CreateTime,UpdateTime) - VALUES (@ResKey,@TypeId,@TypeName,@CreateTime,@UpdateTime)", data)); - if (row == 1) - { - int id = Convert.ToInt32(db.ExecuteScalar("SELECT MAX(id) FROM wx_res")); - return id; - } - } - - return artRes.Id; - } - - private int SaveTextRes(TextRes textRes) - { - DataBaseAccess db = this._dao.New(); - var data = new object[,] - { - {"@Id", textRes.Id}, - {"@ResKey", textRes.ResKey}, - {"@CreateTime", textRes.CreateTime}, - {"@UpdateTime", textRes.UpdateTime}, - {"@TypeId", textRes.TypeId}, - {"@TypeName", textRes.TypeName}, - {"@Content", textRes.Content} - }; - - if (textRes.Id > 0) - { - db.ExecuteNonQuery(new SqlQuery("UPDATE wx_res SET reskey=@resKey,updatetime=@updatetime WHERE id=@Id", data), - new SqlQuery("Update wx_text Set wx_text.content=@Content where resId=@Id", data)); - } - else - { - int row = db.ExecuteNonQuery(new SqlQuery(@"INSERT INTO wx_res (ResKey,TypeId,TypeName,CreateTime,UpdateTime) - VALUES (@ResKey,@TypeId,@TypeName,@CreateTime,@UpdateTime)", data)); - if (row == 1) - { - int id = Convert.ToInt32(db.ExecuteScalar("SELECT MAX(id) FROM wx_res")); - data[0, 1] = id; - db.ExecuteNonQuery(new SqlQuery(@"INSERT INTO wx_text(ResId,Content)VALUES(@Id,@Content)", data)); - return id; - } - } - - return textRes.Id; - } - - public ArticleResItem GetArticleItem(int id) - { - ArticleResItem res = null; - DataBaseAccess db = this._dao.New(); - db.ExecuteReader( - "SELECT Id ,ResId,Title ,Content,Url ,Pic ,Sort,Enabled,Description FROM wx_art_item WHERE Id=" + id.ToString(), - rd => - { - if (rd.Read()) - { - int resId = rd.GetInt32(1); - res = new ArticleResItem(new ArticleRes { Id = resId }); - res.Id = rd.GetInt32(0); - res.Title = rd.GetString(2); - res.Content = rd.GetString(3); - res.Url = rd.GetString(4); - res.Pic = rd.GetString(5); - res.Sort = rd.GetInt32(6); - res.Enabled = rd.GetBoolean(7); - res.Description = rd.GetString(8); - } - }); - return res; - } - - public int SaveArticleItem(int id, ArticleResItem item) - { - DataBaseAccess db = this._dao.New(); - var data = new object[,] - { - {"@ResId", id}, - {"@Description",item.Description}, - {"@Content", item.Content}, - {"@Enabled", item.Enabled}, - {"@Pic", item.Pic}, - {"@Id", item.Id}, - {"@Sort", item.Sort}, - {"@Title", item.Title}, - {"@Url", item.Url}, - }; - - if (item.Id > 0) - { - db.ExecuteNonQuery(new SqlQuery(@"UPDATE wx_art_item SET Title = @Title , - [Content]=@Content, Description=@Description,[Url] = @Url ,[Pic] = @Pic ,[Sort] = @Sort ,[Enabled] = @Enabled - WHERE [ResId] = @ResId AND id=@Id", - data)); - } - else - { - int row = - db.ExecuteNonQuery(new SqlQuery(@"INSERT INTO wx_art_item ([ResId],[Title],Description,[Content],[Url],[Pic],[Sort],[Enabled]) - VALUES (@ResId,@Title,@Description,@Content,@Url,@Pic,@Sort,@Enabled)", data)); - if (row == 1) - { - return Convert.ToInt32(db.ExecuteScalar("SELECT MAX(id) FROM wx_art_item")); - } - } - - return item.Id; - } - - - public IWxRes GetResByKey(string resKey) - { - IWxRes res = null; - DataBaseAccess db = this._dao.New(); - db.ExecuteReader(new SqlQuery("SELECT Id ,ResKey,TypeId,TypeName,CreateTime,UpdateTime FROM wx_res WHERE ResKey=@ResKey", - new object[,] - { - {"@ResKey",resKey} - }),rd => - { - if (rd.Read()) - { - int typeId = rd.GetInt32(2); - if (typeId == 1) - { - res = new TextRes - { - CreateTime = rd.GetDateTime(4), - UpdateTime = rd.GetDateTime(5), - TypeId = typeId, - TypeName = rd.GetString(3), - ResKey = rd.GetString(1), - Id = rd.GetInt32(0) - }; - } - else - { - res = new ArticleRes - { - CreateTime = rd.GetDateTime(4), - UpdateTime = rd.GetDateTime(5), - TypeId = typeId, - ResKey = rd.GetString(1), - TypeName = rd.GetString(3), - Id = rd.GetInt32(0) - }; - } - } - }); - - if (res != null) - { - TextRes tRes; - ArticleRes atRes; - - if ((tRes = (res as TextRes)) != null) - { - db.ExecuteReader("SELECT Content FROM wx_text Where resid=" + tRes.Id.ToString(), rd => - { - if (rd.Read()) - { - tRes.Content = rd.GetString(0); - } - }); - } - else - { - atRes = res as ArticleRes; - - db.ExecuteReader("SELECT * FROM wx_art_item WHERE resid=" + atRes.Id.ToString()+" ORDER BY sort,id", rd => - { - if (rd.HasRows) - { - atRes.Items = rd.ToEntityList<ArticleResItem>(); - } - - }); - - if (atRes.Items != null) - { - foreach (var articleResItem in atRes.Items) - { - articleResItem.SetArticle(atRes); - } - } - else - { - atRes.Items = new List<ArticleResItem>(); - } - } - } - - return res; - } - - public void DeleteRes(int resId) - { - DataBaseAccess db = this._dao.New(); - IWxRes res = this.GetResById(resId); - object[,] data = new object[,] - { - {"@resId", resId} - }; - - if (res.Type() == 1) - { - db.ExecuteNonQuery( - new SqlQuery("DELETE FROM wx_res WHERE id=@resId", data), - new SqlQuery("DELETE FROM wx_text Where resid=@resId", data) - ); - } - else - { - db.ExecuteNonQuery( - new SqlQuery("DELETE FROM wx_res WHERE id=@resId", data), - new SqlQuery("DELETE FROM wx_art_item Where resid=@resId", data) - ); - } - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Main.cs b/J6/src/examples/com.mapfre.weixin/Main.cs deleted file mode 100644 index 6351aa7..0000000 --- a/J6/src/examples/com.mapfre.weixin/Main.cs +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : Main.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ -using System; -using J6.DevFw.PluginKernel; -using J6.DevFw.Web.Plugin; -using Senparc.Weixin.MP.CommonAPIs; - -namespace Com.Plugin -{ - /// <summary> - /// Description of Main. - /// </summary> - public class Main:IPlugin - { - private PluginPackAttribute _attr; - public PluginConnectionResult Connect(IPluginHost app) - { - IPluginApp _app = app as IPluginApp; - if(_app!=null) - { - Config.Init(this); - - RequestProxry req=new RequestProxry(_app,this); - _app.Register(this,req.HandleGet,req.HandlePost); - _app.MapPluginRoute(this); - _app.MapPluginRoute(this,"wxm"); - this.init(); - } - - - return PluginConnectionResult.Success; - } - - private void init() - { - //注册appid和appsecret - if (!AccessTokenContainer.CheckRegistered(Variables.AppId)) - { - AccessTokenContainer.Register(Variables.AppId, Variables.AppSecret); - } - - } - - public bool Install() - { - return true; - } - - public bool Uninstall() - { - return true; - } - - public void Run() - { - - } - - public void Pause() - { - } - - public string GetMessage() - { - return ""; - } - - public object Call(string method, params object[] parameters) - { - throw new NotImplementedException(); - } - - - public void Logln(string line) - { - Logger.Println("[WeiXin]:"+line); - } - - - public PluginPackAttribute GetAttribute() - { - - if (this._attr == null) - { - this._attr = PluginUtil.GetAttribute(this); - } - return this._attr; - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs b/J6/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs deleted file mode 100644 index 9f330d9..0000000 --- a/J6/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using J6.DevFw.PluginKernel; -using Com.PluginKernel; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("S1N1.COM")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Copyright © ops 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("b7be3f8d-90ff-44d7-a32a-00cd3581c102")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.*")] - -[assembly:PluginPack( - - //工作标识,将会在plugins下生成同名的目录,用于存放插件资源 - "com.mapfre.weixin", - - //插件图标,可为空 - Icon = "icon.png", - - //插件名称 - Name = "Hello World!", - - //插件开发者 - Author = "S1N1.COM", - - //插件访问入口 - PortalUrl = "/com.mapfre.weixin.aspx", - - //插件设置地址 - ConfigUrl = "", - - //插件描述 - Description = "Hello world!" - -)] diff --git a/J6/src/examples/com.mapfre.weixin/README.md b/J6/src/examples/com.mapfre.weixin/README.md deleted file mode 100644 index 2dd3668..0000000 --- a/J6/src/examples/com.mapfre.weixin/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 插件开发指南 Ops.Cms Plugin Development Guide # -## 插件的扩展名 ## - 插件是一个.dll(或.so)为扩展名的类库。建议使用.so作为插件的后缀, - ASP.NET下.so插件放在bin目录下,可以自动加载。 - -## 如何编译为.so格式 ## - VS项目属性=》生成事件=》后期生成事件中输入下面命令,编译后可以自动得到.so文件。 - move $(TargetPath) $(SolutionDir)$(OutDir)$(TargetName).so - -## 如何加载插件 ## - 编写插件后,编译项目,将编译生成的.dll文件拷贝到网站的plugins目录下, - 重新启动可加载插件。 - -## 自动生成并加载插件 ## - 此操作需要将插件的后缀设置为.so.同样可以定义编译事件,将插件拷贝到网站的bin目录下即可。 \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/RequestProxry.cs b/J6/src/examples/com.mapfre.weixin/RequestProxry.cs deleted file mode 100644 index 3acffcd..0000000 --- a/J6/src/examples/com.mapfre.weixin/RequestProxry.cs +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : RequestProxry.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Web; -using J6.DevFw.PluginKernel; -using J6.DevFw.Web.Plugin; -using Com.Plugin.Core; -using Com.Plugin.WebManage; - -namespace Com.Plugin -{ - /// <summary> - /// Description of HandleRequest. - /// </summary> - public class RequestProxry - { - private readonly IPluginApp _app; - private readonly RequestHandle _handler; - - private readonly ManageHandle _mgHandler; - - public RequestProxry(IPluginApp app, IPlugin plugin) - { - this._app = app; - this._handler = new RequestHandle(plugin); - this._mgHandler = new ManageHandle(app,plugin); - } - - public static bool VerifyLogin(HttpContext context) - { - return true; - // bool result = UserState.Administrator.HasLogin; - // if (!result) - // { - // context.Response.Write("<script>window.parent.location.replace('/admin?return_url=')</script>"); - // } - // return result; - } - - public void HandleGet(HttpContext context, ref bool handled) - { - if (context.Request.Path.Contains("/wxm")) - { - if (this._app.HandleRequestUse(this._mgHandler, context, false)) - { - handled = true; - } - return; - } - if (this._app.HandleRequestUse(this._handler, context, false)) - { - handled = true; - } - } - - public void HandlePost(HttpContext context, ref bool handled) - { - if (context.Request.Path.Contains("/wxm")) - { - if (this._app.HandleRequestUse(this._mgHandler, context, true)) - { - handled = true; - } - return; - } - if (this._app.HandleRequestUse(this._handler, context, true)) - { - handled = true; - } - } - - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Variables.cs b/J6/src/examples/com.mapfre.weixin/Variables.cs deleted file mode 100644 index cbb80cd..0000000 --- a/J6/src/examples/com.mapfre.weixin/Variables.cs +++ /dev/null @@ -1,48 +0,0 @@ - -namespace Com.Plugin -{ - internal class Variables - { - public static string Token; - - public static string AppId; - - public static string AppSecret; - - /// <summary> - /// 解密字符串 - /// </summary> - public static string AppEncodeString; - public static string ApiDomain; // - public static string MenuButtons; //自定义菜单 - public static string WxWelcomeMessage; //微信欢迎文字 - public static string WxEnterMessage; //微信进入文字 - public static string WxDefaultResponseMessage; //微信默认自动回复消息 - public static bool DebugMode = false; - - #region 按钮模板 - - /* - { - "button":[ - { - "type":"click", - "name":"今日歌曲", - "key":"V1001_TODAY_MUSIC" - }, - { - "name":"菜单", - "sub_button":[ - { - "type":"view", - "name":"搜索", - "url":"http://www.soso.com/" - } - ] - }] - } - */ - - #endregion - } -} diff --git a/J6/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs b/J6/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs deleted file mode 100644 index 647b1a7..0000000 --- a/J6/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs +++ /dev/null @@ -1,431 +0,0 @@ -using System; -using System.Web; -using J6.DevFw.Framework.Extensions; -using J6.DevFw.PluginKernel; -using J6.DevFw.Template; -using J6.DevFw.Web.Plugin; -using Com.Plugin.Core; -using Com.Plugin.Entity; -using Com.Plugin.Weixin; -using Newtonsoft.Json; -using Senparc.Weixin.MP; - -namespace Com.Plugin.WebManage -{ - internal class ManageHandle - { - private IPlugin _plugin; - private readonly BaseHandle _baseHandle; - private IPluginApp _app; - - public ManageHandle(IPluginApp app,IPlugin plugin) - { - this._app = app; - this._plugin = plugin; - this._baseHandle = new BaseHandle(app,plugin); - } - - #region base - - public string UploadCgi_post(HttpContext context) - { - return this._baseHandle.Upload_post(context); - } - - public string Export_Setup(HttpContext context) - { - return this._baseHandle.Export_Setup(context); - } - - public string Export_GetExportData_post(HttpContext context) - { - return this._baseHandle.Export_GetExportData_post(context); - } - - public void Export_ProcessExport(HttpContext context) - { - this._baseHandle.Export_ProcessExport(context); - } - - #endregion - - public string Test(HttpContext context) - { - return "it's working!"; - } - - public string BasicSetting(HttpContext context) - { - PluginPackAttribute attr = this._plugin.GetAttribute(); - TemplatePage page =this._app.GetPage(this._plugin,"mg/basic_setting.html"); - - string url = String.Format("http://{0}/{1}.sh.aspx/serve", - context.Request.Url.Host,attr.WorkIndent); - string token = attr.Settings["Weixin_Token"] ?? - String.Empty.RandomLetters(6); - string appId = attr.Settings["Weixin_AppId"] ?? ""; - string appSecret = attr.Settings["Weixin_AppSecret"] ?? ""; - string appEncodeString =attr.Settings["Weixin_AppEncodeString"] ?? ""; - string wlc = attr.Settings["Weixin_WelcomeMessage"]??""; - string enterMessage = attr.Settings["Weixin_EnterMessage"]??""; - string defaultRspMesssage= attr.Settings["Weixin_DefaultResponseMessage"]??""; - - page.AddVariable("data", new - { - url = url, - token = token, - appId = appId, - appSecret = appSecret, - aes = appEncodeString, - welcomeMessage = wlc, - enterMessage = enterMessage, - defaultRspMessage = defaultRspMesssage, - }); - return page.ToString(); - } - - public string BasicSetting_post(HttpContext context) - { - PluginPackAttribute attr = this._plugin.GetAttribute(); - var form = context.Request.Form; - attr.Settings["Weixin_Token"] = form["Weixin_Token"]; - attr.Settings["Weixin_AppId"] = form["Weixin_AppId"]; - attr.Settings["Weixin_AppSecret"] = form["Weixin_AppSecret"]; - attr.Settings["Weixin_AppEncodeString"] = form["Weixin_AppEncodeString"]; - attr.Settings["Weixin_WelcomeMessage"] = form["Weixin_WelcomeMessage"]; - attr.Settings["Weixin_EnterMessage"] = form["Weixin_EnterMessage"]; - attr.Settings["Weixin_DefaultResponseMessage"] = form["Weixin_DefaultResponseMessage"]; - - attr.Settings.Flush(); - Config.InitWeixin(attr.Settings); - - return "{result:true,message:'修改成功'}"; - } - - public string Menu(HttpContext context) - { - TemplatePage page =this._app.GetPage(this._plugin,"mg/menu.html"); - String menuJson = JsonConvert.SerializeObject(WeixinHelper.GetMenuTreeNode()); - page.AddVariable("menu", menuJson); - return page.ToString(); - } - - public string EditMenu(HttpContext context) - { - int pi = 0; - int si = -1; - string mi = context.Request["mi"]; - if (mi.Contains("-")) - { - string[] arr = mi.Split('-'); - pi = int.Parse(arr[0]) - 1; - si = int.Parse(arr[1]) - 1; - } - else - { - pi = int.Parse(mi) - 1; - } - - TemplatePage page =this._app.GetPage(this._plugin,"mg/menu_edit.html"); - String entityJson = JsonConvert.SerializeObject(WeixinHelper.GetMenuNode(pi, si)); - page.AddVariable("entity", entityJson); - page.AddVariable("pi", pi); - page.AddVariable("si", si); - return page.ToString(); - } - - public string CreateMenu(HttpContext context) - { - int pi = int.Parse(context.Request["pi"]) - 1; - TemplatePage page = this._app.GetPage(this._plugin,"mg/menu_create.html"); - String menuJson = JsonConvert.SerializeObject(WeixinHelper.GetMenuTreeNode()); - page.AddVariable("menu", menuJson); - page.AddVariable("pi", pi); - return page.ToString(); - } - - public string EditMenu_post(HttpContext context) - { - int pi = int.Parse(context.Request["pi"]); - int si = int.Parse(context.Request["si"]); - MenuFull_RootButton button = WeixinHelper.GetMenuNode(pi, si); - button.name = context.Request["name"]; - button.type = context.Request["type"]; - button.key = context.Request["key"]; - button.url = context.Request["url"]; - WeixinHelper.SaveMenuNode(pi, si, button); - return "{result:true,message:'修改成功'}"; - } - - public string CreateMenu_post(HttpContext context) - { - int pi = int.Parse(context.Request["pi"]); - MenuFull_RootButton button = new MenuFull_RootButton(); - button.name = context.Request["name"]; - button.type = context.Request["type"]; - button.key = context.Request["key"]; - button.url = context.Request["url"]; - WeixinHelper.CreateMenuNode(pi, button); - return "{result:true,message:'修改成功'}"; - } - - public string DelMenu_post(HttpContext context) - { - int pi = 0; - int si = -1; - string mi = context.Request["mi"]; - if (mi.Contains("-")) - { - string[] arr = mi.Split('-'); - pi = int.Parse(arr[0]) - 1; - si = int.Parse(arr[1]) - 1; - } - else - { - pi = int.Parse(mi) - 1; - } - WeixinHelper.DelMenu(pi, si); - return "{result:true,message:'删除成功'}"; - } - - - public string ApplyMenu_post(HttpContext context) - { - try - { - String msg = WeixinHelper.PostApplyMenu(); - if (msg != "ok") - { - throw new Exception(msg); - } - } - catch (Exception exc) - { - return "{result:false,message:'" + exc.Message + "'}"; - } - return "{result:true,message:'操作成功'}"; - } - - - /// <summary> - /// 素材管理 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - public string ResourceList(HttpContext context) - { - TemplatePage page = this._app.GetPage(this._plugin,"mg/resource_list.html"); - return page.ToString(); - } - - public string CheckResKey_post(HttpContext context) - { - int id = int.Parse(context.Request["id"]); - string resKey = context.Request["resKey"]; - - bool result = IocObject.WeixinRes.CheckResKey(id, resKey); - - return result ? "{result:true}" : "{result:false}"; - - } - - #region TextRes - - public string EditTextRes(HttpContext context) - { - int id = int.Parse(context.Request["id"]); - TemplatePage page = this._app.GetPage(this._plugin, "mg/text_res.html"); - TextRes res = IocObject.WeixinRes.GetResById(id) as TextRes; - if (res == null) - { - page.AddVariable("content", ""); - page.AddVariable("entity", "{}"); - } - else - { - - page.AddVariable("content", res.Content == null ? "" : res.Content); - page.AddVariable("entity", JsonConvert.SerializeObject(res)); - } - - return page.ToString(); - } - - public string CreateTextRes(HttpContext context) - { - TemplatePage page = this._app.GetPage(this._plugin, "mg/text_res.html"); - - page.AddVariable("entity", "{Id:0}"); - page.AddVariable("content", ""); - - return page.ToString(); - } - - public string SaveTextRes_post(HttpContext context) - { - bool isCreate = false; - IWxRes res; - try - { - TextRes tres = context.Request.Form.ConvertToEntity<TextRes>(); - res = tres; - - if (tres.Id > 0) - { - TextRes ores = IocObject.WeixinRes.GetResById(tres.Id) as TextRes; - tres.TypeId = ores.TypeId; - tres.TypeName = ores.TypeName; - tres.CreateTime = ores.CreateTime; - } - else - { - isCreate = true; - tres.CreateTime = DateTime.Now; - tres.TypeName = "文本"; - tres.TypeId = 1; - } - tres.UpdateTime = DateTime.Now; - tres.Content = context.Request["Content"]; - int id = tres.Save(); - } - catch (Exception exc) - { - return "{result:false,message:'" + exc.Message + "'}"; - } - return "{result:true,message:'" + (isCreate ? "添加成功" : "保存成功") + "'}"; - } - - #endregion - - #region ArticleRes - - public string CreateArticleRes(HttpContext context) - { - TemplatePage page = this._app.GetPage(this._plugin, "mg/article_res.html"); - - page.AddVariable("entity", "{Id:0}"); - page.AddVariable("data", new - { - content = "", - description = "" - }); - - return page.ToString(); - } - - public string EditArticleRes(HttpContext context) - { - int id = int.Parse(context.Request["id"]); - TemplatePage page = this._app.GetPage(this._plugin, "mg/article_res.html"); - ArticleRes res = IocObject.WeixinRes.GetResById(id) as ArticleRes; - res.Items = null; - page.AddVariable("entity", res != null ? JsonConvert.SerializeObject(res) : "{}"); - - return page.ToString(); - } - - public string SaveArticleRes_post(HttpContext context) - { - bool isCreate = false; - IWxRes res; - try - { - ArticleRes tres = context.Request.Form.ConvertToEntity<ArticleRes>(); - res = tres; - - if (tres.Id > 0) - { - ArticleRes ores = IocObject.WeixinRes.GetResById(tres.Id) as ArticleRes; - tres.TypeId = ores.TypeId; - tres.TypeName = ores.TypeName; - tres.CreateTime = ores.CreateTime; - } - else - { - isCreate = true; - tres.CreateTime = DateTime.Now; - tres.TypeName = "图文"; - tres.TypeId = 2; - } - tres.UpdateTime = DateTime.Now; - int id = res.Save(); - } - catch (Exception exc) - { - return "{result:false,message:'" + exc.Message + "'}"; - } - return "{result:true,message:'" + (isCreate ? "添加成功" : "保存成功") + "'}"; - } - - public string ArticleItems(HttpContext context) - { - string resId = context.Request["res_id"]; - TemplatePage page = this._app.GetPage(this._plugin, "mg/article_itemlist.html"); - page.AddVariable("resId", resId); - return page.ToCompressedString(); - } - - public string CreateArticleItem(HttpContext context) - { - string resId = context.Request["res_id"]; - TemplatePage page = this._app.GetPage(this._plugin, "mg/article_item.html"); - page.AddVariable("entity", "{Id:0,Enabled:true}"); - page.AddVariable("resId", resId); - page.AddVariable("content", ""); - page.AddVariable("description", ""); - - return page.ToString(); - } - - public string EditArticleItem(HttpContext context) - { - string resId = context.Request["res_id"]; - int id = int.Parse(context.Request["id"]); - TemplatePage page = this._app.GetPage(this._plugin, "mg/article_item.html"); - ArticleResItem res = IocObject.WeixinRes.GetArticleItem(id); - page.AddVariable("content", res.Content); - page.AddVariable("description", res.Description); - res.Content = null; - res.Description = null; - page.AddVariable("entity", res != null ? JsonConvert.SerializeObject(res) : "{}"); - page.AddVariable("resId", resId); - return page.ToString(); - } - - - public string SaveArticleItem_post(HttpContext context) - { - bool isCreate = false; - try - { - ArticleResItem tres = context.Request.Form.ConvertToEntity<ArticleResItem>(); - isCreate = tres.Id <= 0; - ArticleRes res = IocObject.WeixinRes.GetResById(int.Parse(context.Request.Form["ResId"])) as ArticleRes; - tres.SetArticle(res); - int id = tres.Save(); - } - catch (Exception exc) - { - return "{result:false,message:'" + exc.Message + "'}"; - } - return "{result:true,message:'" + (isCreate ? "添加成功" : "保存成功") + "'}"; - } - - public string DelRes_post(HttpContext context) - { - try - { - int resId = int.Parse(context.Request["id"]); - IocObject.WeixinRes.DeleteRes(resId); - } - catch (Exception exc) - { - return "{result:false,message:'" + exc.Message + "'}"; - - } - return "{result:true,message:'删除成功'}"; - } - - #endregion - } -} diff --git a/J6/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs b/J6/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs deleted file mode 100644 index 8a96237..0000000 --- a/J6/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs +++ /dev/null @@ -1,338 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : RequestHandle.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Text.RegularExpressions; -using System.Web; -using System.Xml; -using System.Xml.Linq; -using J6.DevFw; -using J6.DevFw.Framework.Extensions; -using J6.DevFw.Framework.Graphic; -using J6.DevFw.Framework.Web.UI; -using J6.DevFw.PluginKernel; -using Com.Plugin.Core.Utils; -using Com.Plugin.Weixin; -using Senparc.Weixin; -using Senparc.Weixin.MP; -using Senparc.Weixin.MP.AdvancedAPIs; -using Variable = Com.Plugin.Variables; - -namespace Com.Plugin.WebManage -{ - /// <summary> - /// Description of MobileActions. - /// </summary> - internal class RequestHandle - { - private readonly IPlugin _plugin; - private long compress = 50L; - private int imgHeight; - private int imgWidth; - private long quality = 90L; - private string waterPath; - private string workSpace; - - internal RequestHandle(IPlugin plugin) - { - _plugin = plugin; - - // workSpace = Config.PluginAttrs.WorkSpace; - // log = new LogFile(workSpace + "log.txt"); - // - // imgWidth = int.Parse(Config.PluginAttrs.Settings["img.width"]); - // imgHeight = int.Parse(Config.PluginAttrs.Settings["img.height"]); - // - // if (Config.PluginAttrs.Settings.Contains("quality")) - // { - // quality = long.Parse(Config.PluginAttrs.Settings["quality"]); - // } - // - // if (Config.PluginAttrs.Settings.Contains("compress")) - // { - // compress = long.Parse(Config.PluginAttrs.Settings["compress"]); - // } - // - // - // float waterMarkPercent = float.Parse(Config.PluginAttrs.Settings["img.water.percent"]); - // if (waterMarkPercent == 0F) waterMarkPercent = 1; - // - // waterPath = workSpace + "watermark_resize.png"; - // Image srcImg = new Bitmap(workSpace + "watermark.png"); - // byte[] data = GraphicsHelper.DrawBySize(srcImg, - // ImageSizeMode.SuitWidth, - // (int)(srcImg.Width * waterMarkPercent), - // (int)(srcImg.Height * waterMarkPercent), - // ImageFormat.Png, - // 100L, - // 100L, - // null); - // - // using (FileStream fs = new FileStream(waterPath, FileMode.OpenOrCreate, FileAccess.Write)) - // { - // fs.Write(data, 0, data.Length); - // fs.Flush(); - // fs.Dispose(); - // } - // - // srcImg.Dispose(); - } - - /// <summary> - /// 首页 - /// </summary> - /// <param name="context"></param> - public string Default(HttpContext context) - { - return "Hello world! it's call from a plugin."; - } - - public void Download(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return; - - var url = context.Request["url"]; - var filePath = AppDomain.CurrentDomain.BaseDirectory + url; - if (!File.Exists(filePath)) - { - context.Response.Write("资源不存在"); - return; - } - - var fileName = Regex.Match(url, "(\\\\|/)(([^\\\\/]+)\\.(.+))$").Groups[2].Value; - context.Response.AppendHeader("Content-Type", ""); - context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); - - const int bufferSize = 100; - var buffer = new byte[bufferSize]; - var readSize = -1; - - using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) - { - while (readSize != 0) - { - readSize = fs.Read(buffer, 0, bufferSize); - context.Response.BinaryWrite(buffer); - } - } - } - - /// <summary> - /// 上传文件 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - public string Upload_post(HttpContext context) - { - var uploadfor = context.Request["for"]; - var id = context.Request["upload.id"]; - var dt = DateTime.Now; - var dir = string.Format("/images/{0:yyyyMMdd}/", dt); - var name = String.Format("{0}{1:HHss}{2}", - String.IsNullOrEmpty(uploadfor) ? "" : uploadfor + "_", - dt, String.Empty.RandomLetters(4)); - - var file = new FileUpload(dir, name).Upload(); - if (uploadfor == "image") - { - var rootPath = FwCtx.PhysicalPath; - - - var img = new Bitmap(rootPath + file); - int width, height; - if (img.Width > img.Height) - { - width = imgWidth; - height = imgHeight; - } - else - { - width = imgHeight; - height = imgWidth; - } - - var data = GraphicsHelper.DrawBySize(img, ImageSizeMode.CustomSize, width, height, ImageFormat.Png, 100L, - 80L, null); - img.Dispose(); - var ms1 = new MemoryStream(data); - img = new Bitmap(ms1); - - Image water = new Bitmap(waterPath); - - data = GraphicsHelper.MakeWatermarkImage( - img, - water, - WatermarkPosition.Middle - ); - - ms1.Dispose(); - img.Dispose(); - - var fs = File.OpenWrite(rootPath + file); - var w = new BinaryWriter(fs); - w.Write(data); - w.Flush(); - fs.Dispose(); - } - - return "{" + String.Format("url:'{0}'", file) + "}"; - } - - /// <summary> - /// 验证码 - /// </summary> - /// <param name="context"></param> - public void VerifyCode(HttpContext context) - { - string word = null; - var v = new VerifyCode(); - var font = v.GetDefaultFont(); - try - { - font = new Font(font.FontFamily, 16); - v.AllowRepeat = false; - context.Response.BinaryWrite(v.GraphicDrawImage(4, - VerifyWordOptions.Number, - !true, - font, - 30, - out word)); - } - catch - { - if (font != null) - { - font.Dispose(); - } - } - context.Response.ContentType = "Image/Jpeg"; - VerifyCodeManager.AddWord(word); - } - - /************ 微信 *********************/ - - public string Serve(HttpContext context) - { - var signature = context.Request["signature"]; - var timestamp = context.Request["timestamp"]; - var nonce = context.Request["nonce"]; - var echostr = context.Request["echostr"]; - - //get method - 仅在微信后台填写URL验证时触发 - if (CheckSignature.Check(signature, timestamp, nonce, Variable.Token)) - { - return echostr; //返回随机字符串则表示验证通过 - } - - return "ok:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Variable.Token) + "。" + - "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"; - } - - public string Serve_POST(HttpContext context) - { - var signature = context.Request["signature"]; - var timestamp = context.Request["timestamp"]; - var nonce = context.Request["nonce"]; - var echostr = context.Request["echostr"]; - - - //post method - 当有用户想公众账号发送消息时触发 - if ( !CheckSignature.Check(signature, timestamp, nonce, Variable.Token)) - { - return "参数错误!"; - } - - try - { - //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 - var messageHandler = new CustomMessageHandler(context.Request.InputStream, null); - //执行微信处理过程 - messageHandler.Execute(); - //输出结果 - XDocument doc = messageHandler.ResponseDocument; - if (doc != null) - { - return doc.ToString(); - } - return messageHandler.ResponseDocument.ToString(); - } - catch (Exception exc) - { - this._plugin.Logln("[Exception]:"+exc.Message+"\n"+exc.StackTrace); - } - return ""; - } - - public string ServePost(HttpContext context) - { - return Serve_POST(context); - } - - public string WxApi(HttpContext context) - { - return Serve(context); - } - - public string WxApi_POST(HttpContext context) - { - return Serve_POST(context); - } - - public string Auth(HttpContext context) - { - string returnUrl = context.Request["return_url"]; - if (returnUrl == "") - { - return "mission parmeter return_url"; - } - - string authProcUrl = WeixinHelper.GetAuthProcUrl(returnUrl); - string authUrl = OAuth.GetAuthorizeUrl(Variables.AppId, authProcUrl, - "OK", OAuthScope.snsapi_base, "code"); - - //authUrl = authProcUrl; - context.Response.Redirect(authUrl, true); - return ""; - } - - public string AuthProc(HttpContext context) - { - string returnUrl = context.Request["return_url"]; - string code = context.Request["code"]; - - - //string redirectUrl1 =returnUrl+ (returnUrl.Contains("?") ? "&" : "?") + "open_id=12344"; - //context.Response.Redirect(redirectUrl1); - //return ""; - - OAuthAccessTokenResult result = OAuth.GetAccessToken(Variables.AppId, - Variables.AppSecret, code); - if (result.errcode != ReturnCode.请求成功) - { - return "错误"+result.errmsg; - } - - string redirectUrl =returnUrl+ (returnUrl.Contains("?") ? "&" : "?") + - "open_id=" + result.openid; - - context.Response.Redirect(redirectUrl); - return ""; - } - - public string TestId(HttpContext context) - { - return "open_id:"+context.Request["open_id"]; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs b/J6/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs deleted file mode 100644 index f29fa9d..0000000 --- a/J6/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs +++ /dev/null @@ -1,174 +0,0 @@ -using System.Text.RegularExpressions; -using J6.DevFw.Web; -using Com.Plugin.Core; -using Com.Plugin.Entity; -using Ops.Cms; -using Senparc.Weixin.MP.Entities; - -namespace Com.Plugin.Weixin.Content -{ - public class WeixinRender - { - private static readonly WeiXinGenerator generator = new WeiXinGenerator(); - - public static IResponseMessageBase Render(CustomMessageHandler handler, string eventKey) - { - //IResponseMessageBase rsp = null; - - if (eventKey.StartsWith("res:")) - { - return generator.GetResponseByResKey(handler,eventKey.Substring(eventKey.IndexOf(":") + 1)); - } - - switch (eventKey) - { - case "product_promotion": - return generator.GetPromotion(handler); - case "co_intro": - return generator.GetCoIntro(handler); - case "clalm_profile": - return generator.GetClalmProfile(handler); - case "co_contact": - return generator.GetCoContact(handler); - } - - if (Variables.DebugMode) - { - var strongResponseMessage = handler.CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content = "您点击了按钮,EventKey:" + eventKey; - return strongResponseMessage; - } - return null; - } - } - - public class WeiXinGenerator - { - public IResponseMessageBase GetPromotion(CustomMessageHandler handler) - { - var rsp = handler.CreateResponseMessage<ResponseMessageNews>(); - rsp.Articles.Add(new Article() - { - Title = "您点击了子菜单图文按钮", - Description = "您点击了子菜单图文按钮,这是一条图文信息。", - PicUrl = "http://weixin.senparc.com/Images/qrcode.jpg", - Url = "http://weixin.senparc.com" - }); - return rsp; - } - - public IResponseMessageBase GetCoIntro(CustomMessageHandler handler) - { - var rsp = handler.CreateResponseMessage<ResponseMessageNews>(); - rsp.Articles.Add(new Article() - { - Title = "公司介绍", - Description = "中国人民人寿保险股份有限公司和路华救援(北京)有限公司合作进行旅行保险的服务...", - PicUrl = "http://www.epicc.com.cn/ymdblm/db_gyrb/201205/W020120710544945374543.jpg", - Url = "http://travel.e-picclife.com/m/aboutus.aspx" - }); - return rsp; - - - // - } - - internal IResponseMessageBase GetCoContact(CustomMessageHandler handler) - { - var rsp = handler.CreateResponseMessage<ResponseMessageNews>(); - rsp.Articles.Add(new Article() - { - Title = "公司介绍", - Description = "如果您有任何的疑问和意见,欢迎和我们联系!", - PicUrl = "http://travel.e-picclife.com/m/_imgs_v2/paris/banner_contactus.jpg", - Url = "http://travel.e-picclife.com/m/contactus.aspx" - }); - return rsp; - } - - public IResponseMessageBase GetClalmProfile(CustomMessageHandler handler) - { - var rsp = handler.CreateResponseMessage<ResponseMessageNews>(); - rsp.Articles.Add(new Article() - { - Title = "理赔资料", - Description = "如果您有任何的疑问和意见,欢迎和我们联系!", - PicUrl = "http://travel.e-picclife.com/m/_imgs_v2/paris/banner_contactus.jpg", - Url = "http://travel.e-picclife.com/m/contactus.aspx" - }); - rsp.Articles.Add(new Article() - { - Title = "理赔资料-理赔资料A", - Description = "如果您有任何的疑问和意见,欢迎和我们联系!", - PicUrl = "http://travel.e-picclife.com/m/_imgs_v2/paris/banner_contactus.jpg", - Url = "http://travel.e-picclife.com/m/contactus.aspx" - }); - rsp.Articles.Add(new Article() - { - Title = "理赔资料-理赔资料B", - Description = "如果您有任何的疑问和意见,欢迎和我们联系!", - PicUrl = "http://travel.e-picclife.com/m/_imgs_v2/paris/banner_contactus.jpg", - Url = "http://travel.e-picclife.com/m/contactus.aspx" - }); - rsp.Articles.Add(new Article() - { - Title = "理赔资料-理赔资料C", - Description = "如果您有任何的疑问和意见,欢迎和我们联系!", - PicUrl = "http://travel.e-picclife.com/m/_imgs_v2/paris/banner_contactus.jpg", - Url = "http://travel.e-picclife.com/m/contactus.aspx" - }); - rsp.Articles.Add(new Article() - { - Title = "理赔资料-理赔资料D", - Description = "如果您有任何的疑问和意见,欢迎和我们联系!", - PicUrl = "http://travel.e-picclife.com/m/_imgs_v2/paris/banner_contactus.jpg", - Url = "http://travel.e-picclife.com/m/contactus.aspx" - }); - return rsp; - } - - public IResponseMessageBase GetResponseByResKey(CustomMessageHandler handler,string resKey) - { - IWxRes res = IocObject.WeixinRes.GetResByKey(resKey); - if (res == null) - { - Config.Logln("素材"+resKey+"不存在"); - } - TextRes trs; - if ((trs = res as TextRes) != null) - { - var strongResponseMessage = handler.CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content =trs.Content; - - Config.Logln("素材" + resKey + "/文本"); - return strongResponseMessage; - } - else - { - var rsp = handler.CreateResponseMessage<ResponseMessageNews>(); - ArticleRes ares = res as ArticleRes; - var items = ares.Items; - - string domain = WebCtx.Domain; - - foreach (var item in items) - { - if (item.Enabled) - { - rsp.Articles.Add(new Article() - { - Title = item.Title, - Description = item.Description??"", - PicUrl = domain + "/"+item.Pic, - Url =item.Url.StartsWith("http://")?item.Url:domain+ item.Url - }); - } - } - - Config.Logln("素材"+resKey+"/图文"); - return rsp; - } - } - } - -} diff --git a/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageContext.cs b/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageContext.cs deleted file mode 100644 index ac6bed8..0000000 --- a/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageContext.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Senparc.Weixin.Context; -using Senparc.Weixin.MP.Entities; - -namespace Com.Plugin.Weixin -{ - public class CustomMessageContext : MessageContext<IRequestMessageBase,IResponseMessageBase> - { - public CustomMessageContext() - { - base.MessageContextRemoved += CustomMessageContext_MessageContextRemoved; - } - - void CustomMessageContext_MessageContextRemoved(object sender, Senparc.Weixin.Context.WeixinContextRemovedEventArgs<IRequestMessageBase,IResponseMessageBase> e) - { - /* 注意,这个事件不是实时触发的(当然你也可以专门写一个线程监控) - * 为了提高效率,根据WeixinContext中的算法,这里的过期消息会在过期后下一条请求执行之前被清除 - */ - - var messageContext = e.MessageContext as CustomMessageContext; - if (messageContext == null) - { - return;//如果是正常的调用,messageContext不会为null - } - - //TODO:这里根据需要执行消息过期时候的逻辑,下面的代码仅供参考 - - //Log.InfoFormat("{0}的消息上下文已过期",e.OpenId); - //api.SendMessage(e.OpenId, "由于长时间未搭理客服,您的客服状态已退出!"); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageHandler.cs b/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageHandler.cs deleted file mode 100644 index a66e370..0000000 --- a/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageHandler.cs +++ /dev/null @@ -1,224 +0,0 @@ -using System; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using Com.Plugin.Weixin.Content; -using Senparc.Weixin.MP.Entities; -using Senparc.Weixin.MP.Entities.Request; -using Senparc.Weixin.MP.MessageHandlers; - -namespace Com.Plugin.Weixin -{ - public partial class CustomMessageHandler : MessageHandler<CustomMessageContext> - { - - /* - * 重要提示:v1.5起,MessageHandler提供了一个DefaultResponseMessage的抽象方法, - * DefaultResponseMessage必须在子类中重写,用于返回没有处理过的消息类型(也可以用于默认消息,如帮助信息等); - * 其中所有原OnXX的抽象方法已经都改为虚方法,可以不必每个都重写。若不重写,默认返回DefaultResponseMessage方法中的结果。 - */ - - - public CustomMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0) - : base(inputStream, postModel, maxRecordCount) - { - //这里设置仅用于测试,实际开发可以在外部更全局的地方设置, - //比如MessageHandler<MessageContext>.GlobalWeixinContext.ExpireMinutes = 3。 - WeixinContext.ExpireMinutes = 3; - } - - public override void OnExecuting() - { - //测试MessageContext.StorageData - if (CurrentMessageContext.StorageData == null) - { - CurrentMessageContext.StorageData = 0; - } - base.OnExecuting(); - } - - public override void OnExecuted() - { - base.OnExecuted(); - CurrentMessageContext.StorageData = ((int)CurrentMessageContext.StorageData) + 1; - } - - /// <summary> - /// 处理文字请求 - /// </summary> - /// <returns></returns> - public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage) - { - //TODO:这里的逻辑可以交给Service处理具体信息,参考OnLocationRequest方法或/Service/LocationSercice.cs - - string txt = requestMessage.Content.ToLower(); - if (Regex.IsMatch(txt, "^(a|b|c)$", RegexOptions.IgnoreCase)) - { - return WeixinRender.Render(this, "res:" + txt); - } - - - return null; - //方法一(v0.1),此方法调用太过繁琐,已过时(但仍是所有方法的核心基础),建议使用方法二到四 - //var responseMessage = - // ResponseMessageBase.CreateFromRequestMessage(RequestMessage, ResponseMsgType.Text) as - // ResponseMessageText; - - //方法二(v0.4) - //var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(RequestMessage); - - //方法三(v0.4),扩展方法,需要using Senparc.Weixin.MP.Helpers; - //var responseMessage = RequestMessage.CreateResponseMessage<ResponseMessageText>(); - - //方法四(v0.6+),仅适合在HandlerMessage内部使用,本质上是对方法三的封装 - //注意:下面泛型ResponseMessageText即返回给客户端的类型,可以根据自己的需要填写ResponseMessageNews等不同类型。 - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - - if (requestMessage.Content == "测试") - { - responseMessage.Content = "测试完成!"; - } - else - { - var result = new StringBuilder(); - result.AppendFormat("您刚才发送了文字信息:{0}\r\n\r\n", requestMessage.Content); - - if (CurrentMessageContext.RequestMessages.Count > 1) - { - result.AppendFormat("您刚才还发送了如下消息({0}/{1}):\r\n", CurrentMessageContext.RequestMessages.Count, CurrentMessageContext.StorageData); - for (int i = CurrentMessageContext.RequestMessages.Count - 2; i >= 0; i--) - { - var historyMessage = CurrentMessageContext.RequestMessages[i]; - result.AppendFormat("{0} 【{1}】{2}\r\n", - historyMessage.CreateTime.ToShortTimeString(), - historyMessage.MsgType.ToString(), - (historyMessage is RequestMessageText) - ? (historyMessage as RequestMessageText).Content - : "[非文字类型]" - ); - } - result.AppendLine("\r\n"); - } - - responseMessage.Content = result.ToString(); - } - return responseMessage; - } - - /// <summary> - /// 处理位置请求 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnLocationRequest(RequestMessageLocation requestMessage) - { - //todo: - //var locationService = new LocationService(); - //var responseMessage = locationService.GetResponseMessage(requestMessage as RequestMessageLocation); - //return responseMessage; - return null; - } - - /// <summary> - /// 处理图片请求 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage) - { - return null; - - var responseMessage = CreateResponseMessage<ResponseMessageNews>(); - responseMessage.Articles.Add(new Article() - { - Title = "您刚才发送了图片信息", - Description = "您发送的图片将会显示在边上", - PicUrl = requestMessage.PicUrl, - Url = "http://weixin.senparc.com" - }); - responseMessage.Articles.Add(new Article() - { - Title = "第二条", - Description = "第二条带连接的内容", - PicUrl = requestMessage.PicUrl, - Url = "http://weixin.senparc.com" - }); - return responseMessage; - } - - /// <summary> - /// 处理语音请求 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage) - { - return null; - var responseMessage = CreateResponseMessage<ResponseMessageMusic>(); - responseMessage.Music.MusicUrl = "http://weixin.senparc.com/Content/music1.mp3"; - responseMessage.Music.Title = "这里是一条音乐消息"; - responseMessage.Music.Description = "来自Jeffrey Su的美妙歌声~~"; - responseMessage.Music.ThumbMediaId = "mediaid"; - return responseMessage; - } - - /// <summary> - /// 处理视频请求 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnVideoRequest(RequestMessageVideo requestMessage) - { - return null; - var responseMessage = CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "您发送了一条视频信息,ID:" + requestMessage.MediaId; - return responseMessage; - } - - /// <summary> - /// 处理链接消息请求 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnLinkRequest(RequestMessageLink requestMessage) - { - return null; - var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); - responseMessage.Content = string.Format(@"您发送了一条连接信息: -Title:{0} -Description:{1} -Url:{2}", requestMessage.Title, requestMessage.Description, requestMessage.Url); - return responseMessage; - } - - /// <summary> - /// 处理事件请求(这个方法一般不用重写,这里仅作为示例出现。除非需要在判断具体Event类型以外对Event信息进行统一操作 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEventRequest(IRequestMessageEventBase requestMessage) - { - //对于Event下属分类的重写方法,见:CustomerMessageHandler_Events.cs - var eventResponseMessage = base.OnEventRequest(requestMessage); - //TODO: 对Event信息进行统一操作 - return eventResponseMessage; - } - - public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) - { - /* 所有没有被处理的消息会默认返回这里的结果, - * 因此,如果想把整个微信请求委托出去(例如需要使用分布式或从其他服务器获取请求), - * 只需要在这里统一发出委托请求,如: - * var responseMessage = MessageAgent.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString()); - * return responseMessage; - */ - if (!String.IsNullOrEmpty(Variables.WxDefaultResponseMessage)) - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content = Variables.WxDefaultResponseMessage; - return strongResponseMessage; - } - return null; - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageHandler_Events.cs b/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageHandler_Events.cs deleted file mode 100644 index 44e26a8..0000000 --- a/J6/src/examples/com.mapfre.weixin/Weixin/CustomMessageHandler_Events.cs +++ /dev/null @@ -1,309 +0,0 @@ -using System; -using System.Text.RegularExpressions; -using Com.Plugin.Weixin.Content; -using Microsoft.SqlServer.Server; -using Senparc.Weixin.MP.Entities; - -namespace Com.Plugin.Weixin -{ - /// <summary> - /// 自定义MessageHandler - /// </summary> - public partial class CustomMessageHandler - { - /// <summary> - /// 微信欢迎信息 - /// </summary> - /// <returns></returns> - private string GetWelcomeInfo() - { - return Variables.WxWelcomeMessage; - } - - public override IResponseMessageBase OnTextOrEventRequest(RequestMessageText requestMessage) - { - return null; - string txt = requestMessage.Content.ToLower(); - if (Regex.IsMatch(txt, "^(a|b|c)$", RegexOptions.IgnoreCase)) - { - return WeixinRender.Render(this, "res:" + txt); - } - - if (!String.IsNullOrEmpty(Variables.WxDefaultResponseMessage)) - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content = Variables.WxDefaultResponseMessage; - return strongResponseMessage; - } - return null; - - - // 预处理文字或事件类型请求。 - // 这个请求是一个比较特殊的请求,通常用于统一处理来自文字或菜单按钮的同一个执行逻辑, - // 会在执行OnTextRequest或OnEventRequest之前触发,具有以下一些特征: - // 1、如果返回null,则继续执行OnTextRequest或OnEventRequest - // 2、如果返回不为null,则终止执行OnTextRequest或OnEventRequest,返回最终ResponseMessage - // 3、如果是事件,则会将RequestMessageEvent自动转为RequestMessageText类型,其中RequestMessageText.Content就是RequestMessageEvent.EventKey - return null; - - if (requestMessage.Content == "OneClick") - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content = "您点击了底部按钮。\r\n为了测试微信软件换行bug的应对措施,这里做了一个——\r\n换行"; - return strongResponseMessage; - } - return null;//返回null,则继续执行OnTextRequest或OnEventRequest - } - - - public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage) - { - return WeixinRender.Render(this, requestMessage.EventKey); - #region - IResponseMessageBase reponseMessage = null; - //菜单点击,需要跟创建菜单时的Key匹配 - switch (requestMessage.EventKey) - { - case "OneClick": - { - //这个过程实际已经在OnTextOrEventRequest中完成,这里不会执行到。 - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - reponseMessage = strongResponseMessage; - strongResponseMessage.Content = "您点击了底部按钮。\r\n为了测试微信软件换行bug的应对措施,这里做了一个——\r\n换行"; - } - break; - case "SubClickRoot_Text": - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - reponseMessage = strongResponseMessage; - strongResponseMessage.Content = "您点击了子菜单按钮。"; - } - break; - case "product_promotion": - { - - var strongResponseMessage = CreateResponseMessage<ResponseMessageNews>(); - reponseMessage = strongResponseMessage; - strongResponseMessage.Articles.Add(new Article() - { - Title = "您点击了子菜单图文按钮", - Description = "您点击了子菜单图文按钮,这是一条图文信息。", - PicUrl = "http://weixin.senparc.com/Images/qrcode.jpg", - Url = "http://weixin.senparc.com" - }); - } - break; - case "SubClickRoot_Music": - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageMusic>(); - reponseMessage = strongResponseMessage; - strongResponseMessage.Music.MusicUrl = "http://weixin.senparc.com/Content/music1.mp3"; - } - break; - case "SubClickRoot_Image": - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageImage>(); - reponseMessage = strongResponseMessage; - strongResponseMessage.Image.MediaId = "Mj0WUTZeeG9yuBKhGP7iR5n1xUJO9IpTjGNC4buMuswfEOmk6QSIRb_i98do5nwo"; - } - break; - - case "OAuth"://OAuth授权测试 - { - var strongResponseMessage = this.CreateResponseMessage<ResponseMessageNews>(); - strongResponseMessage.Articles.Add(new Article() - { - Title = "用户登陆", - Description = "点击【查看全文】进入授权页面。", - Url = Variables.ApiDomain + "oauth2", - PicUrl = "http://weixin.senparc.com/Images/qrcode.jpg" - }); - reponseMessage = strongResponseMessage; - } - break; - case "Description": - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content = GetWelcomeInfo(); - reponseMessage = strongResponseMessage; - } - break; - default: - { - var strongResponseMessage = CreateResponseMessage<ResponseMessageText>(); - strongResponseMessage.Content = "您点击了按钮,EventKey:" + requestMessage.EventKey; - reponseMessage = strongResponseMessage; - } - break; - } - - return reponseMessage; - #endregion - } - - public override IResponseMessageBase OnEvent_EnterRequest(RequestMessageEvent_Enter requestMessage) - { - return null; - String content = Variables.WxEnterMessage; - if (content.Trim().Length == 0) - { - Config.Logln("进入(素材)"); - return WeixinRender.Render(this, "enter"); - } - var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); - responseMessage.Content = content; - //responseMessage.Content = "您刚才发送了ENTER事件请求。"; - - Config.Logln("进入(设置)"+responseMessage.Content); - return responseMessage; - } - - public override IResponseMessageBase OnEvent_LocationRequest(RequestMessageEvent_Location requestMessage) - { - return null; - //这里是微信客户端(通过微信服务器)自动发送过来的位置信息 - var responseMessage = CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "这里写什么都无所谓,比如:上帝爱你!"; - return responseMessage;//这里也可以返回null(需要注意写日志时候null的问题) - } - - public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) - { - return null; - //通过扫描关注 - var responseMessage = CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "通过扫描关注。"; - return responseMessage; - } - - public override IResponseMessageBase OnEvent_ViewRequest(RequestMessageEvent_View requestMessage) - { - return null; - //说明:这条消息只作为接收,下面的responseMessage到达不了客户端,类似OnEvent_UnsubscribeRequest - var responseMessage = CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "您点击了view按钮,将打开网页:" + requestMessage.EventKey; - return responseMessage; - } - - public override IResponseMessageBase OnEvent_MassSendJobFinishRequest(RequestMessageEvent_MassSendJobFinish requestMessage) - { - return null; - var responseMessage = CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "接收到了群发完成的信息。"; - return responseMessage; - } - - /// <summary> - /// 订阅(关注)事件 - /// </summary> - /// <returns></returns> - public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) - { - // return null; - String content = GetWelcomeInfo(); - if (content.Trim().Length == 0) - { - Config.Logln("关注:素材"); - return WeixinRender.Render(this, "welcome"); - } - var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); - responseMessage.Content = GetWelcomeInfo(); - - Config.Logln("关注:消息:"); - return responseMessage; - } - - /// <summary> - /// 退订 - /// 实际上用户无法收到非订阅账号的消息,所以这里可以随便写。 - /// unsubscribe事件的意义在于及时删除网站应用中已经记录的OpenID绑定,消除冗余数据。并且关注用户流失的情况。 - /// </summary> - /// <returns></returns> - public override IResponseMessageBase OnEvent_UnsubscribeRequest(RequestMessageEvent_Unsubscribe requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "有空再来"; - return responseMessage; - } - - /// <summary> - /// 事件之扫码推事件(scancode_push) - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEvent_ScancodePushRequest(RequestMessageEvent_Scancode_Push requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "事件之扫码推事件"; - return responseMessage; - } - - /// <summary> - /// 事件之扫码推事件且弹出“消息接收中”提示框(scancode_waitmsg) - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEvent_ScancodeWaitmsgRequest(RequestMessageEvent_Scancode_Waitmsg requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "事件之扫码推事件且弹出“消息接收中”提示框"; - return responseMessage; - } - - /// <summary> - /// 事件之弹出拍照或者相册发图(pic_photo_or_album) - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEvent_PicPhotoOrAlbumRequest(RequestMessageEvent_Pic_Photo_Or_Album requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "事件之弹出拍照或者相册发图"; - return responseMessage; - } - - /// <summary> - /// 事件之弹出系统拍照发图(pic_sysphoto) - /// 实际测试时发现微信并没有推送RequestMessageEvent_Pic_Sysphoto消息,只能接收到用户在微信中发送的图片消息。 - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEvent_PicSysphotoRequest(RequestMessageEvent_Pic_Sysphoto requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "事件之弹出系统拍照发图"; - return responseMessage; - } - - /// <summary> - /// 事件之弹出微信相册发图器(pic_weixin) - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEvent_PicWeixinRequest(RequestMessageEvent_Pic_Weixin requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "事件之弹出微信相册发图器"; - return responseMessage; - } - - /// <summary> - /// 事件之弹出地理位置选择器(location_select) - /// </summary> - /// <param name="requestMessage"></param> - /// <returns></returns> - public override IResponseMessageBase OnEvent_LocationSelectRequest(RequestMessageEvent_Location_Select requestMessage) - { - return null; - var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); - responseMessage.Content = "事件之弹出地理位置选择器"; - return responseMessage; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/Weixin/TreeNode.cs b/J6/src/examples/com.mapfre.weixin/Weixin/TreeNode.cs deleted file mode 100644 index f8028cd..0000000 --- a/J6/src/examples/com.mapfre.weixin/Weixin/TreeNode.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Collections.Generic; - -namespace Com.Plugin.Weixin -{ - /// <summary> - /// 树节点 - /// </summary> - public struct TreeNode - { - private string _value; - private string _text; - private string _uri; - private string _icon; - - private IList<TreeNode> _childs; - private bool _open; - public TreeNode(string text,string value,string uri,bool open,string icon) - { - this._value = value; - this._text = text; - this._uri = uri; - this._open = open; - this._icon = icon; - this._childs = new List<TreeNode>(); - } - public string value { get { return this._value; } } - public string text { get { return this._text; } } - public string uri { get { return this._uri; } } - public string icon { get { return this._icon; } } - public bool open { get { return this._open; } } - public IList<TreeNode> childs { get { return this._childs; } } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs b/J6/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs deleted file mode 100644 index f5e73fd..0000000 --- a/J6/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs +++ /dev/null @@ -1,219 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Net.Configuration; -using System.Text.RegularExpressions; -using System.Web; -using J6.DevFw.Framework; -using J6.DevFw.Framework.Net; -using J6.DevFw.PluginKernel; -using J6.DevFw.Web; -using Newtonsoft.Json; -using Senparc.Weixin.MP; -using Senparc.Weixin.MP.CommonAPIs; - -namespace Com.Plugin.Weixin -{ - public static class WeixinHelper - { - private static MenuFull_ButtonGroup _buttonGroup; - - private static string _authUrlPrefix; - private static string _hostPath; - - private static MenuFull_ButtonGroup GetButtonGroup() - { - if (_buttonGroup == null) - { - String menus = Variables.MenuButtons; - _buttonGroup = JsonConvert.DeserializeObject<MenuFull_ButtonGroup>(menus); - } - return _buttonGroup; - } - public static TreeNode GetMenuTreeNode() - { - MenuFull_ButtonGroup menu = GetButtonGroup(); - TreeNode root =new TreeNode("微信菜单","0","",true,""); - TreeNode tree = new TreeNode("菜单根目录", "0", "", true, ""); - root.childs.Add(tree); - - int i = 1, j = 1; - foreach (var btn in menu.button) - { - TreeNode tn = new TreeNode(btn.name,i.ToString(),"",true,""); - - if (btn.sub_button!=null) - { - foreach (var btn2 in btn.sub_button) - { - TreeNode tn2 = new TreeNode(btn2.name,i.ToString()+"-"+j.ToString(),"",true,""); - tn.childs.Add(tn2); - j++; - } - j = 1; - } - tree.childs.Add(tn); - i++; - } - return root; - } - - internal static MenuFull_RootButton GetMenuNode(int pi, int si) - { - MenuFull_ButtonGroup menu = GetButtonGroup(); - MenuFull_RootButton parent = menu.button[pi]; - if (si == -1) return parent; - return parent.sub_button[si]; - } - - internal static void SaveMenuNode(int pi, int si, MenuFull_RootButton button) - { - MenuFull_ButtonGroup menu = GetButtonGroup(); - if (si == -1) - { - menu.button[pi] = button; - } - else - { - menu.button[pi].sub_button[si] = button; - } - - ReflushSetting(menu); - } - - public static void CreateMenuNode(int pi, MenuFull_RootButton button) - { - MenuFull_ButtonGroup menu = GetButtonGroup(); - if (pi == -1) - { - if (menu.button.Count == 3) - { - throw new Exception("菜单(一级)超出最大数量3个!"); - } - menu.button.Add(button); - } - else - { - var list = menu.button[pi].sub_button; - if (list == null) - { - list = new List<MenuFull_RootButton>(); - } - - - if (menu.button.Count == 5) - { - throw new Exception("菜单(二级)超出最大数量5个!"); - } - - list.Add(button); - menu.button[pi].sub_button = list; - } - - ReflushSetting(menu); - } - - public static void DelMenu(int pi, int si) - { - MenuFull_ButtonGroup group = GetButtonGroup(); - MenuFull_RootButton menu; - if (si == -1) - { - group.button.Remove(group.button[pi]); - } - else - { - group.button[pi].sub_button.Remove(group.button[pi].sub_button[si]); - } - - ReflushSetting(group); - } - - private static void ReflushSetting(MenuFull_ButtonGroup menu) - { - String json = JsonConvert.SerializeObject(menu); - SettingFile st = Config.PluginAttr.Settings; - - json = json.Replace(",\"sub_button\":null", "") - .Replace(",\"url\":null", "") - .Replace(",\"key\":null", "") - .Replace("\"type\":null,",""); - - st["Weixin_MenuButtons"] = json; - st.Flush(); - - Variables.MenuButtons = json; - _buttonGroup = menu; - } - - public static string PostApplyMenu() - { - var result = AccessTokenContainer.GetTokenResult(Variables.AppId); - // GetMenuResult menuResult = CommonApi.GetMenu(result.access_token); - - CommonApi.DeleteMenu(result.access_token); - var buttons = Variables.MenuButtons; - - Regex regex = new Regex("\\{(local|auth)\\}([^\"]*)"); - buttons = regex.Replace(buttons, a => - { - if (a.Groups[1].Value == "local") - { - return WeixinHelper.GetLocalPath()+a.Groups[2].Value; - } - else - { - return WeixinHelper.GetAuthUrl(a.Groups[2].Value); - } - }); - - var resultHtml = HttpClient.Post("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" - + result.access_token, buttons, null); - return Regex.Match(resultHtml, "\"errmsg\":\"([^\"]+)\"").Groups[1].Value; - } - - private static string GetLocalPath() - { - if (_hostPath == null) - { - _hostPath =WebCtx.Domain; - } - return _hostPath;; - } - - /// <summary> - /// 获取验证处理地址 - /// </summary> - /// <param name="returnUrl"></param> - /// <returns></returns> - public static string GetAuthProcUrl(string returnUrl) - { - return String.Format("{0}AuthProc?return_url={1}", - GetAuthUrlPrefix(), - HttpUtility.UrlEncode(returnUrl)); - } - - private static string GetAuthUrlPrefix() - { - if (_authUrlPrefix == null) - { - String overrideIndent = Config.PluginAttr.Settings[DefaultSettingKeys.OverrideUrlIndent]; - if (overrideIndent == null || overrideIndent.Trim() == "") - { - _authUrlPrefix = WebCtx.Domain + "/" + Config.PluginAttr.WorkIndent + ".sh.aspx/"; - } - else - { - _authUrlPrefix = WebCtx.Domain + "/" + overrideIndent + "/"; - } - } - return _authUrlPrefix; - } - - public static string GetAuthUrl(string returnUrl) - { - return String.Format("{0}Auth?return_url={1}", - GetAuthUrlPrefix(), - HttpUtility.UrlEncode(returnUrl)); - } - } -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj deleted file mode 100644 index 67bef61..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj +++ /dev/null @@ -1,153 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.30703</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{E387CF54-3BA1-4F17-9F88-A01C60448D4E}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Com.Plugin</RootNamespace> - <AssemblyName>com.plugin.weixin</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <NoWin32Manifest>False</NoWin32Manifest> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\dll\Newtonsoft.Json.dll</HintPath> - </Reference> - <Reference Include="NPOI, Version=2.0.6.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\dll\NPOI.dll</HintPath> - </Reference> - <Reference Include="SharpCompress.3.5, Version=0.8.2.0, Culture=neutral, PublicKeyToken=beaf6f427e128133, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\dll\SharpCompress.3.5.dll</HintPath> - </Reference> - <Reference Include="StructureMap"> - <HintPath>..\..\..\dll\StructureMap.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Web" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - <Reference Include="weixin"> - <HintPath>.\weixin.dll</HintPath> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="Core\BaseHandle.cs" /> - <Compile Include="Config.cs" /> - <Compile Include="Core\DbGenerator.cs" /> - <Compile Include="Entity\IWxRes.cs" /> - <Compile Include="Entity\ArticleRes.cs" /> - <Compile Include="Entity\ArticleResItem.cs" /> - <Compile Include="Entity\TextRes.cs" /> - <Compile Include="Core\SqlFormat.cs" /> - <Compile Include="Core\ILogic\IDataLogic.cs" /> - <Compile Include="ILogic\IWeixinResLogic.cs" /> - <Compile Include="Core\IocObject.cs" /> - <Compile Include="Core\Logic\DataLogic.cs" /> - <Compile Include="Logic\WeixinResLogic.cs" /> - <Compile Include="RequestProxry.cs" /> - <Compile Include="Core\Helper.cs" /> - <Compile Include="Main.cs" /> - <Compile Include="WebManage\RequestHandle.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="Core\Utils\DataExport.cs" /> - <Compile Include="Core\Utils\ExcelExportProvider.cs" /> - <Compile Include="Core\Utils\ExportHandle.cs" /> - <Compile Include="Core\Utils\NPOIHelper.cs" /> - <Compile Include="Core\Utils\VerifyCodeManager.cs" /> - <Compile Include="Variables.cs" /> - <Compile Include="WebManage\ManageHandle.cs" /> - <Compile Include="Weixin\CustomMessageContext.cs" /> - <Compile Include="Weixin\CustomMessageHandler.cs" /> - <Compile Include="Weixin\CustomMessageHandler_Events.cs" /> - <Compile Include="Weixin\Content\WeixinRender.cs" /> - <Compile Include="Weixin\TreeNode.cs" /> - <Compile Include="Weixin\WeixinHelper.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="com.mapfre.weixin\plugin.config"> - <SubType>Designer</SubType> - </None> - <None Include="README.md" /> - </ItemGroup> - <ItemGroup> - <Content Include="com.mapfre.weixin\mg\article_item.html" /> - <Content Include="com.mapfre.weixin\mg\article_itemlist.html" /> - <Content Include="com.mapfre.weixin\mg\article_res.html" /> - <Content Include="com.mapfre.weixin\mg\basic_setting.html" /> - <Content Include="com.mapfre.weixin\mg\export_import.html" /> - <Content Include="com.mapfre.weixin\mg\export_setup.html" /> - <Content Include="com.mapfre.weixin\mg\menu.html" /> - <Content Include="com.mapfre.weixin\mg\menu_create.html" /> - <Content Include="com.mapfre.weixin\mg\menu_edit.html" /> - <Content Include="com.mapfre.weixin\mg\resource_list.html" /> - <Content Include="com.mapfre.weixin\mg\resource_list2.html" /> - <Content Include="com.mapfre.weixin\mg\text_res.html" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\core\J6.DevFw.Core\J6.DevFw.Core.csproj"> - <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> - <Name>J6.DevFw.Core</Name> - </ProjectReference> - <ProjectReference Include="..\..\core\J6.DevFw.Data\J6.DevFw.Data.csproj"> - <Project>{1d053644-937a-4d8e-9740-43823183a39a}</Project> - <Name>J6.DevFw.Data</Name> - </ProjectReference> - <ProjectReference Include="..\..\core\J6.DevFw.PluginKernel\kernel\J6.DevFw.PluginKernel.csproj"> - <Project>{cad14dcc-112c-4b28-98eb-1ce143d09033}</Project> - <Name>J6.DevFw.PluginKernel</Name> - </ProjectReference> - <ProjectReference Include="..\..\core\J6.DevFw.Template\J6.DevFw.Template.csproj"> - <Project>{275cae3e-a9e0-4de0-8031-e9137bbdd693}</Project> - <Name>J6.DevFw.Template</Name> - </ProjectReference> - <ProjectReference Include="..\..\core\J6.DevFw.Web\J6.DevFw.Web.csproj"> - <Project>{4f756ead-0c41-499c-ae91-660892b444ac}</Project> - <Name>J6.DevFw.Web</Name> - </ProjectReference> - <ProjectReference Include="..\..\toolkit\J6.DevFw.Toolkit.Data\J6.DevFw.Toolkit.Data.csproj"> - <Project>{8a5b5504-8d72-4f30-a50e-5856be419dea}</Project> - <Name>J6.DevFw.Toolkit.Data</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <PropertyGroup> - <PostBuildEvent>move $(TargetPath) $(SolutionDir)examples/devfw.web/bin/$(TargetName).so</PostBuildEvent> - </PropertyGroup> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/img/no_photo.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/img/no_photo.gif deleted file mode 100644 index b124d1d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/img/no_photo.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/DatePicker.htm b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/DatePicker.htm deleted file mode 100644 index 3684f77..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/DatePicker.htm +++ /dev/null @@ -1,49 +0,0 @@ -<html> -<head> -<meta http-equiv="content-type" content="text/xml; charset=utf-8" /> -<title>DatePicker - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/WdatePicker.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/WdatePicker.js deleted file mode 100644 index ea96731..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/WdatePicker.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * My97 DatePicker 4.5 - * SITE: http://dp.my97.net - * BLOG: http://my97.cnblogs.com - * MAIL: smallcarrot@163.com - */ -var $dp,WdatePicker;(function(){var _={ -$wdate:true, -$dpPath:"", -$crossFrame:false, -position:{}, -lang:"auto", -skin:"default", -dateFmt:"yyyy-MM-dd", -realDateFmt:"yyyy-MM-dd", -realTimeFmt:"HH:mm:ss", -realFullFmt:"%Date %Time", -minDate:"1900-01-01 00:00:00", -maxDate:"2099-12-31 23:59:59", -startDate:"", -alwaysUseStartDate:false, -yearOffset:1911, -isShowWeek:false, -highLineWeekDay:true, -isShowClear:true, -isShowToday:true, -isShowOthers:true, -readOnly:false, -errDealMode:0, -autoPickDate:null, -qsEnabled:true, - -specialDates:null,specialDays:null,disabledDates:null,disabledDays:null,opposite:false,onpicking:null,onpicked:null,onclearing:null,oncleared:null,eCont:null,vel:null,errMsg:"",quickSel:[],has:{}};WdatePicker=U;var X=window,O="document",J="documentElement",C="getElementsByTagName",V,A,T,I,b;switch(navigator.appName){case"Microsoft Internet Explorer":T=true;break;case"Opera":b=true;break;default:I=true;break}A=L();if(_.$wdate)M(A+"skin/WdatePicker.css");V=X;if(_.$crossFrame){try{while(V.parent[O]!=V[O]&&V.parent[O][C]("frameset").length==0)V=V.parent}catch(P){}}if(!V.$dp)V.$dp={ff:I,ie:T,opera:b,el:null,win:X,status:0,defMinDate:_.minDate,defMaxDate:_.maxDate,flatCfgs:[]};$dp=V.$dp;if($dp.status==0)Z(X,function(){U(null,true)});if(!X[O].docMD){E(X[O],"onmousedown",D);X[O].docMD=true}if(!V[O].docMD){E(V[O],"onmousedown",D);V[O].docMD=true}E(X,"onunload",function(){if($dp.dd)Q($dp.dd,"none")});function B(){V.$dp=V.$dp||{};obj={$:function($){return(typeof $=="string")?this.win[O].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=""){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var A in $){if(this.dt[A]===undefined)this.errMsg="invalid property:"+A;this.dt[A]+=$[A]}if(this.dt.refresh())return this.dt}return""},show:function(){Q(this.dd,"block")},hide:function(){Q(this.dd,"none")},attachEvent:E};for(var $ in obj)V.$dp[$]=obj[$];$dp=V.$dp}function E(A,$,_){if(T)A.attachEvent($,_);else{var B=$.replace(/on/,"");_._ieEmuEventHandler=function($){return _($)};A.addEventListener(B,_._ieEmuEventHandler,false)}}function L(){var _,A,$=document.getElementsByTagName("script");for(var B=0;B<$.length;B++){_=$[B].src.substring(0,$[B].src.toLowerCase().indexOf("wdatepicker.js"));A=_.lastIndexOf("/");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function F(F){var E,C;if(F.substring(0,1)!="/"&&F.indexOf("://")==-1){E=V.location.href;C=location.href;if(E.indexOf("?")>-1)E=E.substring(0,E.indexOf("?"));if(C.indexOf("?")>-1)C=C.substring(0,C.indexOf("?"));var $="",D="",A="",H,G,B="";for(H=0;H_.scrollLeft||A.scrollLeft>_.scrollLeft))?A:_;return{"top":B.scrollTop,"left":B.scrollLeft}}function D($){src=$?($.srcElement||$.target):null;if($dp&&$dp.cal&&!$dp.eCont&&$dp.dd&&Q($dp.dd)=="block"&&src!=$dp.el)$dp.cal.close()}function Y(){$dp.status=2;H()}function H(){if($dp.flatCfgs.length>0){var $=$dp.flatCfgs.shift();$.el={innerHTML:""};$.autoPickDate=true;$.qsEnabled=false;K($)}}var R,$;function U(E,_){B();$dp.win=X;E=E||{};if(_){if(!D()){$=$||setInterval(function(){if(V[O].readyState=="complete")clearInterval($);U(null,true)},50);return}if($dp.status==0){$dp.status=1;K({el:{innerHTML:""}},true)}else return}else if(E.eCont){E.eCont=$dp.$(E.eCont);$dp.flatCfgs.push(E);if($dp.status==2)H()}else{if($dp.status==0)$dp.status=1;if($dp.status!=2)return;var C=A();if(C){$dp.srcEl=C.srcElement||C.target;C.cancelBubble=true}E.el=$dp.$(E.el||$dp.srcEl);if(!E.el||E.el&&E.el.disabled||(E.el==$dp.el&&Q($dp.dd)!="none"&&$dp.dd.style.left!="-1970px"))return;K(E)}function D(){if(T&&V!=X&&V[O].readyState!="complete")return false;return true}function A(){if(I){func=A.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}return null}return event}}function S(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function Q(_,$){if(_)if($!=null)_.style.display=$;else return S(_,"display")}function K(E,$){for(var D in _)if(D.substring(0,1)!="$")$dp[D]=_[D];for(D in E)if($dp[D]===undefined)$dp.errMsg="invalid property:"+D;else $dp[D]=E[D];$dp.elProp=$dp.el&&$dp.el.nodeName=="INPUT"?"value":"innerHTML";if($dp.el[$dp.elProp]==null)return;if($dp.lang=="auto")$dp.lang=T?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!$dp.dd||$dp.eCont||($dp.lang&&$dp.realLang&&$dp.realLang.name!=$dp.lang&&$dp.getLangIndex&&$dp.getLangIndex($dp.lang)>=0)){if($dp.dd&&!$dp.eCont)V[O].body.removeChild($dp.dd);if(_.$dpPath=="")F(A);var B="";if($dp.eCont){$dp.eCont.innerHTML=B;Z($dp.eCont.childNodes[0],Y)}else{$dp.dd=V[O].createElement("DIV");$dp.dd.style.cssText="position:absolute;z-index:19700";$dp.dd.innerHTML=B;V[O].body.appendChild($dp.dd);Z($dp.dd.childNodes[0],Y);if($)$dp.dd.style.left=$dp.dd.style.top="-1970px";else{$dp.show();C()}}}else if($dp.cal){$dp.show();$dp.cal.init();if(!$dp.eCont)C()}function C(){var F=$dp.position.left,B=$dp.position.top,C=$dp.el;if(C!=$dp.srcEl&&(Q(C)=="none"||C.type=="hidden"))C=$dp.srcEl;var H=W(C),$=G(X),D=N(V),A=a(V),E=$dp.dd.offsetHeight,_=$dp.dd.offsetWidth;if(isNaN(B)){if(B=="above"||(B!="under"&&(($.topM+H.bottom+E>D.height)&&($.topM+H.top-E>0))))B=A.top+$.topM+H.top-E-3;else B=A.top+$.topM+H.bottom;B+=T?-1:1}else B+=A.top+$.topM;if(isNaN(F))F=A.left+Math.min($.leftM+H.left,D.width-_-5)-(T?2:0);else F+=A.left+$.leftM;$dp.dd.style.top=B+"px";$dp.dd.style.left=F+"px"}}})() diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/calendar.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/calendar.js deleted file mode 100644 index cb6db60..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/calendar.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * My97 DatePicker 4.5 - * SITE: http://dp.my97.net - * BLOG: http://my97.cnblogs.com - * MAIL: smallcarrot@163.com - */ -var $c;if($FF){Event.prototype.__defineSetter__("returnValue",function($){if(!$)this.preventDefault();return $});Event.prototype.__defineGetter__("srcElement",function(){var $=this.target;while($.nodeType!=1)$=$.parentNode;return $});HTMLElement.prototype.attachEvent=function($,_){var A=$.replace(/on/,"");_._ieEmuEventHandler=function($){window.event=$;return _()};this.addEventListener(A,_._ieEmuEventHandler,false)}}function My97DP(){$c=this;$dp.$w=window;$dt=this.date=new DPDate();this.QS=[];$d=document.createElement("div");$d.className="WdateDiv";$d.onmousedown=hideSel;$d.innerHTML="
           
          ";attachTabEvent($d,function(){hideSel()});_();this.init();$();$d.MI.attachEvent("onkeydown",A);$d.yI.attachEvent("onkeydown",A);$d.MI.onfocus=function($){this.className="yminputfocus";this.value=attr(this,"realValue");this.select();$c._fM();showB($d.MD)};$d.MI.onblur=function(){var $;if($lastInput==this){$dt.M=pIntDef(this.value,$dt.M);$=true}c_M($dt.M,$);this.className="yminput";hide($d.MD)};$d.yI.onfocus=function(){this.className="yminputfocus";this.select();$c._fy();showB($d.yD)};$d.yI.onblur=function(){var $;if($lastInput==this){$dt.y=pIntDef(this.value,$dt.y);$=true}c_y($dt.y,$);this.className="yminput";hide($d.yD)};$d.HI.onfocus=function(){$c.currFocus=this;this.select();$c._fH();showB($d.HD)};$d.HI.onblur=function(){var $;if($lastInput==this){$dt.H=pIntDef(this.value,$dt.H);$=true}c_H($dt.H,$);hide($d.HD)};$d.mI.onfocus=function(){$c.currFocus=this;this.select();$c._fm();showB($d.mD)};$d.mI.onblur=function(){var $;if($lastInput==this){$dt.m=pIntDef(this.value,$dt.m);$=true}c_m($dt.m,$);hide($d.mD)};$d.sI.onfocus=function(){$c.currFocus=this;this.select();$c._fs();showB($d.sD)};$d.sI.onblur=function(){var $;if($lastInput==this){$dt.s=pIntDef(this.value,$dt.s);$=true}c_s($dt.s,$);hide($d.sD)};$d.HI.attachEvent("onkeydown",A);$d.mI.attachEvent("onkeydown",A);$d.sI.attachEvent("onkeydown",A);$d.upButton.onclick=function(){updownEvent(1)};$d.downButton.onmousedown=function(){updownEvent(-1)};$d.qsDiv.onclick=function(){if($d.qsDivSel.style.display!="block"){$c._fillQS();showB($d.qsDivSel)}else hide($d.qsDivSel)};attachTabEvent($d.okI,function(){if($dp.dd.style.display!="none")$d.MI.focus();event.returnValue=false});document.body.appendChild($d);function _(){var A=$d.getElementsByTagName("div"),$=$d.getElementsByTagName("input"),B=$d.getElementsByTagName("button"),_=$d.getElementsByTagName("span");$d.navLeftImg=A[1];$d.leftImg=A[2];$d.rightImg=A[8];$d.navRightImg=A[7];$d.MI=$[0];$d.yI=$[1];$d.titleDiv=A[0];$d.MD=A[4];$d.yD=A[6];$d.qsDivSel=A[9];$d.dDiv=A[10];$d.tDiv=A[11];$d.HD=A[12];$d.mD=A[13];$d.sD=A[14];$d.qsDiv=A[15];$d.bDiv=A[16];$d.HI=$[2];$d.mI=$[4];$d.sI=$[6];$d.clearI=$[7];$d.todayI=$[8];$d.okI=$[9];$d.upButton=B[0];$d.downButton=B[1];$d.timeSpan=_[0]}function $(){$d.navLeftImg.onclick=function(){$ny=$ny<=0?$ny-1:-1;if($ny%5==0)$d.yI.focus();c_y($dt.y-1)};$d.leftImg.onclick=function(){var $=$dt.M;if($>1)$-=1;else{$=12;$dt.y-=1}s_y($dt.y);c_M($)};$d.rightImg.onclick=function(){var $=$dt.M;if($<12)$+=1;else{$=1;$dt.y+=1}s_y($dt.y);c_M($)};$d.navRightImg.onclick=function(){$ny=$ny>=0?$ny+1:1;if($ny%5==0)$d.yI.focus();c_y($dt.y+1)}}function A(){var $=event,_=($.which==undefined)?$.keyCode:$.which;if(!$OPERA&&!((_>=48&&_<=57)||(_>=96&&_<=105)||_==8||_==46||_==37||_==39||_==9))$.returnValue=false;$lastInput=$.srcElement}}My97DP.prototype={init:function(){$ny=0;$dp.cal=this;if($dp.readOnly&&$dp.el.readOnly!=null){$dp.el.readOnly=true;$dp.el.blur()}$();this.dateFmt=$dp.dateFmt;this._dealFmt();this.autoPickDate=$dp.autoPickDate||(($dp.has.st)?false:true);$tdt=this.tdate=new DPDate();this.ddateRe=this._initRe("disabledDates");this.ddayRe=this._initRe("disabledDays");this.sdateRe=this._initRe("specialDates");this.sdayRe=this._initRe("specialDays");this.loadDate();this.minDate=this.doCustomDate($dp.minDate,$dp.minDate!=$dp.defMinDate?$dp.realFmt:$dp.realFullFmt,$dp.defMinDate);this.maxDate=this.doCustomDate($dp.maxDate,$dp.maxDate!=$dp.defMaxDate?$dp.realFmt:$dp.realFullFmt,$dp.defMaxDate);if(this.minDate.compareWith(this.maxDate)>0)$dp.errMsg=$lang.err_1;this._makeDateInRange();$sdt=this.sdate=new DPDate($dt.y,$dt.M,$dt.d,$dt.H,$dt.m,$dt.s);if(!$dp.alwaysUseStartDate&&$dp.el[$dp.elProp]!="")this.update();this.oldValue=$dp.el[$dp.elProp];attr($d.MI,"realValue",$dt.M);$d.MI.value=$lang.aMonStr[$dt.M-1];$d.yI.value=$dt.y;$d.HI.value=$dt.H;$d.mI.value=$dt.m;$d.sI.value=$dt.s;$d.timeSpan.innerHTML=$lang.timeStr;$d.clearI.value=$lang.clearStr;$d.todayI.value=$lang.todayStr;$d.okI.value=$lang.okStr;this.initShowAndHide();this.initBtn();if($dp.errMsg)alert($dp.errMsg);this.redraw();hideSel();if($dp.el.nodeType==1)$dp.attachEvent($dp.el,"onkeydown",function($){if($dp.el==($.srcElement||$.target)){k=($.which==undefined)?$.keyCode:$.which;if(k==9)if(!$dp.cal.checkAndUpdate()){$.preventDefault?$.preventDefault():$.returnValue=false;$dp.cal.mark(false,2);$dp.show()}else{$dp.cal.mark(true);$dp.hide()}}});function $(){var _,$;for(_=0;($=document.getElementsByTagName("link")[_]);_++)if(attr($,"rel").indexOf("style")!=-1&&attr($,"title")){$.disabled=true;if(attr($,"title")==$dp.skin)$.disabled=false}}},splitDate:function(J,C,P,E,B,G,F,K,L){var $;if(J&&J.loadDate)$=J;else{$=new DPDate();if(J!=""){C=C||$dp.dateFmt;var H,O=0,A=/yyyy|yyy|yy|y|MM|M|dd|d|HH|H|mm|m|ss|s/g,N=J.split(/\W+/),_=C.match(A);A.lastIndex=0;if(!L&&N.length!=_.length){var D=0,M="^";while((N=A.exec(C))!==null){D=N.index-D;M+=(D==0)?"":(".{"+D+"}");D=A.lastIndex;switch(N[0]){case"yyyy":M+="(\\d{4})";break;case"yyy":M+="(\\d{3})";break;default:M+="(\\d\\d?)";break}}M+=".*$";N=new RegExp(M).exec(J);O=1}if(N){for(H=0;H<_.length;H++){var I=N[H+O];if(I)switch(_[H]){case"y":case"yy":I=pIntDef(I,0);if(I<50)I+=2000;else I+=1900;$.y=I;break;case"yyy":$.y=pIntDef(I,0)+$dp.yearOffset;break;default:$[_[H].slice(-1)]=I;break}}}else $.d=32}}$.coverDate(P,E,B,G,F,K);return $},_initRe:function(_){var B,$=$dp[_],A="(?:";if($){for(B=0;B<$.length;B++){A+=this.doExp($[B]);if(B!=$.length-1)A+="|"}A=new RegExp(A+")")}else A=null;return A},update:function(){var $=this.getDateStr();if($dp.el[$dp.elProp]!=$)$dp.el[$dp.elProp]=$;this.setRealValue()},setRealValue:function($){var _=$dp.$($dp.vel),$=rtn($,this.getDateStr($dp.realFmt));if(_)_.value=$;attr($dp.el,"realValue",$)},doExp:function(s){var ps="yMdHms",arr,tmpEval,re=/#\{(.*?)\}/;s=s+"";for(var i=0;i=0){A=A.replace(/%ld/g,"0");$.d=0;$.M=pInt($.M)+1}$.refresh()}return $},loadDate:function(){var _,$;if($dp.alwaysUseStartDate||($dp.startDate!=""&&$dp.el[$dp.elProp]=="")){_=this.doExp($dp.startDate);$=$dp.realFmt}else{_=$dp.el[$dp.elProp];$=this.dateFmt}$dt.loadFromDate(this.splitDate(_,$));if($dp.has.sd&&!this.isDate($dt)){$dt.y=$tdt.y;$dt.M=$tdt.M;$dt.d=$tdt.d}if($dp.has.st&&!this.isTime($dt)){$dt.H=$tdt.H;$dt.m=$tdt.m;$dt.s=$tdt.s}},isDate:function($){if($.y!=null)$=doStr($.y,4)+"-"+$.M+"-"+$.d;return $.match(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/)},isTime:function($){if($.H!=null)$=$.H+":"+$.m+":"+$.s;return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},_makeDateInRange:function(){var _=this.checkRange(),A=true;if(_!=0){A=false;var $;if(_>0)$=this.maxDate;else $=this.minDate;if($dp.has.sd){$dt.y=$.y;$dt.M=$.M;$dt.d=$.d}if($dp.has.st){$dt.H=$.H;$dt.m=$.m;$dt.s=$.s}}return A},checkRange:function(A,$){$=$||$dt;var _=$.compareWith(this.minDate,A);if(_>0){_=$.compareWith(this.maxDate,A);if(_<0)_=0}return _},checkValid:function($,A,B){A=A||$dp.has.minUnit;var _=this.checkRange(A,$);if(_==0){if(A=="d"&&B==null)B=new Date($.y,$.M-1,$.d).getDay();_=!this.testDisDay(B)&&!this.testDisDate($)}else _=false;return _},checkAndUpdate:function(){var _=$dp.el,A=this,$=$dp.el[$dp.elProp];if($!=null){if($!=""&&!$dp.readOnly)A.date.loadFromDate(A.splitDate($,A.dateFmt));if($==""||(A.isDate(A.date)&&A.isTime(A.date)&&A.checkValid(A.date))){if($!="")A.update();else A.setRealValue("")}else return false}return true},close:function(){hideSel();if(this.checkAndUpdate()){this.mark(true);$dp.hide()}else this.mark(false)},_fd:function(){var F,D,E,L,H=new sb(),G,A,I,C,K="",$="",_=new DPDate($dt.y,$dt.M,$dt.d,0,0,0),J=_.y,B=_.M;G=new Date(J,B-1,1).getDay();A=1-G;I=new Date(J,B,0).getDay();C=new Date(J,B,0).getDate();H.a("");H.a("");F=$dp.isShowWeek?0:1;while(F<8)H.a("");H.a("");for(F=1,D=A;F<7;F++){H.a("");for(E=0;E<7;E++){_.loadDate(J,B,D++);_.refresh();if(_.M==B){L=true;if(_.compareWith($sdt,"d")==0)K="Wselday";else if(_.compareWith($tdt,"d")==0)K="Wtoday";else K=(($dp.highLineWeekDay&&(E==0||E==6))?"Wwday":"Wday");$=(($dp.highLineWeekDay&&(E==0||E==6))?"WwdayOn":"WdayOn")}else if($dp.isShowOthers){L=true;K="WotherDay";$="WotherDayOn"}else L=false;if($dp.isShowWeek&&E==0&&(F<4||L))H.a("");H.a("")}else H.a(">")}H.a("")}H.a("
          "+$lang.aWeekStr[F++]+"
          "+getWeek(_,1)+""+_.d+"
          ");return H.j()},testDisDate:function($){return this.testDate($,this.ddateRe,!$dp.opposite)},testDisDay:function($){return this.testDay($,this.ddayRe,!$dp.opposite)},testSpeDate:function($){return this.testDate($,this.sdateRe,1)},testSpeDay:function($){return this.testDay($,this.sdayRe,1)},testDate:function(_,B,A){var $=B&&B.test(this.getDateStr($dp.realFmt,_));return $&&A},testDay:function(B,A,_){var $=A&&A.test(B);return $&&_},_f:function(p,c,r,e){var s=new sb();bak=$dt[p];s.a("");for(var j=0;j"+(p=="M"?$lang.aMonStr[$dt[p]-1]:$dt[p])+"")}s.a("")}s.a("
          ");$dt[p]=bak;return s.j()},_fM:function(){$d.MD.innerHTML=this._f("M",2,6,"i+j*6+1")},_fy:function(_){var B,A=$dt.y,$=new sb();_=rtn(_,A-5);$.a(this._f("y",2,5,_+"+i+j*5"));$.a("
          \u2190_+10?"class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy("+(_+10)+")'":"class='invalidMenu'");$.a(">\u2192
          ");$d.yD.innerHTML=$.j()},_fHMS:function(A,_,$){$d[A+"D"].innerHTML=this._f(A,6,_,$)},_fH:function(){this._fHMS("H",4,"i * 6 + j")},_fm:function(){this._fHMS("m",2,"i * 30 + j * 5")},_fs:function(){this._fHMS("s",1,"j * 10")},_fillQS:function(A){this.initQS();var _=$d.qsDivSel,C=_.style,$=new sb();$.a("");$.a("");for(var B=0;B")}else $.a("");$.a("
          "+$lang.quickStr+"
          ");if(!A)$.a("
          \xd7
          ");$.a("
          ");_.innerHTML=$.j()},_dealFmt:function(){$(/yyyy|yyy|yy|y/);$(/MM|M/);$(/dd|d/);$(/HH|H/);$(/mm|m/);$(/ss|s/);$dp.has.sd=($dp.has.y||$dp.has.M||$dp.has.d)?true:false;$dp.has.st=($dp.has.H||$dp.has.m||$dp.has.s)?true:false;$dp.realFullFmt=$dp.realFullFmt.replace(/%Date/,$dp.realDateFmt).replace(/%Time/,$dp.realTimeFmt);if($dp.has.sd){if($dp.has.st)$dp.realFmt=$dp.realFullFmt;else $dp.realFmt=$dp.realDateFmt}else $dp.realFmt=$dp.realTimeFmt;function $(_){var $=(_+"").slice(1,2);$dp.has[$]=_.exec($dp.dateFmt)?($dp.has.minUnit=$,true):false}},initShowAndHide:function(){var $=false;$dp.has.y?($=true,show($d.yI,$d.navLeftImg,$d.navRightImg)):hide($d.yI,$d.navLeftImg,$d.navRightImg);$dp.has.M?($=true,show($d.MI,$d.leftImg,$d.rightImg)):hide($d.MI,$d.leftImg,$d.rightImg);$?show($d.titleDiv):hide($d.titleDiv);if($dp.has.st){show($d.tDiv);disHMS($d.HI,$dp.has.H);disHMS($d.mI,$dp.has.m);disHMS($d.sI,$dp.has.s)}else hide($d.tDiv);shorH($d.clearI,$dp.isShowClear);shorH($d.todayI,$dp.isShowToday);shorH($d.qsDiv,($dp.has.d&&$dp.qsEnabled));if($dp.eCont)hide($d.bDiv)},mark:function(B,D){var A=$dp.el,_=$FF?"class":"className";if(B)C(A);else{if(D==null)D=$dp.errDealMode;switch(D){case 0:if(confirm($lang.errAlertMsg)){A[$dp.elProp]=this.oldValue;C(A)}else $(A);break;case 1:A[$dp.elProp]=this.oldValue;C(A);break;case 2:$(A);break}}function C(A){var B=A.className;if(B){var $=B.replace(/WdateFmtErr/g,"");if(B!=$)attr(A,_,$)}}function $($){attr($,_,$.className+" WdateFmtErr")}},getP:function(C,_,$){$=$||$dt;var E,B,D,A;switch(C.charAt(0)){case"w":A=getDay($);break;case"D":B=[C];A=$lang.aWeekStr[getDay($)+1];break;case"W":A=getWeek($);break;case"y":B=["yyyy","yyy","yy","y"];break;default:break}B=B||[C+C,C];_=_||B[0];for(E=0;E=0)_=_.replace(D,doStr((C=="y"&&D.length<4)?(D.length<3?$.y%100:($.y+2000-$dp.yearOffset)%1000):A,D.length))}return _},getDateStr:function(_,$){$=$||$dt;_=_||this.dateFmt;var A="yMdHmswWD";for(var B=0;B0)$dt.d--;this.update();if(!$dp.eCont)if(this.checkValid($dt)){$c.mark(true);hide($dp.dd)}else $c.mark(false);if($dp.onpicked)$dp.onpicked.call($dp.el,$dp);else if(this.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,"change")},initBtn:function(){$d.clearI.onclick=function(){var $;if($dp.onclearing)$=$dp.onclearing.call($dp.el,$dp);if(!$){$dp.el[$dp.elProp]="";$c.setRealValue("");hide($dp.dd);if($dp.oncleared)$dp.oncleared.call($dp.el,$dp);else if($c.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,"change")}};$d.okI.onclick=function(){day_Click()};if($dp.el[$dp.elProp]=="")$d.okI.value=$lang.okStr;else $d.okI.value=$lang.updateStr;if(this.checkValid($tdt)){$d.todayI.disabled=false;$d.todayI.onclick=function(){var $=$c.tdate;day_Click($.y,$.M,$.d,$.H,$.m,$.s)}}else $d.todayI.disabled=true},initQS:function(){var H,G,A,F,C=[],$=5,E=$dp.quickSel.length,_=$dp.has.minUnit;if(E>$)E=$;else if(_=="m"||_=="s")C=[0,15,30,45,59,-60,-45,-30,-15,-1];else for(H=0;H<$*2;H++)C[H]=$dt[_]-$+1+H;for(H=G=0;H0)_setAll($c.maxDate);function _setAll($){s_y($.y);s_M($.M);s_d($.d);if($dp.has.st){s_H($.H);s_m($.m);s_s($.s)}}}function s_y($){$dt.y=$d.yI.value=$}function s_M($){$dt.M=$;attr($d.MI,"realValue",$);$d.MI.value=$lang.aMonStr[$-1]}function s_d($){$sdt.d=$dt.d=$}function s_H($){$dt.H=$d.HI.value=$}function s_m($){$dt.m=$d.mI.value=$}function s_s($){$dt.s=$d.sI.value=$}function attr(A,_,$){if($===undefined)return A.getAttribute(_);else if(A.setAttribute)A.setAttribute(_,$)}function makeInRange(_,$,A){if(_<$)_=$;else if(_>A)_=A;return _}function attachTabEvent($,_){$.attachEvent("onkeydown",function(){var $=event,A=($.which==undefined)?$.keyCode:$.which;if(A==9)_()})}function doStr($,_){$=$+"";while($.length<_)$="0"+$;return $}function hideSel(){hide($d.yD,$d.MD,$d.HD,$d.mD,$d.sD)}function updownEvent($){if($c.currFocus==undefined)$c.currFocus=$d.HI;switch($c.currFocus){case $d.HI:c_H($dt.H+$);break;case $d.mI:c_m($dt.m+$);break;case $d.sI:c_s($dt.s+$);break}}function DPDate(D,A,$,C,B,_){this.loadDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(E,$.getFullYear());this.M=pIntDef(B,$.getMonth()+1);this.d=pIntDef(_,$.getDate());this.H=pIntDef(D,$.getHours());this.m=pIntDef(C,$.getMinutes());this.s=pIntDef(A,$.getSeconds())};this.loadFromDate=function($){if($==null)return;this.loadDate($.y,$.M,$.d,$.H,$.m,$.s)};this.coverDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(this.y,rtn(E,$.getFullYear()));this.M=pIntDef(this.M,rtn(B,$.getMonth()+1));this.d=$dp.has.d?pIntDef(this.d,rtn(_,$.getDate())):1;this.H=pIntDef(this.H,rtn(D,$.getHours()));this.m=pIntDef(this.m,rtn(C,$.getMinutes()));this.s=pIntDef(this.s,rtn(A,$.getSeconds()))};this.compareWith=function($,C){var A="yMdHms",_,B;C=A.indexOf(C);C=C>=0?C:5;for(var D=0;D<=C;D++){B=A.charAt(D);_=this[B]-$[B];if(_>0)return 1;else if(_<0)return-1}return 0};this.refresh=function(){var $=new Date(this.y,this.M-1,this.d,this.H,this.m,this.s);this.y=$.getFullYear();this.M=$.getMonth()+1;this.d=$.getDate();this.H=$.getHours();this.m=$.getMinutes();this.s=$.getSeconds();return!isNaN(this.y)};this.loadDate(D,A,$,C,B,_)}function pInt($){return parseInt($,10)}function pIntDef(_,$){_=pInt(_);if(isNaN(_))_=$;return _}function rtn($,_){return $==null?_:$}function fireEvent(A,$){if($IE)A.fireEvent("on"+$);else{var _=document.createEvent("HTMLEvents");_.initEvent($,true,true);A.dispatchEvent(_)}} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/config.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/config.js deleted file mode 100644 index 5bc5241..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/config.js +++ /dev/null @@ -1,12 +0,0 @@ -var langList = -[ - {name:'en', charset:'UTF-8'}, - {name:'zh-cn', charset:'gb2312'}, - {name:'zh-tw', charset:'GBK'} -]; - -var skinList = -[ - {name:'default', charset:'gb2312'}, - {name:'whyGreen', charset:'gb2312'} -]; \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/en.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/en.js deleted file mode 100644 index 43928d4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/en.js +++ /dev/null @@ -1,12 +0,0 @@ -var $lang={ -errAlertMsg: "Invalid date or the date out of range,redo or not?", -aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], -aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], -clearStr: "Clear", -todayStr: "Today", -okStr: "OK", -updateStr: "OK", -timeStr: "Time", -quickStr: "Quick Selection", -err_1: 'MinDate Cannot be bigger than MaxDate!' -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/vssver2.scc b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/vssver2.scc deleted file mode 100644 index cea8546..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/zh-cn.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/zh-cn.js deleted file mode 100644 index dfabd92..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/zh-cn.js +++ /dev/null @@ -1,12 +0,0 @@ -var $lang={ -errAlertMsg: "Ϸڸʽڳ޶Χ,Ҫ?", -aWeekStr: ["","","һ","","","","",""], -aMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], -clearStr: "", -todayStr: "", -okStr: "ȷ", -updateStr: "ȷ", -timeStr: "ʱ", -quickStr: "ѡ", -err_1: 'Сڲܴ!' -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/zh-tw.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/zh-tw.js deleted file mode 100644 index dd8859b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/lang/zh-tw.js +++ /dev/null @@ -1,12 +0,0 @@ -var $lang={ -errAlertMsg: "Ϸڸʽڳ޶,ҪN?", -aWeekStr: ["","","һ","","","","",""], -aMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], -clearStr: "", -todayStr: "", -okStr: "_", -updateStr: "_", -timeStr: "rg", -quickStr: "x", -err_1: 'Сڲܴ!' -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/WdatePicker.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/WdatePicker.css deleted file mode 100644 index 8d447b5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/WdatePicker.css +++ /dev/null @@ -1,10 +0,0 @@ -.Wdate{ - border:#999 1px solid; - height:20px; - background:#fff url(datePicker.gif) no-repeat right; -} - -.WdateFmtErr{ - font-weight:bold; - color:red; -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/datePicker.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/datePicker.gif deleted file mode 100644 index d6bf40c..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/datePicker.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/datepicker.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/datepicker.css deleted file mode 100644 index 62b57ad..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/datepicker.css +++ /dev/null @@ -1,240 +0,0 @@ -/* - * My97 DatePicker 4.6 - * Ƥ:default - */ - -/* ѡ DIV */ -.WdateDiv{ - width:180px; - background-color:#FFFFFF; - border:#bbb 1px solid; - padding:2px; -} -.WdateDiv *{font-size:9pt;} - -/**************************** - * ͼ - ***************************/ -.WdateDiv .NavImg { - cursor:pointer; - width:16px; - height:16px; - margin-top:1px; -} -.WdateDiv .NavImgll { background:url(img.gif) no-repeat; } -.WdateDiv .NavImgl { background:url(img.gif) no-repeat -16px 0px; } -.WdateDiv .NavImgr { background:url(img.gif) no-repeat -32px 0px; } -.WdateDiv .NavImgrr { background:url(img.gif) no-repeat -48px 0px; } - -/**************************** - * · - ***************************/ -/* · DIV */ -.WdateDiv #dpTitle{ - height:24px; - margin-bottom:2px; - padding:1px; -} -/* · INPUT */ -.WdateDiv .yminput{ - margin-top:2px; - text-align:center; - border:0px; - height:16px; - width:50px; - cursor:pointer; -} -/* ·ýʱʽ INPUT */ -.WdateDiv .yminputfocus{ - margin-top:2px; - text-align:center; - font-weight:bold; - color:blue; - border:#ccc 1px solid; - height:16px; - width:50px; -} -/* ˵ѡ DIV */ -.WdateDiv .menuSel{ - position:absolute; - background-color:#FFFFFF; - border:#ccc 1px solid; - display:none; -} -/* ˵ʽ TD */ -.WdateDiv .menu{ - cursor:pointer; - background-color:#fff; -} -/* ˵mouseoverʽ TD */ -.WdateDiv .menuOn{ - cursor:pointer; - background-color:#BEEBEE; -} -/* ˵Чʱʽ TD */ -.WdateDiv .invalidMenu{ - color:#aaa; -} -/* ѡƫ DIV */ -.WdateDiv .YMenu{ - margin-top:16px; - -} -/* ѡƫ DIV */ -.WdateDiv .MMenu{ - margin-top:16px; - *width:62px; -} -/* ʱѡλ DIV */ -.WdateDiv .hhMenu{ - margin-top:-90px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .mmMenu{ - margin-top:-46px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .ssMenu{ - margin-top:-24px; - margin-left:26px; -} - -/**************************** - * - ***************************/ - .WdateDiv .Wweek { - text-align:center; - background:#DAF3F5; - border-right:#BDEBEE 1px solid; - } -/**************************** - * , - ***************************/ -/* TR */ -.WdateDiv .MTitle{ - background-color:#BDEBEE; -} -/* TABLE */ -.WdateDiv .WdayTable{ - line-height:20px; - border:#c5d9e8 1px solid; -} -/* ڸʽ TD */ -.WdateDiv .Wday{ - cursor:pointer; -} -/* ڸmouseoverʽ TD */ -.WdateDiv .WdayOn{ - cursor:pointer; - background-color:#C0EBEF; -} -/* ĩڸʽ TD */ -.WdateDiv .Wwday{ - cursor:pointer; - color:#FF2F2F; -} -/* ĩڸmouseoverʽ TD */ -.WdateDiv .WwdayOn{ - cursor:pointer; - color:#000; - background-color:#C0EBEF; -} -.WdateDiv .Wtoday{ - cursor:pointer; - color:blue; -} -.WdateDiv .Wselday{ - background-color:#A9E4E9; -} -/* ·ݵ */ -.WdateDiv .WotherDay{ - cursor:pointer; - color:#6A6AFF; -} -/* ·ݵmouseoverʽ */ -.WdateDiv .WotherDayOn{ - cursor:pointer; - background-color:#C0EBEF; -} -/* Чڵʽ,ڷΧڸʽ,ѡ */ -.WdateDiv .WinvalidDay{ - color:#aaa; -} -/* ڵʽ */ -.WdateDiv .WspecialDay{ - background-color:#66F4DF; -} - -/**************************** - * ʱ - ***************************/ -/* ʱ DIV */ -.WdateDiv #dpTime{ - float:left; - margin-top:3px; - margin-right:30px; -} -/* ʱ SPAN */ -.WdateDiv #dpTime #dpTimeStr{ - margin-left:1px; -} -/* ʱ INPUT */ -.WdateDiv #dpTime input{ - height:16px; - width:18px; - text-align:center; - border:#ccc 1px solid; -} -/* ʱ ʱ INPUT */ -.WdateDiv #dpTime .tB{ - border-right:0px; -} -/* ʱ ֺͼ ':' INPUT */ -.WdateDiv #dpTime .tE{ - border-left:0; - border-right:0; -} -/* ʱ INPUT */ -.WdateDiv #dpTime .tm{ - width:7px; - border-left:0; - border-right:0; -} -/* ʱұߵϰť BUTTON */ -.WdateDiv #dpTime #dpTimeUp{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -32px -16px; -} -/* ʱұߵ°ť BUTTON */ -.WdateDiv #dpTime #dpTimeDown{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -48px -16px; -} -/**************************** - * - ***************************/ - .WdateDiv #dpQS { - float:left; - margin-right:3px; - margin-top:3px; - background:url(img.gif) no-repeat 0px -16px; - width:20px; - height:20px; - cursor:pointer; - } -.WdateDiv #dpControl { - text-align:right; - margin-top:3px; -} -.WdateDiv .dpButton{ - height:20px; - width:45px; - border:#ccc 1px solid; - padding:2px; -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/img.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/img.gif deleted file mode 100644 index 053205d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/img.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/vssver2.scc b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/vssver2.scc deleted file mode 100644 index e87cb1f..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/default/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/vssver2.scc b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/vssver2.scc deleted file mode 100644 index 6256d5a..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/bg.jpg b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/bg.jpg deleted file mode 100644 index 75516a6..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/bg.jpg and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/datepicker.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/datepicker.css deleted file mode 100644 index 8dce218..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/datepicker.css +++ /dev/null @@ -1,247 +0,0 @@ -/* - * My97 DatePicker 4.6 - * Ƥ:whyGreen - */ - -/* ѡ DIV */ -.WdateDiv{ - width:180px; - background-color:#fff; - border:#C5E1E4 1px solid; - padding:2px; -} -.WdateDiv *{font-size:9pt;} - -/**************************** - * ͼ - ***************************/ -.WdateDiv .NavImg { - cursor:pointer; - width:16px; - height:16px; - margin-top:1px; -} -.WdateDiv .NavImgll { background:url(img.gif) no-repeat; } -.WdateDiv .NavImgl { background:url(img.gif) no-repeat -16px 0px; } -.WdateDiv .NavImgr { background:url(img.gif) no-repeat -32px 0px; } -.WdateDiv .NavImgrr { background:url(img.gif) no-repeat -48px 0px; } -/**************************** - * · - ***************************/ -/* · DIV */ -.WdateDiv #dpTitle{ - height:24px; - padding:1px; - border:#c5d9e8 1px solid; - background:url(bg.jpg); - margin-bottom:2px; -} -/* · INPUT */ -.WdateDiv .yminput{ - margin-top:2px; - text-align:center; - border:0px; - height:16px; - width:50px; - color:#034c50; - background-color:transparent; - cursor:pointer; -} -/* ·ýʱʽ INPUT */ -.WdateDiv .yminputfocus{ - margin-top:2px; - text-align:center; - border:#939393 1px solid; - font-weight:bold; - color:#034c50; - height:16px; - width:50px; -} -/* ˵ѡ DIV */ -.WdateDiv .menuSel{ - position:absolute; - background-color:#FFFFFF; - border:#A3C6C8 1px solid; - display:none; -} -/* ˵ʽ TD */ -.WdateDiv .menu{ - cursor:pointer; - background-color:#fff; - color:#11777C; -} -/* ˵mouseoverʽ TD */ -.WdateDiv .menuOn{ - cursor:pointer; - background-color:#BEEBEE; -} -/* ˵Чʱʽ TD */ -.WdateDiv .invalidMenu{ - color:#aaa; -} -/* ѡƫ DIV */ -.WdateDiv .YMenu{ - margin-top:16px; -} -/* ѡƫ DIV */ -.WdateDiv .MMenu{ - margin-top:16px; - *width:62px; -} -/* ʱѡλ DIV */ -.WdateDiv .hhMenu{ - margin-top:-90px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .mmMenu{ - margin-top:-46px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .ssMenu{ - margin-top:-24px; - margin-left:26px; -} - -/**************************** - * - ***************************/ - .WdateDiv .Wweek { - text-align:center; - background:#DAF3F5; - border-right:#BDEBEE 1px solid; - } -/**************************** - * , - ***************************/ - /* TR */ -.WdateDiv .MTitle{ - color:#13777e; - background-color:#bdebee; -} -/* TABLE */ -.WdateDiv .WdayTable{ - line-height:20px; - color:#13777e; - background-color:#edfbfb; - border:#BEE9F0 1px solid; -} -/* ڸʽ TD */ -.WdateDiv .Wday{ - cursor:pointer; -} -/* ڸmouseoverʽ TD */ -.WdateDiv .WdayOn{ - cursor:pointer; - background-color:#74d2d9 ; -} -/* ĩڸʽ TD */ -.WdateDiv .Wwday{ - cursor:pointer; - color:#ab1e1e; -} -/* ĩڸmouseoverʽ TD */ -.WdateDiv .WwdayOn{ - cursor:pointer; - background-color:#74d2d9; -} -.WdateDiv .Wtoday{ - cursor:pointer; - color:blue; -} -.WdateDiv .Wselday{ - background-color:#A7E2E7; -} -/* ·ݵ */ -.WdateDiv .WotherDay{ - cursor:pointer; - color:#0099CC; -} -/* ·ݵmouseoverʽ */ -.WdateDiv .WotherDayOn{ - cursor:pointer; - background-color:#C0EBEF; -} -/* Чڵʽ,ڷΧڸʽ,ѡ */ -.WdateDiv .WinvalidDay{ - color:#aaa; -} -/* ڵʽ */ -.WdateDiv .WspecialDay{ - background-color:#66F4DF; -} - -/**************************** - * ʱ - ***************************/ -/* ʱ DIV */ -.WdateDiv #dpTime{ - -} -/* ʱ SPAN */ -.WdateDiv #dpTime #dpTimeStr{ - margin-left:1px; - color:#497F7F; -} -/* ʱ INPUT */ -.WdateDiv #dpTime input{ - height:16px; - width:18px; - text-align:center; - color:#333; - border:#61CAD0 1px solid; -} -/* ʱ ʱ INPUT */ -.WdateDiv #dpTime .tB{ - border-right:0px; -} -/* ʱ ֺͼ ':' INPUT */ -.WdateDiv #dpTime .tE{ - border-left:0; - border-right:0; -} -/* ʱ INPUT */ -.WdateDiv #dpTime .tm{ - width:7px; - border-left:0; - border-right:0; -} -/* ʱұߵϰť BUTTON */ -.WdateDiv #dpTime #dpTimeUp{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -32px -16px; -} -/* ʱұߵ°ť BUTTON */ -.WdateDiv #dpTime #dpTimeDown{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -48px -16px; -} -/**************************** - * - ***************************/ - .WdateDiv #dpQS { - float:left; - margin-right:3px; - margin-top:3px; - background:url(img.gif) no-repeat 0px -16px; - width:20px; - height:20px; - cursor:pointer; - } -.WdateDiv #dpControl { - text-align:right; - margin-top:3px; -} -.WdateDiv .dpButton{ - height:20px; - width:45px; - padding:2px; - border:#38B1B9 1px solid; - background-color:#CFEBEE; - color:#08575B; -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/img.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/img.gif deleted file mode 100644 index 4003f20..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/img.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/vssver2.scc b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/vssver2.scc deleted file mode 100644 index f5406dc..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/skin/whyGreen/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/vssver2.scc b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/vssver2.scc deleted file mode 100644 index 3b72025..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/DatePicker/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/accordion.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/accordion.js deleted file mode 100644 index 6ce59cc..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/accordion.js +++ /dev/null @@ -1,84 +0,0 @@ - -var accordion = function () { - - var tm = 10; - var sp = 10; - - function slider(n) { - this.nm = n; - this.arr = []; - } - - slider.prototype.init = function (t, defIdx, showedLayerCls) { - var a, h, s, l, i; - var d; - a = document.getElementById(t); - this._showedLayerCls = showedLayerCls || ''; - h = a.getElementsByTagName('dt'); - s = a.getElementsByTagName('dd'); - this.l = h.length; - for (i = 0; i < this.l; i++) { - d = h[i]; - this.arr[i] = d; - d.onclick = new Function(this.nm + '.pro(this)'); - if (defIdx == i) { - d.className = this._showedLayerCls; - } - } - l = s.length; - for (i = 0; i < l; i++) { - d = s[i]; - d.mh = d.offsetHeight; - if (defIdx != i) { - d.style.height = 0; - d.style.display = 'none'; - } - } - } - - slider.prototype.pro = function (d) { - for (var i = 0; i < this.l; i++) { - var h = this.arr[i], s = h.nextSibling; - s = s.nodeType != 1 ? s.nextSibling : s; - clearInterval(s.tm); - if ((h == d && s.style.display == 'none') || (h == d && s.style.display == '')) { - s.style.display = ''; - su(s, 1); - h.className = this._showedLayerCls; - } else if (s.style.display == '') { - su(s, -1); - h.className = ''; - } - } - } - - function su(c, f) { - c.tm = setInterval(function () { - sl(c, f); - }, tm); - } - - function sl(c, f) { - var h = c.offsetHeight, m = c.mh, d = f == 1 ? m - h : h; - c.style.height = h + (Math.ceil(d / sp) * f) + 'px'; - c.style.opacity = h / m; - c.style.filter = 'alpha(opacity=' + h * 100 / m + ')'; - if (f == 1 && h >= m) { - clearInterval(c.tm); - } else if (f != 1 && h == 1) { - c.style.display = 'none'; - clearInterval(c.tm); - } - } - - return { slider: slider } - -}(); - -rs.extend({ - accordion: function (id, defaultIndex) { - window.accordion_1 = new accordion.slider("accordion_1"); - window.accordion_1.init(id, defaultIndex || 0, "open"); - return window.accordion_1; - } -}); \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/_content.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

          Here is the content loaded via AJAX.

          -
            -
          • easyui is a collection of user-interface plugin based on jQuery.
          • -
          • easyui provides essential functionality for building modern, interactive, javascript applications.
          • -
          • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
          • -
          • complete framework for HTML5 web page.
          • -
          • easyui save your time and scales while developing your products.
          • -
          • easyui is very easy but powerful.
          • -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/actions.html deleted file mode 100644 index ecb3aaf..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/actions.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Accordion Actions - jQuery EasyUI Demo - - - - - - - -

          Accordion Actions

          -
          -
          -
          Click the buttons below to add or remove accordion items.
          -
          -
          - Select - Add - Remove -
          -
          -
          -

          Accordion for jQuery

          -

          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/ajax.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/ajax.html deleted file mode 100644 index 11be6c1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/ajax.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Loading Accordion Content with AJAX - jQuery EasyUI Demo - - - - - - - -

          Loading Accordion Content with AJAX

          -
          -
          -
          Click AJAX panel header to load content via AJAX.
          -
          -
          -
          -
          -

          Accordion for jQuery

          -

          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

          -
          -
          -

          The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

          -
          -
          -
          -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/basic.html deleted file mode 100644 index a47958e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/basic.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Basic Accordion - jQuery EasyUI Demo - - - - - - - -

          Basic Accordion

          -
          -
          -
          Click on panel header to show its content.
          -
          -
          -
          -
          -

          Accordion for jQuery

          -

          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

          -
          -
          -

          The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

          -
          -
          -
            -
          • - Foods -
              -
            • - Fruits -
                -
              • apple
              • -
              • orange
              • -
              -
            • -
            • - Vegetables -
                -
              • tomato
              • -
              • carrot
              • -
              • cabbage
              • -
              • potato
              • -
              • lettuce
              • -
              -
            • -
            -
          • -
          -
          -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/datagrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/tools.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/tools.html deleted file mode 100644 index 261d763..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/accordion/tools.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Accordion Tools - jQuery EasyUI Demo - - - - - - - -

          Accordion Tools

          -
          -
          -
          Click the tools on top right of panel to perform actions.
          -
          -
          -
          -
          -

          Accordion for jQuery

          -

          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

          -
          -
          -

          The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

          -
          -
          - - - - - - - - - - - -
          Item IDProduct IDList PriceUnit CostAttributeStatus
          -
          -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/calendar/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/calendar/basic.html deleted file mode 100644 index 5dc3260..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/calendar/basic.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Basic Calendar - jQuery EasyUI Demo - - - - - - - -

          Basic Calendar

          -
          -
          -
          Click to select date.
          -
          - -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/calendar/firstday.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/calendar/firstday.html deleted file mode 100644 index fd6863b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/calendar/firstday.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - First Day of Week - jQuery EasyUI Demo - - - - - - - -

          First Day of Week

          -
          -
          -
          Choose the first day of the week.
          -
          - -
          - -
          - -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combo/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combo/basic.html deleted file mode 100644 index d9ac911..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combo/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Combo - jQuery EasyUI Demo - - - - - - - -

          Basic Combo

          -
          -
          -
          Click the right arrow button to show drop down panel that can be filled with any content.
          -
          - -
          -
          Select a language
          - Java
          - C#
          - Ruby
          - Basic
          - Fortran -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/actions.html deleted file mode 100644 index 35e4a29..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/actions.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - ComboBox Actions - jQuery EasyUI Demo - - - - - - - -

          ComboBox

          -
          -
          -
          Click the buttons below to perform actions.
          -
          - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/basic.html deleted file mode 100644 index 95f3b45..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/basic.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Basic ComboBox - jQuery EasyUI Demo - - - - - - - -

          Basic ComboBox

          -
          -
          -
          Type in ComboBox to try auto complete.
          -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/combobox_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/combobox_data1.json deleted file mode 100644 index 8bfba76..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/combobox_data1.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "id":1, - "text":"Java", - "desc":"Write once, run anywhere" -},{ - "id":2, - "text":"C#", - "desc":"One of the programming languages designed for the Common Language Infrastructure" -},{ - "id":3, - "text":"Ruby", - "selected":true, - "desc":"A dynamic, reflective, general-purpose object-oriented programming language" -},{ - "id":4, - "text":"Perl", - "desc":"A high-level, general-purpose, interpreted, dynamic programming language" -},{ - "id":5, - "text":"Basic", - "desc":"A family of general-purpose, high-level programming languages" -}] \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/combobox_data2.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/combobox_data2.json deleted file mode 100644 index fcaca4f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/combobox_data2.json +++ /dev/null @@ -1,47 +0,0 @@ -[{ - "value":"f20", - "text":"Firefox 2.0 or higher", - "group":"Firefox" -},{ - "value":"f15", - "text":"Firefox 1.5.x", - "group":"Firefox" -},{ - "value":"f10", - "text":"Firefox 1.0.x", - "group":"Firefox" -},{ - "value":"ie7", - "text":"Microsoft Internet Explorer 7.0 or higher", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie6", - "text":"Microsoft Internet Explorer 6.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie5", - "text":"Microsoft Internet Explorer 5.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie4", - "text":"Microsoft Internet Explorer 4.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"op9", - "text":"Opera 9.0 or higher", - "group":"Opera" -},{ - "value":"op8", - "text":"Opera 8.x", - "group":"Opera" -},{ - "value":"op7", - "text":"Opera 7.x", - "group":"Opera" -},{ - "value":"Safari", - "text":"Safari" -},{ - "value":"Other", - "text":"Other" -}] \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/customformat.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/customformat.html deleted file mode 100644 index bdd6d92..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/customformat.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Custom Format in ComboBox - jQuery EasyUI Demo - - - - - - - -

          Custom Format in ComboBox

          -
          -
          -
          This sample shows how to custom the format of list item.
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/dynamicdata.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/dynamicdata.html deleted file mode 100644 index 7e22988..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/dynamicdata.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Load Dynamic ComboBox Data - jQuery EasyUI Demo - - - - - - - -

          Load Dynamic ComboBox Data

          -
          -
          -
          Click the button below to load data.
          -
          -
          - LoadData -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/group.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/group.html deleted file mode 100644 index 560e78e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/group.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Group ComboBox - jQuery EasyUI Demo - - - - - - - -

          Group ComboBox

          -
          -
          -
          This example shows how to display combobox items in groups.
          -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/multiple.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/multiple.html deleted file mode 100644 index ce02d84..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/multiple.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Multiple Select - jQuery EasyUI Demo - - - - - - - -

          Load Dynamic ComboBox Data

          -
          -
          -
          Drop down the panel and select multiple items.
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/navigation.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/navigation.html deleted file mode 100644 index a62e4a0..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/navigation.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - Navigate ComboBox - jQuery EasyUI Demo - - - - - - - -

          Navigate ComboBox

          -
          -
          -
          Navigate through combobox items width keyboard to select an item.
          -
          -
          - - SelectOnNavigation -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/remotedata.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/remotedata.html deleted file mode 100644 index 592cc39..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/remotedata.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Binding to Remote Data - jQuery EasyUI Demo - - - - - - - -

          Binding to Remote Data

          -
          -
          -
          The ComboBox is bound to a remote data.
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/remotejsonp.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/remotejsonp.html deleted file mode 100644 index 52c99fe..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combobox/remotejsonp.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Remote JSONP - jQuery EasyUI Demo - - - - - - - -

          Remote JSONP

          -
          -
          -
          This sample shows how to use JSONP to retrieve data from a remote site.
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/actions.html deleted file mode 100644 index 0d1930b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/actions.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - ComboGrid Actions - jQuery EasyUI Demo - - - - - - - -

          ComboGrid Actions

          -
          -
          -
          Click the buttons below to perform actions.
          -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/basic.html deleted file mode 100644 index a43cb0b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/basic.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Basic ComboGrid - jQuery EasyUI Demo - - - - - - - -

          Basic ComboGrid

          -
          -
          -
          Click the right arrow button to show the DataGrid.
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/datagrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/datagrid_data1.json deleted file mode 100644 index 3a62a71..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"selected":true,"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/initvalue.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/initvalue.html deleted file mode 100644 index 920b035..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/initvalue.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Initialize Value for ComboGrid - jQuery EasyUI Demo - - - - - - - -

          Initialize Value for ComboGrid

          -
          -
          -
          Initialize value when ComboGrid is created.
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/multiple.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/multiple.html deleted file mode 100644 index 2b4273a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/multiple.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Multiple ComboGrid - jQuery EasyUI Demo - - - - - - - -

          Multiple ComboGrid

          -
          -
          -
          Click the right arrow button to show the DataGrid and select items.
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/navigation.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/navigation.html deleted file mode 100644 index cfb7fad..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combogrid/navigation.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Navigate ComboGrid - jQuery EasyUI Demo - - - - - - - -

          Navigate ComboGrid

          -
          -
          -
          Navigate through grid items with keyboard to select an item.
          -
          -
          - - SelectOnNavigation -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/actions.html deleted file mode 100644 index 671659d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/actions.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - ComboTree Actions - jQuery EasyUI Demo - - - - - - - -

          ComboTree Actions

          -
          -
          -
          Click the buttons below to perform actions
          -
          - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/basic.html deleted file mode 100644 index 09d5ca7..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/basic.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Basic ComboTree - jQuery EasyUI Demo - - - - - - - -

          Basic ComboTree

          -
          -
          -
          Click the right arrow button to show the tree panel.
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/initvalue.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/initvalue.html deleted file mode 100644 index 5f6576c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/initvalue.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Initialize Value for ComboTree - jQuery EasyUI Demo - - - - - - - -

          Initialize Value for ComboTree

          -
          -
          -
          Initialize Value when ComboTree is created.
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/multiple.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/multiple.html deleted file mode 100644 index cbdd23f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/multiple.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Multiple ComboTree - jQuery EasyUI Demo - - - - - - - -

          Multiple ComboTree

          -
          -
          -
          Click the right arrow button to show the tree panel and select multiple nodes.
          -
          -
          - Cascade Check: - -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/tree_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/combotree/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/aligncolumns.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/aligncolumns.html deleted file mode 100644 index 41ce52f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/aligncolumns.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Aligning Columns in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Aligning Columns in DataGrid

          -
          -
          -
          Use align and halign properties to set the alignment of the columns and their header.
          -
          -
          - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/basic.html deleted file mode 100644 index 223a37c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/basic.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Basic DataGrid - jQuery EasyUI Demo - - - - - - - -

          Basic DataGrid

          -
          -
          -
          The DataGrid is created from markup, no JavaScript code needed.
          -
          -
          - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/cellediting.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/cellediting.html deleted file mode 100644 index 4a8b9a6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/cellediting.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - Cell Editing in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Cell Editing in DataGrid

          -
          -
          -
          Click a cell to start editing.
          -
          -
          - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/cellstyle.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/cellstyle.html deleted file mode 100644 index 4a4bc4c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/cellstyle.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - DataGrid Cell Style - jQuery EasyUI Demo - - - - - - - -

          DataGrid Cell Style

          -
          -
          -
          The cells which listprice value is less than 30 are highlighted.
          -
          -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/checkbox.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/checkbox.html deleted file mode 100644 index e01266c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/checkbox.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CheckBox Selection on DataGrid - jQuery EasyUI Demo - - - - - - - -

          CheckBox Selection on DataGrid

          -
          -
          -
          Click the checkbox on header to select or unselect all selections.
          -
          -
          - - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          -
          - Selection Mode: -
          - SelectOnCheck:
          - CheckOnSelect: -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/clientpagination.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/clientpagination.html deleted file mode 100644 index 6af7b0d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/clientpagination.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Client Side Pagination in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Client Side Pagination in DataGrid

          -
          -
          -
          This sample shows how to implement client side pagination in DataGrid.
          -
          -
          - - - - - - - - - - - - - -
          Inv NoDateNameAmountPriceCostNote
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/columngroup.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/columngroup.html deleted file mode 100644 index 258799d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/columngroup.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Column Group - jQuery EasyUI Demo - - - - - - - -

          Column Group

          -
          -
          -
          The header cells can be merged. Useful to group columns under a category.
          -
          -
          - - - - - - - - - - - - - - -
          Item IDProductItem Details
          List PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/complextoolbar.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/complextoolbar.html deleted file mode 100644 index 767c030..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/complextoolbar.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - DataGrid Complex Toolbar - jQuery EasyUI Demo - - - - - - - -

          DataGrid Complex Toolbar

          -
          -
          -
          The DataGrid toolbar can be defined from a <div/> markup, so you can define the layout of toolbar easily.
          -
          -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          -
          -
          - - - - - -
          -
          - Date From: - To: - Language: - - Search -
          -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/contextmenu.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/contextmenu.html deleted file mode 100644 index 9c59838..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/contextmenu.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - Context Menu on DataGrid - jQuery EasyUI Demo - - - - - - - -

          Context Menu on DataGrid

          -
          -
          -
          Right click on the header of DataGrid to display context menu.
          -
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/custompager.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/custompager.html deleted file mode 100644 index c1a80a6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/custompager.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Custom DataGrid Pager - jQuery EasyUI Demo - - - - - - - -

          Custom DataGrid Pager

          -
          -
          -
          You can append some buttons to the standard datagrid pager bar.
          -
          -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/datagrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/datagrid_data2.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/datagrid_data2.json deleted file mode 100644 index 4a27e14..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/datagrid_data2.json +++ /dev/null @@ -1,15 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":28.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":63.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -],"footer":[ - {"unitcost":19.80,"listprice":60.40,"productid":"Average:"}, - {"unitcost":198.00,"listprice":604.00,"productid":"Total:"} -]} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/footer.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/footer.html deleted file mode 100644 index 3e1a615..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/footer.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Footer Rows in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Footer Rows in DataGrid

          -
          -
          -
          The summary informations can be displayed in footer rows.
          -
          -
          - - - - - - - - - - - -
          Item IDProduct IDList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/formatcolumns.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/formatcolumns.html deleted file mode 100644 index cbf6f40..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/formatcolumns.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Format DataGrid Columns - jQuery EasyUI Demo - - - - - - - -

          Format DataGrid Columns

          -
          -
          -
          The list price value will show red color when less than 30.
          -
          -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/frozencolumns.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/frozencolumns.html deleted file mode 100644 index 19650e5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/frozencolumns.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Frozen Columns in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Frozen Columns in DataGrid

          -
          -
          -
          You can freeze some columns that can't scroll out of view.
          -
          -
          - - - - - - - - - - - - - - - -
          Item IDProduct
          List PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/frozenrows.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/frozenrows.html deleted file mode 100644 index 6072511..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/frozenrows.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Frozen Rows in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Frozen Rows in DataGrid

          -
          -
          -
          This sample shows how to freeze some rows that will always be displayed at the top when the datagrid is scrolled down.
          -
          -
          - - - - - - - - - - - - - - - -
          Item IDProduct
          List PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/mergecells.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/mergecells.html deleted file mode 100644 index 2751bcf..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/mergecells.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Merge Cells for DataGrid - jQuery EasyUI Demo - - - - - - - -

          Merge Cells for DataGrid

          -
          -
          -
          Cells in DataGrid body can be merged.
          -
          -
          - - - - - - - - - - - -
          ProductItem IDList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/multisorting.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/multisorting.html deleted file mode 100644 index 2a744af..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/multisorting.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Multiple Sorting - jQuery EasyUI Demo - - - - - - - -

          Multiple Sorting

          -
          -
          -
          Set 'multiSort' property to true to enable multiple column sorting.
          -
          -
          - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/products.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/products.json deleted file mode 100644 index 2c512bc..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/products.json +++ /dev/null @@ -1,9 +0,0 @@ -[ -{"productid":"FI-SW-01","productname":"Koi"}, -{"productid":"K9-DL-01","productname":"Dalmation"}, -{"productid":"RP-SN-01","productname":"Rattlesnake"}, -{"productid":"RP-LI-02","productname":"Iguana"}, -{"productid":"FL-DSH-01","productname":"Manx"}, -{"productid":"FL-DLH-02","productname":"Persian"}, -{"productid":"AV-CB-01","productname":"Amazon Parrot"} -] diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowborder.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowborder.html deleted file mode 100644 index bad6fa4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowborder.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Row Border in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Row Border in DataGrid

          -
          -
          -
          This sample shows how to change the row border style of datagrid.
          -
          -
          - Border: - - Striped: - -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowediting.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowediting.html deleted file mode 100644 index a743e08..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowediting.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Row Editing in DataGrid - jQuery EasyUI Demo - - - - - - - -

          Row Editing in DataGrid

          -
          -
          -
          Click the row to start editing.
          -
          -
          - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowstyle.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowstyle.html deleted file mode 100644 index aefbfa7..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/rowstyle.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - DataGrid Row Style - jQuery EasyUI Demo - - - - - - - -

          DataGrid Row Style

          -
          -
          -
          The rows which listprice value is less than 30 are highlighted.
          -
          -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/selection.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/selection.html deleted file mode 100644 index bfe57f8..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/selection.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - DataGrid Selection - jQuery EasyUI Demo - - - - - - - -

          DataGrid Selection

          -
          -
          -
          Choose a selection mode and select one or more rows.
          -
          - - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          -
          - Selection Mode: - -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/simpletoolbar.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/simpletoolbar.html deleted file mode 100644 index 8aca43f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/simpletoolbar.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - DataGrid with Toolbar - jQuery EasyUI Demo - - - - - - - -

          DataGrid with Toolbar

          -
          -
          -
          Put buttons on top toolbar of DataGrid.
          -
          -
          - - - - - - - - - - - -
          Item IDProductList PriceUnit CostAttributeStatus
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/transform.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/transform.html deleted file mode 100644 index dc2a420..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datagrid/transform.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Transform DataGrid from Table - jQuery EasyUI Demo - - - - - - - -

          Transform DataGrid from Table

          -
          -
          -
          Transform DataGrid from an existing, unformatted html table.
          -
          -
          - - - - - - - - - - - - - - - - - - - - - - - - - - -
          Item IDProductList PriceAttribute
          EST-1FI-SW-0136.50Large
          EST-10K9-DL-0118.50Spotted Adult Female
          EST-11RP-SN-0128.50Venomless
          EST-12RP-SN-0126.50Rattleless
          EST-13RP-LI-0235.50Green Adult
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/basic.html deleted file mode 100644 index 9fc40a6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic DateBox - jQuery EasyUI Demo - - - - - - - -

          Basic DateBox

          -
          -
          -
          Click the calendar image on the right side.
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/dateformat.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/dateformat.html deleted file mode 100644 index 5a45cc0..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/dateformat.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Date Format - jQuery EasyUI Demo - - - - - - - -

          Date Format

          -
          -
          -
          Different date formats are applied to different DateBox components.
          -
          -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/events.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/events.html deleted file mode 100644 index 68c8b29..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/events.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - DateBox Events - jQuery EasyUI Demo - - - - - - - -

          DateBox Events

          -
          -
          -
          Click the calendar image on the right side.
          -
          -
          - -
          - Selected Date: - -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/validate.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/validate.html deleted file mode 100644 index a0b4ca3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datebox/validate.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Validate DateBox - jQuery EasyUI Demo - - - - - - - -

          Validate DateBox

          -
          -
          -
          When the selected date is greater than specified date. The field validator will raise an error.
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/basic.html deleted file mode 100644 index 59bec16..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic DateTimeBox - jQuery EasyUI Demo - - - - - - - -

          Basic DateTimeBox

          -
          -
          -
          Click the calendar image on the right side.
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/initvalue.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/initvalue.html deleted file mode 100644 index 809e113..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/initvalue.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Initialize Value for DateTime - jQuery EasyUI Demo - - - - - - - -

          Initialize Value for DateTime

          -
          -
          -
          The value is initialized when DateTimeBox has been created.
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/showseconds.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/showseconds.html deleted file mode 100644 index bcd3707..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/datetimebox/showseconds.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Display Seconds - jQuery EasyUI Demo - - - - - - - -

          Display Seconds

          -
          -
          -
          The user can decide to display seconds part or not.
          -
          -
          - Show Seconds: - -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/demo.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/demo.css deleted file mode 100644 index 824a8ab..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/demo.css +++ /dev/null @@ -1,26 +0,0 @@ -*{ - font-size:12px; -} -body { - font-family:helvetica,tahoma,verdana,sans-serif; - padding:20px; - font-size:13px; - margin:0; -} -h2 { - font-size:18px; - font-weight:bold; - margin:0; - margin-bottom:15px; -} -.demo-info{ - background:#FFFEE6; - color:#8F5700; - padding:12px; -} -.demo-tip{ - width:16px; - height:16px; - margin-right:8px; - float:left; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/basic.html deleted file mode 100644 index 0875bb2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic Dialog - jQuery EasyUI Demo - - - - - - - -

          Basic Dialog

          -
          -
          -
          Click below button to open or close dialog.
          -
          -
          - Open - Close -
          -
          - The dialog content. -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/complextoolbar.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/complextoolbar.html deleted file mode 100644 index cce5594..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/complextoolbar.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Complex Toolbar on Dialog - jQuery EasyUI Demo - - - - - - - -

          Complex Toolbar on Dialog

          -
          -
          -
          This sample shows how to create complex toolbar on dialog.
          -
          -
          - Open - Close -
          -
          - The dialog content. -
          -
          - - - - - -
          - Edit - Help - - -
          -
          -
          - Save - Close -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/toolbarbuttons.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/toolbarbuttons.html deleted file mode 100644 index 4265bef..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/dialog/toolbarbuttons.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Toolbar and Buttons - jQuery EasyUI Demo - - - - - - - -

          Toolbar and Buttons

          -
          -
          -
          The toolbar and buttons can be added to dialog.
          -
          -
          - Open - Close -
          -
          - The dialog content. -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/basic.html deleted file mode 100644 index ee2aed1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/basic.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Basic Draggable - jQuery EasyUI Demo - - - - - - - -

          Basic Draggable

          -
          -
          -
          Move the boxes below by clicking on it with mouse.
          -
          -
          -
          -
          -
          Title
          -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/constain.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/constain.html deleted file mode 100644 index ae6eee1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/constain.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Constrain Draggable - jQuery EasyUI Demo - - - - - - - -

          Constrain Draggable

          -
          -
          -
          The draggable object can only be moved within its parent container.
          -
          -
          -
          -
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/snap.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/snap.html deleted file mode 100644 index 0bf82b2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/draggable/snap.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Snap Draggable - jQuery EasyUI Demo - - - - - - - -

          Snap Draggable

          -
          -
          -
          This sample shows how to snap a draggable object to a 20x20 grid.
          -
          -
          -
          -
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/accept.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/accept.html deleted file mode 100644 index ab279f8..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/accept.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Accept a Drop - jQuery EasyUI Demo - - - - - - - -

          Accept a Drop

          -
          -
          -
          Some draggable object can not be accepted.
          -
          -
          -
          - drag me! -
          Drag 1
          -
          Drag 2
          -
          Drag 3
          -
          -
          - drop here! -
          -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/basic.html deleted file mode 100644 index 2ba8687..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/basic.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - Basic Droppable - jQuery EasyUI Demo - - - - - - - -

          Basic Droppable

          -
          -
          -
          Drag the boxed on left to the target area on right.
          -
          -
          -
          -
          Source
          -
          -
          Apple
          -
          Peach
          -
          Orange
          -
          -
          -
          -
          Target
          -
          -
          -
          -
          - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/sort.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/sort.html deleted file mode 100644 index ec5d966..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/droppable/sort.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Change Items Order - jQuery EasyUI Demo - - - - - - - -

          Change Items Order

          -
          -
          -
          Drag the list items to change their order.
          -
          -
          -
            -
          • Drag 1
          • -
          • Drag 2
          • -
          • Drag 3
          • -
          • Drag 4
          • -
          • Drag 5
          • -
          • Drag 6
          • -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/easyloader/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/easyloader/basic.html deleted file mode 100644 index 44a09eb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/easyloader/basic.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Basic EasyLoader - jQuery EasyUI Demo - - - - - - - -

          Basic EasyLoader

          -
          -
          -
          Click the buttons below to load components dynamically.
          -
          - -
          -
          -
          - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/basic.html deleted file mode 100644 index b8e1dc1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/basic.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Basic Form - jQuery EasyUI Demo - - - - - - - -

          Basic Form

          -
          -
          -
          Fill the form and submit it.
          -
          -
          -
          -
          -
          - - - - - - - - - - - - - - - - - - - - - -
          Name:
          Email:
          Subject:
          Message:
          Language: - -
          -
          -
          -
          - Submit - Clear -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/form_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/form_data1.json deleted file mode 100644 index e6f6ab1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/form_data1.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name":"easyui", - "email":"easyui@gmail.com", - "subject":"Subject Title", - "message":"Message Content", - "language":"en" -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/load.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/load.html deleted file mode 100644 index dabb4ba..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/form/load.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Load Form Data - jQuery EasyUI Demo - - - - - - - -

          Load Form Data

          -
          -
          -
          Click the buttons below to load form data.
          -
          - -
          -
          -
          - - - - - - - - - - - - - - - - - - - - - -
          Name:
          Email:
          Subject:
          Message:
          Language: - -
          -
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/_content.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/_content.html deleted file mode 100644 index 66c1bd5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

          jQuery EasyUI framework help you build your web page easily.

          -
            -
          • easyui is a collection of user-interface plugin based on jQuery.
          • -
          • easyui provides essential functionality for building modern, interactive, javascript applications.
          • -
          • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
          • -
          • complete framework for HTML5 web page.
          • -
          • easyui save your time and scales while developing your products.
          • -
          • easyui is very easy but powerful.
          • -
          - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/addremove.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/addremove.html deleted file mode 100644 index daf8c04..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/addremove.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Add and Remove Layout - jQuery EasyUI Demo - - - - - - - -

          Add and Remove Layout

          -
          -
          -
          Click the buttons below to add or remove region panel of layout.
          -
          -
          - Select Region Panel: - - Add - Remove -
          -
          -
          -
          -
          -
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/autoheight.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/autoheight.html deleted file mode 100644 index bc71e94..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/autoheight.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Auto Height for Layout - jQuery EasyUI Demo - - - - - - - -

          Auto Height for Layout

          -
          -
          -
          This example shows how to auto adjust layout height after dynamically adding items.
          -
          - -
          -
          -
          -
          -
          -

          Panel Content.

          -

          Panel Content.

          -

          Panel Content.

          -

          Panel Content.

          -

          Panel Content.

          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/basic.html deleted file mode 100644 index a98cfc9..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Layout - jQuery EasyUI Demo - - - - - - - -

          Basic Layout

          -
          -
          -
          The layout contains north,south,west,east and center regions.
          -
          -
          -
          -
          -
          -
          -
          -
          - - - - - - - - - - - -
          Item IDProduct IDList PriceUnit CostAttributeStatus
          -
          -
          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/complex.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/complex.html deleted file mode 100644 index 29e6d41..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/complex.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Complex Layout - jQuery EasyUI Demo - - - - - - - -

          Complex Layout

          -
          -
          -
          This sample shows how to create a complex layout.
          -
          -
          -
          -
          -
          -
          -
            -
            -
            -
            -
            - content1 -
            -
            - content2 -
            -
            - content3 -
            -
            -
            -
            -
            -
            -
            - - - - - - - - - - - -
            Item IDProduct IDList PriceUnit CostAttributeStatus
            -
            -
            -
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/datagrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/full.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/full.html deleted file mode 100644 index c83bf07..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/full.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - Full Layout - jQuery EasyUI Demo - - - - - - - -
            north region
            -
            west content
            -
            east region
            -
            south region
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/nestedlayout.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/nestedlayout.html deleted file mode 100644 index 2e80b89..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/nestedlayout.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Nested Layout - jQuery EasyUI Demo - - - - - - - -

            Nested Layout

            -
            -
            -
            The layout region panel contains another layout or other components.
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/nocollapsible.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/nocollapsible.html deleted file mode 100644 index 3d2938e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/nocollapsible.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - No collapsible button in Layout - jQuery EasyUI Demo - - - - - - - -

            No collapsible button in Layout

            -
            -
            -
            The layout region panel has no collapsible button.
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/propertygrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/propertygrid_data1.json deleted file mode 100644 index 12b2d00..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/propertygrid_data1.json +++ /dev/null @@ -1,20 +0,0 @@ -{"total":7,"rows":[ - {"name":"Name","value":"Bill Smith","group":"ID Settings","editor":"text"}, - {"name":"Address","value":"","group":"ID Settings","editor":"text"}, - {"name":"Age","value":"40","group":"ID Settings","editor":"numberbox"}, - {"name":"Birthday","value":"01/02/2012","group":"ID Settings","editor":"datebox"}, - {"name":"SSN","value":"123-456-7890","group":"ID Settings","editor":"text"}, - {"name":"Email","value":"bill@gmail.com","group":"Marketing Settings","editor":{ - "type":"validatebox", - "options":{ - "validType":"email" - } - }}, - {"name":"FrequentBuyer","value":"false","group":"Marketing Settings","editor":{ - "type":"checkbox", - "options":{ - "on":true, - "off":false - } - }} -]} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/tree_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/layout/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/basic.html deleted file mode 100644 index 7e0ed7a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/basic.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Basic LinkButton - jQuery EasyUI Demo - - - - - - - -

            Basic LinkButton

            -
            -
            -
            Buttons can be created from <a/> link.
            -
            -
            -
            - Add - Remove - Save - Cut - Text Button -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/group.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/group.html deleted file mode 100644 index 4560e90..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/group.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Button Group - jQuery EasyUI Demo - - - - - - - -

            Button Group

            -
            -
            -
            In a button group only one button can be selected.
            -
            -
            - -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/iconalign.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/iconalign.html deleted file mode 100644 index 4c044a4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/iconalign.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Icon Align on LinkButton - jQuery EasyUI Demo - - - - - - - -

            Icon Align on LinkButton

            -
            -
            -
            Change the icon align to place icon on left or right of button.
            -
            -
            -
            - Add - Remove - Save - Cut -
            -
            - Select Icon Align: - -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/plain.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/plain.html deleted file mode 100644 index 6331f0a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/plain.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Plain LinkButton - jQuery EasyUI Demo - - - - - - - -

            Plain LinkButton

            -
            -
            -
            The link buttons have plain effect.
            -
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/toggle.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/toggle.html deleted file mode 100644 index d2df604..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/linkbutton/toggle.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Toggle Button - jQuery EasyUI Demo - - - - - - - -

            Toggle Button

            -
            -
            -
            Click the button below to switch its selected state.
            -
            -
            -
            - Add - Remove - Save - Cut - Text Button -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/basic.html deleted file mode 100644 index c5d15ee..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/basic.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Basic Menu - jQuery EasyUI Demo - - - - - - - -

            Basic Menu

            -
            -
            -
            Right click on page to display menu.
            -
            -
            - -
            -
            New
            -
            - Open -
            -
            Word
            -
            Excel
            -
            PowerPoint
            -
            - M1 -
            -
            sub1
            -
            sub2
            -
            - Sub -
            -
            sub21
            -
            sub22
            -
            sub23
            -
            -
            -
            sub3
            -
            -
            -
            - Window Demos -
            -
            Window
            -
            Dialog
            - -
            -
            -
            -
            -
            Save
            -
            Print
            - -
            Exit
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/customitem.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/customitem.html deleted file mode 100644 index 03c0b33..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/customitem.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Custom Menu Item - jQuery EasyUI Demo - - - - - - - -

            Custom Menu Item

            -
            -
            -
            Right click on page to display menu, move to the 'Open' item to display its custom sub content.
            -
            -
            -
            -
            New
            -
            - Open - -
            -
            Save
            -
            Print
            - -
            Exit
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/events.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/events.html deleted file mode 100644 index 9e8bea3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menu/events.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Menu Events - jQuery EasyUI Demo - - - - - - - -

            Menu Events

            -
            -
            -
            Right click on page to display menu and click an item.
            -
            -
            -
            -
            New
            -
            Save
            -
            Print
            - -
            Exit
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menubutton/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menubutton/actions.html deleted file mode 100644 index 7ec5feb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menubutton/actions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - MenuButton Actions - jQuery EasyUI Demo - - - - - - - -

            MenuButton Actions

            -
            -
            -
            Click the buttons below to perform actions.
            -
            - -
            - Home - Edit - Help - About -
            -
            -
            Undo
            -
            Redo
            - -
            Cut
            -
            Copy
            -
            Paste
            - -
            - Toolbar -
            -
            Address
            -
            Link
            -
            Navigation Toolbar
            -
            Bookmark Toolbar
            - -
            New Toolbar...
            -
            -
            -
            Delete
            -
            Select All
            -
            -
            -
            Help
            -
            Update
            -
            About
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menubutton/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menubutton/basic.html deleted file mode 100644 index 28bb67e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/menubutton/basic.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Basic MenuButton - jQuery EasyUI Demo - - - - - - - -

            Basic MenuButton

            -
            -
            -
            Move mouse over the button to drop down menu.
            -
            -
            -
            - Home - Edit - Help - About -
            -
            -
            Undo
            -
            Redo
            - -
            Cut
            -
            Copy
            -
            Paste
            - -
            - Toolbar -
            -
            Address
            -
            Link
            -
            Navigation Toolbar
            -
            Bookmark Toolbar
            - -
            New Toolbar...
            -
            -
            -
            Delete
            -
            Select All
            -
            -
            -
            Help
            -
            Update
            -
            About
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/alert.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/alert.html deleted file mode 100644 index 35c6bf9..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/alert.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Alert Messager - jQuery EasyUI Demo - - - - - - - -

            Alert Messager

            -
            -
            -
            Click on each button to display different alert message box.
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/basic.html deleted file mode 100644 index b9637ab..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/basic.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - Basic Messager - jQuery EasyUI Demo - - - - - - - -

            Basic Messager

            -
            -
            -
            Click on each button to see a distinct message box.
            -
            -
            - Show - Slide - Fade - Progress -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/interactive.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/interactive.html deleted file mode 100644 index 12b9298..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/interactive.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Interactive Messager - jQuery EasyUI Demo - - - - - - - -

            Interactive Messager

            -
            -
            -
            Click on each button to display interactive message box.
            -
            -
            - Confirm - Prompt -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/position.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/position.html deleted file mode 100644 index f7f241a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/messager/position.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Message Box Position - jQuery EasyUI Demo - - - - - - - -

            Message Box Position

            -
            -
            -
            Click the buttons below to display message box on different position.
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/basic.html deleted file mode 100644 index c34f4fc..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/basic.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Basic NumberBox - jQuery EasyUI Demo - - - - - - - -

            Basic NumberBox

            -
            -
            -
            The Box can only input number.
            -
            -
            - -
            - Value: -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/format.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/format.html deleted file mode 100644 index fe14b65..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/format.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Format NumberBox - jQuery EasyUI Demo - - - - - - - -

            Format NumberBox

            -
            -
            -
            Number formatting is the ability to control how a number is displayed.
            -
            -
            - - - - - - - - - - - - - - - - - - - - - -
            Number in the United States
            Number in France
            Currency:USD
            Currency:EUR
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/range.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/range.html deleted file mode 100644 index e91a6b0..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberbox/range.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Number Range - jQuery EasyUI Demo - - - - - - - -

            Number Range

            -
            -
            -
            The value is constrained to a range between 10 and 90.
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/basic.html deleted file mode 100644 index df62d96..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/basic.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Basic NumberSpinner - jQuery EasyUI Demo - - - - - - - -

            Basic NumberSpinner

            -
            -
            -
            Click spinner button to change value.
            -
            -
            - -
            - Value: -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/increment.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/increment.html deleted file mode 100644 index 35cd86c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/increment.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Increment Number - jQuery EasyUI Demo - - - - - - - -

            Increment Number

            -
            -
            -
            The sample shows how to set the increment step.
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/range.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/range.html deleted file mode 100644 index 02d8371..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/numberspinner/range.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Number Range - jQuery EasyUI Demo - - - - - - - -

            Number Range

            -
            -
            -
            The value is constrained to a range between 10 and 100.
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/basic.html deleted file mode 100644 index cfd62cf..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic Pagination - jQuery EasyUI Demo - - - - - - - -

            Basic Pagination

            -
            -
            -
            The user can change page number and page size on page bar.
            -
            -
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/custombuttons.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/custombuttons.html deleted file mode 100644 index 15ea480..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/custombuttons.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Custom Pagination Buttons - jQuery EasyUI Demo - - - - - - - -

            Custom Pagination Buttons

            -
            -
            -
            The customized buttons can be append to page bar.
            -
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/simple.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/simple.html deleted file mode 100644 index 7009970..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/pagination/simple.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Simplify Pagination - jQuery EasyUI Demo - - - - - - - -

            Simplify Pagination

            -
            -
            -
            The sample shows how to simplify pagination.
            -
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/_content.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

            Here is the content loaded via AJAX.

            -
              -
            • easyui is a collection of user-interface plugin based on jQuery.
            • -
            • easyui provides essential functionality for building modern, interactive, javascript applications.
            • -
            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
            • -
            • complete framework for HTML5 web page.
            • -
            • easyui save your time and scales while developing your products.
            • -
            • easyui is very easy but powerful.
            • -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/basic.html deleted file mode 100644 index cb87f92..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/basic.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Basic Panel - jQuery EasyUI Demo - - - - - - - -

            Basic Panel

            -
            -
            -
            The panel is a container for other components or elements.
            -
            -
            - Open - Close -
            -
            -

            jQuery EasyUI framework help you build your web page easily.

            -
              -
            • easyui is a collection of user-interface plugin based on jQuery.
            • -
            • easyui provides essential functionality for building modem, interactive, javascript applications.
            • -
            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
            • -
            • complete framework for HTML5 web page.
            • -
            • easyui save your time and scales while developing your products.
            • -
            • easyui is very easy but powerful.
            • -
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/customtools.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/customtools.html deleted file mode 100644 index c3d72cb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/customtools.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Custom Panel Tools - jQuery EasyUI Demo - - - - - - - -

            Custom Panel Tools

            -
            -
            -
            Click the right top buttons to perform actions with panel.
            -
            -
            -
            -

            jQuery EasyUI framework help you build your web page easily.

            -
              -
            • easyui is a collection of user-interface plugin based on jQuery.
            • -
            • easyui provides essential functionality for building modem, interactive, javascript applications.
            • -
            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
            • -
            • complete framework for HTML5 web page.
            • -
            • easyui save your time and scales while developing your products.
            • -
            • easyui is very easy but powerful.
            • -
            -
            -
            - - - - -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/loadcontent.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/loadcontent.html deleted file mode 100644 index 865ccb5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/loadcontent.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Load Panel Content - jQuery EasyUI Demo - - - - - - - -

            Load Panel Content

            -
            -
            -
            Click the refresh button on top right of panel to load content.
            -
            -
            -
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/nestedpanel.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/nestedpanel.html deleted file mode 100644 index 348d19e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/nestedpanel.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Nested Panel - jQuery EasyUI Demo - - - - - - - -

            Nested Panel

            -
            -
            -
            The panel can be placed inside containers and can contain other components.
            -
            -
            -
            -
            -
            - Left Content -
            -
            - Right Content -
            -
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/paneltools.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/paneltools.html deleted file mode 100644 index f708916..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/panel/paneltools.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Panel Tools - jQuery EasyUI Demo - - - - - - - -

            Panel Tools

            -
            -
            -
            Click the right top buttons to perform actions with panel.
            -
            - -
            -
            -

            jQuery EasyUI framework help you build your web page easily.

            -
              -
            • easyui is a collection of user-interface plugin based on jQuery.
            • -
            • easyui provides essential functionality for building modem, interactive, javascript applications.
            • -
            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
            • -
            • complete framework for HTML5 web page.
            • -
            • easyui save your time and scales while developing your products.
            • -
            • easyui is very easy but powerful.
            • -
            -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/progressbar/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/progressbar/basic.html deleted file mode 100644 index a1eb973..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/progressbar/basic.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Basic ProgressBar - jQuery EasyUI Demo - - - - - - - -

            Basic ProgressBar

            -
            -
            -
            Click the button below to show progress information.
            -
            -
            - Start -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/basic.html deleted file mode 100644 index 064c20f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/basic.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Basic PropertyGrid - jQuery EasyUI Demo - - - - - - - -

            Basic PropertyGrid

            -
            -
            -
            Click on row to change each property value.
            -
            - - -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/customcolumns.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/customcolumns.html deleted file mode 100644 index f8bc494..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/customcolumns.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Customize Columns of PropertyGrid - jQuery EasyUI Demo - - - - - - - -

            Customize Columns of PropertyGrid

            -
            -
            -
            The columns of PropertyGrid can be changed.
            -
            -
            - -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/groupformat.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/groupformat.html deleted file mode 100644 index e847a74..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/groupformat.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Group Format - jQuery EasyUI Demo - - - - - - - -

            Group Format

            -
            -
            -
            The user can change the group information.
            -
            -
            - -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/propertygrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/propertygrid_data1.json deleted file mode 100644 index 12b2d00..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/propertygrid/propertygrid_data1.json +++ /dev/null @@ -1,20 +0,0 @@ -{"total":7,"rows":[ - {"name":"Name","value":"Bill Smith","group":"ID Settings","editor":"text"}, - {"name":"Address","value":"","group":"ID Settings","editor":"text"}, - {"name":"Age","value":"40","group":"ID Settings","editor":"numberbox"}, - {"name":"Birthday","value":"01/02/2012","group":"ID Settings","editor":"datebox"}, - {"name":"SSN","value":"123-456-7890","group":"ID Settings","editor":"text"}, - {"name":"Email","value":"bill@gmail.com","group":"Marketing Settings","editor":{ - "type":"validatebox", - "options":{ - "validType":"email" - } - }}, - {"name":"FrequentBuyer","value":"false","group":"Marketing Settings","editor":{ - "type":"checkbox", - "options":{ - "on":true, - "off":false - } - }} -]} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/resizable/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/resizable/basic.html deleted file mode 100644 index 1c274d6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/resizable/basic.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Basic Resizable - jQuery EasyUI Demo - - - - - - - -

            Basic Resizable

            -
            -
            -
            Click on the edge of box and move the edge to resize the box.
            -
            -
            -
            -
            Resize Me
            -
            -
            -
            Title
            -
            Drag and Resize Me
            -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/searchbox/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/searchbox/basic.html deleted file mode 100644 index 602d177..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/searchbox/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic SearchBox - jQuery EasyUI Demo - - - - - - - -

            Basic SearchBox

            -
            -
            -
            Click search button or press enter key in input box to do searching.
            -
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/searchbox/category.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/searchbox/category.html deleted file mode 100644 index 0d1103a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/searchbox/category.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Search Category - jQuery EasyUI Demo - - - - - - - -

            Search Category

            -
            -
            -
            Select a category and click search button or press enter key in input box to do searching.
            -
            -
            - -
            -
            All News
            -
            Sports News
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/basic.html deleted file mode 100644 index 3c96f93..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/basic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Basic Slider - jQuery EasyUI Demo - - - - - - - -

            Basic Slider

            -
            -
            -
            Drag the slider to change value.
            -
            -
            -
            - -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/formattip.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/formattip.html deleted file mode 100644 index 6114bd1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/formattip.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Format Tip Information - jQuery EasyUI Demo - - - - - - - -

            Format Tip Information

            -
            -
            -
            This sample shows how to format tip information.
            -
            -
            -
            - -
            -
            jQuery EasyUI
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/rule.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/rule.html deleted file mode 100644 index 49623a2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/rule.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Slider Rule - jQuery EasyUI Demo - - - - - - - -

            Slider Rule

            -
            -
            -
            This sample shows how to define slider rule.
            -
            -
            -
            - -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/vertical.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/vertical.html deleted file mode 100644 index 42676e1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/slider/vertical.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Vertical Slider - jQuery EasyUI Demo - - - - - - - -

            Vertical Slider

            -
            -
            -
            This sample shows how to create a vertical slider.
            -
            -
            - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/splitbutton/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/splitbutton/actions.html deleted file mode 100644 index 795fe8c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/splitbutton/actions.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - SplitButton Actions - jQuery EasyUI Demo - - - - - - - -

            SplitButton Actions

            -
            -
            -
            Click the buttons below to perform actions.
            -
            - -
            - Home - Edit - Ok - Help -
            -
            -
            Undo
            -
            Redo
            - -
            Cut
            -
            Copy
            -
            Paste
            - -
            - Toolbar -
            -
            Address
            -
            Link
            -
            Navigation Toolbar
            -
            Bookmark Toolbar
            - -
            New Toolbar...
            -
            -
            -
            Delete
            -
            Select All
            -
            -
            -
            Ok
            -
            Cancel
            -
            -
            -
            Help
            -
            Update
            -
            - About - -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/splitbutton/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/splitbutton/basic.html deleted file mode 100644 index 0c3a3f6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/splitbutton/basic.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Basic SplitButton - jQuery EasyUI Demo - - - - - - - -

            Basic SplitButton

            -
            -
            -
            Move mouse over the arrow area of button to drop down menu.
            -
            -
            -
            - Home - Edit - Ok - Help -
            -
            -
            Undo
            -
            Redo
            - -
            Cut
            -
            Copy
            -
            Paste
            - -
            - Toolbar -
            -
            Address
            -
            Link
            -
            Navigation Toolbar
            -
            Bookmark Toolbar
            - -
            New Toolbar...
            -
            -
            -
            Delete
            -
            Select All
            -
            -
            -
            Ok
            -
            Cancel
            -
            -
            -
            Help
            -
            Update
            -
            - About - -
            -
            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/_content.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

            Here is the content loaded via AJAX.

            -
              -
            • easyui is a collection of user-interface plugin based on jQuery.
            • -
            • easyui provides essential functionality for building modern, interactive, javascript applications.
            • -
            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
            • -
            • complete framework for HTML5 web page.
            • -
            • easyui save your time and scales while developing your products.
            • -
            • easyui is very easy but powerful.
            • -
            - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/autoheight.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/autoheight.html deleted file mode 100644 index 6c5b4da..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/autoheight.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Auto Height for Tabs - jQuery EasyUI Demo - - - - - - - -

            Auto Height for Tabs

            -
            -
            -
            The tabs height is auto adjusted according to tab panel content.
            -
            -
            -
            -
            -

            jQuery EasyUI framework help you build your web page easily.

            -
              -
            • easyui is a collection of user-interface plugin based on jQuery.
            • -
            • easyui provides essential functionality for building modem, interactive, javascript applications.
            • -
            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
            • -
            • complete framework for HTML5 web page.
            • -
            • easyui save your time and scales while developing your products.
            • -
            • easyui is very easy but powerful.
            • -
            -
            -
            -
              -
              -
              - This is the help content. -
              -
              - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/basic.html deleted file mode 100644 index 00233cc..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/basic.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Basic Tabs - jQuery EasyUI Demo - - - - - - - -

              Basic Tabs

              -
              -
              -
              Click tab strip to swap tab panel content.
              -
              -
              -
              -
              -

              jQuery EasyUI framework help you build your web page easily.

              -
                -
              • easyui is a collection of user-interface plugin based on jQuery.
              • -
              • easyui provides essential functionality for building modem, interactive, javascript applications.
              • -
              • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
              • -
              • complete framework for HTML5 web page.
              • -
              • easyui save your time and scales while developing your products.
              • -
              • easyui is very easy but powerful.
              • -
              -
              -
              -
                -
                -
                - This is the help content. -
                -
                - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/fixedwidth.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/fixedwidth.html deleted file mode 100644 index 2526a32..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/fixedwidth.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Fixed Tab Width - jQuery EasyUI Demo - - - - - - - -

                Fixed Tab Width

                -
                -
                -
                The tab strips have fixed width and height.
                -
                -
                -
                -
                -

                Home Content.

                -
                -
                -

                Maps Content.

                -
                -
                -

                Journal Content.

                -
                -
                -

                History Content.

                -
                -
                -

                References Content.

                -
                -
                -

                Contact Content.

                -
                -
                - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/hover.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/hover.html deleted file mode 100644 index f5ce183..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/hover.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Hover Tabs - jQuery EasyUI Demo - - - - - - - -

                Hover Tabs

                -
                -
                -
                Move mouse over the tab strip to open the tab panel.
                -
                -
                -
                -
                -

                jQuery EasyUI framework help you build your web page easily.

                -
                  -
                • easyui is a collection of user-interface plugin based on jQuery.
                • -
                • easyui provides essential functionality for building modem, interactive, javascript applications.
                • -
                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                • -
                • complete framework for HTML5 web page.
                • -
                • easyui save your time and scales while developing your products.
                • -
                • easyui is very easy but powerful.
                • -
                -
                -
                -
                  -
                  -
                  - This is the help content. -
                  -
                  - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/modem.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/modem.png deleted file mode 100644 index be5a2eb..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/modem.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/pda.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/pda.png deleted file mode 100644 index 1458d9b..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/pda.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/scanner.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/scanner.png deleted file mode 100644 index 974635d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/scanner.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/tablet.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/tablet.png deleted file mode 100644 index fa871f5..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/images/tablet.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/nestedtabs.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/nestedtabs.html deleted file mode 100644 index 15c426a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/nestedtabs.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Nested Tabs - jQuery EasyUI Demo - - - - - - - -

                  Nested Tabs

                  -
                  -
                  -
                  The tab panel can contain sub tabs or other components.
                  -
                  -
                  -
                  -
                  -
                  -
                  Content 1
                  -
                  Content 2
                  -
                  Content 3
                  -
                  -
                  -
                  -
                  - -
                  -
                  - - - - - - - - - - - - - - - - - - - - -
                  Title1Title2Title3
                  d11d12d13
                  d21d22d23
                  -
                  -
                  - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/striptools.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/striptools.html deleted file mode 100644 index bb611eb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/striptools.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Tabs Strip Tools - jQuery EasyUI Demo - - - - - - - -

                  Tabs Strip Tools

                  -
                  -
                  -
                  Click the mini-buttons on the tab strip to perform actions.
                  -
                  -
                  -
                  -
                  -

                  jQuery EasyUI framework help you build your web page easily.

                  -
                    -
                  • easyui is a collection of user-interface plugin based on jQuery.
                  • -
                  • easyui provides essential functionality for building modem, interactive, javascript applications.
                  • -
                  • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                  • -
                  • complete framework for HTML5 web page.
                  • -
                  • easyui save your time and scales while developing your products.
                  • -
                  • easyui is very easy but powerful.
                  • -
                  -
                  -
                  - This is the help content. -
                  -
                  -
                  - - - -
                  - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabimage.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabimage.html deleted file mode 100644 index aa93354..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabimage.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Tabs with Images - jQuery EasyUI Demo - - - - - - - -

                  Tabs with Images

                  -
                  -
                  -
                  The tab strip can display big images.
                  -
                  -
                  -
                  -
                  -

                  A modem (modulator-demodulator) is a device that modulates an analog carrier signal to encode digital information, and also demodulates such a carrier signal to decode the transmitted information.

                  -
                  -
                  -

                  In computing, an image scanner—often abbreviated to just scanner—is a device that optically scans images, printed text, handwriting, or an object, and converts it to a digital image.

                  -
                  -
                  -

                  A personal digital assistant (PDA), also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. PDAs are largely considered obsolete with the widespread adoption of smartphones.

                  -
                  -
                  -

                  A tablet computer, or simply tablet, is a one-piece mobile computer. Devices typically have a touchscreen, with finger or stylus gestures replacing the conventional computer mouse.

                  -
                  -
                  - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabposition.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabposition.html deleted file mode 100644 index de67ac4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabposition.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Tab Position - jQuery EasyUI Demo - - - - - - - -

                  Tab Position

                  -
                  -
                  -
                  Click the 'position' drop-down list and select an item to change the tab position.
                  -
                  -
                  - Position: - -
                  -
                  -
                  -

                  jQuery EasyUI framework help you build your web page easily.

                  -
                    -
                  • easyui is a collection of user-interface plugin based on jQuery.
                  • -
                  • easyui provides essential functionality for building modem, interactive, javascript applications.
                  • -
                  • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                  • -
                  • complete framework for HTML5 web page.
                  • -
                  • easyui save your time and scales while developing your products.
                  • -
                  • easyui is very easy but powerful.
                  • -
                  -
                  -
                  -
                    -
                    -
                    - This is the help content. -
                    -
                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabstools.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabstools.html deleted file mode 100644 index 3851f50..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tabstools.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Tabs Tools - jQuery EasyUI Demo - - - - - - - -

                    Tabs Tools

                    -
                    -
                    -
                    Click the buttons on the top right of tabs header to add or remove tab panel.
                    -
                    -
                    -
                    -
                    -
                    - - -
                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tree_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tabs/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/actions.html deleted file mode 100644 index 9d43e89..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/actions.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - TimeSpinner Actions - jQuery EasyUI Demo - - - - - - - -

                    TimeSpinner Actions

                    -
                    -
                    -
                    Click the buttons below to perform actions.
                    -
                    - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/basic.html deleted file mode 100644 index e62666d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic TimeSpinner - jQuery EasyUI Demo - - - - - - - -

                    Basic TimeSpinner

                    -
                    -
                    -
                    Click spin button to adjust time.
                    -
                    -
                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/range.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/range.html deleted file mode 100644 index d2cce16..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/timespinner/range.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Time Range - jQuery EasyUI Demo - - - - - - - -

                    Time Range

                    -
                    -
                    -
                    The time value is constrained in specified range.
                    -
                    -
                    - From 08:30 to 18:00 -
                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/_content.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                    Here is the content loaded via AJAX.

                    -
                      -
                    • easyui is a collection of user-interface plugin based on jQuery.
                    • -
                    • easyui provides essential functionality for building modern, interactive, javascript applications.
                    • -
                    • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                    • -
                    • complete framework for HTML5 web page.
                    • -
                    • easyui save your time and scales while developing your products.
                    • -
                    • easyui is very easy but powerful.
                    • -
                    - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/_dialog.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/_dialog.html deleted file mode 100644 index 2c1b464..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/_dialog.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Dialog Content - - -
                    -
                    -
                    User Name:
                    - -
                    -
                    -
                    Password:
                    - -
                    -
                    - Login - Cancel -
                    -
                    - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/ajax.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/ajax.html deleted file mode 100644 index 3274d82..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/ajax.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Ajax Tooltip - jQuery EasyUI Demo - - - - - - - -

                    Ajax Tooltip

                    -
                    -
                    -
                    The tooltip content can be loaded via AJAX.
                    -
                    -
                    - Hove me to display tooltip content via AJAX. - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/basic.html deleted file mode 100644 index 1cccde2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/basic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Basic Tooltip - jQuery EasyUI Demo - - - - - - - -

                    Basic Tooltip

                    -
                    -
                    -
                    Hover the links to display tooltip message.
                    -
                    -
                    -

                    The tooltip can use each elements title attribute. - Hover me to display tooltip. -

                    - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/customcontent.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/customcontent.html deleted file mode 100644 index c55ec1d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/customcontent.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Custom Tooltip Content - jQuery EasyUI Demo - - - - - - - -

                    Custom Tooltip Content

                    -
                    -
                    -
                    Access to each elements attribute to get the tooltip content.
                    -
                    -
                    -
                    - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/customstyle.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/customstyle.html deleted file mode 100644 index a739e66..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/customstyle.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Custom Tooltip Style - jQuery EasyUI Demo - - - - - - - -

                    Custom Tooltip Style

                    -
                    -
                    -
                    This sample shows how to change the tooltip style.
                    -
                    -
                    -
                    -
                    Hover Me
                    -
                    -
                    -
                    Hover Me
                    -
                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/position.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/position.html deleted file mode 100644 index b33e7e0..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/position.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Tooltip Position - jQuery EasyUI Demo - - - - - - - -

                    Tooltip Position

                    -
                    -
                    -
                    Click the drop-down list below to change where the tooltip appears.
                    -
                    -
                    - Select position: - -
                    -
                    Hover Me
                    -
                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/toolbar.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/toolbar.html deleted file mode 100644 index adc4a64..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/toolbar.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Tooltip as Toolbar - jQuery EasyUI Demo - - - - - - - -

                    Tooltip as Toolbar

                    -
                    -
                    -
                    This sample shows how to create a tooltip style toolbar.
                    -
                    -
                    -
                    -

                    Hover me to display toolbar.

                    -
                    -
                    -
                    - - - - - -
                    -
                    - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/tooltipdialog.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/tooltipdialog.html deleted file mode 100644 index 4ce5f66..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tooltip/tooltipdialog.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Tooltip Dialog - jQuery EasyUI Demo - - - - - - - -

                    Tooltip Dialog

                    -
                    -
                    -
                    This sample shows how to create a tooltip dialog.
                    -
                    -
                    -
                    -

                    Click here to see the tooltip dialog. -

                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/actions.html deleted file mode 100644 index 7b3342c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/actions.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Tree Actions - jQuery EasyUI Demo - - - - - - - -

                    Tree Actions

                    -
                    -
                    -
                    Click the buttons below to perform actions.
                    -
                    - -
                      - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/animation.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/animation.html deleted file mode 100644 index 7afed71..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/animation.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Animation Tree - jQuery EasyUI Demo - - - - - - - -

                      Animation Tree

                      -
                      -
                      -
                      Apply 'animate' property to true to enable animation effect.
                      -
                      -
                      -
                        - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/basic.html deleted file mode 100644 index 21cdca4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/basic.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Basic Tree - jQuery EasyUI Demo - - - - - - - -

                        Basic Tree

                        -
                        -
                        -
                        Click the arrow on the left to expand or collapse nodes.
                        -
                        -
                        -
                          -
                        • - My Documents -
                            -
                          • - Photos -
                              -
                            • - Friend -
                            • -
                            • - Wife -
                            • -
                            • - Company -
                            • -
                            -
                          • -
                          • - Program Files -
                              -
                            • Intel
                            • -
                            • Java
                            • -
                            • Microsoft Office
                            • -
                            • Games
                            • -
                            -
                          • -
                          • index.html
                          • -
                          • about.html
                          • -
                          • welcome.html
                          • -
                          -
                        • -
                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/checkbox.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/checkbox.html deleted file mode 100644 index f859397..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/checkbox.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - CheckBox Tree - jQuery EasyUI Demo - - - - - - - -

                        CheckBox Tree

                        -
                        -
                        -
                        Tree nodes with check boxes.
                        -
                        -
                        - GetChecked -
                        - CascadeCheck - OnlyLeafCheck -
                        -
                          - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/contextmenu.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/contextmenu.html deleted file mode 100644 index 64dfec3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/contextmenu.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - Tree Context Menu - jQuery EasyUI Demo - - - - - - - -

                          Tree Context Menu

                          -
                          -
                          -
                          Right click on a node to display context menu.
                          -
                          -
                          -
                          -
                            -
                            -
                            Append
                            -
                            Remove
                            - -
                            Expand
                            -
                            Collapse
                            -
                            - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/dnd.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/dnd.html deleted file mode 100644 index 20943c8..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/dnd.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Drag Drop Tree Nodes - jQuery EasyUI Demo - - - - - - - -

                            Drag Drop Tree Nodes

                            -
                            -
                            -
                            Press mouse down and drag a node to another position.
                            -
                            -
                            -
                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/editable.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/editable.html deleted file mode 100644 index 8223131..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/editable.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Editable Tree - jQuery EasyUI Demo - - - - - - - -

                              Editable Tree

                              -
                              -
                              -
                              Click the node to begin edit, press enter key to stop edit or esc key to cancel edit.
                              -
                              -
                              -
                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/icons.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/icons.html deleted file mode 100644 index 3dbc5a9..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/icons.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Tree Node Icons - jQuery EasyUI Demo - - - - - - - -

                                Tree Node Icons

                                -
                                -
                                -
                                This sample illustrates how to add icons to tree node.
                                -
                                -
                                -
                                  - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/lines.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/lines.html deleted file mode 100644 index 074791f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/lines.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Tree Lines - jQuery EasyUI Demo - - - - - - - -

                                  Tree Lines

                                  -
                                  -
                                  -
                                  This sample shows how to show tree lines.
                                  -
                                  -
                                  -
                                  -
                                    - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/tree_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/tree_data2.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/tree_data2.json deleted file mode 100644 index 14e3429..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/tree/tree_data2.json +++ /dev/null @@ -1,61 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "state":"closed", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java" - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games" - }] - },{ - "id":16, - "text":"Actions", - "children":[{ - "text":"Add", - "iconCls":"icon-add" - },{ - "text":"Remove", - "iconCls":"icon-remove" - },{ - "text":"Save", - "iconCls":"icon-save" - },{ - "text":"Search", - "iconCls":"icon-search" - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/actions.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/actions.html deleted file mode 100644 index f1e0f81..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/actions.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - TreeGrid Actions - jQuery EasyUI Demo - - - - - - - -

                                    TreeGrid Actions

                                    -
                                    -
                                    -
                                    Click the buttons below to perform actions.
                                    -
                                    - - - - - - - - - - - -
                                    Task NamePersonsBegin DateEnd DateProgress
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/basic.html deleted file mode 100644 index 29d8c98..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/basic.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Basic TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                    Basic TreeGrid

                                    -
                                    -
                                    -
                                    TreeGrid allows you to expand or collapse group rows.
                                    -
                                    -
                                    - - - - - - - - -
                                    NameSizeModified Date
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/clientpagination.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/clientpagination.html deleted file mode 100644 index 3638df9..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/clientpagination.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - Client Side Pagination in TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                    Client Side Pagination in TreeGrid

                                    -
                                    -
                                    -
                                    This sample shows how to implement client side pagination in TreeGrid.
                                    -
                                    -
                                    - - - - - - - - - - -
                                    Task NamePersonsBegin DateEnd DateProgress
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/contextmenu.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/contextmenu.html deleted file mode 100644 index 3156f34..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/contextmenu.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - TreeGrid ContextMenu - jQuery EasyUI Demo - - - - - - - -

                                    TreeGrid ContextMenu

                                    -
                                    -
                                    -
                                    Right click to display the context menu.
                                    -
                                    -
                                    - - - - - - - - - - -
                                    Task NamePersonsBegin DateEnd DateProgress
                                    -
                                    -
                                    Append
                                    -
                                    Remove
                                    - -
                                    Collapse
                                    -
                                    Expand
                                    -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/editable.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/editable.html deleted file mode 100644 index 0216bd1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/editable.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Editable TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                    Editable TreeGrid

                                    -
                                    -
                                    -
                                    Select one node and click edit button to perform editing.
                                    -
                                    -
                                    - Edit - Save - Cancel -
                                    - - - - - - - - - - -
                                    Task NamePersonsBegin DateEnd DateProgress
                                    - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/footer.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/footer.html deleted file mode 100644 index 801583e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/footer.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - TreeGrid with Footer - jQuery EasyUI Demo - - - - - - - -

                                    TreeGrid with Footer

                                    -
                                    -
                                    -
                                    Show summary information on TreeGrid footer.
                                    -
                                    -
                                    -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/reports.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/reports.html deleted file mode 100644 index 034d8c3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/reports.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Reports using TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                    Reports using TreeGrid

                                    -
                                    -
                                    -
                                    Using TreeGrid to show complex reports.
                                    -
                                    -
                                    - - - - - - - - - - - - - - - - - - - - - - -
                                    Region
                                    20092010
                                    1st qrt.2st qrt.3st qrt.4st qrt.1st qrt.2st qrt.3st qrt.4st qrt.
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data1.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data1.json deleted file mode 100644 index 0313d46..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data1.json +++ /dev/null @@ -1,73 +0,0 @@ -[{ - "id":1, - "name":"C", - "size":"", - "date":"02/19/2010", - "children":[{ - "id":2, - "name":"Program Files", - "size":"120 MB", - "date":"03/20/2010", - "children":[{ - "id":21, - "name":"Java", - "size":"", - "date":"01/13/2010", - "state":"closed", - "children":[{ - "id":211, - "name":"java.exe", - "size":"142 KB", - "date":"01/13/2010" - },{ - "id":212, - "name":"jawt.dll", - "size":"5 KB", - "date":"01/13/2010" - }] - },{ - "id":22, - "name":"MySQL", - "size":"", - "date":"01/13/2010", - "state":"closed", - "children":[{ - "id":221, - "name":"my.ini", - "size":"10 KB", - "date":"02/26/2009" - },{ - "id":222, - "name":"my-huge.ini", - "size":"5 KB", - "date":"02/26/2009" - },{ - "id":223, - "name":"my-large.ini", - "size":"5 KB", - "date":"02/26/2009" - }] - }] - },{ - "id":3, - "name":"eclipse", - "size":"", - "date":"01/20/2010", - "children":[{ - "id":31, - "name":"eclipse.exe", - "size":"56 KB", - "date":"05/19/2009" - },{ - "id":32, - "name":"eclipse.ini", - "size":"1 KB", - "date":"04/20/2010" - },{ - "id":33, - "name":"notice.html", - "size":"7 KB", - "date":"03/17/2005" - }] - }] -}] \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data2.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data2.json deleted file mode 100644 index f917507..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data2.json +++ /dev/null @@ -1,11 +0,0 @@ -{"total":7,"rows":[ - {"id":1,"name":"All Tasks","begin":"3/4/2010","end":"3/20/2010","progress":60,"iconCls":"icon-ok"}, - {"id":2,"name":"Designing","begin":"3/4/2010","end":"3/10/2010","progress":100,"_parentId":1,"state":"closed"}, - {"id":21,"name":"Database","persons":2,"begin":"3/4/2010","end":"3/6/2010","progress":100,"_parentId":2}, - {"id":22,"name":"UML","persons":1,"begin":"3/7/2010","end":"3/8/2010","progress":100,"_parentId":2}, - {"id":23,"name":"Export Document","persons":1,"begin":"3/9/2010","end":"3/10/2010","progress":100,"_parentId":2}, - {"id":3,"name":"Coding","persons":2,"begin":"3/11/2010","end":"3/18/2010","progress":80}, - {"id":4,"name":"Testing","persons":1,"begin":"3/19/2010","end":"3/20/2010","progress":20} -],"footer":[ - {"name":"Total Persons:","persons":7,"iconCls":"icon-sum"} -]} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data3.json b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data3.json deleted file mode 100644 index 0475c38..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/treegrid/treegrid_data3.json +++ /dev/null @@ -1,13 +0,0 @@ -{"total":9,"rows":[ - {"id":1,"region":"Wyoming"}, - {"id":11,"region":"Albin","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":12,"region":"Canon","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":13,"region":"Egbert","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":2,"region":"Washington"}, - {"id":21,"region":"Bellingham","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":22,"region":"Chehalis","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":23,"region":"Ellensburg","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":24,"region":"Monroe","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2} -],"footer":[ - {"region":"Total","f1":14000,"f2":12600,"f3":13321,"f4":15281,"f5":14931,"f6":13461,"f7":14126,"f8":12866} -]} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/validatebox/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/validatebox/basic.html deleted file mode 100644 index 4746862..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/validatebox/basic.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Basic ValidateBox - jQuery EasyUI Demo - - - - - - - -

                                    Basic ValidateBox

                                    -
                                    -
                                    -
                                    It's easy to add validate logic to a input box.
                                    -
                                    -
                                    -
                                    - - - - - - - - - - - - - - - - - - - - - -
                                    User Name:
                                    Email:
                                    Birthday:
                                    URL:
                                    Phone:
                                    -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/validatebox/customtooltip.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/validatebox/customtooltip.html deleted file mode 100644 index 53ab216..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/validatebox/customtooltip.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - Custom ValidateBox Tooltip - jQuery EasyUI Demo - - - - - - - -

                                    Custom ValidateBox Tooltip

                                    -
                                    -
                                    -
                                    This sample shows how to display another tooltip message on a valid textbox.
                                    -
                                    -
                                    -
                                    - - - - - - - - - - - - - - - - - - - - - -
                                    User Name:
                                    Email:
                                    Birthday:
                                    URL:
                                    Phone:
                                    -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/basic.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/basic.html deleted file mode 100644 index f974a78..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic Window - jQuery EasyUI Demo - - - - - - - -

                                    Basic Window

                                    -
                                    -
                                    -
                                    Window can be dragged freely on screen.
                                    -
                                    -
                                    - Open - Close -
                                    -
                                    - The window content. -
                                    - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/customtools.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/customtools.html deleted file mode 100644 index 1572449..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/customtools.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Custom Window Tools - jQuery EasyUI Demo - - - - - - - -

                                    Custom Window Tools

                                    -
                                    -
                                    -
                                    Click the right top buttons to perform actions.
                                    -
                                    -
                                    - Open - Close -
                                    -
                                    - The window content. -
                                    -
                                    - - - - -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/inlinewindow.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/inlinewindow.html deleted file mode 100644 index a66cacd..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/inlinewindow.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Inline Window - jQuery EasyUI Demo - - - - - - - -

                                    Inline Window

                                    -
                                    -
                                    -
                                    The inline window stay inside its parent.
                                    -
                                    -
                                    - Open - Close -
                                    -
                                    -
                                    - This window stay inside its parent -
                                    -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/modalwindow.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/modalwindow.html deleted file mode 100644 index 6174815..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/modalwindow.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Modal Window - jQuery EasyUI Demo - - - - - - - -

                                    Modal Window

                                    -
                                    -
                                    -
                                    Click the open button below to open the modal window.
                                    -
                                    -
                                    - Open - Close -
                                    -
                                    - The window content. -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/windowlayout.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/windowlayout.html deleted file mode 100644 index 3478939..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/demo/window/windowlayout.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Window Layout - jQuery EasyUI Demo - - - - - - - -

                                    Window Layout

                                    -
                                    -
                                    -
                                    Using layout on window.
                                    -
                                    -
                                    - Open - Close -
                                    -
                                    -
                                    -
                                    -
                                    - jQuery EasyUI framework help you build your web page easily. -
                                    -
                                    - Ok - Cancel -
                                    -
                                    -
                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/dgloader.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/dgloader.js deleted file mode 100644 index 1080cbb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/dgloader.js +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************* -* 文 件 名:dgloader.js -* 文件描述:用于加载datagrid控件 -* 创 建 人:刘成文 -* 创建日期:2012-002 10:09:33 -********************************************/ -var pageTag = 'datagrid'; -if (!window.dgp) alert('初始化失败!'); -$(function () { - $('#'+dgp.id).datagrid({ - queryParams: dgp.query, - width: dgp.width, - height: dgp.height, - nowrap: true, - cache: false, - striped: true, - singleSelect: false, - idfield: dgp.idField, - pagination: dgp.paging, - pageSize: dgp.pageSize, - fitColumns: true, //列根据宽度调整 - fit: true, - url: dgp.dataUrl, - - //列 - columns: dgp.columns || null, - //工具栏 - toolbar: [ - - ], - //选择列 - onHeaderContextMenu: function (e, field) { - //DataGridExtend.headerContextMenu(e, field, $(this).attr('ID'), pageTag + '.' + $(this).attr('ID')) - }, - //加载成功的时候,初始化隐藏列 - onLoadSuccess: function (data) { - //DataGridExtend.loadSuccessInit($(this).attr('ID'), pageTag + '.' + $(this).attr('ID')); - // DataGridExtend.ShowTip_Url(); - }, - onLoadError: function () { - $.messager.alert('提示', '数据加载错误,请重新登录系统', 'error'); - } - }); - //搜素栏 - $(".datagrid-toolbar").append($(".searchBar")); - //工具栏 - $(".datagrid-toolbar").append($(".toolBar")); - //messageBar - $(".datagrid-toolbar").append($("#messageBar")); - - $(window).resize(function () { - $("#"+pageTag).datagrid("resize"); - }); - -}); - - -function test() { - alert('功能未实现!'); -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/easyloader.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/easyloader.js deleted file mode 100644 index 732e056..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/easyloader.js +++ /dev/null @@ -1,192 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function(){ -var _1={draggable:{js:"jquery.draggable.js"},droppable:{js:"jquery.droppable.js"},resizable:{js:"jquery.resizable.js"},linkbutton:{js:"jquery.linkbutton.js",css:"linkbutton.css"},progressbar:{js:"jquery.progressbar.js",css:"progressbar.css"},tooltip:{js:"jquery.tooltip.js",css:"tooltip.css"},pagination:{js:"jquery.pagination.js",css:"pagination.css",dependencies:["linkbutton"]},datagrid:{js:"jquery.datagrid.js",css:"datagrid.css",dependencies:["panel","resizable","linkbutton","pagination"]},treegrid:{js:"jquery.treegrid.js",css:"tree.css",dependencies:["datagrid"]},propertygrid:{js:"jquery.propertygrid.js",css:"propertygrid.css",dependencies:["datagrid"]},panel:{js:"jquery.panel.js",css:"panel.css"},window:{js:"jquery.window.js",css:"window.css",dependencies:["resizable","draggable","panel"]},dialog:{js:"jquery.dialog.js",css:"dialog.css",dependencies:["linkbutton","window"]},messager:{js:"jquery.messager.js",css:"messager.css",dependencies:["linkbutton","window","progressbar"]},layout:{js:"jquery.layout.js",css:"layout.css",dependencies:["resizable","panel"]},form:{js:"jquery.form.js"},menu:{js:"jquery.menu.js",css:"menu.css"},tabs:{js:"jquery.tabs.js",css:"tabs.css",dependencies:["panel","linkbutton"]},menubutton:{js:"jquery.menubutton.js",css:"menubutton.css",dependencies:["linkbutton","menu"]},splitbutton:{js:"jquery.splitbutton.js",css:"splitbutton.css",dependencies:["menubutton"]},accordion:{js:"jquery.accordion.js",css:"accordion.css",dependencies:["panel"]},calendar:{js:"jquery.calendar.js",css:"calendar.css"},combo:{js:"jquery.combo.js",css:"combo.css",dependencies:["panel","validatebox"]},combobox:{js:"jquery.combobox.js",css:"combobox.css",dependencies:["combo"]},combotree:{js:"jquery.combotree.js",dependencies:["combo","tree"]},combogrid:{js:"jquery.combogrid.js",dependencies:["combo","datagrid"]},validatebox:{js:"jquery.validatebox.js",css:"validatebox.css",dependencies:["tooltip"]},numberbox:{js:"jquery.numberbox.js",dependencies:["validatebox"]},searchbox:{js:"jquery.searchbox.js",css:"searchbox.css",dependencies:["menubutton"]},spinner:{js:"jquery.spinner.js",css:"spinner.css",dependencies:["validatebox"]},numberspinner:{js:"jquery.numberspinner.js",dependencies:["spinner","numberbox"]},timespinner:{js:"jquery.timespinner.js",dependencies:["spinner"]},tree:{js:"jquery.tree.js",css:"tree.css",dependencies:["draggable","droppable"]},datebox:{js:"jquery.datebox.js",css:"datebox.css",dependencies:["calendar","combo"]},datetimebox:{js:"jquery.datetimebox.js",dependencies:["datebox","timespinner"]},slider:{js:"jquery.slider.js",dependencies:["draggable"]},tooltip:{js:"jquery.tooltip.js"},parser:{js:"jquery.parser.js"}}; -var _2={"af":"easyui-lang-af.js","ar":"easyui-lang-ar.js","bg":"easyui-lang-bg.js","ca":"easyui-lang-ca.js","cs":"easyui-lang-cs.js","cz":"easyui-lang-cz.js","da":"easyui-lang-da.js","de":"easyui-lang-de.js","el":"easyui-lang-el.js","en":"easyui-lang-en.js","es":"easyui-lang-es.js","fr":"easyui-lang-fr.js","it":"easyui-lang-it.js","jp":"easyui-lang-jp.js","nl":"easyui-lang-nl.js","pl":"easyui-lang-pl.js","pt_BR":"easyui-lang-pt_BR.js","ru":"easyui-lang-ru.js","sv_SE":"easyui-lang-sv_SE.js","tr":"easyui-lang-tr.js","zh_CN":"easyui-lang-zh_CN.js","zh_TW":"easyui-lang-zh_TW.js"}; -var _3={}; -function _4(_5,_6){ -var _7=false; -var _8=document.createElement("script"); -_8.type="text/javascript"; -_8.language="javascript"; -_8.src=_5; -_8.onload=_8.onreadystatechange=function(){ -if(!_7&&(!_8.readyState||_8.readyState=="loaded"||_8.readyState=="complete")){ -_7=true; -_8.onload=_8.onreadystatechange=null; -if(_6){ -_6.call(_8); -} -} -}; -document.getElementsByTagName("head")[0].appendChild(_8); -}; -function _9(_a,_b){ -_4(_a,function(){ -document.getElementsByTagName("head")[0].removeChild(this); -if(_b){ -_b(); -} -}); -}; -function _c(_d,_e){ -var _f=document.createElement("link"); -_f.rel="stylesheet"; -_f.type="text/css"; -_f.media="screen"; -_f.href=_d; -document.getElementsByTagName("head")[0].appendChild(_f); -if(_e){ -_e.call(_f); -} -}; -function _10(_11,_12){ -_3[_11]="loading"; -var _13=_1[_11]; -var _14="loading"; -var _15=(easyloader.css&&_13["css"])?"loading":"loaded"; -if(easyloader.css&&_13["css"]){ -if(/^http/i.test(_13["css"])){ -var url=_13["css"]; -}else{ -var url=easyloader.base+"themes/"+easyloader.theme+"/"+_13["css"]; -} -_c(url,function(){ -_15="loaded"; -if(_14=="loaded"&&_15=="loaded"){ -_16(); -} -}); -} -if(/^http/i.test(_13["js"])){ -var url=_13["js"]; -}else{ -var url=easyloader.base+"plugins/"+_13["js"]; -} -_4(url,function(){ -_14="loaded"; -if(_14=="loaded"&&_15=="loaded"){ -_16(); -} -}); -function _16(){ -_3[_11]="loaded"; -easyloader.onProgress(_11); -if(_12){ -_12(); -} -}; -}; -function _17(_18,_19){ -var mm=[]; -var _1a=false; -if(typeof _18=="string"){ -add(_18); -}else{ -for(var i=0;i<_18.length;i++){ -add(_18[i]); -} -} -function add(_1b){ -if(!_1[_1b]){ -return; -} -var d=_1[_1b]["dependencies"]; -if(d){ -for(var i=0;i").appendTo("body"); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); -(function($){ -function _1b(e){ -var _1c=$.data(e.data.target,"draggable"); -var _1d=_1c.options; -var _1e=_1c.proxy; -var _1f=e.data; -var _20=_1f.startLeft+e.pageX-_1f.startX; -var top=_1f.startTop+e.pageY-_1f.startY; -if(_1e){ -if(_1e.parent()[0]==document.body){ -if(_1d.deltaX!=null&&_1d.deltaX!=undefined){ -_20=e.pageX+_1d.deltaX; -}else{ -_20=e.pageX-e.data.offsetWidth; -} -if(_1d.deltaY!=null&&_1d.deltaY!=undefined){ -top=e.pageY+_1d.deltaY; -}else{ -top=e.pageY-e.data.offsetHeight; -} -}else{ -if(_1d.deltaX!=null&&_1d.deltaX!=undefined){ -_20+=e.data.offsetWidth+_1d.deltaX; -} -if(_1d.deltaY!=null&&_1d.deltaY!=undefined){ -top+=e.data.offsetHeight+_1d.deltaY; -} -} -} -if(e.data.parent!=document.body){ -_20+=$(e.data.parent).scrollLeft(); -top+=$(e.data.parent).scrollTop(); -} -if(_1d.axis=="h"){ -_1f.left=_20; -}else{ -if(_1d.axis=="v"){ -_1f.top=top; -}else{ -_1f.left=_20; -_1f.top=top; -} -} -}; -function _21(e){ -var _22=$.data(e.data.target,"draggable"); -var _23=_22.options; -var _24=_22.proxy; -if(!_24){ -_24=$(e.data.target); -} -_24.css({left:e.data.left,top:e.data.top}); -$("body").css("cursor",_23.cursor); -}; -function _25(e){ -$.fn.draggable.isDragging=true; -var _26=$.data(e.data.target,"draggable"); -var _27=_26.options; -var _28=$(".droppable").filter(function(){ -return e.data.target!=this; -}).filter(function(){ -var _29=$.data(this,"droppable").options.accept; -if(_29){ -return $(_29).filter(function(){ -return this==e.data.target; -}).length>0; -}else{ -return true; -} -}); -_26.droppables=_28; -var _2a=_26.proxy; -if(!_2a){ -if(_27.proxy){ -if(_27.proxy=="clone"){ -_2a=$(e.data.target).clone().insertAfter(e.data.target); -}else{ -_2a=_27.proxy.call(e.data.target,e.data.target); -} -_26.proxy=_2a; -}else{ -_2a=$(e.data.target); -} -} -_2a.css("position","absolute"); -_1b(e); -_21(e); -_27.onStartDrag.call(e.data.target,e); -return false; -}; -function _2b(e){ -var _2c=$.data(e.data.target,"draggable"); -_1b(e); -if(_2c.options.onDrag.call(e.data.target,e)!=false){ -_21(e); -} -var _2d=e.data.target; -_2c.droppables.each(function(){ -var _2e=$(this); -if(_2e.droppable("options").disabled){ -return; -} -var p2=_2e.offset(); -if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_43.options.edge; -}; -}); -}; -$.fn.draggable.methods={options:function(jq){ -return $.data(jq[0],"draggable").options; -},proxy:function(jq){ -return $.data(jq[0],"draggable").proxy; -},enable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:true}); -}); -}}; -$.fn.draggable.parseOptions=function(_48){ -var t=$(_48); -return $.extend({},$.parser.parseOptions(_48,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,onBeforeDrag:function(e){ -},onStartDrag:function(e){ -},onDrag:function(e){ -},onStopDrag:function(e){ -}}; -$.fn.draggable.isDragging=false; -})(jQuery); -(function($){ -function _49(_4a){ -$(_4a).addClass("droppable"); -$(_4a).bind("_dragenter",function(e,_4b){ -$.data(_4a,"droppable").options.onDragEnter.apply(_4a,[e,_4b]); -}); -$(_4a).bind("_dragleave",function(e,_4c){ -$.data(_4a,"droppable").options.onDragLeave.apply(_4a,[e,_4c]); -}); -$(_4a).bind("_dragover",function(e,_4d){ -$.data(_4a,"droppable").options.onDragOver.apply(_4a,[e,_4d]); -}); -$(_4a).bind("_drop",function(e,_4e){ -$.data(_4a,"droppable").options.onDrop.apply(_4a,[e,_4e]); -}); -}; -$.fn.droppable=function(_4f,_50){ -if(typeof _4f=="string"){ -return $.fn.droppable.methods[_4f](this,_50); -} -_4f=_4f||{}; -return this.each(function(){ -var _51=$.data(this,"droppable"); -if(_51){ -$.extend(_51.options,_4f); -}else{ -_49(this); -$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_4f)}); -} -}); -}; -$.fn.droppable.methods={options:function(jq){ -return $.data(jq[0],"droppable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:true}); -}); -}}; -$.fn.droppable.parseOptions=function(_52){ -var t=$(_52); -return $.extend({},$.parser.parseOptions(_52,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_53){ -},onDragOver:function(e,_54){ -},onDragLeave:function(e,_55){ -},onDrop:function(e,_56){ -}}; -})(jQuery); -(function($){ -$.fn.resizable=function(_57,_58){ -if(typeof _57=="string"){ -return $.fn.resizable.methods[_57](this,_58); -} -function _59(e){ -var _5a=e.data; -var _5b=$.data(_5a.target,"resizable").options; -if(_5a.dir.indexOf("e")!=-1){ -var _5c=_5a.startWidth+e.pageX-_5a.startX; -_5c=Math.min(Math.max(_5c,_5b.minWidth),_5b.maxWidth); -_5a.width=_5c; -} -if(_5a.dir.indexOf("s")!=-1){ -var _5d=_5a.startHeight+e.pageY-_5a.startY; -_5d=Math.min(Math.max(_5d,_5b.minHeight),_5b.maxHeight); -_5a.height=_5d; -} -if(_5a.dir.indexOf("w")!=-1){ -var _5c=_5a.startWidth-e.pageX+_5a.startX; -_5c=Math.min(Math.max(_5c,_5b.minWidth),_5b.maxWidth); -_5a.width=_5c; -_5a.left=_5a.startLeft+_5a.startWidth-_5a.width; -} -if(_5a.dir.indexOf("n")!=-1){ -var _5d=_5a.startHeight-e.pageY+_5a.startY; -_5d=Math.min(Math.max(_5d,_5b.minHeight),_5b.maxHeight); -_5a.height=_5d; -_5a.top=_5a.startTop+_5a.startHeight-_5a.height; -} -}; -function _5e(e){ -var _5f=e.data; -var t=$(_5f.target); -t.css({left:_5f.left,top:_5f.top}); -if(t.outerWidth()!=_5f.width){ -t._outerWidth(_5f.width); -} -if(t.outerHeight()!=_5f.height){ -t._outerHeight(_5f.height); -} -}; -function _60(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _61(e){ -_59(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_5e(e); -} -return false; -}; -function _62(e){ -$.fn.resizable.isResizing=false; -_59(e,true); -_5e(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _63=null; -var _64=$.data(this,"resizable"); -if(_64){ -$(this).unbind(".resizable"); -_63=$.extend(_64.options,_57||{}); -}else{ -_63=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_57||{}); -$.data(this,"resizable",{options:_63}); -} -if(_63.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var dir=_65(e); -if(dir==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",dir+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_65(e); -if(dir==""){ -return; -} -function _66(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _67={target:e.data.target,dir:dir,startLeft:_66("left"),startTop:_66("top"),left:_66("left"),top:_66("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_67,_60); -$(document).bind("mousemove.resizable",_67,_61); -$(document).bind("mouseup.resizable",_67,_62); -$("body").css("cursor",dir+"-resize"); -}); -function _65(e){ -var tt=$(e.data.target); -var dir=""; -var _68=tt.offset(); -var _69=tt.outerWidth(); -var _6a=tt.outerHeight(); -var _6b=_63.edge; -if(e.pageY>_68.top&&e.pageY<_68.top+_6b){ -dir+="n"; -}else{ -if(e.pageY<_68.top+_6a&&e.pageY>_68.top+_6a-_6b){ -dir+="s"; -} -} -if(e.pageX>_68.left&&e.pageX<_68.left+_6b){ -dir+="w"; -}else{ -if(e.pageX<_68.left+_69&&e.pageX>_68.left+_69-_6b){ -dir+="e"; -} -} -var _6c=_63.handles.split(","); -for(var i=0;i<_6c.length;i++){ -var _6d=_6c[i].replace(/(^\s*)|(\s*$)/g,""); -if(_6d=="all"||_6d==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_6e){ -var t=$(_6e); -return $.extend({},$.parser.parseOptions(_6e,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); -(function($){ -function _6f(_70){ -var _71=$.data(_70,"linkbutton").options; -var t=$(_70); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_71.plain){ -t.addClass("l-btn-plain"); -} -if(_71.selected){ -t.addClass(_71.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_71.group||""); -t.attr("id",_71.id||""); -t.html(""+""+""); -if(_71.text){ -t.find(".l-btn-text").html(_71.text); -if(_71.iconCls){ -t.find(".l-btn-text").addClass(_71.iconCls).addClass(_71.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_71.iconCls){ -t.find(".l-btn-empty").addClass(_71.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_71.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_71.toggle&&!_71.disabled){ -t.bind("click.linkbutton",function(){ -if(_71.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_72(_70,_71.selected); -_73(_70,_71.disabled); -}; -function _72(_74,_75){ -var _76=$.data(_74,"linkbutton").options; -if(_75){ -if(_76.group){ -$("a.l-btn[group=\""+_76.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_74).addClass(_76.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_76.selected=true; -}else{ -if(!_76.group){ -$(_74).removeClass("l-btn-selected l-btn-plain-selected"); -_76.selected=false; -} -} -}; -function _73(_77,_78){ -var _79=$.data(_77,"linkbutton"); -var _7a=_79.options; -$(_77).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_78){ -_7a.disabled=true; -var _7b=$(_77).attr("href"); -if(_7b){ -_79.href=_7b; -$(_77).attr("href","javascript:void(0)"); -} -if(_77.onclick){ -_79.onclick=_77.onclick; -_77.onclick=null; -} -_7a.plain?$(_77).addClass("l-btn-disabled l-btn-plain-disabled"):$(_77).addClass("l-btn-disabled"); -}else{ -_7a.disabled=false; -if(_79.href){ -$(_77).attr("href",_79.href); -} -if(_79.onclick){ -_77.onclick=_79.onclick; -} -} -}; -$.fn.linkbutton=function(_7c,_7d){ -if(typeof _7c=="string"){ -return $.fn.linkbutton.methods[_7c](this,_7d); -} -_7c=_7c||{}; -return this.each(function(){ -var _7e=$.data(this,"linkbutton"); -if(_7e){ -$.extend(_7e.options,_7c); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_7c)}); -$(this).removeAttr("disabled"); -} -_6f(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_73(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_73(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_72(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_72(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_7f){ -var t=$(_7f); -return $.extend({},$.parser.parseOptions(_7f,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); -(function($){ -function _80(_81){ -var _82=$.data(_81,"pagination"); -var _83=_82.options; -var bb=_82.bb={}; -var _84=$(_81).addClass("pagination").html("
                                    "); -var tr=_84.find("tr"); -function _85(_86){ -var btn=_83.nav[_86]; -var a=$("").appendTo(tr); -a.wrap("
                                    ").prependTo(_249); -var tr=_24b.find("tr"); -for(var i=0;i
                                    ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(btn.handler||function(){ -}); -tool.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(opts.toolbar).addClass("dialog-toolbar").prependTo(_249); -$(opts.toolbar).show(); -} -}else{ -$(_249).find("div.dialog-toolbar").remove(); -} -if(opts.buttons){ -if($.isArray(opts.buttons)){ -$(_249).find("div.dialog-button").remove(); -var _24c=$("
                                    ").appendTo(_249); -for(var i=0;i").appendTo(_24c); -if(p.handler){ -_24d[0].onclick=p.handler; -} -_24d.linkbutton(p); -} -}else{ -$(opts.buttons).addClass("dialog-button").appendTo(_249); -$(opts.buttons).show(); -} -}else{ -$(_249).find("div.dialog-button").remove(); -} -var _24e=opts.href; -var _24f=opts.content; -opts.href=null; -opts.content=null; -_24a.panel({closed:opts.closed,cache:opts.cache,href:_24e,content:_24f,onLoad:function(){ -if(opts.height=="auto"){ -$(_249).window("resize"); -} -opts.onLoad.apply(_249,arguments); -}}); -$(_249).window($.extend({},opts,{onOpen:function(){ -if(_24a.panel("options").closed){ -_24a.panel("open"); -} -if(opts.onOpen){ -opts.onOpen.call(_249); -} -},onResize:function(_250,_251){ -var _252=$(_249); -_24a.panel("panel").show(); -_24a.panel("resize",{width:_252.width(),height:(_251=="auto")?"auto":_252.height()-_252.children("div.dialog-toolbar")._outerHeight()-_252.children("div.dialog-button")._outerHeight()}); -if(opts.onResize){ -opts.onResize.call(_249,_250,_251); -} -}})); -opts.href=_24e; -opts.content=_24f; -}; -function _253(_254,href){ -var _255=$.data(_254,"dialog").contentPanel; -_255.panel("refresh",href); -}; -$.fn.dialog=function(_256,_257){ -if(typeof _256=="string"){ -var _258=$.fn.dialog.methods[_256]; -if(_258){ -return _258(this,_257); -}else{ -return this.window(_256,_257); -} -} -_256=_256||{}; -return this.each(function(){ -var _259=$.data(this,"dialog"); -if(_259){ -$.extend(_259.options,_256); -}else{ -$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_256),contentPanel:_245(this)}); -} -_248(this); -}); -}; -$.fn.dialog.methods={options:function(jq){ -var _25a=$.data(jq[0],"dialog").options; -var _25b=jq.panel("options"); -$.extend(_25a,{closed:_25b.closed,collapsed:_25b.collapsed,minimized:_25b.minimized,maximized:_25b.maximized}); -var _25c=$.data(jq[0],"dialog").contentPanel; -return _25a; -},dialog:function(jq){ -return jq.window("window"); -},refresh:function(jq,href){ -return jq.each(function(){ -_253(this,href); -}); -}}; -$.fn.dialog.parseOptions=function(_25d){ -return $.extend({},$.fn.window.parseOptions(_25d),$.parser.parseOptions(_25d,["toolbar","buttons"])); -}; -$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); -})(jQuery); -(function($){ -function show(el,type,_25e,_25f){ -var win=$(el).window("window"); -if(!win){ -return; -} -switch(type){ -case null: -win.show(); -break; -case "slide": -win.slideDown(_25e); -break; -case "fade": -win.fadeIn(_25e); -break; -case "show": -win.show(_25e); -break; -} -var _260=null; -if(_25f>0){ -_260=setTimeout(function(){ -hide(el,type,_25e); -},_25f); -} -win.hover(function(){ -if(_260){ -clearTimeout(_260); -} -},function(){ -if(_25f>0){ -_260=setTimeout(function(){ -hide(el,type,_25e); -},_25f); -} -}); -}; -function hide(el,type,_261){ -if(el.locked==true){ -return; -} -el.locked=true; -var win=$(el).window("window"); -if(!win){ -return; -} -switch(type){ -case null: -win.hide(); -break; -case "slide": -win.slideUp(_261); -break; -case "fade": -win.fadeOut(_261); -break; -case "show": -win.hide(_261); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_261); -}; -function _262(_263){ -var opts=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -show(this,opts.showType,opts.showSpeed,opts.timeout); -return false; -},onBeforeClose:function(){ -hide(this,opts.showType,opts.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_263); -opts.style.zIndex=$.fn.window.defaults.zIndex++; -var win=$("
                                    ").html(opts.msg).appendTo("body"); -win.window(opts); -win.window("window").css(opts.style); -win.window("open"); -return win; -}; -function _264(_265,_266,_267){ -var win=$("
                                    ").appendTo("body"); -win.append(_266); -if(_267){ -var tb=$("
                                    ").appendTo(win); -for(var _268 in _267){ -$("").attr("href","javascript:void(0)").text(_268).css("margin-left",10).bind("click",eval(_267[_268])).appendTo(tb).linkbutton(); -} -} -win.window({title:_265,noheader:(_265?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_269){ -return _262(_269); -},alert:function(_26a,msg,icon,fn){ -var _26b="
                                    "+msg+"
                                    "; -switch(icon){ -case "error": -_26b="
                                    "+_26b; -break; -case "info": -_26b="
                                    "+_26b; -break; -case "question": -_26b="
                                    "+_26b; -break; -case "warning": -_26b="
                                    "+_26b; -break; -} -_26b+="
                                    "; -var _26c={}; -_26c[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_264(_26a,_26b,_26c); -return win; -},confirm:function(_26d,msg,fn){ -var _26e="
                                    "+"
                                    "+msg+"
                                    "+"
                                    "; -var _26f={}; -_26f[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_26f[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_264(_26d,_26e,_26f); -return win; -},prompt:function(_270,msg,fn){ -var _271="
                                    "+"
                                    "+msg+"
                                    "+"
                                    "+"
                                    "+"
                                    "; -var _272={}; -_272[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_272[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_264(_270,_271,_272); -win.children("input.messager-input").focus(); -return win; -},progress:function(_273){ -var _274={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _273=="string"){ -var _275=_274[_273]; -return _275(); -} -var opts=$.extend({title:"",msg:"",text:undefined,interval:300},_273||{}); -var _276="
                                    "; -var win=_264(opts.title,_276,null); -win.find("div.messager-p-msg").html(opts.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:opts.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(opts.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},opts.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); -(function($){ -function _277(_278){ -var _279=$.data(_278,"accordion"); -var opts=_279.options; -var _27a=_279.panels; -var cc=$(_278); -opts.fit?$.extend(opts,cc._fit()):cc._fit(false); -if(opts.width>0){ -cc._outerWidth(opts.width); -} -var _27b="auto"; -if(opts.height>0){ -cc._outerHeight(opts.height); -var _27c=_27a.length?_27a[0].panel("header").css("height","")._outerHeight():"auto"; -var _27b=cc.height()-(_27a.length-1)*_27c; -} -for(var i=0;i<_27a.length;i++){ -var _27d=_27a[i]; -_27d.panel("header")._outerHeight(_27c); -_27d.panel("resize",{width:cc.width(),height:_27b}); -} -}; -function _27e(_27f){ -var _280=$.data(_27f,"accordion").panels; -for(var i=0;i<_280.length;i++){ -var _281=_280[i]; -if(_281.panel("options").collapsed==false){ -return _281; -} -} -return null; -}; -function _282(_283,_284){ -var _285=$.data(_283,"accordion").panels; -for(var i=0;i<_285.length;i++){ -if(_285[i][0]==$(_284)[0]){ -return i; -} -} -return -1; -}; -function _286(_287,_288,_289){ -var _28a=$.data(_287,"accordion").panels; -if(typeof _288=="number"){ -if(_288<0||_288>=_28a.length){ -return null; -}else{ -var _28b=_28a[_288]; -if(_289){ -_28a.splice(_288,1); -} -return _28b; -} -} -for(var i=0;i<_28a.length;i++){ -var _28b=_28a[i]; -if(_28b.panel("options").title==_288){ -if(_289){ -_28a.splice(i,1); -} -return _28b; -} -} -return null; -}; -function _28c(_28d){ -var opts=$.data(_28d,"accordion").options; -var cc=$(_28d); -if(opts.border){ -cc.removeClass("accordion-noborder"); -}else{ -cc.addClass("accordion-noborder"); -} -}; -function _28e(_28f){ -var cc=$(_28f); -cc.addClass("accordion"); -var _290=[]; -cc.children("div").each(function(){ -var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_290.push(pp); -_292(_28f,pp,opts); -}); -cc.bind("_resize",function(e,_291){ -var opts=$.data(_28f,"accordion").options; -if(opts.fit==true||_291){ -_277(_28f); -} -return false; -}); -return {accordion:cc,panels:_290}; -}; -function _292(_293,pp,_294){ -pp.panel($.extend({},_294,{collapsible:false,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",onBeforeExpand:function(){ -if(_294.onBeforeExpand){ -if(_294.onBeforeExpand.call(this)==false){ -return false; -} -} -var curr=_27e(_293); -if(curr){ -var _295=$(curr).panel("header"); -_295.removeClass("accordion-header-selected"); -_295.find(".accordion-collapse").triggerHandler("click"); -} -var _295=pp.panel("header"); -_295.addClass("accordion-header-selected"); -_295.find(".accordion-collapse").removeClass("accordion-expand"); -},onExpand:function(){ -if(_294.onExpand){ -_294.onExpand.call(this); -} -var opts=$.data(_293,"accordion").options; -opts.onSelect.call(_293,pp.panel("options").title,_282(_293,this)); -},onBeforeCollapse:function(){ -if(_294.onBeforeCollapse){ -if(_294.onBeforeCollapse.call(this)==false){ -return false; -} -} -var _296=pp.panel("header"); -_296.removeClass("accordion-header-selected"); -_296.find(".accordion-collapse").addClass("accordion-expand"); -}})); -var _297=pp.panel("header"); -var t=$("").appendTo(_297.children("div.panel-tool")); -t.bind("click",function(e){ -var _298=$.data(_293,"accordion").options.animate; -_2a3(_293); -if(pp.panel("options").collapsed){ -pp.panel("expand",_298); -}else{ -pp.panel("collapse",_298); -} -return false; -}); -_297.click(function(){ -$(this).find(".accordion-collapse").triggerHandler("click"); -return false; -}); -}; -function _299(_29a,_29b){ -var _29c=_286(_29a,_29b); -if(!_29c){ -return; -} -var curr=_27e(_29a); -if(curr&&curr[0]==_29c[0]){ -return; -} -_29c.panel("header").triggerHandler("click"); -}; -function _29d(_29e){ -var _29f=$.data(_29e,"accordion").panels; -for(var i=0;i<_29f.length;i++){ -if(_29f[i].panel("options").selected){ -_2a0(i); -return; -} -} -if(_29f.length){ -_2a0(0); -} -function _2a0(_2a1){ -var opts=$.data(_29e,"accordion").options; -var _2a2=opts.animate; -opts.animate=false; -_299(_29e,_2a1); -opts.animate=_2a2; -}; -}; -function _2a3(_2a4){ -var _2a5=$.data(_2a4,"accordion").panels; -for(var i=0;i<_2a5.length;i++){ -_2a5[i].stop(true,true); -} -}; -function add(_2a6,_2a7){ -var _2a8=$.data(_2a6,"accordion"); -var opts=_2a8.options; -var _2a9=_2a8.panels; -if(_2a7.selected==undefined){ -_2a7.selected=true; -} -_2a3(_2a6); -var pp=$("
                                    ").appendTo(_2a6); -_2a9.push(pp); -_292(_2a6,pp,_2a7); -_277(_2a6); -opts.onAdd.call(_2a6,_2a7.title,_2a9.length-1); -if(_2a7.selected){ -_299(_2a6,_2a9.length-1); -} -}; -function _2aa(_2ab,_2ac){ -var _2ad=$.data(_2ab,"accordion"); -var opts=_2ad.options; -var _2ae=_2ad.panels; -_2a3(_2ab); -var _2af=_286(_2ab,_2ac); -var _2b0=_2af.panel("options").title; -var _2b1=_282(_2ab,_2af); -if(opts.onBeforeRemove.call(_2ab,_2b0,_2b1)==false){ -return; -} -var _2af=_286(_2ab,_2ac,true); -if(_2af){ -_2af.panel("destroy"); -if(_2ae.length){ -_277(_2ab); -var curr=_27e(_2ab); -if(!curr){ -_299(_2ab,0); -} -} -} -opts.onRemove.call(_2ab,_2b0,_2b1); -}; -$.fn.accordion=function(_2b2,_2b3){ -if(typeof _2b2=="string"){ -return $.fn.accordion.methods[_2b2](this,_2b3); -} -_2b2=_2b2||{}; -return this.each(function(){ -var _2b4=$.data(this,"accordion"); -var opts; -if(_2b4){ -opts=$.extend(_2b4.options,_2b2); -_2b4.opts=opts; -}else{ -opts=$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_2b2); -var r=_28e(this); -$.data(this,"accordion",{options:opts,accordion:r.accordion,panels:r.panels}); -} -_28c(this); -_277(this); -_29d(this); -}); -}; -$.fn.accordion.methods={options:function(jq){ -return $.data(jq[0],"accordion").options; -},panels:function(jq){ -return $.data(jq[0],"accordion").panels; -},resize:function(jq){ -return jq.each(function(){ -_277(this); -}); -},getSelected:function(jq){ -return _27e(jq[0]); -},getPanel:function(jq,_2b5){ -return _286(jq[0],_2b5); -},getPanelIndex:function(jq,_2b6){ -return _282(jq[0],_2b6); -},select:function(jq,_2b7){ -return jq.each(function(){ -_299(this,_2b7); -}); -},add:function(jq,_2b8){ -return jq.each(function(){ -add(this,_2b8); -}); -},remove:function(jq,_2b9){ -return jq.each(function(){ -_2aa(this,_2b9); -}); -}}; -$.fn.accordion.parseOptions=function(_2ba){ -var t=$(_2ba); -return $.extend({},$.parser.parseOptions(_2ba,["width","height",{fit:"boolean",border:"boolean",animate:"boolean"}])); -}; -$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,onSelect:function(_2bb,_2bc){ -},onAdd:function(_2bd,_2be){ -},onBeforeRemove:function(_2bf,_2c0){ -},onRemove:function(_2c1,_2c2){ -}}; -})(jQuery); -(function($){ -function _2c3(_2c4){ -var opts=$.data(_2c4,"tabs").options; -if(opts.tabPosition=="left"||opts.tabPosition=="right"){ -return; -} -var _2c5=$(_2c4).children("div.tabs-header"); -var tool=_2c5.children("div.tabs-tool"); -var _2c6=_2c5.children("div.tabs-scroller-left"); -var _2c7=_2c5.children("div.tabs-scroller-right"); -var wrap=_2c5.children("div.tabs-wrap"); -var _2c8=_2c5.outerHeight(); -if(opts.plain){ -_2c8-=_2c8-_2c5.height(); -} -tool._outerHeight(_2c8); -var _2c9=0; -$("ul.tabs li",_2c5).each(function(){ -_2c9+=$(this).outerWidth(true); -}); -var _2ca=_2c5.width()-tool._outerWidth(); -if(_2c9>_2ca){ -_2c6.add(_2c7).show()._outerHeight(_2c8); -if(opts.toolPosition=="left"){ -tool.css({left:_2c6.outerWidth(),right:""}); -wrap.css({marginLeft:_2c6.outerWidth()+tool._outerWidth(),marginRight:_2c7._outerWidth(),width:_2ca-_2c6.outerWidth()-_2c7.outerWidth()}); -}else{ -tool.css({left:"",right:_2c7.outerWidth()}); -wrap.css({marginLeft:_2c6.outerWidth(),marginRight:_2c7.outerWidth()+tool._outerWidth(),width:_2ca-_2c6.outerWidth()-_2c7.outerWidth()}); -} -}else{ -_2c6.add(_2c7).hide(); -if(opts.toolPosition=="left"){ -tool.css({left:0,right:""}); -wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_2ca}); -}else{ -tool.css({left:"",right:0}); -wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_2ca}); -} -} -}; -function _2cb(_2cc){ -var opts=$.data(_2cc,"tabs").options; -var _2cd=$(_2cc).children("div.tabs-header"); -if(opts.tools){ -if(typeof opts.tools=="string"){ -$(opts.tools).addClass("tabs-tool").appendTo(_2cd); -$(opts.tools).show(); -}else{ -_2cd.children("div.tabs-tool").remove(); -var _2ce=$("
                                    ").appendTo(_2cd); -var tr=_2ce.find("tr"); -for(var i=0;i").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(opts.tools[i].handler||function(){ -}); -tool.linkbutton($.extend({},opts.tools[i],{plain:true})); -} -} -}else{ -_2cd.children("div.tabs-tool").remove(); -} -}; -function _2cf(_2d0){ -var _2d1=$.data(_2d0,"tabs"); -var opts=_2d1.options; -var cc=$(_2d0); -opts.fit?$.extend(opts,cc._fit()):cc._fit(false); -cc.width(opts.width).height(opts.height); -var _2d2=$(_2d0).children("div.tabs-header"); -var _2d3=$(_2d0).children("div.tabs-panels"); -var wrap=_2d2.find("div.tabs-wrap"); -var ul=wrap.find(".tabs"); -for(var i=0;i<_2d1.tabs.length;i++){ -var _2d4=_2d1.tabs[i].panel("options"); -var p_t=_2d4.tab.find("a.tabs-inner"); -var _2d5=parseInt(_2d4.tabWidth||opts.tabWidth)||undefined; -if(_2d5){ -p_t._outerWidth(_2d5); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(opts.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(opts.tabPosition=="left"||opts.tabPosition=="right"){ -_2d2._outerWidth(opts.headerWidth); -_2d3._outerWidth(cc.width()-opts.headerWidth); -_2d2.add(_2d3)._outerHeight(opts.height); -wrap._outerWidth(_2d2.width()); -ul._outerWidth(wrap.width()).css("height",""); -}else{ -_2d2._outerWidth(opts.width).css("height",""); -ul._outerHeight(opts.tabHeight).css("width",""); -_2c3(_2d0); -var _2d6=opts.height; -if(!isNaN(_2d6)){ -_2d3._outerHeight(_2d6-_2d2.outerHeight()); -}else{ -_2d3.height("auto"); -} -var _2d5=opts.width; -if(!isNaN(_2d5)){ -_2d3._outerWidth(_2d5); -}else{ -_2d3.width("auto"); -} -} -}; -function _2d7(_2d8){ -var opts=$.data(_2d8,"tabs").options; -var tab=_2d9(_2d8); -if(tab){ -var _2da=$(_2d8).children("div.tabs-panels"); -var _2db=opts.width=="auto"?"auto":_2da.width(); -var _2dc=opts.height=="auto"?"auto":_2da.height(); -tab.panel("resize",{width:_2db,height:_2dc}); -} -}; -function _2dd(_2de){ -var tabs=$.data(_2de,"tabs").tabs; -var cc=$(_2de); -cc.addClass("tabs-container"); -var pp=$("
                                    ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                    "+"
                                    "+"
                                    "+"
                                    "+"
                                      "+"
                                      "+"
                                      ").prependTo(_2de); -cc.children("div.tabs-panels").children("div").each(function(i){ -var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -tabs.push(pp); -_2e8(_2de,pp,opts); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_2df){ -var opts=$.data(_2de,"tabs").options; -if(opts.fit==true||_2df){ -_2cf(_2de); -_2d7(_2de); -} -return false; -}); -}; -function _2e0(_2e1){ -var opts=$.data(_2e1,"tabs").options; -$(_2e1).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2e1).tabs("scrollBy",-opts.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2e1).tabs("scrollBy",opts.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_2f9(_2e1,_2e2(li)); -}else{ -if(li.length){ -_2ef(_2e1,_2e2(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -opts.onContextMenu.call(_2e1,e,li.find("span.tabs-title").html(),_2e2(li)); -} -}); -function _2e2(li){ -var _2e3=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2e3=i; -return false; -} -}); -return _2e3; -}; -}; -function _2e4(_2e5){ -var opts=$.data(_2e5,"tabs").options; -var _2e6=$(_2e5).children("div.tabs-header"); -var _2e7=$(_2e5).children("div.tabs-panels"); -_2e6.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_2e7.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(opts.tabPosition=="top"){ -_2e6.insertBefore(_2e7); -}else{ -if(opts.tabPosition=="bottom"){ -_2e6.insertAfter(_2e7); -_2e6.addClass("tabs-header-bottom"); -_2e7.addClass("tabs-panels-top"); -}else{ -if(opts.tabPosition=="left"){ -_2e6.addClass("tabs-header-left"); -_2e7.addClass("tabs-panels-right"); -}else{ -if(opts.tabPosition=="right"){ -_2e6.addClass("tabs-header-right"); -_2e7.addClass("tabs-panels-left"); -} -} -} -} -if(opts.plain==true){ -_2e6.addClass("tabs-header-plain"); -}else{ -_2e6.removeClass("tabs-header-plain"); -} -if(opts.border==true){ -_2e6.removeClass("tabs-header-noborder"); -_2e7.removeClass("tabs-panels-noborder"); -}else{ -_2e6.addClass("tabs-header-noborder"); -_2e7.addClass("tabs-panels-noborder"); -} -}; -function _2e8(_2e9,pp,_2ea){ -var _2eb=$.data(_2e9,"tabs"); -_2ea=_2ea||{}; -pp.panel($.extend({},_2ea,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_2ea.icon?_2ea.icon:undefined),onLoad:function(){ -if(_2ea.onLoad){ -_2ea.onLoad.call(this,arguments); -} -_2eb.options.onLoad.call(_2e9,$(this)); -}})); -var opts=pp.panel("options"); -var tabs=$(_2e9).children("div.tabs-header").find("ul.tabs"); -opts.tab=$("
                                    • ").appendTo(tabs); -opts.tab.append(""+""+""+""); -$(_2e9).tabs("update",{tab:pp,options:opts}); -}; -function _2ec(_2ed,_2ee){ -var opts=$.data(_2ed,"tabs").options; -var tabs=$.data(_2ed,"tabs").tabs; -if(_2ee.selected==undefined){ -_2ee.selected=true; -} -var pp=$("
                                      ").appendTo($(_2ed).children("div.tabs-panels")); -tabs.push(pp); -_2e8(_2ed,pp,_2ee); -opts.onAdd.call(_2ed,_2ee.title,tabs.length-1); -_2cf(_2ed); -if(_2ee.selected){ -_2ef(_2ed,tabs.length-1); -} -}; -function _2f0(_2f1,_2f2){ -var _2f3=$.data(_2f1,"tabs").selectHis; -var pp=_2f2.tab; -var _2f4=pp.panel("options").title; -pp.panel($.extend({},_2f2.options,{iconCls:(_2f2.options.icon?_2f2.options.icon:undefined)})); -var opts=pp.panel("options"); -var tab=opts.tab; -var _2f5=tab.find("span.tabs-title"); -var _2f6=tab.find("span.tabs-icon"); -_2f5.html(opts.title); -_2f6.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(opts.closable){ -_2f5.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_2f5.removeClass("tabs-closable"); -} -if(opts.iconCls){ -_2f5.addClass("tabs-with-icon"); -_2f6.addClass(opts.iconCls); -}else{ -_2f5.removeClass("tabs-with-icon"); -} -if(_2f4!=opts.title){ -for(var i=0;i<_2f3.length;i++){ -if(_2f3[i]==_2f4){ -_2f3[i]=opts.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(opts.tools){ -var _2f7=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(opts.tools)){ -for(var i=0;i").appendTo(_2f7); -t.addClass(opts.tools[i].iconCls); -if(opts.tools[i].handler){ -t.bind("click",{handler:opts.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(opts.tools).children().appendTo(_2f7); -} -var pr=_2f7.children().length*12; -if(opts.closable){ -pr+=8; -}else{ -pr-=3; -_2f7.css("right","5px"); -} -_2f5.css("padding-right",pr+"px"); -} -_2cf(_2f1); -$.data(_2f1,"tabs").options.onUpdate.call(_2f1,opts.title,_2f8(_2f1,pp)); -}; -function _2f9(_2fa,_2fb){ -var opts=$.data(_2fa,"tabs").options; -var tabs=$.data(_2fa,"tabs").tabs; -var _2fc=$.data(_2fa,"tabs").selectHis; -if(!_2fd(_2fa,_2fb)){ -return; -} -var tab=_2fe(_2fa,_2fb); -var _2ff=tab.panel("options").title; -var _300=_2f8(_2fa,tab); -if(opts.onBeforeClose.call(_2fa,_2ff,_300)==false){ -return; -} -var tab=_2fe(_2fa,_2fb,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -opts.onClose.call(_2fa,_2ff,_300); -_2cf(_2fa); -for(var i=0;i<_2fc.length;i++){ -if(_2fc[i]==_2ff){ -_2fc.splice(i,1); -i--; -} -} -var _301=_2fc.pop(); -if(_301){ -_2ef(_2fa,_301); -}else{ -if(tabs.length){ -_2ef(_2fa,0); -} -} -}; -function _2fe(_302,_303,_304){ -var tabs=$.data(_302,"tabs").tabs; -if(typeof _303=="number"){ -if(_303<0||_303>=tabs.length){ -return null; -}else{ -var tab=tabs[_303]; -if(_304){ -tabs.splice(_303,1); -} -return tab; -} -} -for(var i=0;idiv.tabs-header>div.tabs-wrap"); -var left=tab.position().left; -var _30f=left+tab.outerWidth(); -if(left<0||_30f>wrap.width()){ -var _310=left-(wrap.width()-tab.width())/2; -$(_309).tabs("scrollBy",_310); -}else{ -$(_309).tabs("scrollBy",0); -} -_2d7(_309); -opts.onSelect.call(_309,_30e,_2f8(_309,_30c)); -}; -function _2fd(_311,_312){ -return _2fe(_311,_312)!=null; -}; -$.fn.tabs=function(_313,_314){ -if(typeof _313=="string"){ -return $.fn.tabs.methods[_313](this,_314); -} -_313=_313||{}; -return this.each(function(){ -var _315=$.data(this,"tabs"); -var opts; -if(_315){ -opts=$.extend(_315.options,_313); -_315.options=opts; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_313),tabs:[],selectHis:[]}); -_2dd(this); -} -_2cb(this); -_2e4(this); -_2cf(this); -_2e0(this); -_307(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_2cf(this); -_2d7(this); -}); -},add:function(jq,_316){ -return jq.each(function(){ -_2ec(this,_316); -}); -},close:function(jq,_317){ -return jq.each(function(){ -_2f9(this,_317); -}); -},getTab:function(jq,_318){ -return _2fe(jq[0],_318); -},getTabIndex:function(jq,tab){ -return _2f8(jq[0],tab); -},getSelected:function(jq){ -return _2d9(jq[0]); -},select:function(jq,_319){ -return jq.each(function(){ -_2ef(this,_319); -}); -},exists:function(jq,_31a){ -return _2fd(jq[0],_31a); -},update:function(jq,_31b){ -return jq.each(function(){ -_2f0(this,_31b); -}); -},enableTab:function(jq,_31c){ -return jq.each(function(){ -$(this).tabs("getTab",_31c).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_31d){ -return jq.each(function(){ -$(this).tabs("getTab",_31d).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_31e){ -return jq.each(function(){ -var opts=$(this).tabs("options"); -var wrap=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(wrap._scrollLeft()+_31e,_31f()); -wrap.animate({scrollLeft:pos},opts.scrollDuration); -function _31f(){ -var w=0; -var ul=wrap.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-wrap.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_320){ -return $.extend({},$.parser.parseOptions(_320,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_321){ -},onSelect:function(_322,_323){ -},onBeforeClose:function(_324,_325){ -},onClose:function(_326,_327){ -},onAdd:function(_328,_329){ -},onUpdate:function(_32a,_32b){ -},onContextMenu:function(e,_32c,_32d){ -}}; -})(jQuery); -(function($){ -var _32e=false; -function _32f(_330){ -var _331=$.data(_330,"layout"); -var opts=_331.options; -var _332=_331.panels; -var cc=$(_330); -if(_330.tagName=="BODY"){ -cc._fit(); -}else{ -opts.fit?cc.css(cc._fit()):cc._fit(false); -} -function _333(pp){ -var opts=pp.panel("options"); -return Math.min(Math.max(opts.height,opts.minHeight),opts.maxHeight); -}; -function _334(pp){ -var opts=pp.panel("options"); -return Math.min(Math.max(opts.width,opts.minWidth),opts.maxWidth); -}; -var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; -function _335(pp){ -if(!pp.length){ -return; -} -var _336=_333(pp); -pp.panel("resize",{width:cc.width(),height:_336,left:0,top:0}); -cpos.top+=_336; -cpos.height-=_336; -}; -if(_33d(_332.expandNorth)){ -_335(_332.expandNorth); -}else{ -_335(_332.north); -} -function _337(pp){ -if(!pp.length){ -return; -} -var _338=_333(pp); -pp.panel("resize",{width:cc.width(),height:_338,left:0,top:cc.height()-_338}); -cpos.height-=_338; -}; -if(_33d(_332.expandSouth)){ -_337(_332.expandSouth); -}else{ -_337(_332.south); -} -function _339(pp){ -if(!pp.length){ -return; -} -var _33a=_334(pp); -pp.panel("resize",{width:_33a,height:cpos.height,left:cc.width()-_33a,top:cpos.top}); -cpos.width-=_33a; -}; -if(_33d(_332.expandEast)){ -_339(_332.expandEast); -}else{ -_339(_332.east); -} -function _33b(pp){ -if(!pp.length){ -return; -} -var _33c=_334(pp); -pp.panel("resize",{width:_33c,height:cpos.height,left:0,top:cpos.top}); -cpos.left+=_33c; -cpos.width-=_33c; -}; -if(_33d(_332.expandWest)){ -_33b(_332.expandWest); -}else{ -_33b(_332.west); -} -_332.center.panel("resize",cpos); -}; -function init(_33e){ -var cc=$(_33e); -cc.addClass("layout"); -function _33f(cc){ -cc.children("div").each(function(){ -var opts=$.fn.layout.parsePanelOptions(this); -if("north,south,east,west,center".indexOf(opts.region)>=0){ -_341(_33e,opts,this); -} -}); -}; -cc.children("form").length?_33f(cc.children("form")):_33f(cc); -cc.append("
                                      "); -cc.bind("_resize",function(e,_340){ -var opts=$.data(_33e,"layout").options; -if(opts.fit==true||_340){ -_32f(_33e); -} -return false; -}); -}; -function _341(_342,_343,el){ -_343.region=_343.region||"center"; -var _344=$.data(_342,"layout").panels; -var cc=$(_342); -var dir=_343.region; -if(_344[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
                                      ").appendTo(cc); -} -var _345=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var tool=$(this).panel("header").children("div.panel-tool"); -tool.children("a.panel-tool-collapse").hide(); -var _346={north:"up",south:"down",east:"right",west:"left"}; -if(!_346[dir]){ -return; -} -var _347="layout-button-"+_346[dir]; -var t=tool.children("a."+_347); -if(!t.length){ -t=$("").addClass(_347).appendTo(tool); -t.bind("click",{dir:dir},function(e){ -_353(_342,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_343); -pp.panel(_345); -_344[dir]=pp; -if(pp.panel("options").split){ -var _348=pp.panel("panel"); -_348.addClass("layout-split-"+dir); -var _349=""; -if(dir=="north"){ -_349="s"; -} -if(dir=="south"){ -_349="n"; -} -if(dir=="east"){ -_349="w"; -} -if(dir=="west"){ -_349="e"; -} -_348.resizable($.extend({},{handles:_349,onStartResize:function(e){ -_32e=true; -if(dir=="north"||dir=="south"){ -var _34a=$(">div.layout-split-proxy-v",_342); -}else{ -var _34a=$(">div.layout-split-proxy-h",_342); -} -var top=0,left=0,_34b=0,_34c=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_348.css("top"))+_348.outerHeight()-_34a.height(); -pos.left=parseInt(_348.css("left")); -pos.width=_348.outerWidth(); -pos.height=_34a.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_348.css("top")); -pos.left=parseInt(_348.css("left")); -pos.width=_348.outerWidth(); -pos.height=_34a.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_348.css("top"))||0; -pos.left=parseInt(_348.css("left"))||0; -pos.width=_34a.width(); -pos.height=_348.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_348.css("top"))||0; -pos.left=_348.outerWidth()-_34a.width(); -pos.width=_34a.width(); -pos.height=_348.outerHeight(); -} -} -} -} -_34a.css(pos); -$("
                                      ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _34d=$(">div.layout-split-proxy-v",_342); -_34d.css("top",e.pageY-$(_342).offset().top-_34d.height()/2); -}else{ -var _34d=$(">div.layout-split-proxy-h",_342); -_34d.css("left",e.pageX-$(_342).offset().left-_34d.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_32f(_342); -_32e=false; -cc.find(">div.layout-mask").remove(); -}},_343)); -} -}; -function _34e(_34f,_350){ -var _351=$.data(_34f,"layout").panels; -if(_351[_350].length){ -_351[_350].panel("destroy"); -_351[_350]=$(); -var _352="expand"+_350.substring(0,1).toUpperCase()+_350.substring(1); -if(_351[_352]){ -_351[_352].panel("destroy"); -_351[_352]=undefined; -} -} -}; -function _353(_354,_355,_356){ -if(_356==undefined){ -_356="normal"; -} -var _357=$.data(_354,"layout").panels; -var p=_357[_355]; -if(p.panel("options").onBeforeCollapse.call(p)==false){ -return; -} -var _358="expand"+_355.substring(0,1).toUpperCase()+_355.substring(1); -if(!_357[_358]){ -_357[_358]=_359(_355); -_357[_358].panel("panel").bind("click",function(){ -var _35a=_35b(); -p.panel("expand",false).panel("open").panel("resize",_35a.collapse); -p.panel("panel").animate(_35a.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_355},function(e){ -if(_32e==true){ -return; -} -_353(_354,e.data.region); -}); -}); -return false; -}); -} -var _35c=_35b(); -if(!_33d(_357[_358])){ -_357.center.panel("resize",_35c.resizeC); -} -p.panel("panel").animate(_35c.collapse,_356,function(){ -p.panel("collapse",false).panel("close"); -_357[_358].panel("open").panel("resize",_35c.expandP); -$(this).unbind(".layout"); -}); -function _359(dir){ -var icon; -if(dir=="east"){ -icon="layout-button-left"; -}else{ -if(dir=="west"){ -icon="layout-button-right"; -}else{ -if(dir=="north"){ -icon="layout-button-down"; -}else{ -if(dir=="south"){ -icon="layout-button-up"; -} -} -} -} -var _35d=$.extend({},$.fn.layout.paneldefaults,{cls:"layout-expand",title:" ",closed:true,doSize:false,tools:[{iconCls:icon,handler:function(){ -_361(_354,_355); -return false; -}}]}); -var p=$("
                                      ").appendTo(_354).panel(_35d); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _35b(){ -var cc=$(_354); -var _35e=_357.center.panel("options"); -if(_355=="east"){ -var _35f=_357["east"].panel("options"); -return {resizeC:{width:_35e.width+_35f.width-28},expand:{left:cc.width()-_35f.width},expandP:{top:_35e.top,left:cc.width()-28,width:28,height:_35e.height},collapse:{left:cc.width(),top:_35e.top,height:_35e.height}}; -}else{ -if(_355=="west"){ -var _360=_357["west"].panel("options"); -return {resizeC:{width:_35e.width+_360.width-28,left:28},expand:{left:0},expandP:{left:0,top:_35e.top,width:28,height:_35e.height},collapse:{left:-_360.width,top:_35e.top,height:_35e.height}}; -}else{ -if(_355=="north"){ -var hh=cc.height()-28; -if(_33d(_357.expandSouth)){ -hh-=_357.expandSouth.panel("options").height; -}else{ -if(_33d(_357.south)){ -hh-=_357.south.panel("options").height; -} -} -_357.east.panel("resize",{top:28,height:hh}); -_357.west.panel("resize",{top:28,height:hh}); -if(_33d(_357.expandEast)){ -_357.expandEast.panel("resize",{top:28,height:hh}); -} -if(_33d(_357.expandWest)){ -_357.expandWest.panel("resize",{top:28,height:hh}); -} -return {resizeC:{top:28,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_357["north"].panel("options").height,width:cc.width()}}; -}else{ -if(_355=="south"){ -var hh=cc.height()-28; -if(_33d(_357.expandNorth)){ -hh-=_357.expandNorth.panel("options").height; -}else{ -if(_33d(_357.north)){ -hh-=_357.north.panel("options").height; -} -} -_357.east.panel("resize",{height:hh}); -_357.west.panel("resize",{height:hh}); -if(_33d(_357.expandEast)){ -_357.expandEast.panel("resize",{height:hh}); -} -if(_33d(_357.expandWest)){ -_357.expandWest.panel("resize",{height:hh}); -} -return {resizeC:{height:hh},expand:{top:cc.height()-_357["south"].panel("options").height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _361(_362,_363){ -var _364=$.data(_362,"layout").panels; -var _365=_366(); -var p=_364[_363]; -if(p.panel("options").onBeforeExpand.call(p)==false){ -return; -} -var _367="expand"+_363.substring(0,1).toUpperCase()+_363.substring(1); -_364[_367].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_365.collapse); -p.panel("panel").animate(_365.expand,function(){ -_32f(_362); -}); -function _366(){ -var cc=$(_362); -var _368=_364.center.panel("options"); -if(_363=="east"&&_364.expandEast){ -return {collapse:{left:cc.width(),top:_368.top,height:_368.height},expand:{left:cc.width()-_364["east"].panel("options").width}}; -}else{ -if(_363=="west"&&_364.expandWest){ -return {collapse:{left:-_364["west"].panel("options").width,top:_368.top,height:_368.height},expand:{left:0}}; -}else{ -if(_363=="north"&&_364.expandNorth){ -return {collapse:{top:-_364["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_363=="south"&&_364.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_364["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _33d(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _369(_36a){ -var _36b=$.data(_36a,"layout").panels; -if(_36b.east.length&&_36b.east.panel("options").collapsed){ -_353(_36a,"east",0); -} -if(_36b.west.length&&_36b.west.panel("options").collapsed){ -_353(_36a,"west",0); -} -if(_36b.north.length&&_36b.north.panel("options").collapsed){ -_353(_36a,"north",0); -} -if(_36b.south.length&&_36b.south.panel("options").collapsed){ -_353(_36a,"south",0); -} -}; -$.fn.layout=function(_36c,_36d){ -if(typeof _36c=="string"){ -return $.fn.layout.methods[_36c](this,_36d); -} -_36c=_36c||{}; -return this.each(function(){ -var _36e=$.data(this,"layout"); -if(_36e){ -$.extend(_36e.options,_36c); -}else{ -var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_36c); -$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -init(this); -} -_32f(this); -_369(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_32f(this); -}); -},panel:function(jq,_36f){ -return $.data(jq[0],"layout").panels[_36f]; -},collapse:function(jq,_370){ -return jq.each(function(){ -_353(this,_370); -}); -},expand:function(jq,_371){ -return jq.each(function(){ -_361(this,_371); -}); -},add:function(jq,_372){ -return jq.each(function(){ -_341(this,_372); -_32f(this); -if($(this).layout("panel",_372.region).panel("options").collapsed){ -_353(this,_372.region,0); -} -}); -},remove:function(jq,_373){ -return jq.each(function(){ -_34e(this,_373); -_32f(this); -}); -}}; -$.fn.layout.parseOptions=function(_374){ -return $.extend({},$.parser.parseOptions(_374,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_375){ -var t=$(_375); -return $.extend({},$.fn.panel.parseOptions(_375),$.parser.parseOptions(_375,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); -(function($){ -function init(_376){ -$(_376).appendTo("body"); -$(_376).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _377=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_377); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _378=_379($(_376)); -for(var i=0;i<_378.length;i++){ -_37a(_378[i]); -} -function _379(menu){ -var _37b=[]; -menu.addClass("menu"); -_37b.push(menu); -if(!menu.hasClass("menu-content")){ -menu.children("div").each(function(){ -var _37c=$(this).children("div"); -if(_37c.length){ -_37c.insertAfter(_376); -this.submenu=_37c; -var mm=_379(_37c); -_37b=_37b.concat(mm); -} -}); -} -return _37b; -}; -function _37a(menu){ -var _37d=$.parser.parseOptions(menu[0],["width"]).width; -if(menu.hasClass("menu-content")){ -menu[0].originalWidth=_37d||menu._outerWidth(); -}else{ -menu[0].originalWidth=_37d||0; -menu.children("div").each(function(){ -var item=$(this); -if(item.hasClass("menu-sep")){ -}else{ -var _37e=$.extend({},$.parser.parseOptions(this,["name","iconCls","href"]),{disabled:(item.attr("disabled")?true:undefined)}); -item[0].itemName=_37e.name||""; -item[0].itemHref=_37e.href||""; -var text=item.addClass("menu-item").html(); -item.empty().append($("
                                      ").html(text)); -if(_37e.iconCls){ -$("
                                      ").addClass(_37e.iconCls).appendTo(item); -} -if(_37e.disabled){ -_37f(_376,item[0],true); -} -if(item[0].submenu){ -$("
                                      ").appendTo(item); -} -_380(_376,item); -} -}); -$("
                                      ").prependTo(menu); -} -_381(_376,menu); -menu.hide(); -_382(_376,menu); -}; -}; -function _381(_383,menu){ -var opts=$.data(_383,"menu").options; -var d=menu.css("display"); -menu.css({display:"block",left:-10000}); -var _384=0; -menu.find("div.menu-text").each(function(){ -if(_384<$(this)._outerWidth()){ -_384=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_384+=65; -menu._outerWidth(Math.max((menu[0].originalWidth||0),_384,opts.minWidth)); -menu.css("display",d); -}; -function _382(_385,menu){ -var _386=$.data(_385,"menu"); -menu.unbind(".menu").bind("mouseenter.menu",function(){ -if(_386.timer){ -clearTimeout(_386.timer); -_386.timer=null; -} -}).bind("mouseleave.menu",function(){ -_386.timer=setTimeout(function(){ -_387(_385); -},100); -}); -}; -function _380(_388,item){ -item.unbind(".menu"); -item.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_387(_388); -var href=$(this).attr("href"); -if(href){ -location.href=href; -} -} -var item=$(_388).menu("getItem",this); -$.data(_388,"menu").options.onClick.call(_388,item); -}).bind("mouseenter.menu",function(e){ -item.siblings().each(function(){ -if(this.submenu){ -_38b(this.submenu); -} -$(this).removeClass("menu-active"); -}); -item.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -item.addClass("menu-active-disabled"); -return; -} -var _389=item[0].submenu; -if(_389){ -$(_388).menu("show",{menu:_389,parent:item}); -} -}).bind("mouseleave.menu",function(e){ -item.removeClass("menu-active menu-active-disabled"); -var _38a=item[0].submenu; -if(_38a){ -if(e.pageX>=parseInt(_38a.css("left"))){ -item.addClass("menu-active"); -}else{ -_38b(_38a); -} -}else{ -item.removeClass("menu-active"); -} -}); -}; -function _387(_38c){ -var _38d=$.data(_38c,"menu"); -if(_38d){ -if($(_38c).is(":visible")){ -_38b($(_38c)); -_38d.options.onHide.call(_38c); -} -} -return false; -}; -function _38e(_38f,_390){ -var left,top; -_390=_390||{}; -var menu=$(_390.menu||_38f); -if(menu.hasClass("menu-top")){ -var opts=$.data(_38f,"menu").options; -$.extend(opts,_390); -left=opts.left; -top=opts.top; -if(opts.alignTo){ -var at=$(opts.alignTo); -left=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; -} -if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top-=menu.outerHeight(); -} -}else{ -var _391=_390.parent; -left=_391.offset().left+_391.outerWidth()-2; -if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -left=_391.offset().left-menu.outerWidth()+2; -} -var top=_391.offset().top-3; -if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight()-5; -} -} -menu.css({left:left,top:top}); -menu.show(0,function(){ -if(!menu[0].shadow){ -menu[0].shadow=$("
                                      ").insertAfter(menu); -} -menu[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); -menu.css("z-index",$.fn.menu.defaults.zIndex++); -if(menu.hasClass("menu-top")){ -$.data(menu[0],"menu").options.onShow.call(menu[0]); -} -}); -}; -function _38b(menu){ -if(!menu){ -return; -} -_392(menu); -menu.find("div.menu-item").each(function(){ -if(this.submenu){ -_38b(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _392(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _393(_394,text){ -var _395=null; -var tmp=$("
                                      "); -function find(menu){ -menu.children("div.menu-item").each(function(){ -var item=$(_394).menu("getItem",this); -var s=tmp.empty().html(item.text).text(); -if(text==$.trim(s)){ -_395=item; -}else{ -if(this.submenu&&!_395){ -find(this.submenu); -} -} -}); -}; -find($(_394)); -tmp.remove(); -return _395; -}; -function _37f(_396,_397,_398){ -var t=$(_397); -if(_398){ -t.addClass("menu-item-disabled"); -if(_397.onclick){ -_397.onclick1=_397.onclick; -_397.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_397.onclick1){ -_397.onclick=_397.onclick1; -_397.onclick1=null; -} -} -}; -function _399(_39a,_39b){ -var menu=$(_39a); -if(_39b.parent){ -if(!_39b.parent.submenu){ -var _39c=$("
                                      ").appendTo("body"); -_39c.hide(); -_39b.parent.submenu=_39c; -$("
                                      ").appendTo(_39b.parent); -} -menu=_39b.parent.submenu; -} -var item=$("
                                      ").appendTo(menu); -$("
                                      ").html(_39b.text).appendTo(item); -if(_39b.iconCls){ -$("
                                      ").addClass(_39b.iconCls).appendTo(item); -} -if(_39b.id){ -item.attr("id",_39b.id); -} -if(_39b.name){ -item[0].itemName=_39b.name; -} -if(_39b.href){ -item[0].itemHref=_39b.href; -} -if(_39b.onclick){ -if(typeof _39b.onclick=="string"){ -item.attr("onclick",_39b.onclick); -}else{ -item[0].onclick=eval(_39b.onclick); -} -} -if(_39b.handler){ -item[0].onclick=eval(_39b.handler); -} -_380(_39a,item); -if(_39b.disabled){ -_37f(_39a,item[0],true); -} -_382(_39a,menu); -_381(_39a,menu); -}; -function _39d(_39e,_39f){ -function _3a0(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_3a0(this); -}); -var _3a1=el.submenu[0].shadow; -if(_3a1){ -_3a1.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_3a0(_39f); -}; -function _3a2(_3a3){ -$(_3a3).children("div.menu-item").each(function(){ -_39d(_3a3,this); -}); -if(_3a3.shadow){ -_3a3.shadow.remove(); -} -$(_3a3).remove(); -}; -$.fn.menu=function(_3a4,_3a5){ -if(typeof _3a4=="string"){ -return $.fn.menu.methods[_3a4](this,_3a5); -} -_3a4=_3a4||{}; -return this.each(function(){ -var _3a6=$.data(this,"menu"); -if(_3a6){ -$.extend(_3a6.options,_3a4); -}else{ -_3a6=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_3a4)}); -init(this); -} -$(this).css({left:_3a6.options.left,top:_3a6.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_38e(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_387(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_3a2(this); -}); -},setText:function(jq,_3a7){ -return jq.each(function(){ -$(_3a7.target).children("div.menu-text").html(_3a7.text); -}); -},setIcon:function(jq,_3a8){ -return jq.each(function(){ -var item=$(this).menu("getItem",_3a8.target); -if(item.iconCls){ -$(item.target).children("div.menu-icon").removeClass(item.iconCls).addClass(_3a8.iconCls); -}else{ -$("
                                      ").addClass(_3a8.iconCls).appendTo(_3a8.target); -} -}); -},getItem:function(jq,_3a9){ -var t=$(_3a9); -var item={target:_3a9,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_3a9.itemName,href:_3a9.itemHref,onclick:_3a9.onclick}; -var icon=t.children("div.menu-icon"); -if(icon.length){ -var cc=[]; -var aa=icon.attr("class").split(" "); -for(var i=0;i "})); -if(opts.menu){ -$(opts.menu).menu(); -var _3b0=$(opts.menu).menu("options"); -var _3b1=_3b0.onShow; -var _3b2=_3b0.onHide; -$.extend(_3b0,{onShow:function(){ -var _3b3=$(this).menu("options"); -var btn=$(_3b3.alignTo); -var opts=btn.menubutton("options"); -btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); -_3b1.call(this); -},onHide:function(){ -var _3b4=$(this).menu("options"); -var btn=$(_3b4.alignTo); -var opts=btn.menubutton("options"); -btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); -_3b2.call(this); -}}); -} -_3b5(_3af,opts.disabled); -}; -function _3b5(_3b6,_3b7){ -var opts=$.data(_3b6,"menubutton").options; -opts.disabled=_3b7; -var btn=$(_3b6); -var t=btn.find("."+opts.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_3b7){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _3b8=null; -t.bind("click.menubutton",function(){ -_3b9(_3b6); -return false; -}).bind("mouseenter.menubutton",function(){ -_3b8=setTimeout(function(){ -_3b9(_3b6); -},opts.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_3b8){ -clearTimeout(_3b8); -} -}); -} -}; -function _3b9(_3ba){ -var opts=$.data(_3ba,"menubutton").options; -if(opts.disabled||!opts.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_3ba); -var mm=$(opts.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_3bb,_3bc){ -if(typeof _3bb=="string"){ -var _3bd=$.fn.menubutton.methods[_3bb]; -if(_3bd){ -return _3bd(this,_3bc); -}else{ -return this.linkbutton(_3bb,_3bc); -} -} -_3bb=_3bb||{}; -return this.each(function(){ -var _3be=$.data(this,"menubutton"); -if(_3be){ -$.extend(_3be.options,_3bb); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_3bb)}); -$(this).removeAttr("disabled"); -} -init(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _3bf=jq.linkbutton("options"); -var _3c0=$.data(jq[0],"menubutton").options; -_3c0.toggle=_3bf.toggle; -_3c0.selected=_3bf.selected; -return _3c0; -},enable:function(jq){ -return jq.each(function(){ -_3b5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_3b5(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var opts=$(this).menubutton("options"); -if(opts.menu){ -$(opts.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_3c1){ -var t=$(_3c1); -return $.extend({},$.fn.linkbutton.parseOptions(_3c1),$.parser.parseOptions(_3c1,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); -(function($){ -function init(_3c2){ -var opts=$.data(_3c2,"splitbutton").options; -$(_3c2).menubutton(opts); -}; -$.fn.splitbutton=function(_3c3,_3c4){ -if(typeof _3c3=="string"){ -var _3c5=$.fn.splitbutton.methods[_3c3]; -if(_3c5){ -return _3c5(this,_3c4); -}else{ -return this.menubutton(_3c3,_3c4); -} -} -_3c3=_3c3||{}; -return this.each(function(){ -var _3c6=$.data(this,"splitbutton"); -if(_3c6){ -$.extend(_3c6.options,_3c3); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_3c3)}); -$(this).removeAttr("disabled"); -} -init(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _3c7=jq.menubutton("options"); -var _3c8=$.data(jq[0],"splitbutton").options; -$.extend(_3c8,{disabled:_3c7.disabled,toggle:_3c7.toggle,selected:_3c7.selected}); -return _3c8; -}}; -$.fn.splitbutton.parseOptions=function(_3c9){ -var t=$(_3c9); -return $.extend({},$.fn.linkbutton.parseOptions(_3c9),$.parser.parseOptions(_3c9,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); -(function($){ -function init(_3ca){ -$(_3ca).hide(); -var span=$("").insertAfter(_3ca); -var _3cb=$("").appendTo(span); -$("").appendTo(span); -var name=$(_3ca).attr("name"); -if(name){ -_3cb.attr("name",name); -$(_3ca).removeAttr("name").attr("searchboxName",name); -} -return span; -}; -function _3cc(_3cd,_3ce){ -var opts=$.data(_3cd,"searchbox").options; -var sb=$.data(_3cd,"searchbox").searchbox; -if(_3ce){ -opts.width=_3ce; -} -sb.appendTo("body"); -if(isNaN(opts.width)){ -opts.width=sb._outerWidth(); -} -var _3cf=sb.find("span.searchbox-button"); -var menu=sb.find("a.searchbox-menu"); -var _3d0=sb.find("input.searchbox-text"); -sb._outerWidth(opts.width)._outerHeight(opts.height); -_3d0._outerWidth(sb.width()-menu._outerWidth()-_3cf._outerWidth()); -_3d0.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -menu._outerHeight(sb.height()); -_3cf._outerHeight(sb.height()); -var _3d1=menu.find("span.l-btn-left"); -_3d1._outerHeight(sb.height()); -_3d1.find("span.l-btn-text,span.m-btn-downarrow").css({height:_3d1.height()+"px",lineHeight:_3d1.height()+"px"}); -sb.insertAfter(_3cd); -}; -function _3d2(_3d3){ -var _3d4=$.data(_3d3,"searchbox"); -var opts=_3d4.options; -if(opts.menu){ -_3d4.menu=$(opts.menu).menu({onClick:function(item){ -_3d5(item); -}}); -var item=_3d4.menu.children("div.menu-item:first"); -_3d4.menu.children("div.menu-item").each(function(){ -var _3d6=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_3d6.selected){ -item=$(this); -return false; -} -}); -item.triggerHandler("click"); -}else{ -_3d4.searchbox.find("a.searchbox-menu").remove(); -_3d4.menu=null; -} -function _3d5(item){ -_3d4.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(item.text); -mb.prependTo(_3d4.searchbox).menubutton({menu:_3d4.menu,iconCls:item.iconCls}); -_3d4.searchbox.find("input.searchbox-text").attr("name",$(item.target).attr("name")||item.text); -_3cc(_3d3); -}; -}; -function _3d7(_3d8){ -var _3d9=$.data(_3d8,"searchbox"); -var opts=_3d9.options; -var _3da=_3d9.searchbox.find("input.searchbox-text"); -var _3db=_3d9.searchbox.find(".searchbox-button"); -_3da.unbind(".searchbox").bind("blur.searchbox",function(e){ -opts.value=$(this).val(); -if(opts.value==""){ -$(this).val(opts.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=opts.value){ -$(this).val(opts.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -var name=$.fn.prop?_3da.prop("name"):_3da.attr("name"); -opts.value=$(this).val(); -opts.searcher.call(_3d8,opts.value,name); -return false; -} -}); -_3db.unbind(".searchbox").bind("click.searchbox",function(){ -var name=$.fn.prop?_3da.prop("name"):_3da.attr("name"); -opts.searcher.call(_3d8,opts.value,name); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _3dc(_3dd){ -var _3de=$.data(_3dd,"searchbox"); -var opts=_3de.options; -var _3df=_3de.searchbox.find("input.searchbox-text"); -if(opts.value==""){ -_3df.val(opts.prompt); -_3df.addClass("searchbox-prompt"); -}else{ -_3df.val(opts.value); -_3df.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_3e0,_3e1){ -if(typeof _3e0=="string"){ -return $.fn.searchbox.methods[_3e0](this,_3e1); -} -_3e0=_3e0||{}; -return this.each(function(){ -var _3e2=$.data(this,"searchbox"); -if(_3e2){ -$.extend(_3e2.options,_3e0); -}else{ -_3e2=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_3e0),searchbox:init(this)}); -} -_3d2(this); -_3dc(this); -_3d7(this); -_3cc(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_3e3){ -return jq.each(function(){ -$(this).searchbox("options").value=_3e3; -$(this).searchbox("textbox").val(_3e3); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,name){ -return jq.each(function(){ -var menu=$.data(this,"searchbox").menu; -if(menu){ -menu.children("div.menu-item[name=\""+name+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var menu=$(this).searchbox("menu"); -if(menu){ -menu.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_3e4){ -return jq.each(function(){ -_3cc(this,_3e4); -}); -}}; -$.fn.searchbox.parseOptions=function(_3e5){ -var t=$(_3e5); -return $.extend({},$.parser.parseOptions(_3e5,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_3e6,name){ -}}; -})(jQuery); -(function($){ -function init(_3e7){ -$(_3e7).addClass("validatebox-text"); -}; -function _3e8(_3e9){ -var _3ea=$.data(_3e9,"validatebox"); -_3ea.validating=false; -$(_3e9).tooltip("destroy"); -$(_3e9).unbind(); -$(_3e9).remove(); -}; -function _3eb(_3ec){ -var box=$(_3ec); -var _3ed=$.data(_3ec,"validatebox"); -box.unbind(".validatebox"); -if(_3ed.options.novalidate){ -return; -} -box.bind("focus.validatebox",function(){ -_3ed.validating=true; -_3ed.value=undefined; -(function(){ -if(_3ed.validating){ -if(_3ed.value!=box.val()){ -_3ed.value=box.val(); -if(_3ed.timer){ -clearTimeout(_3ed.timer); -} -_3ed.timer=setTimeout(function(){ -$(_3ec).validatebox("validate"); -},_3ed.options.delay); -}else{ -_3f2(_3ec); -} -setTimeout(arguments.callee,200); -} -})(); -}).bind("blur.validatebox",function(){ -if(_3ed.timer){ -clearTimeout(_3ed.timer); -_3ed.timer=undefined; -} -_3ed.validating=false; -_3ee(_3ec); -}).bind("mouseenter.validatebox",function(){ -if(box.hasClass("validatebox-invalid")){ -_3ef(_3ec); -} -}).bind("mouseleave.validatebox",function(){ -if(!_3ed.validating){ -_3ee(_3ec); -} -}); -}; -function _3ef(_3f0){ -var _3f1=$.data(_3f0,"validatebox"); -var opts=_3f1.options; -$(_3f0).tooltip($.extend({},opts.tipOptions,{content:_3f1.message,position:opts.tipPosition,deltaX:opts.deltaX})).tooltip("show"); -_3f1.tip=true; -}; -function _3f2(_3f3){ -var _3f4=$.data(_3f3,"validatebox"); -if(_3f4&&_3f4.tip){ -$(_3f3).tooltip("reposition"); -} -}; -function _3ee(_3f5){ -var _3f6=$.data(_3f5,"validatebox"); -_3f6.tip=false; -$(_3f5).tooltip("hide"); -}; -function _3f7(_3f8){ -var _3f9=$.data(_3f8,"validatebox"); -var opts=_3f9.options; -var box=$(_3f8); -var _3fa=box.val(); -function _3fb(msg){ -_3f9.message=msg; -}; -function _3fc(_3fd){ -var _3fe=/([a-zA-Z_]+)(.*)/.exec(_3fd); -var rule=opts.rules[_3fe[1]]; -if(rule&&_3fa){ -var _3ff=eval(_3fe[2]); -if(!rule["validator"](_3fa,_3ff)){ -box.addClass("validatebox-invalid"); -var _400=rule["message"]; -if(_3ff){ -for(var i=0;i<_3ff.length;i++){ -_400=_400.replace(new RegExp("\\{"+i+"\\}","g"),_3ff[i]); -} -} -_3fb(opts.invalidMessage||_400); -if(_3f9.validating){ -_3ef(_3f8); -} -return false; -} -} -return true; -}; -if(opts.novalidate||box.is(":disabled")){ -return true; -} -if(opts.required){ -if(_3fa==""){ -box.addClass("validatebox-invalid"); -_3fb(opts.missingMessage); -if(_3f9.validating){ -_3ef(_3f8); -} -return false; -} -} -if(opts.validType){ -if(typeof opts.validType=="string"){ -if(!_3fc(opts.validType)){ -return false; -} -}else{ -for(var i=0;i=_40b[0]&&len<=_40b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_40c,_40d){ -var data={}; -data[_40d[1]]=_40c; -var _40e=$.ajax({url:_40d[0],dataType:"json",data:data,async:false,cache:false,type:"post"}).responseText; -return _40e=="true"; -},message:"Please fix this field."}}}; -})(jQuery); -(function($){ -function _40f(_410,_411){ -_411=_411||{}; -var _412={}; -if(_411.onSubmit){ -if(_411.onSubmit.call(_410,_412)==false){ -return; -} -} -var form=$(_410); -if(_411.url){ -form.attr("action",_411.url); -} -var _413="easyui_frame_"+(new Date().getTime()); -var _414=$("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=form.attr("target"),a=form.attr("action"); -form.attr("target",_413); -var _415=$(); -try{ -_414.appendTo("body"); -_414.bind("load",cb); -for(var n in _412){ -var f=$("").val(_412[n]).appendTo(form); -_415=_415.add(f); -} -form[0].submit(); -} -finally{ -form.attr("action",a); -t?form.attr("target",t):form.removeAttr("target"); -_415.remove(); -} -var _416=10; -function cb(){ -_414.unbind(); -var body=$("#"+_413).contents().find("body"); -var data=body.html(); -if(data==""){ -if(--_416){ -setTimeout(cb,100); -return; -} -return; -} -var ta=body.find(">textarea"); -if(ta.length){ -data=ta.val(); -}else{ -var pre=body.find(">pre"); -if(pre.length){ -data=pre.html(); -} -} -if(_411.success){ -_411.success(data); -} -setTimeout(function(){ -_414.unbind(); -_414.remove(); -},100); -}; -}; -function load(_417,data){ -if(!$.data(_417,"form")){ -$.data(_417,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var opts=$.data(_417,"form").options; -if(typeof data=="string"){ -var _418={}; -if(opts.onBeforeLoad.call(_417,_418)==false){ -return; -} -$.ajax({url:data,data:_418,dataType:"json",success:function(data){ -_419(data); -},error:function(){ -opts.onLoadError.apply(_417,arguments); -}}); -}else{ -_419(data); -} -function _419(data){ -var form=$(_417); -for(var name in data){ -var val=data[name]; -var rr=_41a(name,val); -if(!rr.length){ -var f=form.find("input[numberboxName=\""+name+"\"]"); -if(f.length){ -f.numberbox("setValue",val); -}else{ -$("input[name=\""+name+"\"]",form).val(val); -$("textarea[name=\""+name+"\"]",form).val(val); -$("select[name=\""+name+"\"]",form).val(val); -} -} -_41b(name,val); -} -opts.onLoadSuccess.call(_417,data); -_41e(_417); -}; -function _41a(name,val){ -var rr=$(_417).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),val)>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _41b(name,val){ -var form=$(_417); -var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"]; -var c=form.find("[comboName=\""+name+"\"]"); -if(c.length){ -for(var i=0;i").insertAfter(_42e); -var name=$(_42e).attr("name"); -if(name){ -v.attr("name",name); -$(_42e).removeAttr("name").attr("numberboxName",name); -} -return v; -}; -function _42f(_430){ -var opts=$.data(_430,"numberbox").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_431(_430,opts.parser.call(_430,opts.value)); -opts.onChange=fn; -opts.originalValue=_432(_430); -}; -function _432(_433){ -return $.data(_433,"numberbox").field.val(); -}; -function _431(_434,_435){ -var _436=$.data(_434,"numberbox"); -var opts=_436.options; -var _437=_432(_434); -_435=opts.parser.call(_434,_435); -opts.value=_435; -_436.field.val(_435); -$(_434).val(opts.formatter.call(_434,_435)); -if(_437!=_435){ -opts.onChange.call(_434,_435,_437); -} -}; -function _438(_439){ -var opts=$.data(_439,"numberbox").options; -$(_439).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return opts.filter.call(_439,e); -}).bind("blur.numberbox",function(){ -_431(_439,$(this).val()); -$(this).val(opts.formatter.call(_439,_432(_439))); -}).bind("focus.numberbox",function(){ -var vv=_432(_439); -if(vv!=opts.parser.call(_439,$(this).val())){ -$(this).val(opts.formatter.call(_439,vv)); -} -}); -}; -function _43a(_43b){ -if($.fn.validatebox){ -var opts=$.data(_43b,"numberbox").options; -$(_43b).validatebox(opts); -} -}; -function _43c(_43d,_43e){ -var opts=$.data(_43d,"numberbox").options; -if(_43e){ -opts.disabled=true; -$(_43d).attr("disabled",true); -}else{ -opts.disabled=false; -$(_43d).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_43f,_440){ -if(typeof _43f=="string"){ -var _441=$.fn.numberbox.methods[_43f]; -if(_441){ -return _441(this,_440); -}else{ -return this.validatebox(_43f,_440); -} -} -_43f=_43f||{}; -return this.each(function(){ -var _442=$.data(this,"numberbox"); -if(_442){ -$.extend(_442.options,_43f); -}else{ -_442=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_43f),field:init(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_43c(this,_442.options.disabled); -_438(this); -_43a(this); -_42f(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_43c(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_43c(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_431(this,$(this).val()); -}); -},setValue:function(jq,_443){ -return jq.each(function(){ -_431(this,_443); -}); -},getValue:function(jq){ -return _432(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _444=$.data(this,"numberbox"); -_444.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).numberbox("options"); -$(this).numberbox("setValue",opts.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_445){ -var t=$(_445); -return $.extend({},$.fn.validatebox.parseOptions(_445),$.parser.parseOptions(_445,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var opts=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==opts.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==opts.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_446){ -if(!_446){ -return _446; -} -_446=_446+""; -var opts=$(this).numberbox("options"); -var s1=_446,s2=""; -var dpos=_446.indexOf("."); -if(dpos>=0){ -s1=_446.substring(0,dpos); -s2=_446.substring(dpos+1,_446.length); -} -if(opts.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); -} -} -if(s2){ -return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; -}else{ -return opts.prefix+s1+opts.suffix; -} -},parser:function(s){ -s=s+""; -var opts=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(opts.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); -} -if(opts.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); -} -if(opts.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); -} -if(opts.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(opts.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (opts.min)=="number"&&valopts.max){ -val=opts.max.toFixed(opts.precision); -} -} -} -return val; -},onChange:function(_447,_448){ -}}); -})(jQuery); -(function($){ -function _449(_44a){ -var opts=$.data(_44a,"calendar").options; -var t=$(_44a); -opts.fit?$.extend(opts,t._fit()):t._fit(false); -var _44b=t.find(".calendar-header"); -t._outerWidth(opts.width); -t._outerHeight(opts.height); -t.find(".calendar-body")._outerHeight(t.height()-_44b._outerHeight()); -}; -function init(_44c){ -$(_44c).addClass("calendar").html("
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"Aprial 2010"+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+""+""+""+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "); -$(_44c).find(".calendar-title span").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var menu=$(_44c).find(".calendar-menu"); -if(menu.is(":visible")){ -menu.hide(); -}else{ -_453(_44c); -} -}); -$(".calendar-prevmonth,.calendar-nextmonth,.calendar-prevyear,.calendar-nextyear",_44c).hover(function(){ -$(this).addClass("calendar-nav-hover"); -},function(){ -$(this).removeClass("calendar-nav-hover"); -}); -$(_44c).find(".calendar-nextmonth").click(function(){ -_44d(_44c,1); -}); -$(_44c).find(".calendar-prevmonth").click(function(){ -_44d(_44c,-1); -}); -$(_44c).find(".calendar-nextyear").click(function(){ -_450(_44c,1); -}); -$(_44c).find(".calendar-prevyear").click(function(){ -_450(_44c,-1); -}); -$(_44c).bind("_resize",function(){ -var opts=$.data(_44c,"calendar").options; -if(opts.fit==true){ -_449(_44c); -} -return false; -}); -}; -function _44d(_44e,_44f){ -var opts=$.data(_44e,"calendar").options; -opts.month+=_44f; -if(opts.month>12){ -opts.year++; -opts.month=1; -}else{ -if(opts.month<1){ -opts.year--; -opts.month=12; -} -} -show(_44e); -var menu=$(_44e).find(".calendar-menu-month-inner"); -menu.find("td.calendar-selected").removeClass("calendar-selected"); -menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); -}; -function _450(_451,_452){ -var opts=$.data(_451,"calendar").options; -opts.year+=_452; -show(_451); -var menu=$(_451).find(".calendar-menu-year"); -menu.val(opts.year); -}; -function _453(_454){ -var opts=$.data(_454,"calendar").options; -$(_454).find(".calendar-menu").show(); -if($(_454).find(".calendar-menu-month-inner").is(":empty")){ -$(_454).find(".calendar-menu-month-inner").empty(); -var t=$("
                                      ").appendTo($(_454).find(".calendar-menu-month-inner")); -var idx=0; -for(var i=0;i<3;i++){ -var tr=$("").appendTo(t); -for(var j=0;j<4;j++){ -$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); -} -} -$(_454).find(".calendar-menu-prev,.calendar-menu-next").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}); -$(_454).find(".calendar-menu-next").click(function(){ -var y=$(_454).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val())+1); -} -}); -$(_454).find(".calendar-menu-prev").click(function(){ -var y=$(_454).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val()-1)); -} -}); -$(_454).find(".calendar-menu-year").keypress(function(e){ -if(e.keyCode==13){ -_455(); -} -}); -$(_454).find(".calendar-menu-month").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var menu=$(_454).find(".calendar-menu"); -menu.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -_455(); -}); -} -function _455(){ -var menu=$(_454).find(".calendar-menu"); -var year=menu.find(".calendar-menu-year").val(); -var _456=menu.find(".calendar-selected").attr("abbr"); -if(!isNaN(year)){ -opts.year=parseInt(year); -opts.month=parseInt(_456); -show(_454); -} -menu.hide(); -}; -var body=$(_454).find(".calendar-body"); -var sele=$(_454).find(".calendar-menu"); -var _457=sele.find(".calendar-menu-year-inner"); -var _458=sele.find(".calendar-menu-month-inner"); -_457.find("input").val(opts.year).focus(); -_458.find("td.calendar-selected").removeClass("calendar-selected"); -_458.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); -sele._outerWidth(body._outerWidth()); -sele._outerHeight(body._outerHeight()); -_458._outerHeight(sele.height()-_457._outerHeight()); -}; -function _459(_45a,year,_45b){ -var opts=$.data(_45a,"calendar").options; -var _45c=[]; -var _45d=new Date(year,_45b,0).getDate(); -for(var i=1;i<=_45d;i++){ -_45c.push([year,_45b,i]); -} -var _45e=[],week=[]; -var _45f=-1; -while(_45c.length>0){ -var date=_45c.shift(); -week.push(date); -var day=new Date(date[0],date[1]-1,date[2]).getDay(); -if(_45f==day){ -day=0; -}else{ -if(day==(opts.firstDay==0?7:opts.firstDay)-1){ -_45e.push(week); -week=[]; -} -} -_45f=day; -} -if(week.length){ -_45e.push(week); -} -var _460=_45e[0]; -if(_460.length<7){ -while(_460.length<7){ -var _461=_460[0]; -var date=new Date(_461[0],_461[1]-1,_461[2]-1); -_460.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -}else{ -var _461=_460[0]; -var week=[]; -for(var i=1;i<=7;i++){ -var date=new Date(_461[0],_461[1]-1,_461[2]-i); -week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -_45e.unshift(week); -} -var _462=_45e[_45e.length-1]; -while(_462.length<7){ -var _463=_462[_462.length-1]; -var date=new Date(_463[0],_463[1]-1,_463[2]+1); -_462.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -if(_45e.length<6){ -var _463=_462[_462.length-1]; -var week=[]; -for(var i=1;i<=7;i++){ -var date=new Date(_463[0],_463[1]-1,_463[2]+i); -week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -_45e.push(week); -} -return _45e; -}; -function show(_464){ -var opts=$.data(_464,"calendar").options; -$(_464).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); -var body=$(_464).find("div.calendar-body"); -body.find(">table").remove(); -var t=$("
                                      ").prependTo(body); -var tr=$("").appendTo(t.find("thead")); -for(var i=opts.firstDay;i"+opts.weeks[i]+""); -} -for(var i=0;i"+opts.weeks[i]+""); -} -var _465=_459(_464,opts.year,opts.month); -for(var i=0;i<_465.length;i++){ -var week=_465[i]; -var tr=$("").appendTo(t.find("tbody")); -for(var j=0;j").attr("abbr",day[0]+","+day[1]+","+day[2]).html(day[2]).appendTo(tr); -} -} -t.find("td[abbr^=\""+opts.year+","+opts.month+"\"]").removeClass("calendar-other-month"); -var now=new Date(); -var _466=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); -t.find("td[abbr=\""+_466+"\"]").addClass("calendar-today"); -if(opts.current){ -t.find(".calendar-selected").removeClass("calendar-selected"); -var _467=opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate(); -t.find("td[abbr=\""+_467+"\"]").addClass("calendar-selected"); -} -var _468=6-opts.firstDay; -var _469=_468+1; -if(_468>=7){ -_468-=7; -} -if(_469>=7){ -_469-=7; -} -t.find("tr").find("td:eq("+_468+")").addClass("calendar-saturday"); -t.find("tr").find("td:eq("+_469+")").addClass("calendar-sunday"); -t.find("td").hover(function(){ -$(this).addClass("calendar-hover"); -},function(){ -$(this).removeClass("calendar-hover"); -}).click(function(){ -t.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -var _46a=$(this).attr("abbr").split(","); -opts.current=new Date(_46a[0],parseInt(_46a[1])-1,_46a[2]); -opts.onSelect.call(_464,opts.current); -}); -}; -$.fn.calendar=function(_46b,_46c){ -if(typeof _46b=="string"){ -return $.fn.calendar.methods[_46b](this,_46c); -} -_46b=_46b||{}; -return this.each(function(){ -var _46d=$.data(this,"calendar"); -if(_46d){ -$.extend(_46d.options,_46b); -}else{ -_46d=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_46b)}); -init(this); -} -if(_46d.options.border==false){ -$(this).addClass("calendar-noborder"); -} -_449(this); -show(this); -$(this).find("div.calendar-menu").hide(); -}); -}; -$.fn.calendar.methods={options:function(jq){ -return $.data(jq[0],"calendar").options; -},resize:function(jq){ -return jq.each(function(){ -_449(this); -}); -},moveTo:function(jq,date){ -return jq.each(function(){ -$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); -}); -}}; -$.fn.calendar.parseOptions=function(_46e){ -var t=$(_46e); -return $.extend({},$.parser.parseOptions(_46e,["width","height",{firstDay:"number",fit:"boolean",border:"boolean"}])); -}; -$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date(),onSelect:function(date){ -}}; -})(jQuery); -(function($){ -function init(_46f){ -var _470=$(""+""+""+""+""+"").insertAfter(_46f); -$(_46f).addClass("spinner-text spinner-f").prependTo(_470); -return _470; -}; -function _471(_472,_473){ -var opts=$.data(_472,"spinner").options; -var _474=$.data(_472,"spinner").spinner; -if(_473){ -opts.width=_473; -} -var _475=$("
                                      ").insertBefore(_474); -_474.appendTo("body"); -if(isNaN(opts.width)){ -opts.width=$(_472).outerWidth(); -} -var _476=_474.find(".spinner-arrow"); -_474._outerWidth(opts.width)._outerHeight(opts.height); -$(_472)._outerWidth(_474.width()-_476.outerWidth()); -$(_472).css({height:_474.height()+"px",lineHeight:_474.height()+"px"}); -_476._outerHeight(_474.height()); -_476.find("span")._outerHeight(_476.height()/2); -_474.insertAfter(_475); -_475.remove(); -}; -function _477(_478){ -var opts=$.data(_478,"spinner").options; -var _479=$.data(_478,"spinner").spinner; -_479.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!opts.disabled){ -_479.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -opts.spin.call(_478,false); -opts.onSpinUp.call(_478); -$(_478).validatebox("validate"); -}); -_479.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -opts.spin.call(_478,true); -opts.onSpinDown.call(_478); -$(_478).validatebox("validate"); -}); -} -}; -function _47a(_47b,_47c){ -var opts=$.data(_47b,"spinner").options; -if(_47c){ -opts.disabled=true; -$(_47b).attr("disabled",true); -}else{ -opts.disabled=false; -$(_47b).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_47d,_47e){ -if(typeof _47d=="string"){ -var _47f=$.fn.spinner.methods[_47d]; -if(_47f){ -return _47f(this,_47e); -}else{ -return this.validatebox(_47d,_47e); -} -} -_47d=_47d||{}; -return this.each(function(){ -var _480=$.data(this,"spinner"); -if(_480){ -$.extend(_480.options,_47d); -}else{ -_480=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_47d),spinner:init(this)}); -$(this).removeAttr("disabled"); -} -_480.options.originalValue=_480.options.value; -$(this).val(_480.options.value); -$(this).attr("readonly",!_480.options.editable); -_47a(this,_480.options.disabled); -_471(this); -$(this).validatebox(_480.options); -_477(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var opts=$.data(jq[0],"spinner").options; -return $.extend(opts,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _481=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_481.remove(); -}); -},resize:function(jq,_482){ -return jq.each(function(){ -_471(this,_482); -}); -},enable:function(jq){ -return jq.each(function(){ -_47a(this,false); -_477(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_47a(this,true); -_477(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_483){ -return jq.each(function(){ -var opts=$.data(this,"spinner").options; -opts.value=_483; -$(this).val(_483); -}); -},clear:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"spinner").options; -opts.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).spinner("options"); -$(this).spinner("setValue",opts.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_484){ -var t=$(_484); -return $.extend({},$.fn.validatebox.parseOptions(_484),$.parser.parseOptions(_484,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(down){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); -(function($){ -function _485(_486){ -$(_486).addClass("numberspinner-f"); -var opts=$.data(_486,"numberspinner").options; -$(_486).spinner(opts).numberbox(opts); -}; -function _487(_488,down){ -var opts=$.data(_488,"numberspinner").options; -var v=parseFloat($(_488).numberbox("getValue")||opts.value)||0; -if(down==true){ -v-=opts.increment; -}else{ -v+=opts.increment; -} -$(_488).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_489,_48a){ -if(typeof _489=="string"){ -var _48b=$.fn.numberspinner.methods[_489]; -if(_48b){ -return _48b(this,_48a); -}else{ -return this.spinner(_489,_48a); -} -} -_489=_489||{}; -return this.each(function(){ -var _48c=$.data(this,"numberspinner"); -if(_48c){ -$.extend(_48c.options,_489); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_489)}); -} -_485(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var opts=$.data(jq[0],"numberspinner").options; -return $.extend(opts,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_48d){ -return jq.each(function(){ -$(this).numberbox("setValue",_48d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).numberspinner("options"); -$(this).numberspinner("setValue",opts.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_48e){ -return $.extend({},$.fn.spinner.parseOptions(_48e),$.fn.numberbox.parseOptions(_48e),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ -_487(this,down); -}}); -})(jQuery); -(function($){ -function _48f(_490){ -var opts=$.data(_490,"timespinner").options; -$(_490).addClass("timespinner-f"); -$(_490).spinner(opts); -$(_490).unbind(".timespinner"); -$(_490).bind("click.timespinner",function(){ -var _491=0; -if(this.selectionStart!=null){ -_491=this.selectionStart; -}else{ -if(this.createTextRange){ -var _492=_490.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_492); -_491=s.text.length; -} -} -if(_491>=0&&_491<=2){ -opts.highlight=0; -}else{ -if(_491>=3&&_491<=5){ -opts.highlight=1; -}else{ -if(_491>=6&&_491<=8){ -opts.highlight=2; -} -} -} -_494(_490); -}).bind("blur.timespinner",function(){ -_493(_490); -}); -}; -function _494(_495){ -var opts=$.data(_495,"timespinner").options; -var _496=0,end=0; -if(opts.highlight==0){ -_496=0; -end=2; -}else{ -if(opts.highlight==1){ -_496=3; -end=5; -}else{ -if(opts.highlight==2){ -_496=6; -end=8; -} -} -} -if(_495.selectionStart!=null){ -_495.setSelectionRange(_496,end); -}else{ -if(_495.createTextRange){ -var _497=_495.createTextRange(); -_497.collapse(); -_497.moveEnd("character",end); -_497.moveStart("character",_496); -_497.select(); -} -} -$(_495).focus(); -}; -function _498(_499,_49a){ -var opts=$.data(_499,"timespinner").options; -if(!_49a){ -return null; -} -var vv=_49a.split(opts.separator); -for(var i=0;itime){ -time=_49d; -} -if(_49e&&_49e"]; -for(var i=0;i<_4b1.length;i++){ -_4b0.cache[_4b1[i][0]]={width:_4b1[i][1]}; -} -var _4b2=0; -for(var s in _4b0.cache){ -var item=_4b0.cache[s]; -item.index=_4b2++; -ss.push(s+"{width:"+item.width+"}"); -} -ss.push(""); -$(ss.join("\n")).appendTo(cc); -setTimeout(function(){ -cc.children("style:not(:last)").remove(); -},0); -},getRule:function(_4b3){ -var _4b4=cc.children("style:last")[0]; -var _4b5=_4b4.styleSheet?_4b4.styleSheet:(_4b4.sheet||document.styleSheets[document.styleSheets.length-1]); -var _4b6=_4b5.cssRules||_4b5.rules; -return _4b6[_4b3]; -},set:function(_4b7,_4b8){ -var item=_4b0.cache[_4b7]; -if(item){ -item.width=_4b8; -var rule=this.getRule(item.index); -if(rule){ -rule.style["width"]=_4b8; -} -} -},remove:function(_4b9){ -var tmp=[]; -for(var s in _4b0.cache){ -if(s.indexOf(_4b9)==-1){ -tmp.push([s,_4b0.cache[s].width]); -} -} -_4b0.cache={}; -this.add(tmp); -},dirty:function(_4ba){ -if(_4ba){ -_4b0.dirty.push(_4ba); -} -},clean:function(){ -for(var i=0;i<_4b0.dirty.length;i++){ -this.remove(_4b0.dirty[i]); -} -_4b0.dirty=[]; -}}; -}; -function _4bb(_4bc,_4bd){ -var opts=$.data(_4bc,"datagrid").options; -var _4be=$.data(_4bc,"datagrid").panel; -if(_4bd){ -if(_4bd.width){ -opts.width=_4bd.width; -} -if(_4bd.height){ -opts.height=_4bd.height; -} -} -if(opts.fit==true){ -var p=_4be.panel("panel").parent(); -opts.width=p.width(); -opts.height=p.height(); -} -_4be.panel("resize",{width:opts.width,height:opts.height}); -}; -function _4bf(_4c0){ -var opts=$.data(_4c0,"datagrid").options; -var dc=$.data(_4c0,"datagrid").dc; -var wrap=$.data(_4c0,"datagrid").panel; -var _4c1=wrap.width(); -var _4c2=wrap.height(); -var view=dc.view; -var _4c3=dc.view1; -var _4c4=dc.view2; -var _4c5=_4c3.children("div.datagrid-header"); -var _4c6=_4c4.children("div.datagrid-header"); -var _4c7=_4c5.find("table"); -var _4c8=_4c6.find("table"); -view.width(_4c1); -var _4c9=_4c5.children("div.datagrid-header-inner").show(); -_4c3.width(_4c9.find("table").width()); -if(!opts.showHeader){ -_4c9.hide(); -} -_4c4.width(_4c1-_4c3._outerWidth()); -_4c3.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_4c3.width()); -_4c4.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_4c4.width()); -var hh; -_4c5.css("height",""); -_4c6.css("height",""); -_4c7.css("height",""); -_4c8.css("height",""); -hh=Math.max(_4c7.height(),_4c8.height()); -_4c7.height(hh); -_4c8.height(hh); -_4c5.add(_4c6)._outerHeight(hh); -if(opts.height!="auto"){ -var _4ca=_4c2-_4c4.children("div.datagrid-header")._outerHeight()-_4c4.children("div.datagrid-footer")._outerHeight()-wrap.children("div.datagrid-toolbar")._outerHeight(); -wrap.children("div.datagrid-pager").each(function(){ -_4ca-=$(this)._outerHeight(); -}); -dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); -var _4cb=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); -_4c3.add(_4c4).children("div.datagrid-body").css({marginTop:_4cb,height:(_4ca-_4cb)}); -} -view.height(_4c4.height()); -}; -function _4cc(_4cd,_4ce,_4cf){ -var rows=$.data(_4cd,"datagrid").data.rows; -var opts=$.data(_4cd,"datagrid").options; -var dc=$.data(_4cd,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_4cf)){ -if(_4ce!=undefined){ -var tr1=opts.finder.getTr(_4cd,_4ce,"body",1); -var tr2=opts.finder.getTr(_4cd,_4ce,"body",2); -_4d0(tr1,tr2); -}else{ -var tr1=opts.finder.getTr(_4cd,0,"allbody",1); -var tr2=opts.finder.getTr(_4cd,0,"allbody",2); -_4d0(tr1,tr2); -if(opts.showFooter){ -var tr1=opts.finder.getTr(_4cd,0,"allfooter",1); -var tr2=opts.finder.getTr(_4cd,0,"allfooter",2); -_4d0(tr1,tr2); -} -} -} -_4bf(_4cd); -if(opts.height=="auto"){ -var _4d1=dc.body1.parent(); -var _4d2=dc.body2; -var _4d3=_4d4(_4d2); -var _4d5=_4d3.height; -if(_4d3.width>_4d2.width()){ -_4d5+=18; -} -_4d1.height(_4d5); -_4d2.height(_4d5); -dc.view.height(dc.view2.height()); -} -dc.body2.triggerHandler("scroll"); -function _4d0(trs1,trs2){ -for(var i=0;i"); -} -_4dd(true); -_4dd(false); -_4bf(_4da); -function _4dd(_4de){ -var _4df=_4de?1:2; -var tr=opts.finder.getTr(_4da,_4db,"body",_4df); -(_4de?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); -}; -}; -function _4e0(_4e1,_4e2){ -function _4e3(){ -var _4e4=[]; -var _4e5=[]; -$(_4e1).children("thead").each(function(){ -var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); -$(this).find("tr").each(function(){ -var cols=[]; -$(this).find("th").each(function(){ -var th=$(this); -var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number",width:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); -if(th.attr("editor")){ -var s=$.trim(th.attr("editor")); -if(s.substr(0,1)=="{"){ -col.editor=eval("("+s+")"); -}else{ -col.editor=s; -} -} -cols.push(col); -}); -opt.frozen?_4e4.push(cols):_4e5.push(cols); -}); -}); -return [_4e4,_4e5]; -}; -var _4e6=$("
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+""+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                      "+""+"
                                      "+"
                                      "+"
                                      "+"
                                      ").insertAfter(_4e1); -_4e6.panel({doSize:false}); -_4e6.panel("panel").addClass("datagrid").bind("_resize",function(e,_4e7){ -var opts=$.data(_4e1,"datagrid").options; -if(opts.fit==true||_4e7){ -_4bb(_4e1); -setTimeout(function(){ -if($.data(_4e1,"datagrid")){ -_4e8(_4e1); -} -},0); -} -return false; -}); -$(_4e1).hide().appendTo(_4e6.children("div.datagrid-view")); -var cc=_4e3(); -var view=_4e6.children("div.datagrid-view"); -var _4e9=view.children("div.datagrid-view1"); -var _4ea=view.children("div.datagrid-view2"); -var _4eb=_4e6.closest("div.datagrid-view"); -if(!_4eb.length){ -_4eb=view; -} -var ss=_4ae(_4eb); -return {panel:_4e6,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_4e9,view2:_4ea,header1:_4e9.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_4ea.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_4e9.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_4ea.children("div.datagrid-body"),footer1:_4e9.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_4ea.children("div.datagrid-footer").children("div.datagrid-footer-inner")},ss:ss}; -}; -function _4ec(_4ed){ -var _4ee=$.data(_4ed,"datagrid"); -var opts=_4ee.options; -var dc=_4ee.dc; -var _4ef=_4ee.panel; -_4ef.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_4f0,_4f1){ -setTimeout(function(){ -if($.data(_4ed,"datagrid")){ -_4bf(_4ed); -_518(_4ed); -opts.onResize.call(_4ef,_4f0,_4f1); -} -},0); -},onExpand:function(){ -_4cc(_4ed); -opts.onExpand.call(_4ef); -}})); -_4ee.rowIdPrefix="datagrid-row-r"+(++_4a9); -_4ee.cellClassPrefix="datagrid-cell-c"+_4a9; -_4f2(dc.header1,opts.frozenColumns,true); -_4f2(dc.header2,opts.columns,false); -_4f3(); -dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); -dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); -if(opts.toolbar){ -if($.isArray(opts.toolbar)){ -$("div.datagrid-toolbar",_4ef).remove(); -var tb=$("
                                      ").prependTo(_4ef); -var tr=tb.find("tr"); -for(var i=0;i
                                      ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(btn.handler||function(){ -}); -tool.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_4ef); -$(opts.toolbar).show(); -} -}else{ -$("div.datagrid-toolbar",_4ef).remove(); -} -$("div.datagrid-pager",_4ef).remove(); -if(opts.pagination){ -var _4f4=$("
                                      "); -if(opts.pagePosition=="bottom"){ -_4f4.appendTo(_4ef); -}else{ -if(opts.pagePosition=="top"){ -_4f4.addClass("datagrid-pager-top").prependTo(_4ef); -}else{ -var ptop=$("
                                      ").prependTo(_4ef); -_4f4.appendTo(_4ef); -_4f4=_4f4.add(ptop); -} -} -_4f4.pagination({total:0,pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_4f5,_4f6){ -opts.pageNumber=_4f5; -opts.pageSize=_4f6; -_4f4.pagination("refresh",{pageNumber:_4f5,pageSize:_4f6}); -_5dc(_4ed); -}}); -opts.pageSize=_4f4.pagination("options").pageSize; -} -function _4f2(_4f7,_4f8,_4f9){ -if(!_4f8){ -return; -} -$(_4f7).show(); -$(_4f7).empty(); -var _4fa=[]; -var _4fb=[]; -if(opts.sortName){ -_4fa=opts.sortName.split(","); -_4fb=opts.sortOrder.split(","); -} -var t=$("
                                      ").appendTo(_4f7); -for(var i=0;i<_4f8.length;i++){ -var tr=$("").appendTo($("tbody",t)); -var cols=_4f8[i]; -for(var j=0;j").appendTo(tr); -if(col.checkbox){ -td.attr("field",col.field); -$("
                                      ").html("").appendTo(td); -}else{ -if(col.field){ -td.attr("field",col.field); -td.append("
                                      "); -$("span",td).html(col.title); -$("span.datagrid-sort-icon",td).html(" "); -var cell=td.find("div.datagrid-cell"); -var pos=_4aa(_4fa,col.field); -if(pos>=0){ -cell.addClass("datagrid-sort-"+_4fb[pos]); -} -if(col.resizable==false){ -cell.attr("resizable","false"); -} -if(col.width){ -cell._outerWidth(col.width); -col.boxWidth=parseInt(cell[0].style.width); -}else{ -col.auto=true; -} -cell.css("text-align",(col.halign||col.align||"")); -col.cellClass=_4ee.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); -}else{ -$("
                                      ").html(col.title).appendTo(td); -} -} -if(col.hidden){ -td.hide(); -} -} -} -if(_4f9&&opts.rownumbers){ -var td=$("
                                      "); -if($("tr",t).length==0){ -td.wrap("").parent().appendTo($("tbody",t)); -}else{ -td.prependTo($("tr:first",t)); -} -} -}; -function _4f3(){ -var _4fc=[]; -var _4fd=_4fe(_4ed,true).concat(_4fe(_4ed)); -for(var i=0;i<_4fd.length;i++){ -var col=_4ff(_4ed,_4fd[i]); -if(col&&!col.checkbox){ -_4fc.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); -} -} -_4ee.ss.add(_4fc); -_4ee.ss.dirty(_4ee.cellSelectorPrefix); -_4ee.cellSelectorPrefix="."+_4ee.cellClassPrefix; -}; -}; -function _500(_501){ -var _502=$.data(_501,"datagrid"); -var _503=_502.panel; -var opts=_502.options; -var dc=_502.dc; -var _504=dc.header1.add(dc.header2); -_504.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ -if(opts.singleSelect&&opts.selectOnCheck){ -return false; -} -if($(this).is(":checked")){ -_577(_501); -}else{ -_57d(_501); -} -e.stopPropagation(); -}); -var _505=_504.find("div.datagrid-cell"); -_505.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ -if(_502.resizing){ -return; -} -$(this).addClass("datagrid-header-over"); -}).bind("mouseleave.datagrid",function(){ -$(this).removeClass("datagrid-header-over"); -}).bind("contextmenu.datagrid",function(e){ -var _506=$(this).attr("field"); -opts.onHeaderContextMenu.call(_501,e,_506); -}); -_505.unbind(".datagrid").bind("click.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -if(e.pageXp1){ -var _507=$(this).parent().attr("field"); -var col=_4ff(_501,_507); -if(!col.sortable||_502.resizing){ -return; -} -var _508=[]; -var _509=[]; -if(opts.sortName){ -_508=opts.sortName.split(","); -_509=opts.sortOrder.split(","); -} -var pos=_4aa(_508,_507); -var _50a=col.order||"asc"; -if(pos>=0){ -$(this).removeClass("datagrid-sort-asc datagrid-sort-desc"); -var _50b=_509[pos]=="asc"?"desc":"asc"; -if(opts.multiSort&&_50b==_50a){ -_508.splice(pos,1); -_509.splice(pos,1); -}else{ -_509[pos]=_50b; -$(this).addClass("datagrid-sort-"+_50b); -} -}else{ -if(opts.multiSort){ -_508.push(_507); -_509.push(_50a); -}else{ -_508=[_507]; -_509=[_50a]; -_505.removeClass("datagrid-sort-asc datagrid-sort-desc"); -} -$(this).addClass("datagrid-sort-"+_50a); -} -opts.sortName=_508.join(","); -opts.sortOrder=_509.join(","); -if(opts.remoteSort){ -_5dc(_501); -}else{ -var data=$.data(_501,"datagrid").data; -_544(_501,data); -} -opts.onSortColumn.call(_501,opts.sortName,opts.sortOrder); -} -}).bind("dblclick.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); -if(cond){ -var _50c=$(this).parent().attr("field"); -var col=_4ff(_501,_50c); -if(col.resizable==false){ -return; -} -$(_501).datagrid("autoSizeColumn",_50c); -col.auto=false; -} -}); -var _50d=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); -_505.each(function(){ -$(this).resizable({handles:_50d,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ -_502.resizing=true; -_504.css("cursor",$("body").css("cursor")); -if(!_502.proxy){ -_502.proxy=$("
                                      ").appendTo(dc.view); -} -_502.proxy.css({left:e.pageX-$(_503).offset().left-1,display:"none"}); -setTimeout(function(){ -if(_502.proxy){ -_502.proxy.show(); -} -},500); -},onResize:function(e){ -_502.proxy.css({left:e.pageX-$(_503).offset().left-1,display:"block"}); -return false; -},onStopResize:function(e){ -_504.css("cursor",""); -$(this).css("height",""); -var _50e=$(this).parent().attr("field"); -var col=_4ff(_501,_50e); -col.width=$(this)._outerWidth(); -col.boxWidth=parseInt(this.style.width); -col.auto=undefined; -_4e8(_501,_50e); -_502.proxy.remove(); -_502.proxy=null; -if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ -_4bf(_501); -} -_518(_501); -opts.onResizeColumn.call(_501,_50e,col.width); -setTimeout(function(){ -_502.resizing=false; -},0); -}}); -}); -dc.body1.add(dc.body2).unbind().bind("mouseover",function(e){ -if(_502.resizing){ -return; -} -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _510=_511(tr); -_55f(_501,_510); -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _512=_511(tr); -opts.finder.getTr(_501,_512).removeClass("datagrid-row-over"); -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _513=_511(tr); -if(tt.parent().hasClass("datagrid-cell-check")){ -if(opts.singleSelect&&opts.selectOnCheck){ -if(!opts.checkOnSelect){ -_57d(_501,true); -} -_56a(_501,_513); -}else{ -if(tt.is(":checked")){ -_56a(_501,_513); -}else{ -_571(_501,_513); -} -} -}else{ -var row=opts.finder.getRow(_501,_513); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _514=td.attr("field"); -opts.onClickCell.call(_501,_513,_514,row[_514]); -} -if(opts.singleSelect==true){ -_563(_501,_513); -}else{ -if(tr.hasClass("datagrid-row-selected")){ -_56b(_501,_513); -}else{ -_563(_501,_513); -} -} -opts.onClickRow.call(_501,_513,row); -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _515=_511(tr); -var row=opts.finder.getRow(_501,_515); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _516=td.attr("field"); -opts.onDblClickCell.call(_501,_515,_516,row[_516]); -} -opts.onDblClickRow.call(_501,_515,row); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _517=_511(tr); -var row=opts.finder.getRow(_501,_517); -opts.onRowContextMenu.call(_501,e,_517,row); -e.stopPropagation(); -}); -dc.body2.bind("scroll",function(){ -var b1=dc.view1.children("div.datagrid-body"); -b1.scrollTop($(this).scrollTop()); -var c1=dc.body1.children(":first"); -var c2=dc.body2.children(":first"); -if(c1.length&&c2.length){ -var top1=c1.offset().top; -var top2=c2.offset().top; -if(top1!=top2){ -b1.scrollTop(b1.scrollTop()+top1-top2); -} -} -dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); -dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); -}); -function _511(tr){ -if(tr.attr("datagrid-row-index")){ -return parseInt(tr.attr("datagrid-row-index")); -}else{ -return tr.attr("node-id"); -} -}; -function _50f(tr){ -return tr.length&&tr.parent().length; -}; -}; -function _518(_519){ -var opts=$.data(_519,"datagrid").options; -var dc=$.data(_519,"datagrid").dc; -dc.body2.css("overflow-x",opts.fitColumns?"hidden":""); -if(!opts.fitColumns){ -return; -} -var _51a=dc.view2.children("div.datagrid-header"); -var _51b=0; -var _51c; -var _51d=_4fe(_519,false); -for(var i=0;i<_51d.length;i++){ -var col=_4ff(_519,_51d[i]); -if(_51e(col)){ -_51b+=col.width; -_51c=col; -} -} -var _51f=_51a.children("div.datagrid-header-inner").show(); -var _520=_51a.width()-_51a.find("table").width()-opts.scrollbarSize; -var rate=_520/_51b; -if(!opts.showHeader){ -_51f.hide(); -} -for(var i=0;i<_51d.length;i++){ -var col=_4ff(_519,_51d[i]); -if(_51e(col)){ -var _521=Math.floor(col.width*rate); -_522(col,_521); -_520-=_521; -} -} -if(_520&&_51c){ -_522(_51c,_520); -} -_4e8(_519); -function _522(col,_523){ -col.width+=_523; -col.boxWidth+=_523; -_51a.find("td[field=\""+col.field+"\"] div.datagrid-cell").width(col.boxWidth); -}; -function _51e(col){ -if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ -return true; -} -}; -}; -function _524(_525,_526){ -var opts=$.data(_525,"datagrid").options; -var dc=$.data(_525,"datagrid").dc; -if(_526){ -_4bb(_526); -if(opts.fitColumns){ -_4bf(_525); -_518(_525); -} -}else{ -var _527=false; -var _528=_4fe(_525,true).concat(_4fe(_525,false)); -for(var i=0;i<_528.length;i++){ -var _526=_528[i]; -var col=_4ff(_525,_526); -if(col.auto){ -_4bb(_526); -_527=true; -} -} -if(_527&&opts.fitColumns){ -_4bf(_525); -_518(_525); -} -} -function _4bb(_529){ -var _52a=dc.view.find("div.datagrid-header td[field=\""+_529+"\"] div.datagrid-cell"); -_52a.css("width",""); -var col=$(_525).datagrid("getColumnOption",_529); -col.width=undefined; -col.boxWidth=undefined; -col.auto=true; -$(_525).datagrid("fixColumnSize",_529); -var _52b=Math.max(_52a._outerWidth(),_52c("allbody"),_52c("allfooter")); -_52a._outerWidth(_52b); -col.width=_52b; -col.boxWidth=parseInt(_52a[0].style.width); -$(_525).datagrid("fixColumnSize",_529); -opts.onResizeColumn.call(_525,_529,col.width); -function _52c(type){ -var _52d=0; -opts.finder.getTr(_525,0,type).find("td[field=\""+_529+"\"] div.datagrid-cell").each(function(){ -var w=$(this)._outerWidth(); -if(_52db?1:-1); -}; -r=_549(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -} -if(opts.view.onBeforeRender){ -opts.view.onBeforeRender.call(opts.view,_545,data.rows); -} -opts.view.render.call(opts.view,_545,dc.body2,false); -opts.view.render.call(opts.view,_545,dc.body1,true); -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,_545,dc.footer2,false); -opts.view.renderFooter.call(opts.view,_545,dc.footer1,true); -} -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,_545); -} -_546.ss.clean(); -opts.onLoadSuccess.call(_545,data); -var _54a=$(_545).datagrid("getPager"); -if(_54a.length){ -var _54b=_54a.pagination("options"); -if(_54b.total!=data.total){ -_54a.pagination("refresh",{total:data.total}); -if(opts.pageNumber!=_54b.pageNumber){ -opts.pageNumber=_54b.pageNumber; -_5dc(_545); -} -} -} -_4cc(_545); -dc.body2.triggerHandler("scroll"); -_54c(); -$(_545).datagrid("autoSizeColumn"); -function _54c(){ -if(opts.idField){ -for(var i=0;i_55d.height()-18){ -_55d.scrollTop(_55d.scrollTop()+top+tr._outerHeight()-_55d.height()+18); -} -} -} -}; -function _55f(_560,_561){ -var _562=$.data(_560,"datagrid"); -var opts=_562.options; -opts.finder.getTr(_560,_562.highlightIndex).removeClass("datagrid-row-over"); -opts.finder.getTr(_560,_561).addClass("datagrid-row-over"); -_562.highlightIndex=_561; -}; -function _563(_564,_565,_566){ -var _567=$.data(_564,"datagrid"); -var dc=_567.dc; -var opts=_567.options; -var _568=_567.selectedRows; -if(opts.singleSelect){ -_569(_564); -_568.splice(0,_568.length); -} -if(!_566&&opts.checkOnSelect){ -_56a(_564,_565,true); -} -var row=opts.finder.getRow(_564,_565); -if(opts.idField){ -_4ad(_568,opts.idField,row); -} -opts.finder.getTr(_564,_565).addClass("datagrid-row-selected"); -opts.onSelect.call(_564,_565,row); -_558(_564,_565); -}; -function _56b(_56c,_56d,_56e){ -var _56f=$.data(_56c,"datagrid"); -var dc=_56f.dc; -var opts=_56f.options; -var _570=$.data(_56c,"datagrid").selectedRows; -if(!_56e&&opts.checkOnSelect){ -_571(_56c,_56d,true); -} -opts.finder.getTr(_56c,_56d).removeClass("datagrid-row-selected"); -var row=opts.finder.getRow(_56c,_56d); -if(opts.idField){ -_4ab(_570,opts.idField,row[opts.idField]); -} -opts.onUnselect.call(_56c,_56d,row); -}; -function _572(_573,_574){ -var _575=$.data(_573,"datagrid"); -var opts=_575.options; -var rows=_575.data.rows; -var _576=$.data(_573,"datagrid").selectedRows; -if(!_574&&opts.checkOnSelect){ -_577(_573,true); -} -opts.finder.getTr(_573,"","allbody").addClass("datagrid-row-selected"); -if(opts.idField){ -for(var _578=0;_578"); -cell.children("table").bind("click dblclick contextmenu",function(e){ -e.stopPropagation(); -}); -$.data(cell[0],"datagrid.editor",{actions:_5ad,target:_5ad.init(cell.find("td"),_5ac),field:_5aa,type:_5ab,oldHtml:_5ae}); -} -} -}); -_4cc(_5a8,_5a9,true); -}; -function _59f(_5b0,_5b1){ -var opts=$.data(_5b0,"datagrid").options; -var tr=opts.finder.getTr(_5b0,_5b1); -tr.children("td").each(function(){ -var cell=$(this).find("div.datagrid-editable"); -if(cell.length){ -var ed=$.data(cell[0],"datagrid.editor"); -if(ed.actions.destroy){ -ed.actions.destroy(ed.target); -} -cell.html(ed.oldHtml); -$.removeData(cell[0],"datagrid.editor"); -cell.removeClass("datagrid-editable"); -cell.css("width",""); -} -}); -}; -function _594(_5b2,_5b3){ -var tr=$.data(_5b2,"datagrid").options.finder.getTr(_5b2,_5b3); -if(!tr.hasClass("datagrid-row-editing")){ -return true; -} -var vbox=tr.find(".validatebox-text"); -vbox.validatebox("validate"); -vbox.trigger("mouseleave"); -var _5b4=tr.find(".validatebox-invalid"); -return _5b4.length==0; -}; -function _5b5(_5b6,_5b7){ -var _5b8=$.data(_5b6,"datagrid").insertedRows; -var _5b9=$.data(_5b6,"datagrid").deletedRows; -var _5ba=$.data(_5b6,"datagrid").updatedRows; -if(!_5b7){ -var rows=[]; -rows=rows.concat(_5b8); -rows=rows.concat(_5b9); -rows=rows.concat(_5ba); -return rows; -}else{ -if(_5b7=="inserted"){ -return _5b8; -}else{ -if(_5b7=="deleted"){ -return _5b9; -}else{ -if(_5b7=="updated"){ -return _5ba; -} -} -} -} -return []; -}; -function _5bb(_5bc,_5bd){ -var _5be=$.data(_5bc,"datagrid"); -var opts=_5be.options; -var data=_5be.data; -var _5bf=_5be.insertedRows; -var _5c0=_5be.deletedRows; -$(_5bc).datagrid("cancelEdit",_5bd); -var row=data.rows[_5bd]; -if(_4aa(_5bf,row)>=0){ -_4ab(_5bf,row); -}else{ -_5c0.push(row); -} -_4ab(_5be.selectedRows,opts.idField,data.rows[_5bd][opts.idField]); -_4ab(_5be.checkedRows,opts.idField,data.rows[_5bd][opts.idField]); -opts.view.deleteRow.call(opts.view,_5bc,_5bd); -if(opts.height=="auto"){ -_4cc(_5bc); -} -$(_5bc).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c1(_5c2,_5c3){ -var data=$.data(_5c2,"datagrid").data; -var view=$.data(_5c2,"datagrid").options.view; -var _5c4=$.data(_5c2,"datagrid").insertedRows; -view.insertRow.call(view,_5c2,_5c3.index,_5c3.row); -_5c4.push(_5c3.row); -$(_5c2).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c5(_5c6,row){ -var data=$.data(_5c6,"datagrid").data; -var view=$.data(_5c6,"datagrid").options.view; -var _5c7=$.data(_5c6,"datagrid").insertedRows; -view.insertRow.call(view,_5c6,null,row); -_5c7.push(row); -$(_5c6).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c8(_5c9){ -var _5ca=$.data(_5c9,"datagrid"); -var data=_5ca.data; -var rows=data.rows; -var _5cb=[]; -for(var i=0;i=0){ -(_5d8=="s"?_563:_56a)(_5cf,_5d9,true); -} -} -}; -for(var i=0;i0){ -_544(this,data); -_5c8(this); -} -} -_4bb(this); -_5dc(this); -_500(this); -}); -}; -var _5ea={text:{init:function(_5eb,_5ec){ -var _5ed=$("").appendTo(_5eb); -return _5ed; -},getValue:function(_5ee){ -return $(_5ee).val(); -},setValue:function(_5ef,_5f0){ -$(_5ef).val(_5f0); -},resize:function(_5f1,_5f2){ -$(_5f1)._outerWidth(_5f2)._outerHeight(22); -}},textarea:{init:function(_5f3,_5f4){ -var _5f5=$("").appendTo(_5f3); -return _5f5; -},getValue:function(_5f6){ -return $(_5f6).val(); -},setValue:function(_5f7,_5f8){ -$(_5f7).val(_5f8); -},resize:function(_5f9,_5fa){ -$(_5f9)._outerWidth(_5fa); -}},checkbox:{init:function(_5fb,_5fc){ -var _5fd=$("").appendTo(_5fb); -_5fd.val(_5fc.on); -_5fd.attr("offval",_5fc.off); -return _5fd; -},getValue:function(_5fe){ -if($(_5fe).is(":checked")){ -return $(_5fe).val(); -}else{ -return $(_5fe).attr("offval"); -} -},setValue:function(_5ff,_600){ -var _601=false; -if($(_5ff).val()==_600){ -_601=true; -} -$(_5ff)._propAttr("checked",_601); -}},numberbox:{init:function(_602,_603){ -var _604=$("").appendTo(_602); -_604.numberbox(_603); -return _604; -},destroy:function(_605){ -$(_605).numberbox("destroy"); -},getValue:function(_606){ -$(_606).blur(); -return $(_606).numberbox("getValue"); -},setValue:function(_607,_608){ -$(_607).numberbox("setValue",_608); -},resize:function(_609,_60a){ -$(_609)._outerWidth(_60a)._outerHeight(22); -}},validatebox:{init:function(_60b,_60c){ -var _60d=$("").appendTo(_60b); -_60d.validatebox(_60c); -return _60d; -},destroy:function(_60e){ -$(_60e).validatebox("destroy"); -},getValue:function(_60f){ -return $(_60f).val(); -},setValue:function(_610,_611){ -$(_610).val(_611); -},resize:function(_612,_613){ -$(_612)._outerWidth(_613)._outerHeight(22); -}},datebox:{init:function(_614,_615){ -var _616=$("").appendTo(_614); -_616.datebox(_615); -return _616; -},destroy:function(_617){ -$(_617).datebox("destroy"); -},getValue:function(_618){ -return $(_618).datebox("getValue"); -},setValue:function(_619,_61a){ -$(_619).datebox("setValue",_61a); -},resize:function(_61b,_61c){ -$(_61b).datebox("resize",_61c); -}},combobox:{init:function(_61d,_61e){ -var _61f=$("").appendTo(_61d); -_61f.combobox(_61e||{}); -return _61f; -},destroy:function(_620){ -$(_620).combobox("destroy"); -},getValue:function(_621){ -var opts=$(_621).combobox("options"); -if(opts.multiple){ -return $(_621).combobox("getValues").join(opts.separator); -}else{ -return $(_621).combobox("getValue"); -} -},setValue:function(_622,_623){ -var opts=$(_622).combobox("options"); -if(opts.multiple){ -if(_623){ -$(_622).combobox("setValues",_623.split(opts.separator)); -}else{ -$(_622).combobox("clear"); -} -}else{ -$(_622).combobox("setValue",_623); -} -},resize:function(_624,_625){ -$(_624).combobox("resize",_625); -}},combotree:{init:function(_626,_627){ -var _628=$("").appendTo(_626); -_628.combotree(_627); -return _628; -},destroy:function(_629){ -$(_629).combotree("destroy"); -},getValue:function(_62a){ -return $(_62a).combotree("getValue"); -},setValue:function(_62b,_62c){ -$(_62b).combotree("setValue",_62c); -},resize:function(_62d,_62e){ -$(_62d).combotree("resize",_62e); -}}}; -$.fn.datagrid.methods={options:function(jq){ -var _62f=$.data(jq[0],"datagrid").options; -var _630=$.data(jq[0],"datagrid").panel.panel("options"); -var opts=$.extend(_62f,{width:_630.width,height:_630.height,closed:_630.closed,collapsed:_630.collapsed,minimized:_630.minimized,maximized:_630.maximized}); -return opts; -},getPanel:function(jq){ -return $.data(jq[0],"datagrid").panel; -},getPager:function(jq){ -return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); -},getColumnFields:function(jq,_631){ -return _4fe(jq[0],_631); -},getColumnOption:function(jq,_632){ -return _4ff(jq[0],_632); -},resize:function(jq,_633){ -return jq.each(function(){ -_4bb(this,_633); -}); -},load:function(jq,_634){ -return jq.each(function(){ -var opts=$(this).datagrid("options"); -opts.pageNumber=1; -var _635=$(this).datagrid("getPager"); -_635.pagination("refresh",{pageNumber:1}); -_5dc(this,_634); -}); -},reload:function(jq,_636){ -return jq.each(function(){ -_5dc(this,_636); -}); -},reloadFooter:function(jq,_637){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -var dc=$.data(this,"datagrid").dc; -if(_637){ -$.data(this,"datagrid").footer=_637; -} -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,this,dc.footer2,false); -opts.view.renderFooter.call(opts.view,this,dc.footer1,true); -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,this); -} -$(this).datagrid("fixRowHeight"); -} -}); -},loading:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -$(this).datagrid("getPager").pagination("loading"); -if(opts.loadMsg){ -var _638=$(this).datagrid("getPanel"); -if(!_638.children("div.datagrid-mask").length){ -$("
                                      ").appendTo(_638); -var msg=$("
                                      ").html(opts.loadMsg).appendTo(_638); -msg.css("marginLeft",-msg.outerWidth()/2); -} -} -}); -},loaded:function(jq){ -return jq.each(function(){ -$(this).datagrid("getPager").pagination("loaded"); -var _639=$(this).datagrid("getPanel"); -_639.children("div.datagrid-mask-msg").remove(); -_639.children("div.datagrid-mask").remove(); -}); -},fitColumns:function(jq){ -return jq.each(function(){ -_518(this); -}); -},fixColumnSize:function(jq,_63a){ -return jq.each(function(){ -_4e8(this,_63a); -}); -},fixRowHeight:function(jq,_63b){ -return jq.each(function(){ -_4cc(this,_63b); -}); -},freezeRow:function(jq,_63c){ -return jq.each(function(){ -_4d9(this,_63c); -}); -},autoSizeColumn:function(jq,_63d){ -return jq.each(function(){ -_524(this,_63d); -}); -},loadData:function(jq,data){ -return jq.each(function(){ -_544(this,data); -_5c8(this); -}); -},getData:function(jq){ -return $.data(jq[0],"datagrid").data; -},getRows:function(jq){ -return $.data(jq[0],"datagrid").data.rows; -},getFooterRows:function(jq){ -return $.data(jq[0],"datagrid").footer; -},getRowIndex:function(jq,id){ -return _54e(jq[0],id); -},getChecked:function(jq){ -return _555(jq[0]); -},getSelected:function(jq){ -var rows=_551(jq[0]); -return rows.length>0?rows[0]:null; -},getSelections:function(jq){ -return _551(jq[0]); -},clearSelections:function(jq){ -return jq.each(function(){ -var _63e=$.data(this,"datagrid").selectedRows; -_63e.splice(0,_63e.length); -_569(this); -}); -},clearChecked:function(jq){ -return jq.each(function(){ -var _63f=$.data(this,"datagrid").checkedRows; -_63f.splice(0,_63f.length); -_57d(this); -}); -},scrollTo:function(jq,_640){ -return jq.each(function(){ -_558(this,_640); -}); -},highlightRow:function(jq,_641){ -return jq.each(function(){ -_55f(this,_641); -_558(this,_641); -}); -},selectAll:function(jq){ -return jq.each(function(){ -_572(this); -}); -},unselectAll:function(jq){ -return jq.each(function(){ -_569(this); -}); -},selectRow:function(jq,_642){ -return jq.each(function(){ -_563(this,_642); -}); -},selectRecord:function(jq,id){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -if(opts.idField){ -var _643=_54e(this,id); -if(_643>=0){ -$(this).datagrid("selectRow",_643); -} -} -}); -},unselectRow:function(jq,_644){ -return jq.each(function(){ -_56b(this,_644); -}); -},checkRow:function(jq,_645){ -return jq.each(function(){ -_56a(this,_645); -}); -},uncheckRow:function(jq,_646){ -return jq.each(function(){ -_571(this,_646); -}); -},checkAll:function(jq){ -return jq.each(function(){ -_577(this); -}); -},uncheckAll:function(jq){ -return jq.each(function(){ -_57d(this); -}); -},beginEdit:function(jq,_647){ -return jq.each(function(){ -_58f(this,_647); -}); -},endEdit:function(jq,_648){ -return jq.each(function(){ -_595(this,_648,false); -}); -},cancelEdit:function(jq,_649){ -return jq.each(function(){ -_595(this,_649,true); -}); -},getEditors:function(jq,_64a){ -return _5a0(jq[0],_64a); -},getEditor:function(jq,_64b){ -return _5a4(jq[0],_64b); -},refreshRow:function(jq,_64c){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.refreshRow.call(opts.view,this,_64c); -}); -},validateRow:function(jq,_64d){ -return _594(jq[0],_64d); -},updateRow:function(jq,_64e){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.updateRow.call(opts.view,this,_64e.index,_64e.row); -}); -},appendRow:function(jq,row){ -return jq.each(function(){ -_5c5(this,row); -}); -},insertRow:function(jq,_64f){ -return jq.each(function(){ -_5c1(this,_64f); -}); -},deleteRow:function(jq,_650){ -return jq.each(function(){ -_5bb(this,_650); -}); -},getChanges:function(jq,_651){ -return _5b5(jq[0],_651); -},acceptChanges:function(jq){ -return jq.each(function(){ -_5cc(this); -}); -},rejectChanges:function(jq){ -return jq.each(function(){ -_5ce(this); -}); -},mergeCells:function(jq,_652){ -return jq.each(function(){ -_5e2(this,_652); -}); -},showColumn:function(jq,_653){ -return jq.each(function(){ -var _654=$(this).datagrid("getPanel"); -_654.find("td[field=\""+_653+"\"]").show(); -$(this).datagrid("getColumnOption",_653).hidden=false; -$(this).datagrid("fitColumns"); -}); -},hideColumn:function(jq,_655){ -return jq.each(function(){ -var _656=$(this).datagrid("getPanel"); -_656.find("td[field=\""+_655+"\"]").hide(); -$(this).datagrid("getColumnOption",_655).hidden=true; -$(this).datagrid("fitColumns"); -}); -}}; -$.fn.datagrid.parseOptions=function(_657){ -var t=$(_657); -return $.extend({},$.fn.panel.parseOptions(_657),$.parser.parseOptions(_657,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); -}; -$.fn.datagrid.parseData=function(_658){ -var t=$(_658); -var data={total:0,rows:[]}; -var _659=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); -t.find("tbody tr").each(function(){ -data.total++; -var row={}; -$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); -for(var i=0;i<_659.length;i++){ -row[_659[i]]=$(this).find("td:eq("+i+")").html(); -} -data.rows.push(row); -}); -return data; -}; -var _65a={render:function(_65b,_65c,_65d){ -var _65e=$.data(_65b,"datagrid"); -var opts=_65e.options; -var rows=_65e.data.rows; -var _65f=$(_65b).datagrid("getColumnFields",_65d); -if(_65d){ -if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ -return; -} -} -var _660=[""]; -for(var i=0;i"); -_660.push(this.renderRow.call(this,_65b,_65f,_65d,i,rows[i])); -_660.push(""); -} -_660.push("
                                      "); -$(_65c).html(_660.join("")); -},renderFooter:function(_665,_666,_667){ -var opts=$.data(_665,"datagrid").options; -var rows=$.data(_665,"datagrid").footer||[]; -var _668=$(_665).datagrid("getColumnFields",_667); -var _669=[""]; -for(var i=0;i"); -_669.push(this.renderRow.call(this,_665,_668,_667,i,rows[i])); -_669.push(""); -} -_669.push("
                                      "); -$(_666).html(_669.join("")); -},renderRow:function(_66a,_66b,_66c,_66d,_66e){ -var opts=$.data(_66a,"datagrid").options; -var cc=[]; -if(_66c&&opts.rownumbers){ -var _66f=_66d+1; -if(opts.pagination){ -_66f+=(opts.pageNumber-1)*opts.pageSize; -} -cc.push("
                                      "+_66f+"
                                      "); -} -for(var i=0;i<_66b.length;i++){ -var _670=_66b[i]; -var col=$(_66a).datagrid("getColumnOption",_670); -if(col){ -var _671=_66e[_670]; -var css=col.styler?(col.styler(_671,_66e,_66d)||""):""; -var _672=""; -var _673=""; -if(typeof css=="string"){ -_673=css; -}else{ -if(cc){ -_672=css["class"]||""; -_673=css["style"]||""; -} -} -var cls=_672?"class=\""+_672+"\"":""; -var _674=col.hidden?"style=\"display:none;"+_673+"\"":(_673?"style=\""+_673+"\"":""); -cc.push(""); -if(col.checkbox){ -var _674=""; -}else{ -var _674=_673; -if(col.align){ -_674+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_674+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_674+=";height:auto;"; -} -} -} -cc.push("
                                      "); -if(col.checkbox){ -cc.push(""); -}else{ -if(col.formatter){ -cc.push(col.formatter(_671,_66e,_66d)); -}else{ -cc.push(_671); -} -} -cc.push("
                                      "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_675,_676){ -this.updateRow.call(this,_675,_676,{}); -},updateRow:function(_677,_678,row){ -var opts=$.data(_677,"datagrid").options; -var rows=$(_677).datagrid("getRows"); -$.extend(rows[_678],row); -var css=opts.rowStyler?opts.rowStyler.call(_677,_678,rows[_678]):""; -var _679=""; -var _67a=""; -if(typeof css=="string"){ -_67a=css; -}else{ -if(css){ -_679=css["class"]||""; -_67a=css["style"]||""; -} -} -var _679="datagrid-row "+(_678%2&&opts.striped?"datagrid-row-alt ":" ")+_679; -function _67b(_67c){ -var _67d=$(_677).datagrid("getColumnFields",_67c); -var tr=opts.finder.getTr(_677,_678,"body",(_67c?1:2)); -var _67e=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow.call(this,_677,_67d,_67c,_678,rows[_678])); -tr.attr("style",_67a).attr("class",_679); -if(_67e){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_67b.call(this,true); -_67b.call(this,false); -$(_677).datagrid("fixRowHeight",_678); -},insertRow:function(_67f,_680,row){ -var _681=$.data(_67f,"datagrid"); -var opts=_681.options; -var dc=_681.dc; -var data=_681.data; -if(_680==undefined||_680==null){ -_680=data.rows.length; -} -if(_680>data.rows.length){ -_680=data.rows.length; -} -function _682(_683){ -var _684=_683?1:2; -for(var i=data.rows.length-1;i>=_680;i--){ -var tr=opts.finder.getTr(_67f,i,"body",_684); -tr.attr("datagrid-row-index",i+1); -tr.attr("id",_681.rowIdPrefix+"-"+_684+"-"+(i+1)); -if(_683&&opts.rownumbers){ -var _685=i+2; -if(opts.pagination){ -_685+=(opts.pageNumber-1)*opts.pageSize; -} -tr.find("div.datagrid-cell-rownumber").html(_685); -} -if(opts.striped){ -tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); -} -} -}; -function _686(_687){ -var _688=_687?1:2; -var _689=$(_67f).datagrid("getColumnFields",_687); -var _68a=_681.rowIdPrefix+"-"+_688+"-"+_680; -var tr=""; -if(_680>=data.rows.length){ -if(data.rows.length){ -opts.finder.getTr(_67f,"","last",_688).after(tr); -}else{ -var cc=_687?dc.body1:dc.body2; -cc.html(""+tr+"
                                      "); -} -}else{ -opts.finder.getTr(_67f,_680+1,"body",_688).before(tr); -} -}; -_682.call(this,true); -_682.call(this,false); -_686.call(this,true); -_686.call(this,false); -data.total+=1; -data.rows.splice(_680,0,row); -this.refreshRow.call(this,_67f,_680); -},deleteRow:function(_68b,_68c){ -var _68d=$.data(_68b,"datagrid"); -var opts=_68d.options; -var data=_68d.data; -function _68e(_68f){ -var _690=_68f?1:2; -for(var i=_68c+1;itable>tbody>tr[datagrid-row-index="+_69b+"]"); -} -return tr; -}else{ -if(type=="footer"){ -return (_69c==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_69b+"]"); -}else{ -if(type=="selected"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); -}else{ -if(type=="highlight"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); -}else{ -if(type=="checked"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row:has(div.datagrid-cell-check input:checked)"); -}else{ -if(type=="last"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); -}else{ -if(type=="allbody"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); -}else{ -if(type=="allfooter"){ -return (_69c==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); -} -} -} -} -} -} -} -} -} -},getRow:function(_69e,p){ -var _69f=(typeof p=="object")?p.attr("datagrid-row-index"):p; -return $.data(_69e,"datagrid").data.rows[parseInt(_69f)]; -}},view:_65a,onBeforeLoad:function(_6a0){ -},onLoadSuccess:function(){ -},onLoadError:function(){ -},onClickRow:function(_6a1,_6a2){ -},onDblClickRow:function(_6a3,_6a4){ -},onClickCell:function(_6a5,_6a6,_6a7){ -},onDblClickCell:function(_6a8,_6a9,_6aa){ -},onSortColumn:function(sort,_6ab){ -},onResizeColumn:function(_6ac,_6ad){ -},onSelect:function(_6ae,_6af){ -},onUnselect:function(_6b0,_6b1){ -},onSelectAll:function(rows){ -},onUnselectAll:function(rows){ -},onCheck:function(_6b2,_6b3){ -},onUncheck:function(_6b4,_6b5){ -},onCheckAll:function(rows){ -},onUncheckAll:function(rows){ -},onBeforeEdit:function(_6b6,_6b7){ -},onAfterEdit:function(_6b8,_6b9,_6ba){ -},onCancelEdit:function(_6bb,_6bc){ -},onHeaderContextMenu:function(e,_6bd){ -},onRowContextMenu:function(e,_6be,_6bf){ -}}); -})(jQuery); -(function($){ -var _6c0; -function _6c1(_6c2){ -var _6c3=$.data(_6c2,"propertygrid"); -var opts=$.data(_6c2,"propertygrid").options; -$(_6c2).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?_6c4:undefined),onClickRow:function(_6c5,row){ -if(_6c0!=this){ -_6c6(_6c0); -_6c0=this; -} -if(opts.editIndex!=_6c5&&row.editor){ -var col=$(this).datagrid("getColumnOption","value"); -col.editor=row.editor; -_6c6(_6c0); -$(this).datagrid("beginEdit",_6c5); -$(this).datagrid("getEditors",_6c5)[0].target.focus(); -opts.editIndex=_6c5; -} -opts.onClickRow.call(_6c2,_6c5,row); -},loadFilter:function(data){ -_6c6(this); -return opts.loadFilter.call(this,data); -},onLoadSuccess:function(data){ -$(_6c2).datagrid("getPanel").find("div.datagrid-group").attr("style",""); -opts.onLoadSuccess.call(_6c2,data); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_6c6(_6c0); -_6c0=undefined; -}); -}; -function _6c6(_6c7){ -var t=$(_6c7); -if(!t.length){ -return; -} -var opts=$.data(_6c7,"propertygrid").options; -var _6c8=opts.editIndex; -if(_6c8==undefined){ -return; -} -var ed=t.datagrid("getEditors",_6c8)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_6c8)){ -t.datagrid("endEdit",_6c8); -}else{ -t.datagrid("cancelEdit",_6c8); -} -} -opts.editIndex=undefined; -}; -$.fn.propertygrid=function(_6c9,_6ca){ -if(typeof _6c9=="string"){ -var _6cb=$.fn.propertygrid.methods[_6c9]; -if(_6cb){ -return _6cb(this,_6ca); -}else{ -return this.datagrid(_6c9,_6ca); -} -} -_6c9=_6c9||{}; -return this.each(function(){ -var _6cc=$.data(this,"propertygrid"); -if(_6cc){ -$.extend(_6cc.options,_6c9); -}else{ -var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_6c9); -opts.frozenColumns=$.extend(true,[],opts.frozenColumns); -opts.columns=$.extend(true,[],opts.columns); -$.data(this,"propertygrid",{options:opts}); -} -_6c1(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_6cd){ -var t=$(_6cd); -return $.extend({},$.fn.datagrid.parseOptions(_6cd),$.parser.parseOptions(_6cd,[{showGroup:"boolean"}])); -}; -var _6c4=$.extend({},$.fn.datagrid.defaults.view,{render:function(_6ce,_6cf,_6d0){ -var _6d1=$.data(_6ce,"datagrid"); -var opts=_6d1.options; -var rows=_6d1.data.rows; -var _6d2=$(_6ce).datagrid("getColumnFields",_6d0); -var _6d3=[]; -var _6d4=0; -var _6d5=this.groups; -for(var i=0;i<_6d5.length;i++){ -var _6d6=_6d5[i]; -_6d3.push("
                                      "); -_6d3.push(""); -_6d3.push(""); -_6d3.push(""); -_6d3.push(""); -_6d3.push("
                                      "); -if(!_6d0){ -_6d3.push(""); -_6d3.push(opts.groupFormatter.call(_6ce,_6d6.fvalue,_6d6.rows)); -_6d3.push(""); -} -_6d3.push("
                                      "); -_6d3.push("
                                      "); -_6d3.push(""); -for(var j=0;j<_6d6.rows.length;j++){ -var cls=(_6d4%2&&opts.striped)?"class=\"datagrid-row datagrid-row-alt\"":"class=\"datagrid-row\""; -var _6d7=opts.rowStyler?opts.rowStyler.call(_6ce,_6d4,_6d6.rows[j]):""; -var _6d8=_6d7?"style=\""+_6d7+"\"":""; -var _6d9=_6d1.rowIdPrefix+"-"+(_6d0?1:2)+"-"+_6d4; -_6d3.push(""); -_6d3.push(this.renderRow.call(this,_6ce,_6d2,_6d0,_6d4,_6d6.rows[j])); -_6d3.push(""); -_6d4++; -} -_6d3.push("
                                      "); -} -$(_6cf).html(_6d3.join("")); -},onAfterRender:function(_6da){ -var opts=$.data(_6da,"datagrid").options; -var dc=$.data(_6da,"datagrid").dc; -var view=dc.view; -var _6db=dc.view1; -var _6dc=dc.view2; -$.fn.datagrid.defaults.view.onAfterRender.call(this,_6da); -if(opts.rownumbers||opts.frozenColumns.length){ -var _6dd=_6db.find("div.datagrid-group"); -}else{ -var _6dd=_6dc.find("div.datagrid-group"); -} -$(" ").insertBefore(_6dd.find("td")); -view.find("div.datagrid-group").each(function(){ -var _6de=$(this).attr("group-index"); -$(this).find("span.datagrid-row-expander").bind("click",{groupIndex:_6de},function(e){ -if($(this).hasClass("datagrid-row-collapse")){ -$(_6da).datagrid("collapseGroup",e.data.groupIndex); -}else{ -$(_6da).datagrid("expandGroup",e.data.groupIndex); -} -}); -}); -},onBeforeRender:function(_6df,rows){ -var opts=$.data(_6df,"datagrid").options; -var _6e0=[]; -for(var i=0;i"+""+"
                                      "+""+"").insertAfter(tr); -}; -}; -function _71c(_71d,_71e,data,_71f){ -var _720=$.data(_71d,"treegrid"); -var opts=_720.options; -var dc=_720.dc; -data=opts.loadFilter.call(_71d,data,_71e); -var node=find(_71d,_71e); -if(node){ -var _721=opts.finder.getTr(_71d,_71e,"body",1); -var _722=opts.finder.getTr(_71d,_71e,"body",2); -var cc1=_721.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_722.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_71f){ -node.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_71f){ -_720.data=[]; -} -} -if(!_71f){ -cc1.empty(); -cc2.empty(); -} -if(opts.view.onBeforeRender){ -opts.view.onBeforeRender.call(opts.view,_71d,_71e,data); -} -opts.view.render.call(opts.view,_71d,cc1,true); -opts.view.render.call(opts.view,_71d,cc2,false); -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,_71d,dc.footer1,true); -opts.view.renderFooter.call(opts.view,_71d,dc.footer2,false); -} -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,_71d); -} -opts.onLoadSuccess.call(_71d,node,data); -if(!_71e&&opts.pagination){ -var _723=$.data(_71d,"treegrid").total; -var _724=$(_71d).datagrid("getPager"); -if(_724.pagination("options").total!=_723){ -_724.pagination({total:_723}); -} -} -_707(_71d); -_70f(_71d); -$(_71d).treegrid("autoSizeColumn"); -}; -function _706(_725,_726,_727,_728,_729){ -var opts=$.data(_725,"treegrid").options; -var body=$(_725).datagrid("getPanel").find("div.datagrid-body"); -if(_727){ -opts.queryParams=_727; -} -var _72a=$.extend({},opts.queryParams); -if(opts.pagination){ -$.extend(_72a,{page:opts.pageNumber,rows:opts.pageSize}); -} -if(opts.sortName){ -$.extend(_72a,{sort:opts.sortName,order:opts.sortOrder}); -} -var row=find(_725,_726); -if(opts.onBeforeLoad.call(_725,row,_72a)==false){ -return; -} -var _72b=body.find("tr[node-id=\""+_726+"\"] span.tree-folder"); -_72b.addClass("tree-loading"); -$(_725).treegrid("loading"); -var _72c=opts.loader.call(_725,_72a,function(data){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -_71c(_725,_726,data,_728); -if(_729){ -_729(); -} -},function(){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -opts.onLoadError.apply(_725,arguments); -if(_729){ -_729(); -} -}); -if(_72c==false){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -} -}; -function _72d(_72e){ -var rows=_72f(_72e); -if(rows.length){ -return rows[0]; -}else{ -return null; -} -}; -function _72f(_730){ -return $.data(_730,"treegrid").data; -}; -function _731(_732,_733){ -var row=find(_732,_733); -if(row._parentId){ -return find(_732,row._parentId); -}else{ -return null; -} -}; -function _70b(_734,_735){ -var opts=$.data(_734,"treegrid").options; -var body=$(_734).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _736=[]; -if(_735){ -_737(_735); -}else{ -var _738=_72f(_734); -for(var i=0;i<_738.length;i++){ -_736.push(_738[i]); -_737(_738[i][opts.idField]); -} -} -function _737(_739){ -var _73a=find(_734,_739); -if(_73a&&_73a.children){ -for(var i=0,len=_73a.children.length;i").insertBefore(_75f); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_71c(_75d,_75e.parent,_75e.data,true); -}; -function _760(_761,_762){ -var ref=_762.before||_762.after; -var opts=$.data(_761,"treegrid").options; -var _763=_731(_761,ref); -_75c(_761,{parent:(_763?_763[opts.idField]:null),data:[_762.data]}); -_764(true); -_764(false); -_70f(_761); -function _764(_765){ -var _766=_765?1:2; -var tr=opts.finder.getTr(_761,_762.data[opts.idField],"body",_766); -var _767=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var dest=opts.finder.getTr(_761,ref,"body",_766); -if(_762.before){ -tr.insertBefore(dest); -}else{ -var sub=dest.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:dest); -} -_767.remove(); -}; -}; -function _768(_769,_76a){ -var opts=$.data(_769,"treegrid").options; -var tr=opts.finder.getTr(_769,_76a); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _76b=del(_76a); -if(_76b){ -if(_76b.children.length==0){ -tr=opts.finder.getTr(_769,_76b[opts.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); -cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -cell.find(".tree-hit").remove(); -$("").prependTo(cell); -} -} -_70f(_769); -function del(id){ -var cc; -var _76c=_731(_769,_76a); -if(_76c){ -cc=_76c.children; -}else{ -cc=$(_769).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_785.length;i++){ -var row=_785[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=opts.rowStyler?opts.rowStyler.call(_77b,row):""; -var _787=""; -var _788=""; -if(typeof css=="string"){ -_788=css; -}else{ -if(css){ -_787=css["class"]||""; -_788=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_780++%2&&opts.striped?"datagrid-row-alt ":" ")+_787+"\""; -var _789=_788?"style=\""+_788+"\"":""; -var _78a=_77f+"-"+(_783?1:2)+"-"+row[opts.idField]; -_786.push(""); -_786=_786.concat(view.renderRow.call(view,_77b,_77e,_783,_784,row)); -_786.push(""); -if(row.children&&row.children.length){ -var tt=_782(_783,_784+1,row.children); -var v=row.state=="closed"?"none":"block"; -_786.push("
                                      "); -_786=_786.concat(tt); -_786.push("
                                      "); -} -} -_786.push(""); -return _786; -}; -},renderFooter:function(_78b,_78c,_78d){ -var opts=$.data(_78b,"treegrid").options; -var rows=$.data(_78b,"treegrid").footer||[]; -var _78e=$(_78b).datagrid("getColumnFields",_78d); -var _78f=[""]; -for(var i=0;i"); -_78f.push(this.renderRow.call(this,_78b,_78e,_78d,0,row)); -_78f.push(""); -} -_78f.push("
                                      "); -$(_78c).html(_78f.join("")); -},renderRow:function(_790,_791,_792,_793,row){ -var opts=$.data(_790,"treegrid").options; -var cc=[]; -if(_792&&opts.rownumbers){ -cc.push("
                                      0
                                      "); -} -for(var i=0;i<_791.length;i++){ -var _794=_791[i]; -var col=$(_790).datagrid("getColumnOption",_794); -if(col){ -var css=col.styler?(col.styler(row[_794],row)||""):""; -var _795=""; -var _796=""; -if(typeof css=="string"){ -_796=css; -}else{ -if(cc){ -_795=css["class"]||""; -_796=css["style"]||""; -} -} -var cls=_795?"class=\""+_795+"\"":""; -var _797=col.hidden?"style=\"display:none;"+_796+"\"":(_796?"style=\""+_796+"\"":""); -cc.push(""); -if(col.checkbox){ -var _797=""; -}else{ -var _797=_796; -if(col.align){ -_797+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_797+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_797+=";height:auto;"; -} -} -} -cc.push("
                                      "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_794],row); -}else{ -val=row[_794]; -} -if(_794==opts.treeField){ -for(var j=0;j<_793;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                      "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_798,id){ -this.updateRow.call(this,_798,id,{}); -},updateRow:function(_799,id,row){ -var opts=$.data(_799,"treegrid").options; -var _79a=$(_799).treegrid("find",id); -$.extend(_79a,row); -var _79b=$(_799).treegrid("getLevel",id)-1; -var _79c=opts.rowStyler?opts.rowStyler.call(_799,_79a):""; -function _79d(_79e){ -var _79f=$(_799).treegrid("getColumnFields",_79e); -var tr=opts.finder.getTr(_799,id,"body",(_79e?1:2)); -var _7a0=tr.find("div.datagrid-cell-rownumber").html(); -var _7a1=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_799,_79f,_79e,_79b,_79a)); -tr.attr("style",_79c||""); -tr.find("div.datagrid-cell-rownumber").html(_7a0); -if(_7a1){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_79d.call(this,true); -_79d.call(this,false); -$(_799).treegrid("fixRowHeight",id); -},onBeforeRender:function(_7a2,_7a3,data){ -if($.isArray(_7a3)){ -data={total:_7a3.length,rows:_7a3}; -_7a3=null; -} -if(!data){ -return false; -} -var _7a4=$.data(_7a2,"treegrid"); -var opts=_7a4.options; -if(data.length==undefined){ -if(data.footer){ -_7a4.footer=data.footer; -} -if(data.total){ -_7a4.total=data.total; -} -data=this.transfer(_7a2,_7a3,data.rows); -}else{ -function _7a5(_7a6,_7a7){ -for(var i=0;i<_7a6.length;i++){ -var row=_7a6[i]; -row._parentId=_7a7; -if(row.children&&row.children.length){ -_7a5(row.children,row[opts.idField]); -} -} -}; -_7a5(data,_7a3); -} -var node=find(_7a2,_7a3); -if(node){ -if(node.children){ -node.children=node.children.concat(data); -}else{ -node.children=data; -} -}else{ -_7a4.data=_7a4.data.concat(data); -} -this.sort(_7a2,data); -this.treeNodes=data; -this.treeLevel=$(_7a2).treegrid("getLevel",_7a3); -},sort:function(_7a8,data){ -var opts=$.data(_7a8,"treegrid").options; -if(!opts.remoteSort&&opts.sortName){ -var _7a9=opts.sortName.split(","); -var _7aa=opts.sortOrder.split(","); -_7ab(data); -} -function _7ab(rows){ -rows.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_7a9.length;i++){ -var sn=_7a9[i]; -var so=_7aa[i]; -var col=$(_7a8).treegrid("getColumnOption",sn); -var _7ac=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_7ac(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i"+""+""+""+"").insertAfter(_7c5); -var _7c6=$("
                                      ").appendTo("body"); -_7c6.panel({doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ -$(this).panel("resize"); -},onClose:function(){ -var _7c7=$.data(_7c5,"combo"); -if(_7c7){ -_7c7.options.onHidePanel.call(_7c5); -} -}}); -var name=$(_7c5).attr("name"); -if(name){ -span.find("input.combo-value").attr("name",name); -$(_7c5).removeAttr("name").attr("comboName",name); -} -return {combo:span,panel:_7c6}; -}; -function _7c8(_7c9){ -var _7ca=$.data(_7c9,"combo"); -var opts=_7ca.options; -var _7cb=_7ca.combo; -if(opts.hasDownArrow){ -_7cb.find(".combo-arrow").show(); -}else{ -_7cb.find(".combo-arrow").hide(); -} -_7cc(_7c9,opts.disabled); -_7cd(_7c9,opts.readonly); -}; -function _7ce(_7cf){ -var _7d0=$.data(_7cf,"combo"); -var _7d1=_7d0.combo.find("input.combo-text"); -_7d1.validatebox("destroy"); -_7d0.panel.panel("destroy"); -_7d0.combo.remove(); -$(_7cf).remove(); -}; -function _7d2(_7d3){ -var _7d4=$.data(_7d3,"combo"); -var opts=_7d4.options; -var _7d5=_7d4.panel; -var _7d6=_7d4.combo; -var _7d7=_7d6.find(".combo-text"); -var _7d8=_7d6.find(".combo-arrow"); -$(document).unbind(".combo").bind("mousedown.combo",function(e){ -var p=$(e.target).closest("span.combo,div.combo-panel"); -if(p.length){ -return; -} -$("body>div.combo-p>div.combo-panel:visible").panel("close"); -}); -_7d7.unbind(".combo"); -_7d8.unbind(".combo"); -if(!opts.disabled&&!opts.readonly){ -_7d7.bind("mousedown.combo",function(e){ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel").not(_7d5).not(p).panel("close"); -e.stopPropagation(); -}).bind("keydown.combo",function(e){ -switch(e.keyCode){ -case 38: -opts.keyHandler.up.call(_7d3); -break; -case 40: -opts.keyHandler.down.call(_7d3); -break; -case 37: -opts.keyHandler.left.call(_7d3); -break; -case 39: -opts.keyHandler.right.call(_7d3); -break; -case 13: -e.preventDefault(); -opts.keyHandler.enter.call(_7d3); -return false; -case 9: -case 27: -_7df(_7d3); -break; -default: -if(opts.editable){ -if(_7d4.timer){ -clearTimeout(_7d4.timer); -} -_7d4.timer=setTimeout(function(){ -var q=_7d7.val(); -if(_7d4.previousValue!=q){ -_7d4.previousValue=q; -$(_7d3).combo("showPanel"); -opts.keyHandler.query.call(_7d3,_7d7.val()); -$(_7d3).combo("validate"); -} -},opts.delay); -} -} -}); -_7d8.bind("click.combo",function(){ -if(_7d5.is(":visible")){ -_7df(_7d3); -}else{ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel:visible").not(p).panel("close"); -$(_7d3).combo("showPanel"); -} -_7d7.focus(); -}).bind("mouseenter.combo",function(){ -$(this).addClass("combo-arrow-hover"); -}).bind("mouseleave.combo",function(){ -$(this).removeClass("combo-arrow-hover"); -}); -} -}; -function _7d9(_7da){ -var opts=$.data(_7da,"combo").options; -var _7db=$.data(_7da,"combo").combo; -var _7dc=$.data(_7da,"combo").panel; -if($.fn.window){ -_7dc.panel("panel").css("z-index",$.fn.window.defaults.zIndex++); -} -_7dc.panel("move",{left:_7db.offset().left,top:_7dd()}); -if(_7dc.panel("options").closed){ -_7dc.panel("open"); -opts.onShowPanel.call(_7da); -} -(function(){ -if(_7dc.is(":visible")){ -_7dc.panel("move",{left:_7de(),top:_7dd()}); -setTimeout(arguments.callee,200); -} -})(); -function _7de(){ -var left=_7db.offset().left; -if(left+_7dc._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ -left=$(window)._outerWidth()+$(document).scrollLeft()-_7dc._outerWidth(); -} -if(left<0){ -left=0; -} -return left; -}; -function _7dd(){ -var top=_7db.offset().top+_7db._outerHeight(); -if(top+_7dc._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=_7db.offset().top-_7dc._outerHeight(); -} -if(top<$(document).scrollTop()){ -top=_7db.offset().top+_7db._outerHeight(); -} -return top; -}; -}; -function _7df(_7e0){ -var _7e1=$.data(_7e0,"combo").panel; -_7e1.panel("close"); -}; -function _7e2(_7e3){ -var opts=$.data(_7e3,"combo").options; -var _7e4=$(_7e3).combo("textbox"); -_7e4.validatebox($.extend({},opts,{deltaX:(opts.hasDownArrow?opts.deltaX:(opts.deltaX>0?1:-1))})); -}; -function _7cc(_7e5,_7e6){ -var _7e7=$.data(_7e5,"combo"); -var opts=_7e7.options; -var _7e8=_7e7.combo; -if(_7e6){ -opts.disabled=true; -$(_7e5).attr("disabled",true); -_7e8.find(".combo-value").attr("disabled",true); -_7e8.find(".combo-text").attr("disabled",true); -}else{ -opts.disabled=false; -$(_7e5).removeAttr("disabled"); -_7e8.find(".combo-value").removeAttr("disabled"); -_7e8.find(".combo-text").removeAttr("disabled"); -} -}; -function _7cd(_7e9,mode){ -var _7ea=$.data(_7e9,"combo"); -var opts=_7ea.options; -opts.readonly=mode==undefined?true:mode; -_7ea.combo.find(".combo-text").attr("readonly",opts.readonly?true:(!opts.editable)); -}; -function _7eb(_7ec){ -var _7ed=$.data(_7ec,"combo"); -var opts=_7ed.options; -var _7ee=_7ed.combo; -if(opts.multiple){ -_7ee.find("input.combo-value").remove(); -}else{ -_7ee.find("input.combo-value").val(""); -} -_7ee.find("input.combo-text").val(""); -}; -function _7ef(_7f0){ -var _7f1=$.data(_7f0,"combo").combo; -return _7f1.find("input.combo-text").val(); -}; -function _7f2(_7f3,text){ -var _7f4=$.data(_7f3,"combo"); -var _7f5=_7f4.combo.find("input.combo-text"); -if(_7f5.val()!=text){ -_7f5.val(text); -$(_7f3).combo("validate"); -_7f4.previousValue=text; -} -}; -function _7f6(_7f7){ -var _7f8=[]; -var _7f9=$.data(_7f7,"combo").combo; -_7f9.find("input.combo-value").each(function(){ -_7f8.push($(this).val()); -}); -return _7f8; -}; -function _7fa(_7fb,_7fc){ -var opts=$.data(_7fb,"combo").options; -var _7fd=_7f6(_7fb); -var _7fe=$.data(_7fb,"combo").combo; -_7fe.find("input.combo-value").remove(); -var name=$(_7fb).attr("comboName"); -for(var i=0;i<_7fc.length;i++){ -var _7ff=$("").appendTo(_7fe); -if(name){ -_7ff.attr("name",name); -} -_7ff.val(_7fc[i]); -} -var tmp=[]; -for(var i=0;i<_7fd.length;i++){ -tmp[i]=_7fd[i]; -} -var aa=[]; -for(var i=0;i<_7fc.length;i++){ -for(var j=0;j_818.height()){ -var h=_818.scrollTop()+item.position().top+item.outerHeight()-_818.height(); -_818.scrollTop(h); -} -} -} -}; -function nav(_819,dir){ -var opts=$(_819).combobox("options"); -var _81a=$(_819).combobox("panel"); -var item=_81a.children("div.combobox-item-hover"); -if(!item.length){ -item=_81a.children("div.combobox-item-selected"); -} -item.removeClass("combobox-item-hover"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:"+(dir=="next"?"first":"last")); -}else{ -if(dir=="next"){ -item=item.nextAll("div.combobox-item:visible:first"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:first"); -} -}else{ -item=item.prevAll("div.combobox-item:visible:first"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:last"); -} -} -} -if(item.length){ -item.addClass("combobox-item-hover"); -_815(_819,item.attr("value")); -if(opts.selectOnNavigation){ -_81b(_819,item.attr("value")); -} -} -}; -function _81b(_81c,_81d){ -var opts=$.data(_81c,"combobox").options; -var data=$.data(_81c,"combobox").data; -if(opts.multiple){ -var _81e=$(_81c).combo("getValues"); -for(var i=0;i<_81e.length;i++){ -if(_81e[i]==_81d){ -return; -} -} -_81e.push(_81d); -_81f(_81c,_81e); -}else{ -_81f(_81c,[_81d]); -} -var item=_813(data,opts.valueField,_81d); -if(item){ -opts.onSelect.call(_81c,item); -} -}; -function _820(_821,_822){ -var _823=$.data(_821,"combobox"); -var opts=_823.options; -var _824=$(_821).combo("getValues"); -var _825=$.inArray(_822+"",_824); -if(_825>=0){ -_824.splice(_825,1); -_81f(_821,_824); -} -var item=_813(_823.data,opts.valueField,_822); -if(item){ -opts.onUnselect.call(_821,item); -} -}; -function _81f(_826,_827,_828){ -var opts=$.data(_826,"combobox").options; -var data=$.data(_826,"combobox").data; -var _829=$(_826).combo("panel"); -_829.find("div.combobox-item-selected").removeClass("combobox-item-selected"); -var vv=[],ss=[]; -for(var i=0;i<_827.length;i++){ -var v=_827[i]; -var s=v; -var item=_813(data,opts.valueField,v); -if(item){ -s=item[opts.textField]; -} -vv.push(v); -ss.push(s); -_829.find("div.combobox-item[value=\""+v+"\"]").addClass("combobox-item-selected"); -} -$(_826).combo("setValues",vv); -if(!_828){ -$(_826).combo("setText",ss.join(opts.separator)); -} -}; -function _82a(_82b,data,_82c){ -var _82d=$.data(_82b,"combobox"); -var opts=_82d.options; -_82d.data=opts.loadFilter.call(_82b,data); -data=_82d.data; -var _82e=$(_82b).combobox("getValues"); -var dd=[]; -var _82f=undefined; -for(var i=0;i"); -dd.push(opts.groupFormatter?opts.groupFormatter.call(_82b,g):g); -dd.push("
                                      "); -} -}else{ -_82f=undefined; -} -dd.push("
                                      "); -dd.push(opts.formatter?opts.formatter.call(_82b,item):s); -dd.push("
                                      "); -if(item["selected"]){ -(function(){ -for(var i=0;i<_82e.length;i++){ -if(v==_82e[i]){ -return; -} -} -_82e.push(v); -})(); -} -} -$(_82b).combo("panel").html(dd.join("")); -if(opts.multiple){ -_81f(_82b,_82e,_82c); -}else{ -if(_82e.length){ -_81f(_82b,[_82e[_82e.length-1]],_82c); -}else{ -_81f(_82b,[],_82c); -} -} -opts.onLoadSuccess.call(_82b,data); -}; -function _830(_831,url,_832,_833){ -var opts=$.data(_831,"combobox").options; -if(url){ -opts.url=url; -} -_832=_832||{}; -if(opts.onBeforeLoad.call(_831,_832)==false){ -return; -} -opts.loader.call(_831,_832,function(data){ -_82a(_831,data,_833); -},function(){ -opts.onLoadError.apply(this,arguments); -}); -}; -function _834(_835,q){ -var _836=$.data(_835,"combobox"); -var opts=_836.options; -if(opts.multiple&&!q){ -_81f(_835,[],true); -}else{ -_81f(_835,[q],true); -} -if(opts.mode=="remote"){ -_830(_835,null,{q:q},true); -}else{ -var _837=$(_835).combo("panel"); -_837.find("div.combobox-item,div.combobox-group").hide(); -var data=_836.data; -var _838=undefined; -for(var i=0;i").appendTo(_858); -$.data(_857,"combotree").tree=tree; -} -tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ -var _859=$(_857).combotree("getValues"); -if(opts.multiple){ -var _85a=tree.tree("getChecked"); -for(var i=0;i<_85a.length;i++){ -var id=_85a[i].id; -(function(){ -for(var i=0;i<_859.length;i++){ -if(id==_859[i]){ -return; -} -} -_859.push(id); -})(); -} -} -$(_857).combotree("setValues",_859); -opts.onLoadSuccess.call(this,node,data); -},onClick:function(node){ -_85c(_857); -$(_857).combo("hidePanel"); -opts.onClick.call(this,node); -},onCheck:function(node,_85b){ -_85c(_857); -opts.onCheck.call(this,node,_85b); -}})); -}; -function _85c(_85d){ -var opts=$.data(_85d,"combotree").options; -var tree=$.data(_85d,"combotree").tree; -var vv=[],ss=[]; -if(opts.multiple){ -var _85e=tree.tree("getChecked"); -for(var i=0;i<_85e.length;i++){ -vv.push(_85e[i].id); -ss.push(_85e[i].text); -} -}else{ -var node=tree.tree("getSelected"); -if(node){ -vv.push(node.id); -ss.push(node.text); -} -} -$(_85d).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -function _85f(_860,_861){ -var opts=$.data(_860,"combotree").options; -var tree=$.data(_860,"combotree").tree; -tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); -var vv=[],ss=[]; -for(var i=0;i<_861.length;i++){ -var v=_861[i]; -var s=v; -var node=tree.tree("find",v); -if(node){ -s=node.text; -tree.tree("check",node.target); -tree.tree("select",node.target); -} -vv.push(v); -ss.push(s); -} -$(_860).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -$.fn.combotree=function(_862,_863){ -if(typeof _862=="string"){ -var _864=$.fn.combotree.methods[_862]; -if(_864){ -return _864(this,_863); -}else{ -return this.combo(_862,_863); -} -} -_862=_862||{}; -return this.each(function(){ -var _865=$.data(this,"combotree"); -if(_865){ -$.extend(_865.options,_862); -}else{ -$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_862)}); -} -_856(this); -}); -}; -$.fn.combotree.methods={options:function(jq){ -var _866=jq.combo("options"); -return $.extend($.data(jq[0],"combotree").options,{originalValue:_866.originalValue,disabled:_866.disabled,readonly:_866.readonly}); -},tree:function(jq){ -return $.data(jq[0],"combotree").tree; -},loadData:function(jq,data){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -opts.data=data; -var tree=$.data(this,"combotree").tree; -tree.tree("loadData",data); -}); -},reload:function(jq,url){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -var tree=$.data(this,"combotree").tree; -if(url){ -opts.url=url; -} -tree.tree({url:opts.url}); -}); -},setValues:function(jq,_867){ -return jq.each(function(){ -_85f(this,_867); -}); -},setValue:function(jq,_868){ -return jq.each(function(){ -_85f(this,[_868]); -}); -},clear:function(jq){ -return jq.each(function(){ -var tree=$.data(this,"combotree").tree; -tree.find("div.tree-node-selected").removeClass("tree-node-selected"); -var cc=tree.tree("getChecked"); -for(var i=0;i").appendTo(_86d); -_86c.grid=grid; -} -grid.datagrid($.extend({},opts,{border:false,fit:true,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ -var _86e=$(_86b).combo("getValues"); -var _86f=opts.onSelect; -opts.onSelect=function(){ -}; -_879(_86b,_86e,_86c.remainText); -opts.onSelect=_86f; -opts.onLoadSuccess.apply(_86b,arguments); -},onClickRow:_870,onSelect:function(_871,row){ -_872(); -opts.onSelect.call(this,_871,row); -},onUnselect:function(_873,row){ -_872(); -opts.onUnselect.call(this,_873,row); -},onSelectAll:function(rows){ -_872(); -opts.onSelectAll.call(this,rows); -},onUnselectAll:function(rows){ -if(opts.multiple){ -_872(); -} -opts.onUnselectAll.call(this,rows); -}})); -function _870(_874,row){ -_86c.remainText=false; -_872(); -if(!opts.multiple){ -$(_86b).combo("hidePanel"); -} -opts.onClickRow.call(this,_874,row); -}; -function _872(){ -var rows=grid.datagrid("getSelections"); -var vv=[],ss=[]; -for(var i=0;i=_877){ -_878=0; -} -} -grid.datagrid("highlightRow",_878); -if(opts.selectOnNavigation){ -_876.remainText=false; -grid.datagrid("selectRow",_878); -} -}; -function _879(_87a,_87b,_87c){ -var _87d=$.data(_87a,"combogrid"); -var opts=_87d.options; -var grid=_87d.grid; -var rows=grid.datagrid("getRows"); -var ss=[]; -var _87e=$(_87a).combo("getValues"); -var _87f=$(_87a).combo("options"); -var _880=_87f.onChange; -_87f.onChange=function(){ -}; -grid.datagrid("clearSelections"); -for(var i=0;i<_87b.length;i++){ -var _881=grid.datagrid("getRowIndex",_87b[i]); -if(_881>=0){ -grid.datagrid("selectRow",_881); -ss.push(rows[_881][opts.textField]); -}else{ -ss.push(_87b[i]); -} -} -$(_87a).combo("setValues",_87e); -_87f.onChange=_880; -$(_87a).combo("setValues",_87b); -if(!_87c){ -var s=ss.join(opts.separator); -if($(_87a).combo("getText")!=s){ -$(_87a).combo("setText",s); -} -} -}; -function _882(_883,q){ -var _884=$.data(_883,"combogrid"); -var opts=_884.options; -var grid=_884.grid; -_884.remainText=true; -if(opts.multiple&&!q){ -_879(_883,[],true); -}else{ -_879(_883,[q],true); -} -if(opts.mode=="remote"){ -grid.datagrid("clearSelections"); -grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); -}else{ -if(!q){ -return; -} -var rows=grid.datagrid("getRows"); -for(var i=0;i
                                      ").appendTo(_896).wrap("
                                      "); -_893.calendar.calendar({fit:true,border:false,onSelect:function(date){ -var _897=opts.formatter(date); -_89f(_892,_897); -$(_892).combo("hidePanel"); -opts.onSelect.call(_892,date); -}}); -_89f(_892,opts.value); -var _898=$("
                                      ").appendTo(_896); -var _899=$("").html(opts.currentText).appendTo(_898); -var _89a=$("").html(opts.closeText).appendTo(_898); -_899.click(function(){ -_893.calendar.calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -}); -_89a.click(function(){ -$(_892).combo("hidePanel"); -}); -}; -function _894(){ -if(opts.panelHeight!="auto"){ -var _89b=$(_892).combo("panel"); -var ci=_89b.children("div.datebox-calendar-inner"); -var _89c=_89b.height(); -_89b.children().not(ci).each(function(){ -_89c-=$(this).outerHeight(); -}); -ci._outerHeight(_89c); -} -_893.calendar.calendar("resize"); -}; -}; -function _89d(_89e,q){ -_89f(_89e,q); -}; -function _8a0(_8a1){ -var _8a2=$.data(_8a1,"datebox"); -var opts=_8a2.options; -var c=_8a2.calendar; -var _8a3=opts.formatter(c.calendar("options").current); -_89f(_8a1,_8a3); -$(_8a1).combo("hidePanel"); -}; -function _89f(_8a4,_8a5){ -var _8a6=$.data(_8a4,"datebox"); -var opts=_8a6.options; -$(_8a4).combo("setValue",_8a5).combo("setText",_8a5); -_8a6.calendar.calendar("moveTo",opts.parser(_8a5)); -}; -$.fn.datebox=function(_8a7,_8a8){ -if(typeof _8a7=="string"){ -var _8a9=$.fn.datebox.methods[_8a7]; -if(_8a9){ -return _8a9(this,_8a8); -}else{ -return this.combo(_8a7,_8a8); -} -} -_8a7=_8a7||{}; -return this.each(function(){ -var _8aa=$.data(this,"datebox"); -if(_8aa){ -$.extend(_8aa.options,_8a7); -}else{ -$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_8a7)}); -} -_891(this); -}); -}; -$.fn.datebox.methods={options:function(jq){ -var _8ab=jq.combo("options"); -return $.extend($.data(jq[0],"datebox").options,{originalValue:_8ab.originalValue,disabled:_8ab.disabled,readonly:_8ab.readonly}); -},calendar:function(jq){ -return $.data(jq[0],"datebox").calendar; -},setValue:function(jq,_8ac){ -return jq.each(function(){ -_89f(this,_8ac); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datebox("options"); -$(this).datebox("setValue",opts.originalValue); -}); -}}; -$.fn.datebox.parseOptions=function(_8ad){ -var t=$(_8ad); -return $.extend({},$.fn.combo.parseOptions(_8ad),{}); -}; -$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",keyHandler:{up:function(){ -},down:function(){ -},enter:function(){ -_8a0(this); -},query:function(q){ -_89d(this,q); -}},currentText:"Today",closeText:"Close",okText:"Ok",formatter:function(date){ -var y=date.getFullYear(); -var m=date.getMonth()+1; -var d=date.getDate(); -return m+"/"+d+"/"+y; -},parser:function(s){ -var t=Date.parse(s); -if(!isNaN(t)){ -return new Date(t); -}else{ -return new Date(); -} -},onSelect:function(date){ -}}); -})(jQuery); -(function($){ -function _8ae(_8af){ -var _8b0=$.data(_8af,"datetimebox"); -var opts=_8b0.options; -$(_8af).datebox($.extend({},opts,{onShowPanel:function(){ -var _8b1=$(_8af).datetimebox("getValue"); -_8b4(_8af,_8b1,true); -opts.onShowPanel.call(_8af); -},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); -$(_8af).removeClass("datebox-f").addClass("datetimebox-f"); -$(_8af).datebox("calendar").calendar({onSelect:function(date){ -opts.onSelect.call(_8af,date); -}}); -var _8b2=$(_8af).datebox("panel"); -if(!_8b0.spinner){ -var p=$("
                                      ").insertAfter(_8b2.children("div.datebox-calendar-inner")); -_8b0.spinner=p.children("input"); -var _8b3=_8b2.children("div.datebox-button"); -var ok=$("").html(opts.okText).appendTo(_8b3); -ok.click(function(){ -_8b9(_8af); -}); -} -_8b0.spinner.timespinner({showSeconds:opts.showSeconds,separator:opts.timeSeparator}).unbind(".datetimebox").bind("mousedown.datetimebox",function(e){ -e.stopPropagation(); -}); -_8b4(_8af,opts.value); -}; -function _8b5(_8b6){ -var c=$(_8b6).datetimebox("calendar"); -var t=$(_8b6).datetimebox("spinner"); -var date=c.calendar("options").current; -return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); -}; -function _8b7(_8b8,q){ -_8b4(_8b8,q,true); -}; -function _8b9(_8ba){ -var opts=$.data(_8ba,"datetimebox").options; -var date=_8b5(_8ba); -_8b4(_8ba,opts.formatter.call(_8ba,date)); -$(_8ba).combo("hidePanel"); -}; -function _8b4(_8bb,_8bc,_8bd){ -var opts=$.data(_8bb,"datetimebox").options; -$(_8bb).combo("setValue",_8bc); -if(!_8bd){ -if(_8bc){ -var date=opts.parser.call(_8bb,_8bc); -$(_8bb).combo("setValue",opts.formatter.call(_8bb,date)); -$(_8bb).combo("setText",opts.formatter.call(_8bb,date)); -}else{ -$(_8bb).combo("setText",_8bc); -} -} -var date=opts.parser.call(_8bb,_8bc); -$(_8bb).datetimebox("calendar").calendar("moveTo",date); -$(_8bb).datetimebox("spinner").timespinner("setValue",_8be(date)); -function _8be(date){ -function _8bf(_8c0){ -return (_8c0<10?"0":"")+_8c0; -}; -var tt=[_8bf(date.getHours()),_8bf(date.getMinutes())]; -if(opts.showSeconds){ -tt.push(_8bf(date.getSeconds())); -} -return tt.join($(_8bb).datetimebox("spinner").timespinner("options").separator); -}; -}; -$.fn.datetimebox=function(_8c1,_8c2){ -if(typeof _8c1=="string"){ -var _8c3=$.fn.datetimebox.methods[_8c1]; -if(_8c3){ -return _8c3(this,_8c2); -}else{ -return this.datebox(_8c1,_8c2); -} -} -_8c1=_8c1||{}; -return this.each(function(){ -var _8c4=$.data(this,"datetimebox"); -if(_8c4){ -$.extend(_8c4.options,_8c1); -}else{ -$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_8c1)}); -} -_8ae(this); -}); -}; -$.fn.datetimebox.methods={options:function(jq){ -var _8c5=jq.datebox("options"); -return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_8c5.originalValue,disabled:_8c5.disabled,readonly:_8c5.readonly}); -},spinner:function(jq){ -return $.data(jq[0],"datetimebox").spinner; -},setValue:function(jq,_8c6){ -return jq.each(function(){ -_8b4(this,_8c6); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datetimebox("options"); -$(this).datetimebox("setValue",opts.originalValue); -}); -}}; -$.fn.datetimebox.parseOptions=function(_8c7){ -var t=$(_8c7); -return $.extend({},$.fn.datebox.parseOptions(_8c7),$.parser.parseOptions(_8c7,["timeSeparator",{showSeconds:"boolean"}])); -}; -$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{showSeconds:true,timeSeparator:":",keyHandler:{up:function(){ -},down:function(){ -},enter:function(){ -_8b9(this); -},query:function(q){ -_8b7(this,q); -}},formatter:function(date){ -var h=date.getHours(); -var M=date.getMinutes(); -var s=date.getSeconds(); -function _8c8(_8c9){ -return (_8c9<10?"0":"")+_8c9; -}; -var _8ca=$(this).datetimebox("spinner").timespinner("options").separator; -var r=$.fn.datebox.defaults.formatter(date)+" "+_8c8(h)+_8ca+_8c8(M); -if($(this).datetimebox("options").showSeconds){ -r+=_8ca+_8c8(s); -} -return r; -},parser:function(s){ -if($.trim(s)==""){ -return new Date(); -} -var dt=s.split(" "); -var d=$.fn.datebox.defaults.parser(dt[0]); -if(dt.length<2){ -return d; -} -var _8cb=$(this).datetimebox("spinner").timespinner("options").separator; -var tt=dt[1].split(_8cb); -var hour=parseInt(tt[0],10)||0; -var _8cc=parseInt(tt[1],10)||0; -var _8cd=parseInt(tt[2],10)||0; -return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_8cc,_8cd); -}}); -})(jQuery); -(function($){ -function init(_8ce){ -var _8cf=$("
                                      "+"
                                      "+""+""+"
                                      "+"
                                      "+"
                                      "+"
                                      "+""+"
                                      ").insertAfter(_8ce); -var name=$(_8ce).hide().attr("name"); -if(name){ -_8cf.find("input.slider-value").attr("name",name); -$(_8ce).removeAttr("name").attr("sliderName",name); -} -return _8cf; -}; -function _8d0(_8d1,_8d2){ -var _8d3=$.data(_8d1,"slider"); -var opts=_8d3.options; -var _8d4=_8d3.slider; -if(_8d2){ -if(_8d2.width){ -opts.width=_8d2.width; -} -if(_8d2.height){ -opts.height=_8d2.height; -} -} -if(opts.mode=="h"){ -_8d4.css("height",""); -_8d4.children("div").css("height",""); -if(!isNaN(opts.width)){ -_8d4.width(opts.width); -} -}else{ -_8d4.css("width",""); -_8d4.children("div").css("width",""); -if(!isNaN(opts.height)){ -_8d4.height(opts.height); -_8d4.find("div.slider-rule").height(opts.height); -_8d4.find("div.slider-rulelabel").height(opts.height); -_8d4.find("div.slider-inner")._outerHeight(opts.height); -} -} -_8d5(_8d1); -}; -function _8d6(_8d7){ -var _8d8=$.data(_8d7,"slider"); -var opts=_8d8.options; -var _8d9=_8d8.slider; -var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); -if(opts.reversed){ -aa=aa.slice(0).reverse(); -} -_8da(aa); -function _8da(aa){ -var rule=_8d9.find("div.slider-rule"); -var _8db=_8d9.find("div.slider-rulelabel"); -rule.empty(); -_8db.empty(); -for(var i=0;i").appendTo(rule); -span.css((opts.mode=="h"?"left":"top"),_8dc); -if(aa[i]!="|"){ -span=$("").appendTo(_8db); -span.html(aa[i]); -if(opts.mode=="h"){ -span.css({left:_8dc,marginLeft:-Math.round(span.outerWidth()/2)}); -}else{ -span.css({top:_8dc,marginTop:-Math.round(span.outerHeight()/2)}); -} -} -} -}; -}; -function _8dd(_8de){ -var _8df=$.data(_8de,"slider"); -var opts=_8df.options; -var _8e0=_8df.slider; -_8e0.removeClass("slider-h slider-v slider-disabled"); -_8e0.addClass(opts.mode=="h"?"slider-h":"slider-v"); -_8e0.addClass(opts.disabled?"slider-disabled":""); -_8e0.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ -var left=e.data.left; -var _8e1=_8e0.width(); -if(opts.mode!="h"){ -left=e.data.top; -_8e1=_8e0.height(); -} -if(left<0||left>_8e1){ -return false; -}else{ -var _8e2=_8f4(_8de,left); -_8e3(_8e2); -return false; -} -},onBeforeDrag:function(){ -_8df.isDragging=true; -},onStartDrag:function(){ -opts.onSlideStart.call(_8de,opts.value); -},onStopDrag:function(e){ -var _8e4=_8f4(_8de,(opts.mode=="h"?e.data.left:e.data.top)); -_8e3(_8e4); -opts.onSlideEnd.call(_8de,opts.value); -opts.onComplete.call(_8de,opts.value); -_8df.isDragging=false; -}}); -_8e0.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_8df.isDragging){ -return; -} -var pos=$(this).offset(); -var _8e5=_8f4(_8de,(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_8e3(_8e5); -opts.onComplete.call(_8de,opts.value); -}); -function _8e3(_8e6){ -var s=Math.abs(_8e6%opts.step); -if(sopts.max){ -_8e9=opts.max; -} -opts.value=_8e9; -$(_8e8).val(_8e9); -_8eb.find("input.slider-value").val(_8e9); -var pos=_8ed(_8e8,_8e9); -var tip=_8eb.find(".slider-tip"); -if(opts.showTip){ -tip.show(); -tip.html(opts.tipFormatter.call(_8e8,opts.value)); -}else{ -tip.hide(); -} -if(opts.mode=="h"){ -var _8ee="left:"+pos+"px;"; -_8eb.find(".slider-handle").attr("style",_8ee); -tip.attr("style",_8ee+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _8ee="top:"+pos+"px;"; -_8eb.find(".slider-handle").attr("style",_8ee); -tip.attr("style",_8ee+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_8ec!=_8e9){ -opts.onChange.call(_8e8,_8e9,_8ec); -} -}; -function _8d5(_8ef){ -var opts=$.data(_8ef,"slider").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_8e7(_8ef,opts.value); -opts.onChange=fn; -}; -function _8ed(_8f0,_8f1){ -var _8f2=$.data(_8f0,"slider"); -var opts=_8f2.options; -var _8f3=_8f2.slider; -if(opts.mode=="h"){ -var pos=(_8f1-opts.min)/(opts.max-opts.min)*_8f3.width(); -if(opts.reversed){ -pos=_8f3.width()-pos; -} -}else{ -var pos=_8f3.height()-(_8f1-opts.min)/(opts.max-opts.min)*_8f3.height(); -if(opts.reversed){ -pos=_8f3.height()-pos; -} -} -return pos.toFixed(0); -}; -function _8f4(_8f5,pos){ -var _8f6=$.data(_8f5,"slider"); -var opts=_8f6.options; -var _8f7=_8f6.slider; -if(opts.mode=="h"){ -var _8f8=opts.min+(opts.max-opts.min)*(pos/_8f7.width()); -}else{ -var _8f8=opts.min+(opts.max-opts.min)*((_8f7.height()-pos)/_8f7.height()); -} -return opts.reversed?opts.max-_8f8.toFixed(0):_8f8.toFixed(0); -}; -$.fn.slider=function(_8f9,_8fa){ -if(typeof _8f9=="string"){ -return $.fn.slider.methods[_8f9](this,_8fa); -} -_8f9=_8f9||{}; -return this.each(function(){ -var _8fb=$.data(this,"slider"); -if(_8fb){ -$.extend(_8fb.options,_8f9); -}else{ -_8fb=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_8f9),slider:init(this)}); -$(this).removeAttr("disabled"); -} -var opts=_8fb.options; -opts.min=parseFloat(opts.min); -opts.max=parseFloat(opts.max); -opts.value=parseFloat(opts.value); -opts.step=parseFloat(opts.step); -_8dd(this); -_8d6(this); -_8d0(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_8fc){ -return jq.each(function(){ -_8d0(this,_8fc); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_8fd){ -return jq.each(function(){ -_8e7(this,_8fd); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_8dd(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_8dd(this); -}); -}}; -$.fn.slider.parseOptions=function(_8fe){ -var t=$(_8fe); -return $.extend({},$.parser.parseOptions(_8fe,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_8ff){ -return _8ff; -},onChange:function(_900,_901){ -},onSlideStart:function(_902){ -},onSlideEnd:function(_903){ -},onComplete:function(_904){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/jquery.min.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/jquery.min.js deleted file mode 100644 index ab28a24..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
                                      ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; -if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
                                      a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
                                      ","
                                      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                      "],tr:[2,"","
                                      "],col:[2,"","
                                      "],td:[3,"","
                                      "],_default:k.htmlSerialize?[0,"",""]:[1,"X
                                      ","
                                      "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=_5.attr("target"),a=_5.attr("action"); -_5.attr("target",_6); -var _8=$(); -try{ -_7.appendTo("body"); -_7.bind("load",cb); -for(var n in _4){ -var f=$("").val(_4[n]).appendTo(_5); -_8=_8.add(f); -} -_5[0].submit(); -} -finally{ -_5.attr("action",a); -t?_5.attr("target",t):_5.removeAttr("target"); -_8.remove(); -} -var _9=10; -function cb(){ -_7.unbind(); -var _a=$("#"+_6).contents().find("body"); -var _b=_a.html(); -if(_b==""){ -if(--_9){ -setTimeout(cb,100); -return; -} -return; -} -var ta=_a.find(">textarea"); -if(ta.length){ -_b=ta.val(); -}else{ -var _c=_a.find(">pre"); -if(_c.length){ -_b=_c.html(); -} -} -if(_3.success){ -_3.success(_b); -} -setTimeout(function(){ -_7.unbind(); -_7.remove(); -},100); -}; -}; -function _d(_e,_f){ -if(!$.data(_e,"form")){ -$.data(_e,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var _10=$.data(_e,"form").options; -if(typeof _f=="string"){ -var _11={}; -if(_10.onBeforeLoad.call(_e,_11)==false){ -return; -} -$.ajax({url:_f,data:_11,dataType:"json",success:function(_12){ -_13(_12); -},error:function(){ -_10.onLoadError.apply(_e,arguments); -}}); -}else{ -_13(_f); -} -function _13(_14){ -var _15=$(_e); -for(var _16 in _14){ -var val=_14[_16]; -var rr=_17(_16,val); -if(!rr.length){ -var f=_15.find("input[numberboxName=\""+_16+"\"]"); -if(f.length){ -f.numberbox("setValue",val); -}else{ -$("input[name=\""+_16+"\"]",_15).val(val); -$("textarea[name=\""+_16+"\"]",_15).val(val); -$("select[name=\""+_16+"\"]",_15).val(val); -} -} -_18(_16,val); -} -_10.onLoadSuccess.call(_e,_14); -_20(_e); -}; -function _17(_19,val){ -var rr=$(_e).find("input[name=\""+_19+"\"][type=radio], input[name=\""+_19+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),val)>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _18(_1a,val){ -var _1b=$(_e); -var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"]; -var c=_1b.find("[comboName=\""+_1a+"\"]"); -if(c.length){ -for(var i=0;i=0){ -_1b(_16,_18,this); -} -}); -}; -cc.children("form").length?_17(cc.children("form")):_17(cc); -cc.append("
                                      "); -cc.bind("_resize",function(e,_19){ -var _1a=$.data(_16,"layout").options; -if(_1a.fit==true||_19){ -_2(_16); -} -return false; -}); -}; -function _1b(_1c,_1d,el){ -_1d.region=_1d.region||"center"; -var _1e=$.data(_1c,"layout").panels; -var cc=$(_1c); -var dir=_1d.region; -if(_1e[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
                                      ").appendTo(cc); -} -var _1f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var _20=$(this).panel("header").children("div.panel-tool"); -_20.children("a.panel-tool-collapse").hide(); -var _21={north:"up",south:"down",east:"right",west:"left"}; -if(!_21[dir]){ -return; -} -var _22="layout-button-"+_21[dir]; -var t=_20.children("a."+_22); -if(!t.length){ -t=$("").addClass(_22).appendTo(_20); -t.bind("click",{dir:dir},function(e){ -_2f(_1c,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_1d); -pp.panel(_1f); -_1e[dir]=pp; -if(pp.panel("options").split){ -var _23=pp.panel("panel"); -_23.addClass("layout-split-"+dir); -var _24=""; -if(dir=="north"){ -_24="s"; -} -if(dir=="south"){ -_24="n"; -} -if(dir=="east"){ -_24="w"; -} -if(dir=="west"){ -_24="e"; -} -_23.resizable($.extend({},{handles:_24,onStartResize:function(e){ -_1=true; -if(dir=="north"||dir=="south"){ -var _25=$(">div.layout-split-proxy-v",_1c); -}else{ -var _25=$(">div.layout-split-proxy-h",_1c); -} -var top=0,_26=0,_27=0,_28=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_23.css("top"))+_23.outerHeight()-_25.height(); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_23.css("top")); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=parseInt(_23.css("left"))||0; -pos.width=_25.width(); -pos.height=_23.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=_23.outerWidth()-_25.width(); -pos.width=_25.width(); -pos.height=_23.outerHeight(); -} -} -} -} -_25.css(pos); -$("
                                      ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _29=$(">div.layout-split-proxy-v",_1c); -_29.css("top",e.pageY-$(_1c).offset().top-_29.height()/2); -}else{ -var _29=$(">div.layout-split-proxy-h",_1c); -_29.css("left",e.pageX-$(_1c).offset().left-_29.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_2(_1c); -_1=false; -cc.find(">div.layout-mask").remove(); -}},_1d)); -} -}; -function _2a(_2b,_2c){ -var _2d=$.data(_2b,"layout").panels; -if(_2d[_2c].length){ -_2d[_2c].panel("destroy"); -_2d[_2c]=$(); -var _2e="expand"+_2c.substring(0,1).toUpperCase()+_2c.substring(1); -if(_2d[_2e]){ -_2d[_2e].panel("destroy"); -_2d[_2e]=undefined; -} -} -}; -function _2f(_30,_31,_32){ -if(_32==undefined){ -_32="normal"; -} -var _33=$.data(_30,"layout").panels; -var p=_33[_31]; -if(p.panel("options").onBeforeCollapse.call(p)==false){ -return; -} -var _34="expand"+_31.substring(0,1).toUpperCase()+_31.substring(1); -if(!_33[_34]){ -_33[_34]=_35(_31); -_33[_34].panel("panel").bind("click",function(){ -var _36=_37(); -p.panel("expand",false).panel("open").panel("resize",_36.collapse); -p.panel("panel").animate(_36.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_31},function(e){ -if(_1==true){ -return; -} -_2f(_30,e.data.region); -}); -}); -return false; -}); -} -var _38=_37(); -if(!_14(_33[_34])){ -_33.center.panel("resize",_38.resizeC); -} -p.panel("panel").animate(_38.collapse,_32,function(){ -p.panel("collapse",false).panel("close"); -_33[_34].panel("open").panel("resize",_38.expandP); -$(this).unbind(".layout"); -}); -function _35(dir){ -var _39; -if(dir=="east"){ -_39="layout-button-left"; -}else{ -if(dir=="west"){ -_39="layout-button-right"; -}else{ -if(dir=="north"){ -_39="layout-button-down"; -}else{ -if(dir=="south"){ -_39="layout-button-up"; -} -} -} -} -var _3a=$.extend({},$.fn.layout.paneldefaults,{cls:"layout-expand",title:" ",closed:true,doSize:false,tools:[{iconCls:_39,handler:function(){ -_3e(_30,_31); -return false; -}}]}); -var p=$("
                                      ").appendTo(_30).panel(_3a); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _37(){ -var cc=$(_30); -var _3b=_33.center.panel("options"); -if(_31=="east"){ -var _3c=_33["east"].panel("options"); -return {resizeC:{width:_3b.width+_3c.width-28},expand:{left:cc.width()-_3c.width},expandP:{top:_3b.top,left:cc.width()-28,width:28,height:_3b.height},collapse:{left:cc.width(),top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="west"){ -var _3d=_33["west"].panel("options"); -return {resizeC:{width:_3b.width+_3d.width-28,left:28},expand:{left:0},expandP:{left:0,top:_3b.top,width:28,height:_3b.height},collapse:{left:-_3d.width,top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="north"){ -var hh=cc.height()-28; -if(_14(_33.expandSouth)){ -hh-=_33.expandSouth.panel("options").height; -}else{ -if(_14(_33.south)){ -hh-=_33.south.panel("options").height; -} -} -_33.east.panel("resize",{top:28,height:hh}); -_33.west.panel("resize",{top:28,height:hh}); -if(_14(_33.expandEast)){ -_33.expandEast.panel("resize",{top:28,height:hh}); -} -if(_14(_33.expandWest)){ -_33.expandWest.panel("resize",{top:28,height:hh}); -} -return {resizeC:{top:28,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_33["north"].panel("options").height,width:cc.width()}}; -}else{ -if(_31=="south"){ -var hh=cc.height()-28; -if(_14(_33.expandNorth)){ -hh-=_33.expandNorth.panel("options").height; -}else{ -if(_14(_33.north)){ -hh-=_33.north.panel("options").height; -} -} -_33.east.panel("resize",{height:hh}); -_33.west.panel("resize",{height:hh}); -if(_14(_33.expandEast)){ -_33.expandEast.panel("resize",{height:hh}); -} -if(_14(_33.expandWest)){ -_33.expandWest.panel("resize",{height:hh}); -} -return {resizeC:{height:hh},expand:{top:cc.height()-_33["south"].panel("options").height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _3e(_3f,_40){ -var _41=$.data(_3f,"layout").panels; -var _42=_43(); -var p=_41[_40]; -if(p.panel("options").onBeforeExpand.call(p)==false){ -return; -} -var _44="expand"+_40.substring(0,1).toUpperCase()+_40.substring(1); -_41[_44].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_42.collapse); -p.panel("panel").animate(_42.expand,function(){ -_2(_3f); -}); -function _43(){ -var cc=$(_3f); -var _45=_41.center.panel("options"); -if(_40=="east"&&_41.expandEast){ -return {collapse:{left:cc.width(),top:_45.top,height:_45.height},expand:{left:cc.width()-_41["east"].panel("options").width}}; -}else{ -if(_40=="west"&&_41.expandWest){ -return {collapse:{left:-_41["west"].panel("options").width,top:_45.top,height:_45.height},expand:{left:0}}; -}else{ -if(_40=="north"&&_41.expandNorth){ -return {collapse:{top:-_41["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_40=="south"&&_41.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_41["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _14(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _46(_47){ -var _48=$.data(_47,"layout").panels; -if(_48.east.length&&_48.east.panel("options").collapsed){ -_2f(_47,"east",0); -} -if(_48.west.length&&_48.west.panel("options").collapsed){ -_2f(_47,"west",0); -} -if(_48.north.length&&_48.north.panel("options").collapsed){ -_2f(_47,"north",0); -} -if(_48.south.length&&_48.south.panel("options").collapsed){ -_2f(_47,"south",0); -} -}; -$.fn.layout=function(_49,_4a){ -if(typeof _49=="string"){ -return $.fn.layout.methods[_49](this,_4a); -} -_49=_49||{}; -return this.each(function(){ -var _4b=$.data(this,"layout"); -if(_4b){ -$.extend(_4b.options,_49); -}else{ -var _4c=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_49); -$.data(this,"layout",{options:_4c,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -_15(this); -} -_2(this); -_46(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_2(this); -}); -},panel:function(jq,_4d){ -return $.data(jq[0],"layout").panels[_4d]; -},collapse:function(jq,_4e){ -return jq.each(function(){ -_2f(this,_4e); -}); -},expand:function(jq,_4f){ -return jq.each(function(){ -_3e(this,_4f); -}); -},add:function(jq,_50){ -return jq.each(function(){ -_1b(this,_50); -_2(this); -if($(this).layout("panel",_50.region).panel("options").collapsed){ -_2f(this,_50.region,0); -} -}); -},remove:function(jq,_51){ -return jq.each(function(){ -_2a(this,_51); -_2(this); -}); -}}; -$.fn.layout.parseOptions=function(_52){ -return $.extend({},$.parser.parseOptions(_52,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_53){ -var t=$(_53); -return $.extend({},$.fn.panel.parseOptions(_53),$.parser.parseOptions(_53,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.linkbutton.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.linkbutton.js deleted file mode 100644 index 676dc05..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.linkbutton.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"linkbutton").options; -var t=$(_2); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_3.plain){ -t.addClass("l-btn-plain"); -} -if(_3.selected){ -t.addClass(_3.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_3.group||""); -t.attr("id",_3.id||""); -t.html(""+""+""); -if(_3.text){ -t.find(".l-btn-text").html(_3.text); -if(_3.iconCls){ -t.find(".l-btn-text").addClass(_3.iconCls).addClass(_3.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_3.iconCls){ -t.find(".l-btn-empty").addClass(_3.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_3.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_3.toggle&&!_3.disabled){ -t.bind("click.linkbutton",function(){ -if(_3.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_4(_2,_3.selected); -_5(_2,_3.disabled); -}; -function _4(_6,_7){ -var _8=$.data(_6,"linkbutton").options; -if(_7){ -if(_8.group){ -$("a.l-btn[group=\""+_8.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_6).addClass(_8.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_8.selected=true; -}else{ -if(!_8.group){ -$(_6).removeClass("l-btn-selected l-btn-plain-selected"); -_8.selected=false; -} -} -}; -function _5(_9,_a){ -var _b=$.data(_9,"linkbutton"); -var _c=_b.options; -$(_9).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_a){ -_c.disabled=true; -var _d=$(_9).attr("href"); -if(_d){ -_b.href=_d; -$(_9).attr("href","javascript:void(0)"); -} -if(_9.onclick){ -_b.onclick=_9.onclick; -_9.onclick=null; -} -_c.plain?$(_9).addClass("l-btn-disabled l-btn-plain-disabled"):$(_9).addClass("l-btn-disabled"); -}else{ -_c.disabled=false; -if(_b.href){ -$(_9).attr("href",_b.href); -} -if(_b.onclick){ -_9.onclick=_b.onclick; -} -} -}; -$.fn.linkbutton=function(_e,_f){ -if(typeof _e=="string"){ -return $.fn.linkbutton.methods[_e](this,_f); -} -_e=_e||{}; -return this.each(function(){ -var _10=$.data(this,"linkbutton"); -if(_10){ -$.extend(_10.options,_e); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_e)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_5(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_4(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_4(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_11){ -var t=$(_11); -return $.extend({},$.parser.parseOptions(_11,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.menu.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.menu.js deleted file mode 100644 index 12b0014..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.menu.js +++ /dev/null @@ -1,412 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).appendTo("body"); -$(_2).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _3=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_3); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _4=_5($(_2)); -for(var i=0;i<_4.length;i++){ -_6(_4[i]); -} -function _5(_7){ -var _8=[]; -_7.addClass("menu"); -_8.push(_7); -if(!_7.hasClass("menu-content")){ -_7.children("div").each(function(){ -var _9=$(this).children("div"); -if(_9.length){ -_9.insertAfter(_2); -this.submenu=_9; -var mm=_5(_9); -_8=_8.concat(mm); -} -}); -} -return _8; -}; -function _6(_a){ -var _b=$.parser.parseOptions(_a[0],["width"]).width; -if(_a.hasClass("menu-content")){ -_a[0].originalWidth=_b||_a._outerWidth(); -}else{ -_a[0].originalWidth=_b||0; -_a.children("div").each(function(){ -var _c=$(this); -if(_c.hasClass("menu-sep")){ -}else{ -var _d=$.extend({},$.parser.parseOptions(this,["name","iconCls","href"]),{disabled:(_c.attr("disabled")?true:undefined)}); -_c[0].itemName=_d.name||""; -_c[0].itemHref=_d.href||""; -var _e=_c.addClass("menu-item").html(); -_c.empty().append($("
                                      ").html(_e)); -if(_d.iconCls){ -$("
                                      ").addClass(_d.iconCls).appendTo(_c); -} -if(_d.disabled){ -_f(_2,_c[0],true); -} -if(_c[0].submenu){ -$("
                                      ").appendTo(_c); -} -_10(_2,_c); -} -}); -$("
                                      ").prependTo(_a); -} -_11(_2,_a); -_a.hide(); -_12(_2,_a); -}; -}; -function _11(_13,_14){ -var _15=$.data(_13,"menu").options; -var d=_14.css("display"); -_14.css({display:"block",left:-10000}); -var _16=0; -_14.find("div.menu-text").each(function(){ -if(_16<$(this)._outerWidth()){ -_16=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_16+=65; -_14._outerWidth(Math.max((_14[0].originalWidth||0),_16,_15.minWidth)); -_14.css("display",d); -}; -function _12(_17,_18){ -var _19=$.data(_17,"menu"); -_18.unbind(".menu").bind("mouseenter.menu",function(){ -if(_19.timer){ -clearTimeout(_19.timer); -_19.timer=null; -} -}).bind("mouseleave.menu",function(){ -_19.timer=setTimeout(function(){ -_1a(_17); -},100); -}); -}; -function _10(_1b,_1c){ -_1c.unbind(".menu"); -_1c.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_1a(_1b); -var _1d=$(this).attr("href"); -if(_1d){ -location.href=_1d; -} -} -var _1e=$(_1b).menu("getItem",this); -$.data(_1b,"menu").options.onClick.call(_1b,_1e); -}).bind("mouseenter.menu",function(e){ -_1c.siblings().each(function(){ -if(this.submenu){ -_21(this.submenu); -} -$(this).removeClass("menu-active"); -}); -_1c.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -_1c.addClass("menu-active-disabled"); -return; -} -var _1f=_1c[0].submenu; -if(_1f){ -$(_1b).menu("show",{menu:_1f,parent:_1c}); -} -}).bind("mouseleave.menu",function(e){ -_1c.removeClass("menu-active menu-active-disabled"); -var _20=_1c[0].submenu; -if(_20){ -if(e.pageX>=parseInt(_20.css("left"))){ -_1c.addClass("menu-active"); -}else{ -_21(_20); -} -}else{ -_1c.removeClass("menu-active"); -} -}); -}; -function _1a(_22){ -var _23=$.data(_22,"menu"); -if(_23){ -if($(_22).is(":visible")){ -_21($(_22)); -_23.options.onHide.call(_22); -} -} -return false; -}; -function _24(_25,_26){ -var _27,top; -_26=_26||{}; -var _28=$(_26.menu||_25); -if(_28.hasClass("menu-top")){ -var _29=$.data(_25,"menu").options; -$.extend(_29,_26); -_27=_29.left; -top=_29.top; -if(_29.alignTo){ -var at=$(_29.alignTo); -_27=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(_27+_28.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -_27=$(window)._outerWidth()+$(document).scrollLeft()-_28.outerWidth()-5; -} -if(top+_28.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top-=_28.outerHeight(); -} -}else{ -var _2a=_26.parent; -_27=_2a.offset().left+_2a.outerWidth()-2; -if(_27+_28.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -_27=_2a.offset().left-_28.outerWidth()+2; -} -var top=_2a.offset().top-3; -if(top+_28.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-_28.outerHeight()-5; -} -} -_28.css({left:_27,top:top}); -_28.show(0,function(){ -if(!_28[0].shadow){ -_28[0].shadow=$("
                                      ").insertAfter(_28); -} -_28[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:_28.css("left"),top:_28.css("top"),width:_28.outerWidth(),height:_28.outerHeight()}); -_28.css("z-index",$.fn.menu.defaults.zIndex++); -if(_28.hasClass("menu-top")){ -$.data(_28[0],"menu").options.onShow.call(_28[0]); -} -}); -}; -function _21(_2b){ -if(!_2b){ -return; -} -_2c(_2b); -_2b.find("div.menu-item").each(function(){ -if(this.submenu){ -_21(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _2c(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _2d(_2e,_2f){ -var _30=null; -var tmp=$("
                                      "); -function _31(_32){ -_32.children("div.menu-item").each(function(){ -var _33=$(_2e).menu("getItem",this); -var s=tmp.empty().html(_33.text).text(); -if(_2f==$.trim(s)){ -_30=_33; -}else{ -if(this.submenu&&!_30){ -_31(this.submenu); -} -} -}); -}; -_31($(_2e)); -tmp.remove(); -return _30; -}; -function _f(_34,_35,_36){ -var t=$(_35); -if(_36){ -t.addClass("menu-item-disabled"); -if(_35.onclick){ -_35.onclick1=_35.onclick; -_35.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_35.onclick1){ -_35.onclick=_35.onclick1; -_35.onclick1=null; -} -} -}; -function _37(_38,_39){ -var _3a=$(_38); -if(_39.parent){ -if(!_39.parent.submenu){ -var _3b=$("
                                      ").appendTo("body"); -_3b.hide(); -_39.parent.submenu=_3b; -$("
                                      ").appendTo(_39.parent); -} -_3a=_39.parent.submenu; -} -var _3c=$("
                                      ").appendTo(_3a); -$("
                                      ").html(_39.text).appendTo(_3c); -if(_39.iconCls){ -$("
                                      ").addClass(_39.iconCls).appendTo(_3c); -} -if(_39.id){ -_3c.attr("id",_39.id); -} -if(_39.name){ -_3c[0].itemName=_39.name; -} -if(_39.href){ -_3c[0].itemHref=_39.href; -} -if(_39.onclick){ -if(typeof _39.onclick=="string"){ -_3c.attr("onclick",_39.onclick); -}else{ -_3c[0].onclick=eval(_39.onclick); -} -} -if(_39.handler){ -_3c[0].onclick=eval(_39.handler); -} -_10(_38,_3c); -if(_39.disabled){ -_f(_38,_3c[0],true); -} -_12(_38,_3a); -_11(_38,_3a); -}; -function _3d(_3e,_3f){ -function _40(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_40(this); -}); -var _41=el.submenu[0].shadow; -if(_41){ -_41.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_40(_3f); -}; -function _42(_43){ -$(_43).children("div.menu-item").each(function(){ -_3d(_43,this); -}); -if(_43.shadow){ -_43.shadow.remove(); -} -$(_43).remove(); -}; -$.fn.menu=function(_44,_45){ -if(typeof _44=="string"){ -return $.fn.menu.methods[_44](this,_45); -} -_44=_44||{}; -return this.each(function(){ -var _46=$.data(this,"menu"); -if(_46){ -$.extend(_46.options,_44); -}else{ -_46=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_44)}); -_1(this); -} -$(this).css({left:_46.options.left,top:_46.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_24(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_1a(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_42(this); -}); -},setText:function(jq,_47){ -return jq.each(function(){ -$(_47.target).children("div.menu-text").html(_47.text); -}); -},setIcon:function(jq,_48){ -return jq.each(function(){ -var _49=$(this).menu("getItem",_48.target); -if(_49.iconCls){ -$(_49.target).children("div.menu-icon").removeClass(_49.iconCls).addClass(_48.iconCls); -}else{ -$("
                                      ").addClass(_48.iconCls).appendTo(_48.target); -} -}); -},getItem:function(jq,_4a){ -var t=$(_4a); -var _4b={target:_4a,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_4a.itemName,href:_4a.itemHref,onclick:_4a.onclick}; -var _4c=t.children("div.menu-icon"); -if(_4c.length){ -var cc=[]; -var aa=_4c.attr("class").split(" "); -for(var i=0;i "})); -if(_3.menu){ -$(_3.menu).menu(); -var _5=$(_3.menu).menu("options"); -var _6=_5.onShow; -var _7=_5.onHide; -$.extend(_5,{onShow:function(){ -var _8=$(this).menu("options"); -var _9=$(_8.alignTo); -var _a=_9.menubutton("options"); -_9.addClass((_a.plain==true)?_a.cls.btn2:_a.cls.btn1); -_6.call(this); -},onHide:function(){ -var _b=$(this).menu("options"); -var _c=$(_b.alignTo); -var _d=_c.menubutton("options"); -_c.removeClass((_d.plain==true)?_d.cls.btn2:_d.cls.btn1); -_7.call(this); -}}); -} -_e(_2,_3.disabled); -}; -function _e(_f,_10){ -var _11=$.data(_f,"menubutton").options; -_11.disabled=_10; -var btn=$(_f); -var t=btn.find("."+_11.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_10){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _12=null; -t.bind("click.menubutton",function(){ -_13(_f); -return false; -}).bind("mouseenter.menubutton",function(){ -_12=setTimeout(function(){ -_13(_f); -},_11.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_12){ -clearTimeout(_12); -} -}); -} -}; -function _13(_14){ -var _15=$.data(_14,"menubutton").options; -if(_15.disabled||!_15.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_14); -var mm=$(_15.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_16,_17){ -if(typeof _16=="string"){ -var _18=$.fn.menubutton.methods[_16]; -if(_18){ -return _18(this,_17); -}else{ -return this.linkbutton(_16,_17); -} -} -_16=_16||{}; -return this.each(function(){ -var _19=$.data(this,"menubutton"); -if(_19){ -$.extend(_19.options,_16); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_16)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _1a=jq.linkbutton("options"); -var _1b=$.data(jq[0],"menubutton").options; -_1b.toggle=_1a.toggle; -_1b.selected=_1a.selected; -return _1b; -},enable:function(jq){ -return jq.each(function(){ -_e(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_e(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var _1c=$(this).menubutton("options"); -if(_1c.menu){ -$(_1c.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_1d){ -var t=$(_1d); -return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.messager.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.messager.js deleted file mode 100644 index ef6fad1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.messager.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(el,_2,_3,_4){ -var _5=$(el).window("window"); -if(!_5){ -return; -} -switch(_2){ -case null: -_5.show(); -break; -case "slide": -_5.slideDown(_3); -break; -case "fade": -_5.fadeIn(_3); -break; -case "show": -_5.show(_3); -break; -} -var _6=null; -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -_5.hover(function(){ -if(_6){ -clearTimeout(_6); -} -},function(){ -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -}); -}; -function _7(el,_8,_9){ -if(el.locked==true){ -return; -} -el.locked=true; -var _a=$(el).window("window"); -if(!_a){ -return; -} -switch(_8){ -case null: -_a.hide(); -break; -case "slide": -_a.slideUp(_9); -break; -case "fade": -_a.fadeOut(_9); -break; -case "show": -_a.hide(_9); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_9); -}; -function _b(_c){ -var _d=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -_1(this,_d.showType,_d.showSpeed,_d.timeout); -return false; -},onBeforeClose:function(){ -_7(this,_d.showType,_d.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_c); -_d.style.zIndex=$.fn.window.defaults.zIndex++; -var _e=$("
                                      ").html(_d.msg).appendTo("body"); -_e.window(_d); -_e.window("window").css(_d.style); -_e.window("open"); -return _e; -}; -function _f(_10,_11,_12){ -var win=$("
                                      ").appendTo("body"); -win.append(_11); -if(_12){ -var tb=$("
                                      ").appendTo(win); -for(var _13 in _12){ -$("").attr("href","javascript:void(0)").text(_13).css("margin-left",10).bind("click",eval(_12[_13])).appendTo(tb).linkbutton(); -} -} -win.window({title:_10,noheader:(_10?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_14){ -return _b(_14); -},alert:function(_15,msg,_16,fn){ -var _17="
                                      "+msg+"
                                      "; -switch(_16){ -case "error": -_17="
                                      "+_17; -break; -case "info": -_17="
                                      "+_17; -break; -case "question": -_17="
                                      "+_17; -break; -case "warning": -_17="
                                      "+_17; -break; -} -_17+="
                                      "; -var _18={}; -_18[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_15,_17,_18); -return win; -},confirm:function(_19,msg,fn){ -var _1a="
                                      "+"
                                      "+msg+"
                                      "+"
                                      "; -var _1b={}; -_1b[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_1b[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_f(_19,_1a,_1b); -return win; -},prompt:function(_1c,msg,fn){ -var _1d="
                                      "+"
                                      "+msg+"
                                      "+"
                                      "+"
                                      "+"
                                      "; -var _1e={}; -_1e[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_1e[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_1c,_1d,_1e); -win.children("input.messager-input").focus(); -return win; -},progress:function(_1f){ -var _20={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _1f=="string"){ -var _21=_20[_1f]; -return _21(); -} -var _22=$.extend({title:"",msg:"",text:undefined,interval:300},_1f||{}); -var _23="
                                      "; -var win=_f(_22.title,_23,null); -win.find("div.messager-p-msg").html(_22.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:_22.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(_22.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},_22.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.numberbox.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.numberbox.js deleted file mode 100644 index d8dd192..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.numberbox.js +++ /dev/null @@ -1,224 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberbox-f"); -var v=$("").insertAfter(_2); -var _3=$(_2).attr("name"); -if(_3){ -v.attr("name",_3); -$(_2).removeAttr("name").attr("numberboxName",_3); -} -return v; -}; -function _4(_5){ -var _6=$.data(_5,"numberbox").options; -var fn=_6.onChange; -_6.onChange=function(){ -}; -_7(_5,_6.parser.call(_5,_6.value)); -_6.onChange=fn; -_6.originalValue=_8(_5); -}; -function _8(_9){ -return $.data(_9,"numberbox").field.val(); -}; -function _7(_a,_b){ -var _c=$.data(_a,"numberbox"); -var _d=_c.options; -var _e=_8(_a); -_b=_d.parser.call(_a,_b); -_d.value=_b; -_c.field.val(_b); -$(_a).val(_d.formatter.call(_a,_b)); -if(_e!=_b){ -_d.onChange.call(_a,_b,_e); -} -}; -function _f(_10){ -var _11=$.data(_10,"numberbox").options; -$(_10).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return _11.filter.call(_10,e); -}).bind("blur.numberbox",function(){ -_7(_10,$(this).val()); -$(this).val(_11.formatter.call(_10,_8(_10))); -}).bind("focus.numberbox",function(){ -var vv=_8(_10); -if(vv!=_11.parser.call(_10,$(this).val())){ -$(this).val(_11.formatter.call(_10,vv)); -} -}); -}; -function _12(_13){ -if($.fn.validatebox){ -var _14=$.data(_13,"numberbox").options; -$(_13).validatebox(_14); -} -}; -function _15(_16,_17){ -var _18=$.data(_16,"numberbox").options; -if(_17){ -_18.disabled=true; -$(_16).attr("disabled",true); -}else{ -_18.disabled=false; -$(_16).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_19,_1a){ -if(typeof _19=="string"){ -var _1b=$.fn.numberbox.methods[_19]; -if(_1b){ -return _1b(this,_1a); -}else{ -return this.validatebox(_19,_1a); -} -} -_19=_19||{}; -return this.each(function(){ -var _1c=$.data(this,"numberbox"); -if(_1c){ -$.extend(_1c.options,_19); -}else{ -_1c=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_19),field:_1(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_15(this,_1c.options.disabled); -_f(this); -_12(this); -_4(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_15(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_15(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_7(this,$(this).val()); -}); -},setValue:function(jq,_1d){ -return jq.each(function(){ -_7(this,_1d); -}); -},getValue:function(jq){ -return _8(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _1e=$.data(this,"numberbox"); -_1e.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1f=$(this).numberbox("options"); -$(this).numberbox("setValue",_1f.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_20){ -var t=$(_20); -return $.extend({},$.fn.validatebox.parseOptions(_20),$.parser.parseOptions(_20,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var _21=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==_21.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==_21.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_22){ -if(!_22){ -return _22; -} -_22=_22+""; -var _23=$(this).numberbox("options"); -var s1=_22,s2=""; -var _24=_22.indexOf("."); -if(_24>=0){ -s1=_22.substring(0,_24); -s2=_22.substring(_24+1,_22.length); -} -if(_23.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+_23.groupSeparator+"$2"); -} -} -if(s2){ -return _23.prefix+s1+_23.decimalSeparator+s2+_23.suffix; -}else{ -return _23.prefix+s1+_23.suffix; -} -},parser:function(s){ -s=s+""; -var _25=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(_25.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.prefix),"g"),"")); -} -if(_25.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.suffix),"g"),"")); -} -if(_25.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.groupSeparator,"g"),"")); -} -if(_25.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(_25.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (_25.min)=="number"&&val<_25.min){ -val=_25.min.toFixed(_25.precision); -}else{ -if(typeof (_25.max)=="number"&&val>_25.max){ -val=_25.max.toFixed(_25.precision); -} -} -} -return val; -},onChange:function(_26,_27){ -}}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.numberspinner.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.numberspinner.js deleted file mode 100644 index 8674f97..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.numberspinner.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberspinner-f"); -var _3=$.data(_2,"numberspinner").options; -$(_2).spinner(_3).numberbox(_3); -}; -function _4(_5,_6){ -var _7=$.data(_5,"numberspinner").options; -var v=parseFloat($(_5).numberbox("getValue")||_7.value)||0; -if(_6==true){ -v-=_7.increment; -}else{ -v+=_7.increment; -} -$(_5).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.numberspinner.methods[_8]; -if(_a){ -return _a(this,_9); -}else{ -return this.spinner(_8,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"numberspinner"); -if(_b){ -$.extend(_b.options,_8); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_8)}); -} -_1(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var _c=$.data(jq[0],"numberspinner").options; -return $.extend(_c,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_d){ -return jq.each(function(){ -$(this).numberbox("setValue",_d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var _e=$(this).numberspinner("options"); -$(this).numberspinner("setValue",_e.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_f){ -return $.extend({},$.fn.spinner.parseOptions(_f),$.fn.numberbox.parseOptions(_f),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(_10){ -_4(this,_10); -}}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.pagination.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.pagination.js deleted file mode 100644 index 22f43b3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.pagination.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"pagination"); -var _4=_3.options; -var bb=_3.bb={}; -var _5=$(_2).addClass("pagination").html("
                                      "); -var tr=_5.find("tr"); -function _6(_7){ -var _8=_4.nav[_7]; -var a=$("").appendTo(tr); -a.wrap(""); -a.linkbutton({iconCls:_8.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -_8.handler.call(_2); -}); -return a; -}; -if(_4.showPageList){ -var ps=$(""); -ps.bind("change",function(){ -_4.pageSize=parseInt($(this).val()); -_4.onChangePageSize.call(_2,_4.pageSize); -_b(_2,_4.pageNumber); -}); -for(var i=0;i<_4.pageList.length;i++){ -$("").text(_4.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -$("
                                      ").appendTo(tr); -} -bb.first=_6("first"); -bb.prev=_6("prev"); -$("
                                      ").appendTo(tr); -$("").html(_4.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _9=parseInt($(this).val())||1; -_b(_2,_9); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -$("
                                      ").appendTo(tr); -bb.next=_6("next"); -bb.last=_6("last"); -if(_4.showRefresh){ -$("
                                      ").appendTo(tr); -bb.refresh=_6("refresh"); -} -if(_4.buttons){ -$("
                                      ").appendTo(tr); -if($.isArray(_4.buttons)){ -for(var i=0;i<_4.buttons.length;i++){ -var _a=_4.buttons[i]; -if(_a=="-"){ -$("
                                      ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(_a.handler||function(){ -}); -a.linkbutton($.extend({},_a,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_4.buttons).appendTo(td).show(); -} -} -$("
                                      ").appendTo(_5); -$("
                                      ").appendTo(_5); -}; -function _b(_c,_d){ -var _e=$.data(_c,"pagination").options; -_f(_c,{pageNumber:_d}); -_e.onSelectPage.call(_c,_e.pageNumber,_e.pageSize); -}; -function _f(_10,_11){ -var _12=$.data(_10,"pagination"); -var _13=_12.options; -var bb=_12.bb; -$.extend(_13,_11||{}); -var ps=$(_10).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_13.pageSize+""); -_13.pageSize=parseInt(ps.val()); -} -var _14=Math.ceil(_13.total/_13.pageSize)||1; -if(_13.pageNumber<1){ -_13.pageNumber=1; -} -if(_13.pageNumber>_14){ -_13.pageNumber=_14; -} -bb.num.val(_13.pageNumber); -bb.after.html(_13.afterPageText.replace(/{pages}/,_14)); -var _15=_13.displayMsg; -_15=_15.replace(/{from}/,_13.total==0?0:_13.pageSize*(_13.pageNumber-1)+1); -_15=_15.replace(/{to}/,Math.min(_13.pageSize*(_13.pageNumber),_13.total)); -_15=_15.replace(/{total}/,_13.total); -$(_10).find("div.pagination-info").html(_15); -bb.first.add(bb.prev).linkbutton({disabled:(_13.pageNumber==1)}); -bb.next.add(bb.last).linkbutton({disabled:(_13.pageNumber==_14)}); -_16(_10,_13.loading); -}; -function _16(_17,_18){ -var _19=$.data(_17,"pagination"); -var _1a=_19.options; -var bb=_19.bb; -_1a.loading=_18; -if(_1a.showRefresh){ -_19.bb.refresh.linkbutton({iconCls:(_1a.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_1b,_1c){ -if(typeof _1b=="string"){ -return $.fn.pagination.methods[_1b](this,_1c); -} -_1b=_1b||{}; -return this.each(function(){ -var _1d; -var _1e=$.data(this,"pagination"); -if(_1e){ -_1d=$.extend(_1e.options,_1b); -}else{ -_1d=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_1b); -$.data(this,"pagination",{options:_1d}); -} -_1(this); -_f(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_16(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_16(this,false); -}); -},refresh:function(jq,_1f){ -return jq.each(function(){ -_f(this,_1f); -}); -},select:function(jq,_20){ -return jq.each(function(){ -_b(this,_20); -}); -}}; -$.fn.pagination.parseOptions=function(_21){ -var t=$(_21); -return $.extend({},$.parser.parseOptions(_21,[{total:"number",pageSize:"number",pageNumber:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,onSelectPage:function(_22,_23){ -},onBeforeRefresh:function(_24,_25){ -},onRefresh:function(_26,_27){ -},onChangePageSize:function(_28){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _29=$(this).pagination("options"); -if(_29.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _2a=$(this).pagination("options"); -if(_2a.pageNumber>1){ -$(this).pagination("select",_2a.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _2b=$(this).pagination("options"); -var _2c=Math.ceil(_2b.total/_2b.pageSize); -if(_2b.pageNumber<_2c){ -$(this).pagination("select",_2b.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _2d=$(this).pagination("options"); -var _2e=Math.ceil(_2d.total/_2d.pageSize); -if(_2d.pageNumber<_2e){ -$(this).pagination("select",_2e); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _2f=$(this).pagination("options"); -if(_2f.onBeforeRefresh.call(this,_2f.pageNumber,_2f.pageSize)!=false){ -$(this).pagination("select",_2f.pageNumber); -_2f.onRefresh.call(this,_2f.pageNumber,_2f.pageSize); -} -}}}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.panel.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.panel.js deleted file mode 100644 index bf5b872..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.panel.js +++ /dev/null @@ -1,529 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1(_2){ -_2._remove(); -}; -function _3(_4,_5){ -var _6=$.data(_4,"panel").options; -var _7=$.data(_4,"panel").panel; -var _8=_7.children("div.panel-header"); -var _9=_7.children("div.panel-body"); -if(_5){ -if(_5.width){ -_6.width=_5.width; -} -if(_5.height){ -_6.height=_5.height; -} -if(_5.left!=null){ -_6.left=_5.left; -} -if(_5.top!=null){ -_6.top=_5.top; -} -} -_6.fit?$.extend(_6,_7._fit()):_7._fit(false); -_7.css({left:_6.left,top:_6.top}); -if(!isNaN(_6.width)){ -_7._outerWidth(_6.width); -}else{ -_7.width("auto"); -} -_8.add(_9)._outerWidth(_7.width()); -if(!isNaN(_6.height)){ -_7._outerHeight(_6.height); -_9._outerHeight(_7.height()-_8._outerHeight()); -}else{ -_9.height("auto"); -} -_7.css("height",""); -_6.onResize.apply(_4,[_6.width,_6.height]); -_7.find(">div.panel-body>div").triggerHandler("_resize"); -}; -function _a(_b,_c){ -var _d=$.data(_b,"panel").options; -var _e=$.data(_b,"panel").panel; -if(_c){ -if(_c.left!=null){ -_d.left=_c.left; -} -if(_c.top!=null){ -_d.top=_c.top; -} -} -_e.css({left:_d.left,top:_d.top}); -_d.onMove.apply(_b,[_d.left,_d.top]); -}; -function _f(_10){ -$(_10).addClass("panel-body"); -var _11=$("
                                      ").insertBefore(_10); -_11[0].appendChild(_10); -_11.bind("_resize",function(){ -var _12=$.data(_10,"panel").options; -if(_12.fit==true){ -_3(_10); -} -return false; -}); -return _11; -}; -function _13(_14){ -var _15=$.data(_14,"panel").options; -var _16=$.data(_14,"panel").panel; -if(_15.tools&&typeof _15.tools=="string"){ -_16.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(_15.tools); -} -_1(_16.children("div.panel-header")); -if(_15.title&&!_15.noheader){ -var _17=$("
                                      "+_15.title+"
                                      ").prependTo(_16); -if(_15.iconCls){ -_17.find(".panel-title").addClass("panel-with-icon"); -$("
                                      ").addClass(_15.iconCls).appendTo(_17); -} -var _18=$("
                                      ").appendTo(_17); -_18.bind("click",function(e){ -e.stopPropagation(); -}); -if(_15.tools){ -if(typeof _15.tools=="string"){ -$(_15.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_18); -}); -}else{ -for(var i=0;i<_15.tools.length;i++){ -var t=$("").addClass(_15.tools[i].iconCls).appendTo(_18); -if(_15.tools[i].handler){ -t.bind("click",eval(_15.tools[i].handler)); -} -} -} -} -if(_15.collapsible){ -$("").appendTo(_18).bind("click",function(){ -if(_15.collapsed==true){ -_3c(_14,true); -}else{ -_2c(_14,true); -} -return false; -}); -} -if(_15.minimizable){ -$("").appendTo(_18).bind("click",function(){ -_47(_14); -return false; -}); -} -if(_15.maximizable){ -$("").appendTo(_18).bind("click",function(){ -if(_15.maximized==true){ -_4b(_14); -}else{ -_2b(_14); -} -return false; -}); -} -if(_15.closable){ -$("").appendTo(_18).bind("click",function(){ -_19(_14); -return false; -}); -} -_16.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_16.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1a(_1b){ -var _1c=$.data(_1b,"panel"); -var _1d=_1c.options; -if(_1d.href){ -if(!_1c.isLoaded||!_1d.cache){ -if(_1d.onBeforeLoad.call(_1b)==false){ -return; -} -_1c.isLoaded=false; -_1e(_1b); -if(_1d.loadingMessage){ -$(_1b).html($("
                                      ").html(_1d.loadingMessage)); -} -$.ajax({url:_1d.href,cache:false,dataType:"html",success:function(_1f){ -_20(_1d.extractor.call(_1b,_1f)); -_1d.onLoad.apply(_1b,arguments); -_1c.isLoaded=true; -}}); -} -}else{ -if(_1d.content){ -if(!_1c.isLoaded){ -_1e(_1b); -_20(_1d.content); -_1c.isLoaded=true; -} -} -} -function _20(_21){ -$(_1b).html(_21); -if($.parser){ -$.parser.parse($(_1b)); -} -}; -}; -function _1e(_22){ -var t=$(_22); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").tooltip("destroy"); -}; -function _23(_24){ -$(_24).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _25(_26,_27){ -var _28=$.data(_26,"panel").options; -var _29=$.data(_26,"panel").panel; -if(_27!=true){ -if(_28.onBeforeOpen.call(_26)==false){ -return; -} -} -_29.show(); -_28.closed=false; -_28.minimized=false; -var _2a=_29.children("div.panel-header").find("a.panel-tool-restore"); -if(_2a.length){ -_28.maximized=true; -} -_28.onOpen.call(_26); -if(_28.maximized==true){ -_28.maximized=false; -_2b(_26); -} -if(_28.collapsed==true){ -_28.collapsed=false; -_2c(_26); -} -if(!_28.collapsed){ -_1a(_26); -_23(_26); -} -}; -function _19(_2d,_2e){ -var _2f=$.data(_2d,"panel").options; -var _30=$.data(_2d,"panel").panel; -if(_2e!=true){ -if(_2f.onBeforeClose.call(_2d)==false){ -return; -} -} -_30._fit(false); -_30.hide(); -_2f.closed=true; -_2f.onClose.call(_2d); -}; -function _31(_32,_33){ -var _34=$.data(_32,"panel").options; -var _35=$.data(_32,"panel").panel; -if(_33!=true){ -if(_34.onBeforeDestroy.call(_32)==false){ -return; -} -} -_1e(_32); -_1(_35); -_34.onDestroy.call(_32); -}; -function _2c(_36,_37){ -var _38=$.data(_36,"panel").options; -var _39=$.data(_36,"panel").panel; -var _3a=_39.children("div.panel-body"); -var _3b=_39.children("div.panel-header").find("a.panel-tool-collapse"); -if(_38.collapsed==true){ -return; -} -_3a.stop(true,true); -if(_38.onBeforeCollapse.call(_36)==false){ -return; -} -_3b.addClass("panel-tool-expand"); -if(_37==true){ -_3a.slideUp("normal",function(){ -_38.collapsed=true; -_38.onCollapse.call(_36); -}); -}else{ -_3a.hide(); -_38.collapsed=true; -_38.onCollapse.call(_36); -} -}; -function _3c(_3d,_3e){ -var _3f=$.data(_3d,"panel").options; -var _40=$.data(_3d,"panel").panel; -var _41=_40.children("div.panel-body"); -var _42=_40.children("div.panel-header").find("a.panel-tool-collapse"); -if(_3f.collapsed==false){ -return; -} -_41.stop(true,true); -if(_3f.onBeforeExpand.call(_3d)==false){ -return; -} -_42.removeClass("panel-tool-expand"); -if(_3e==true){ -_41.slideDown("normal",function(){ -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -}); -}else{ -_41.show(); -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -} -}; -function _2b(_43){ -var _44=$.data(_43,"panel").options; -var _45=$.data(_43,"panel").panel; -var _46=_45.children("div.panel-header").find("a.panel-tool-max"); -if(_44.maximized==true){ -return; -} -_46.addClass("panel-tool-restore"); -if(!$.data(_43,"panel").original){ -$.data(_43,"panel").original={width:_44.width,height:_44.height,left:_44.left,top:_44.top,fit:_44.fit}; -} -_44.left=0; -_44.top=0; -_44.fit=true; -_3(_43); -_44.minimized=false; -_44.maximized=true; -_44.onMaximize.call(_43); -}; -function _47(_48){ -var _49=$.data(_48,"panel").options; -var _4a=$.data(_48,"panel").panel; -_4a._fit(false); -_4a.hide(); -_49.minimized=true; -_49.maximized=false; -_49.onMinimize.call(_48); -}; -function _4b(_4c){ -var _4d=$.data(_4c,"panel").options; -var _4e=$.data(_4c,"panel").panel; -var _4f=_4e.children("div.panel-header").find("a.panel-tool-max"); -if(_4d.maximized==false){ -return; -} -_4e.show(); -_4f.removeClass("panel-tool-restore"); -$.extend(_4d,$.data(_4c,"panel").original); -_3(_4c); -_4d.minimized=false; -_4d.maximized=false; -$.data(_4c,"panel").original=null; -_4d.onRestore.call(_4c); -}; -function _50(_51){ -var _52=$.data(_51,"panel").options; -var _53=$.data(_51,"panel").panel; -var _54=$(_51).panel("header"); -var _55=$(_51).panel("body"); -_53.css(_52.style); -_53.addClass(_52.cls); -if(_52.border){ -_54.removeClass("panel-header-noborder"); -_55.removeClass("panel-body-noborder"); -}else{ -_54.addClass("panel-header-noborder"); -_55.addClass("panel-body-noborder"); -} -_54.addClass(_52.headerCls); -_55.addClass(_52.bodyCls); -if(_52.id){ -$(_51).attr("id",_52.id); -}else{ -$(_51).attr("id",""); -} -}; -function _56(_57,_58){ -$.data(_57,"panel").options.title=_58; -$(_57).panel("header").find("div.panel-title").html(_58); -}; -var TO=false; -var _59=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_59){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_59=false; -var _5a=$("body.layout"); -if(_5a.length){ -_5a.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_59=true; -TO=false; -},200); -}); -$.fn.panel=function(_5b,_5c){ -if(typeof _5b=="string"){ -return $.fn.panel.methods[_5b](this,_5c); -} -_5b=_5b||{}; -return this.each(function(){ -var _5d=$.data(this,"panel"); -var _5e; -if(_5d){ -_5e=$.extend(_5d.options,_5b); -_5d.isLoaded=false; -}else{ -_5e=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_5b); -$(this).attr("title",""); -_5d=$.data(this,"panel",{options:_5e,panel:_f(this),isLoaded:false}); -} -_13(this); -_50(this); -if(_5e.doSize==true){ -_5d.panel.css("display","block"); -_3(this); -} -if(_5e.closed==true||_5e.minimized==true){ -_5d.panel.hide(); -}else{ -_25(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_5f){ -return jq.each(function(){ -_56(this,_5f); -}); -},open:function(jq,_60){ -return jq.each(function(){ -_25(this,_60); -}); -},close:function(jq,_61){ -return jq.each(function(){ -_19(this,_61); -}); -},destroy:function(jq,_62){ -return jq.each(function(){ -_31(this,_62); -}); -},refresh:function(jq,_63){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(_63){ -$.data(this,"panel").options.href=_63; -} -_1a(this); -}); -},resize:function(jq,_64){ -return jq.each(function(){ -_3(this,_64); -}); -},move:function(jq,_65){ -return jq.each(function(){ -_a(this,_65); -}); -},maximize:function(jq){ -return jq.each(function(){ -_2b(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_47(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_4b(this); -}); -},collapse:function(jq,_66){ -return jq.each(function(){ -_2c(this,_66); -}); -},expand:function(jq,_67){ -return jq.each(function(){ -_3c(this,_67); -}); -}}; -$.fn.panel.parseOptions=function(_68){ -var t=$(_68); -return $.extend({},$.parser.parseOptions(_68,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(_69){ -var _6a=/]*>((.|[\n\r])*)<\/body>/im; -var _6b=_6a.exec(_69); -if(_6b){ -return _6b[1]; -}else{ -return _69; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_6c,_6d){ -},onMove:function(_6e,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.parser.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.parser.js deleted file mode 100644 index 78f61ac..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.parser.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.parser={auto:true,onComplete:function(_1){ -},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","combobox","combotree","combogrid","numberbox","validatebox","searchbox","numberspinner","timespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","tabs","accordion","window","dialog"],parse:function(_2){ -var aa=[]; -for(var i=0;i<$.parser.plugins.length;i++){ -var _3=$.parser.plugins[i]; -var r=$(".easyui-"+_3,_2); -if(r.length){ -if(r[_3]){ -r[_3](); -}else{ -aa.push({name:_3,jq:r}); -} -} -} -if(aa.length&&window.easyloader){ -var _4=[]; -for(var i=0;i
                                      ").appendTo("body"); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.progressbar.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.progressbar.js deleted file mode 100644 index 0693d53..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.progressbar.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("progressbar"); -$(_2).html("
                                      "); -return $(_2); -}; -function _3(_4,_5){ -var _6=$.data(_4,"progressbar").options; -var _7=$.data(_4,"progressbar").bar; -if(_5){ -_6.width=_5; -} -_7._outerWidth(_6.width)._outerHeight(_6.height); -_7.find("div.progressbar-text").width(_7.width()); -_7.find("div.progressbar-text,div.progressbar-value").css({height:_7.height()+"px",lineHeight:_7.height()+"px"}); -}; -$.fn.progressbar=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.progressbar.methods[_8]; -if(_a){ -return _a(this,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"progressbar"); -if(_b){ -$.extend(_b.options,_8); -}else{ -_b=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_8),bar:_1(this)}); -} -$(this).progressbar("setValue",_b.options.value); -_3(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_c){ -return jq.each(function(){ -_3(this,_c); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_d){ -if(_d<0){ -_d=0; -} -if(_d>100){ -_d=100; -} -return jq.each(function(){ -var _e=$.data(this,"progressbar").options; -var _f=_e.text.replace(/{value}/,_d); -var _10=_e.value; -_e.value=_d; -$(this).find("div.progressbar-value").width(_d+"%"); -$(this).find("div.progressbar-text").html(_f); -if(_10!=_d){ -_e.onChange.call(this,_d,_10); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_11){ -return $.extend({},$.parser.parseOptions(_11,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_12,_13){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.propertygrid.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.propertygrid.js deleted file mode 100644 index 2df4863..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.propertygrid.js +++ /dev/null @@ -1,225 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -var _1; -function _2(_3){ -var _4=$.data(_3,"propertygrid"); -var _5=$.data(_3,"propertygrid").options; -$(_3).datagrid($.extend({},_5,{cls:"propertygrid",view:(_5.showGroup?_6:undefined),onClickRow:function(_7,_8){ -if(_1!=this){ -_c(_1); -_1=this; -} -if(_5.editIndex!=_7&&_8.editor){ -var _9=$(this).datagrid("getColumnOption","value"); -_9.editor=_8.editor; -_c(_1); -$(this).datagrid("beginEdit",_7); -$(this).datagrid("getEditors",_7)[0].target.focus(); -_5.editIndex=_7; -} -_5.onClickRow.call(_3,_7,_8); -},loadFilter:function(_a){ -_c(this); -return _5.loadFilter.call(this,_a); -},onLoadSuccess:function(_b){ -$(_3).datagrid("getPanel").find("div.datagrid-group").attr("style",""); -_5.onLoadSuccess.call(_3,_b); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_c(_1); -_1=undefined; -}); -}; -function _c(_d){ -var t=$(_d); -if(!t.length){ -return; -} -var _e=$.data(_d,"propertygrid").options; -var _f=_e.editIndex; -if(_f==undefined){ -return; -} -var ed=t.datagrid("getEditors",_f)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_f)){ -t.datagrid("endEdit",_f); -}else{ -t.datagrid("cancelEdit",_f); -} -} -_e.editIndex=undefined; -}; -$.fn.propertygrid=function(_10,_11){ -if(typeof _10=="string"){ -var _12=$.fn.propertygrid.methods[_10]; -if(_12){ -return _12(this,_11); -}else{ -return this.datagrid(_10,_11); -} -} -_10=_10||{}; -return this.each(function(){ -var _13=$.data(this,"propertygrid"); -if(_13){ -$.extend(_13.options,_10); -}else{ -var _14=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_10); -_14.frozenColumns=$.extend(true,[],_14.frozenColumns); -_14.columns=$.extend(true,[],_14.columns); -$.data(this,"propertygrid",{options:_14}); -} -_2(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_15){ -var t=$(_15); -return $.extend({},$.fn.datagrid.parseOptions(_15),$.parser.parseOptions(_15,[{showGroup:"boolean"}])); -}; -var _6=$.extend({},$.fn.datagrid.defaults.view,{render:function(_16,_17,_18){ -var _19=$.data(_16,"datagrid"); -var _1a=_19.options; -var _1b=_19.data.rows; -var _1c=$(_16).datagrid("getColumnFields",_18); -var _1d=[]; -var _1e=0; -var _1f=this.groups; -for(var i=0;i<_1f.length;i++){ -var _20=_1f[i]; -_1d.push("
                                      "); -_1d.push(""); -_1d.push(""); -_1d.push(""); -_1d.push(""); -_1d.push("
                                      "); -if(!_18){ -_1d.push(""); -_1d.push(_1a.groupFormatter.call(_16,_20.fvalue,_20.rows)); -_1d.push(""); -} -_1d.push("
                                      "); -_1d.push("
                                      "); -_1d.push(""); -for(var j=0;j<_20.rows.length;j++){ -var cls=(_1e%2&&_1a.striped)?"class=\"datagrid-row datagrid-row-alt\"":"class=\"datagrid-row\""; -var _21=_1a.rowStyler?_1a.rowStyler.call(_16,_1e,_20.rows[j]):""; -var _22=_21?"style=\""+_21+"\"":""; -var _23=_19.rowIdPrefix+"-"+(_18?1:2)+"-"+_1e; -_1d.push(""); -_1d.push(this.renderRow.call(this,_16,_1c,_18,_1e,_20.rows[j])); -_1d.push(""); -_1e++; -} -_1d.push("
                                      "); -} -$(_17).html(_1d.join("")); -},onAfterRender:function(_24){ -var _25=$.data(_24,"datagrid").options; -var dc=$.data(_24,"datagrid").dc; -var _26=dc.view; -var _27=dc.view1; -var _28=dc.view2; -$.fn.datagrid.defaults.view.onAfterRender.call(this,_24); -if(_25.rownumbers||_25.frozenColumns.length){ -var _29=_27.find("div.datagrid-group"); -}else{ -var _29=_28.find("div.datagrid-group"); -} -$(" ").insertBefore(_29.find("td")); -_26.find("div.datagrid-group").each(function(){ -var _2a=$(this).attr("group-index"); -$(this).find("span.datagrid-row-expander").bind("click",{groupIndex:_2a},function(e){ -if($(this).hasClass("datagrid-row-collapse")){ -$(_24).datagrid("collapseGroup",e.data.groupIndex); -}else{ -$(_24).datagrid("expandGroup",e.data.groupIndex); -} -}); -}); -},onBeforeRender:function(_2b,_2c){ -var _2d=$.data(_2b,"datagrid").options; -var _2e=[]; -for(var i=0;i<_2c.length;i++){ -var row=_2c[i]; -var _2f=_30(row[_2d.groupField]); -if(!_2f){ -_2f={fvalue:row[_2d.groupField],rows:[row],startRow:i}; -_2e.push(_2f); -}else{ -_2f.rows.push(row); -} -} -function _30(_31){ -for(var i=0;i<_2e.length;i++){ -var _32=_2e[i]; -if(_32.fvalue==_31){ -return _32; -} -} -return null; -}; -this.groups=_2e; -var _33=[]; -for(var i=0;i<_2e.length;i++){ -var _2f=_2e[i]; -for(var j=0;j<_2f.rows.length;j++){ -_33.push(_2f.rows[j]); -} -} -$.data(_2b,"datagrid").data.rows=_33; -}}); -$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_34){ -return jq.each(function(){ -var _35=$.data(this,"datagrid").dc.view; -if(_34!=undefined){ -var _36=_35.find("div.datagrid-group[group-index=\""+_34+"\"]"); -}else{ -var _36=_35.find("div.datagrid-group"); -} -var _37=_36.find("span.datagrid-row-expander"); -if(_37.hasClass("datagrid-row-expand")){ -_37.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); -_36.next("table").show(); -} -$(this).datagrid("fixRowHeight"); -}); -},collapseGroup:function(jq,_38){ -return jq.each(function(){ -var _39=$.data(this,"datagrid").dc.view; -if(_38!=undefined){ -var _3a=_39.find("div.datagrid-group[group-index=\""+_38+"\"]"); -}else{ -var _3a=_39.find("div.datagrid-group"); -} -var _3b=_3a.find("span.datagrid-row-expander"); -if(_3b.hasClass("datagrid-row-collapse")){ -_3b.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); -_3a.next("table").hide(); -} -$(this).datagrid("fixRowHeight"); -}); -}}); -$.fn.propertygrid.defaults=$.extend({},$.fn.datagrid.defaults,{singleSelect:true,remoteSort:false,fitColumns:true,loadMsg:"",frozenColumns:[[{field:"f",width:16,resizable:false}]],columns:[[{field:"name",title:"Name",width:100,sortable:true},{field:"value",title:"Value",width:100,resizable:false}]],showGroup:false,groupField:"group",groupFormatter:function(_3c,_3d){ -return _3c; -}}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.resizable.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.resizable.js deleted file mode 100644 index e5b820d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.resizable.js +++ /dev/null @@ -1,172 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn.resizable=function(_1,_2){ -if(typeof _1=="string"){ -return $.fn.resizable.methods[_1](this,_2); -} -function _3(e){ -var _4=e.data; -var _5=$.data(_4.target,"resizable").options; -if(_4.dir.indexOf("e")!=-1){ -var _6=_4.startWidth+e.pageX-_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -} -if(_4.dir.indexOf("s")!=-1){ -var _7=_4.startHeight+e.pageY-_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -} -if(_4.dir.indexOf("w")!=-1){ -var _6=_4.startWidth-e.pageX+_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -_4.left=_4.startLeft+_4.startWidth-_4.width; -} -if(_4.dir.indexOf("n")!=-1){ -var _7=_4.startHeight-e.pageY+_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -_4.top=_4.startTop+_4.startHeight-_4.height; -} -}; -function _8(e){ -var _9=e.data; -var t=$(_9.target); -t.css({left:_9.left,top:_9.top}); -if(t.outerWidth()!=_9.width){ -t._outerWidth(_9.width); -} -if(t.outerHeight()!=_9.height){ -t._outerHeight(_9.height); -} -}; -function _a(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _b(e){ -_3(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_8(e); -} -return false; -}; -function _c(e){ -$.fn.resizable.isResizing=false; -_3(e,true); -_8(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _d=null; -var _e=$.data(this,"resizable"); -if(_e){ -$(this).unbind(".resizable"); -_d=$.extend(_e.options,_1||{}); -}else{ -_d=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_1||{}); -$.data(this,"resizable",{options:_d}); -} -if(_d.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var _f=_10(e); -if(_f==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",_f+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_10(e); -if(dir==""){ -return; -} -function _11(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _12={target:e.data.target,dir:dir,startLeft:_11("left"),startTop:_11("top"),left:_11("left"),top:_11("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_12,_a); -$(document).bind("mousemove.resizable",_12,_b); -$(document).bind("mouseup.resizable",_12,_c); -$("body").css("cursor",dir+"-resize"); -}); -function _10(e){ -var tt=$(e.data.target); -var dir=""; -var _13=tt.offset(); -var _14=tt.outerWidth(); -var _15=tt.outerHeight(); -var _16=_d.edge; -if(e.pageY>_13.top&&e.pageY<_13.top+_16){ -dir+="n"; -}else{ -if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){ -dir+="s"; -} -} -if(e.pageX>_13.left&&e.pageX<_13.left+_16){ -dir+="w"; -}else{ -if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){ -dir+="e"; -} -} -var _17=_d.handles.split(","); -for(var i=0;i<_17.length;i++){ -var _18=_17[i].replace(/(^\s*)|(\s*$)/g,""); -if(_18=="all"||_18==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_19){ -var t=$(_19); -return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.searchbox.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.searchbox.js deleted file mode 100644 index d2d6091..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.searchbox.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).hide(); -var _3=$("").insertAfter(_2); -var _4=$("").appendTo(_3); -$("").appendTo(_3); -var _5=$(_2).attr("name"); -if(_5){ -_4.attr("name",_5); -$(_2).removeAttr("name").attr("searchboxName",_5); -} -return _3; -}; -function _6(_7,_8){ -var _9=$.data(_7,"searchbox").options; -var sb=$.data(_7,"searchbox").searchbox; -if(_8){ -_9.width=_8; -} -sb.appendTo("body"); -if(isNaN(_9.width)){ -_9.width=sb._outerWidth(); -} -var _a=sb.find("span.searchbox-button"); -var _b=sb.find("a.searchbox-menu"); -var _c=sb.find("input.searchbox-text"); -sb._outerWidth(_9.width)._outerHeight(_9.height); -_c._outerWidth(sb.width()-_b._outerWidth()-_a._outerWidth()); -_c.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -_b._outerHeight(sb.height()); -_a._outerHeight(sb.height()); -var _d=_b.find("span.l-btn-left"); -_d._outerHeight(sb.height()); -_d.find("span.l-btn-text,span.m-btn-downarrow").css({height:_d.height()+"px",lineHeight:_d.height()+"px"}); -sb.insertAfter(_7); -}; -function _e(_f){ -var _10=$.data(_f,"searchbox"); -var _11=_10.options; -if(_11.menu){ -_10.menu=$(_11.menu).menu({onClick:function(_12){ -_13(_12); -}}); -var _14=_10.menu.children("div.menu-item:first"); -_10.menu.children("div.menu-item").each(function(){ -var _15=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_15.selected){ -_14=$(this); -return false; -} -}); -_14.triggerHandler("click"); -}else{ -_10.searchbox.find("a.searchbox-menu").remove(); -_10.menu=null; -} -function _13(_16){ -_10.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(_16.text); -mb.prependTo(_10.searchbox).menubutton({menu:_10.menu,iconCls:_16.iconCls}); -_10.searchbox.find("input.searchbox-text").attr("name",$(_16.target).attr("name")||_16.text); -_6(_f); -}; -}; -function _17(_18){ -var _19=$.data(_18,"searchbox"); -var _1a=_19.options; -var _1b=_19.searchbox.find("input.searchbox-text"); -var _1c=_19.searchbox.find(".searchbox-button"); -_1b.unbind(".searchbox").bind("blur.searchbox",function(e){ -_1a.value=$(this).val(); -if(_1a.value==""){ -$(this).val(_1a.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=_1a.value){ -$(this).val(_1a.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -var _1d=$.fn.prop?_1b.prop("name"):_1b.attr("name"); -_1a.value=$(this).val(); -_1a.searcher.call(_18,_1a.value,_1d); -return false; -} -}); -_1c.unbind(".searchbox").bind("click.searchbox",function(){ -var _1e=$.fn.prop?_1b.prop("name"):_1b.attr("name"); -_1a.searcher.call(_18,_1a.value,_1e); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _1f(_20){ -var _21=$.data(_20,"searchbox"); -var _22=_21.options; -var _23=_21.searchbox.find("input.searchbox-text"); -if(_22.value==""){ -_23.val(_22.prompt); -_23.addClass("searchbox-prompt"); -}else{ -_23.val(_22.value); -_23.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_24,_25){ -if(typeof _24=="string"){ -return $.fn.searchbox.methods[_24](this,_25); -} -_24=_24||{}; -return this.each(function(){ -var _26=$.data(this,"searchbox"); -if(_26){ -$.extend(_26.options,_24); -}else{ -_26=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_24),searchbox:_1(this)}); -} -_e(this); -_1f(this); -_17(this); -_6(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_27){ -return jq.each(function(){ -$(this).searchbox("options").value=_27; -$(this).searchbox("textbox").val(_27); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,_28){ -return jq.each(function(){ -var _29=$.data(this,"searchbox").menu; -if(_29){ -_29.children("div.menu-item[name=\""+_28+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var _2a=$(this).searchbox("menu"); -if(_2a){ -_2a.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_2b){ -return jq.each(function(){ -_6(this,_2b); -}); -}}; -$.fn.searchbox.parseOptions=function(_2c){ -var t=$(_2c); -return $.extend({},$.parser.parseOptions(_2c,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_2d,_2e){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.slider.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.slider.js deleted file mode 100644 index 1f7941a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.slider.js +++ /dev/null @@ -1,267 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$("
                                      "+"
                                      "+""+""+"
                                      "+"
                                      "+"
                                      "+"
                                      "+""+"
                                      ").insertAfter(_2); -var _4=$(_2).hide().attr("name"); -if(_4){ -_3.find("input.slider-value").attr("name",_4); -$(_2).removeAttr("name").attr("sliderName",_4); -} -return _3; -}; -function _5(_6,_7){ -var _8=$.data(_6,"slider"); -var _9=_8.options; -var _a=_8.slider; -if(_7){ -if(_7.width){ -_9.width=_7.width; -} -if(_7.height){ -_9.height=_7.height; -} -} -if(_9.mode=="h"){ -_a.css("height",""); -_a.children("div").css("height",""); -if(!isNaN(_9.width)){ -_a.width(_9.width); -} -}else{ -_a.css("width",""); -_a.children("div").css("width",""); -if(!isNaN(_9.height)){ -_a.height(_9.height); -_a.find("div.slider-rule").height(_9.height); -_a.find("div.slider-rulelabel").height(_9.height); -_a.find("div.slider-inner")._outerHeight(_9.height); -} -} -_b(_6); -}; -function _c(_d){ -var _e=$.data(_d,"slider"); -var _f=_e.options; -var _10=_e.slider; -var aa=_f.mode=="h"?_f.rule:_f.rule.slice(0).reverse(); -if(_f.reversed){ -aa=aa.slice(0).reverse(); -} -_11(aa); -function _11(aa){ -var _12=_10.find("div.slider-rule"); -var _13=_10.find("div.slider-rulelabel"); -_12.empty(); -_13.empty(); -for(var i=0;i").appendTo(_12); -_15.css((_f.mode=="h"?"left":"top"),_14); -if(aa[i]!="|"){ -_15=$("").appendTo(_13); -_15.html(aa[i]); -if(_f.mode=="h"){ -_15.css({left:_14,marginLeft:-Math.round(_15.outerWidth()/2)}); -}else{ -_15.css({top:_14,marginTop:-Math.round(_15.outerHeight()/2)}); -} -} -} -}; -}; -function _16(_17){ -var _18=$.data(_17,"slider"); -var _19=_18.options; -var _1a=_18.slider; -_1a.removeClass("slider-h slider-v slider-disabled"); -_1a.addClass(_19.mode=="h"?"slider-h":"slider-v"); -_1a.addClass(_19.disabled?"slider-disabled":""); -_1a.find("a.slider-handle").draggable({axis:_19.mode,cursor:"pointer",disabled:_19.disabled,onDrag:function(e){ -var _1b=e.data.left; -var _1c=_1a.width(); -if(_19.mode!="h"){ -_1b=e.data.top; -_1c=_1a.height(); -} -if(_1b<0||_1b>_1c){ -return false; -}else{ -var _1d=_32(_17,_1b); -_1e(_1d); -return false; -} -},onBeforeDrag:function(){ -_18.isDragging=true; -},onStartDrag:function(){ -_19.onSlideStart.call(_17,_19.value); -},onStopDrag:function(e){ -var _1f=_32(_17,(_19.mode=="h"?e.data.left:e.data.top)); -_1e(_1f); -_19.onSlideEnd.call(_17,_19.value); -_19.onComplete.call(_17,_19.value); -_18.isDragging=false; -}}); -_1a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_18.isDragging){ -return; -} -var pos=$(this).offset(); -var _20=_32(_17,(_19.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_1e(_20); -_19.onComplete.call(_17,_19.value); -}); -function _1e(_21){ -var s=Math.abs(_21%_19.step); -if(s<_19.step/2){ -_21-=s; -}else{ -_21=_21-s+_19.step; -} -_22(_17,_21); -}; -}; -function _22(_23,_24){ -var _25=$.data(_23,"slider"); -var _26=_25.options; -var _27=_25.slider; -var _28=_26.value; -if(_24<_26.min){ -_24=_26.min; -} -if(_24>_26.max){ -_24=_26.max; -} -_26.value=_24; -$(_23).val(_24); -_27.find("input.slider-value").val(_24); -var pos=_29(_23,_24); -var tip=_27.find(".slider-tip"); -if(_26.showTip){ -tip.show(); -tip.html(_26.tipFormatter.call(_23,_26.value)); -}else{ -tip.hide(); -} -if(_26.mode=="h"){ -var _2a="left:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _2a="top:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_28!=_24){ -_26.onChange.call(_23,_24,_28); -} -}; -function _b(_2b){ -var _2c=$.data(_2b,"slider").options; -var fn=_2c.onChange; -_2c.onChange=function(){ -}; -_22(_2b,_2c.value); -_2c.onChange=fn; -}; -function _29(_2d,_2e){ -var _2f=$.data(_2d,"slider"); -var _30=_2f.options; -var _31=_2f.slider; -if(_30.mode=="h"){ -var pos=(_2e-_30.min)/(_30.max-_30.min)*_31.width(); -if(_30.reversed){ -pos=_31.width()-pos; -} -}else{ -var pos=_31.height()-(_2e-_30.min)/(_30.max-_30.min)*_31.height(); -if(_30.reversed){ -pos=_31.height()-pos; -} -} -return pos.toFixed(0); -}; -function _32(_33,pos){ -var _34=$.data(_33,"slider"); -var _35=_34.options; -var _36=_34.slider; -if(_35.mode=="h"){ -var _37=_35.min+(_35.max-_35.min)*(pos/_36.width()); -}else{ -var _37=_35.min+(_35.max-_35.min)*((_36.height()-pos)/_36.height()); -} -return _35.reversed?_35.max-_37.toFixed(0):_37.toFixed(0); -}; -$.fn.slider=function(_38,_39){ -if(typeof _38=="string"){ -return $.fn.slider.methods[_38](this,_39); -} -_38=_38||{}; -return this.each(function(){ -var _3a=$.data(this,"slider"); -if(_3a){ -$.extend(_3a.options,_38); -}else{ -_3a=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_38),slider:_1(this)}); -$(this).removeAttr("disabled"); -} -var _3b=_3a.options; -_3b.min=parseFloat(_3b.min); -_3b.max=parseFloat(_3b.max); -_3b.value=parseFloat(_3b.value); -_3b.step=parseFloat(_3b.step); -_16(this); -_c(this); -_5(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_3c){ -return jq.each(function(){ -_5(this,_3c); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_3d){ -return jq.each(function(){ -_22(this,_3d); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_16(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_16(this); -}); -}}; -$.fn.slider.parseOptions=function(_3e){ -var t=$(_3e); -return $.extend({},$.parser.parseOptions(_3e,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_3f){ -return _3f; -},onChange:function(_40,_41){ -},onSlideStart:function(_42){ -},onSlideEnd:function(_43){ -},onComplete:function(_44){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.spinner.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.spinner.js deleted file mode 100644 index 3885be3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.spinner.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(""+""+""+""+""+"").insertAfter(_2); -$(_2).addClass("spinner-text spinner-f").prependTo(_3); -return _3; -}; -function _4(_5,_6){ -var _7=$.data(_5,"spinner").options; -var _8=$.data(_5,"spinner").spinner; -if(_6){ -_7.width=_6; -} -var _9=$("
                                      ").insertBefore(_8); -_8.appendTo("body"); -if(isNaN(_7.width)){ -_7.width=$(_5).outerWidth(); -} -var _a=_8.find(".spinner-arrow"); -_8._outerWidth(_7.width)._outerHeight(_7.height); -$(_5)._outerWidth(_8.width()-_a.outerWidth()); -$(_5).css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); -_a._outerHeight(_8.height()); -_a.find("span")._outerHeight(_a.height()/2); -_8.insertAfter(_9); -_9.remove(); -}; -function _b(_c){ -var _d=$.data(_c,"spinner").options; -var _e=$.data(_c,"spinner").spinner; -_e.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!_d.disabled){ -_e.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,false); -_d.onSpinUp.call(_c); -$(_c).validatebox("validate"); -}); -_e.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,true); -_d.onSpinDown.call(_c); -$(_c).validatebox("validate"); -}); -} -}; -function _f(_10,_11){ -var _12=$.data(_10,"spinner").options; -if(_11){ -_12.disabled=true; -$(_10).attr("disabled",true); -}else{ -_12.disabled=false; -$(_10).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_13,_14){ -if(typeof _13=="string"){ -var _15=$.fn.spinner.methods[_13]; -if(_15){ -return _15(this,_14); -}else{ -return this.validatebox(_13,_14); -} -} -_13=_13||{}; -return this.each(function(){ -var _16=$.data(this,"spinner"); -if(_16){ -$.extend(_16.options,_13); -}else{ -_16=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_13),spinner:_1(this)}); -$(this).removeAttr("disabled"); -} -_16.options.originalValue=_16.options.value; -$(this).val(_16.options.value); -$(this).attr("readonly",!_16.options.editable); -_f(this,_16.options.disabled); -_4(this); -$(this).validatebox(_16.options); -_b(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var _17=$.data(jq[0],"spinner").options; -return $.extend(_17,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _18=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_18.remove(); -}); -},resize:function(jq,_19){ -return jq.each(function(){ -_4(this,_19); -}); -},enable:function(jq){ -return jq.each(function(){ -_f(this,false); -_b(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_f(this,true); -_b(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_1a){ -return jq.each(function(){ -var _1b=$.data(this,"spinner").options; -_1b.value=_1a; -$(this).val(_1a); -}); -},clear:function(jq){ -return jq.each(function(){ -var _1c=$.data(this,"spinner").options; -_1c.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1d=$(this).spinner("options"); -$(this).spinner("setValue",_1d.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_1e){ -var t=$(_1e); -return $.extend({},$.fn.validatebox.parseOptions(_1e),$.parser.parseOptions(_1e,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(_1f){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.splitbutton.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.splitbutton.js deleted file mode 100644 index f668698..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.splitbutton.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"splitbutton").options; -$(_2).menubutton(_3); -}; -$.fn.splitbutton=function(_4,_5){ -if(typeof _4=="string"){ -var _6=$.fn.splitbutton.methods[_4]; -if(_6){ -return _6(this,_5); -}else{ -return this.menubutton(_4,_5); -} -} -_4=_4||{}; -return this.each(function(){ -var _7=$.data(this,"splitbutton"); -if(_7){ -$.extend(_7.options,_4); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _8=jq.menubutton("options"); -var _9=$.data(jq[0],"splitbutton").options; -$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); -return _9; -}}; -$.fn.splitbutton.parseOptions=function(_a){ -var t=$(_a); -return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.tabs.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.tabs.js deleted file mode 100644 index a0c1ca3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.tabs.js +++ /dev/null @@ -1,550 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"tabs").options; -if(_3.tabPosition=="left"||_3.tabPosition=="right"){ -return; -} -var _4=$(_2).children("div.tabs-header"); -var _5=_4.children("div.tabs-tool"); -var _6=_4.children("div.tabs-scroller-left"); -var _7=_4.children("div.tabs-scroller-right"); -var _8=_4.children("div.tabs-wrap"); -var _9=_4.outerHeight(); -if(_3.plain){ -_9-=_9-_4.height(); -} -_5._outerHeight(_9); -var _a=0; -$("ul.tabs li",_4).each(function(){ -_a+=$(this).outerWidth(true); -}); -var _b=_4.width()-_5._outerWidth(); -if(_a>_b){ -_6.add(_7).show()._outerHeight(_9); -if(_3.toolPosition=="left"){ -_5.css({left:_6.outerWidth(),right:""}); -_8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -}else{ -_5.css({left:"",right:_7.outerWidth()}); -_8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -} -}else{ -_6.add(_7).hide(); -if(_3.toolPosition=="left"){ -_5.css({left:0,right:""}); -_8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b}); -}else{ -_5.css({left:"",right:0}); -_8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b}); -} -} -}; -function _c(_d){ -var _e=$.data(_d,"tabs").options; -var _f=$(_d).children("div.tabs-header"); -if(_e.tools){ -if(typeof _e.tools=="string"){ -$(_e.tools).addClass("tabs-tool").appendTo(_f); -$(_e.tools).show(); -}else{ -_f.children("div.tabs-tool").remove(); -var _10=$("
                                      ").appendTo(_f); -var tr=_10.find("tr"); -for(var i=0;i<_e.tools.length;i++){ -var td=$("").appendTo(tr); -var _11=$("").appendTo(td); -_11[0].onclick=eval(_e.tools[i].handler||function(){ -}); -_11.linkbutton($.extend({},_e.tools[i],{plain:true})); -} -} -}else{ -_f.children("div.tabs-tool").remove(); -} -}; -function _12(_13){ -var _14=$.data(_13,"tabs"); -var _15=_14.options; -var cc=$(_13); -_15.fit?$.extend(_15,cc._fit()):cc._fit(false); -cc.width(_15.width).height(_15.height); -var _16=$(_13).children("div.tabs-header"); -var _17=$(_13).children("div.tabs-panels"); -var _18=_16.find("div.tabs-wrap"); -var ul=_18.find(".tabs"); -for(var i=0;i<_14.tabs.length;i++){ -var _19=_14.tabs[i].panel("options"); -var p_t=_19.tab.find("a.tabs-inner"); -var _1a=parseInt(_19.tabWidth||_15.tabWidth)||undefined; -if(_1a){ -p_t._outerWidth(_1a); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(_15.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(_15.tabPosition=="left"||_15.tabPosition=="right"){ -_16._outerWidth(_15.headerWidth); -_17._outerWidth(cc.width()-_15.headerWidth); -_16.add(_17)._outerHeight(_15.height); -_18._outerWidth(_16.width()); -ul._outerWidth(_18.width()).css("height",""); -}else{ -_16._outerWidth(_15.width).css("height",""); -ul._outerHeight(_15.tabHeight).css("width",""); -_1(_13); -var _1b=_15.height; -if(!isNaN(_1b)){ -_17._outerHeight(_1b-_16.outerHeight()); -}else{ -_17.height("auto"); -} -var _1a=_15.width; -if(!isNaN(_1a)){ -_17._outerWidth(_1a); -}else{ -_17.width("auto"); -} -} -}; -function _1c(_1d){ -var _1e=$.data(_1d,"tabs").options; -var tab=_1f(_1d); -if(tab){ -var _20=$(_1d).children("div.tabs-panels"); -var _21=_1e.width=="auto"?"auto":_20.width(); -var _22=_1e.height=="auto"?"auto":_20.height(); -tab.panel("resize",{width:_21,height:_22}); -} -}; -function _23(_24){ -var _25=$.data(_24,"tabs").tabs; -var cc=$(_24); -cc.addClass("tabs-container"); -var pp=$("
                                      ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                      "+"
                                      "+"
                                      "+"
                                      "+"
                                        "+"
                                        "+"
                                        ").prependTo(_24); -cc.children("div.tabs-panels").children("div").each(function(i){ -var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_25.push(pp); -_33(_24,pp,_26); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_27){ -var _28=$.data(_24,"tabs").options; -if(_28.fit==true||_27){ -_12(_24); -_1c(_24); -} -return false; -}); -}; -function _29(_2a){ -var _2b=$.data(_2a,"tabs").options; -$(_2a).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2a).tabs("scrollBy",-_2b.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2a).tabs("scrollBy",_2b.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_49(_2a,_2c(li)); -}else{ -if(li.length){ -_3e(_2a,_2c(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -_2b.onContextMenu.call(_2a,e,li.find("span.tabs-title").html(),_2c(li)); -} -}); -function _2c(li){ -var _2d=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2d=i; -return false; -} -}); -return _2d; -}; -}; -function _2e(_2f){ -var _30=$.data(_2f,"tabs").options; -var _31=$(_2f).children("div.tabs-header"); -var _32=$(_2f).children("div.tabs-panels"); -_31.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_32.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(_30.tabPosition=="top"){ -_31.insertBefore(_32); -}else{ -if(_30.tabPosition=="bottom"){ -_31.insertAfter(_32); -_31.addClass("tabs-header-bottom"); -_32.addClass("tabs-panels-top"); -}else{ -if(_30.tabPosition=="left"){ -_31.addClass("tabs-header-left"); -_32.addClass("tabs-panels-right"); -}else{ -if(_30.tabPosition=="right"){ -_31.addClass("tabs-header-right"); -_32.addClass("tabs-panels-left"); -} -} -} -} -if(_30.plain==true){ -_31.addClass("tabs-header-plain"); -}else{ -_31.removeClass("tabs-header-plain"); -} -if(_30.border==true){ -_31.removeClass("tabs-header-noborder"); -_32.removeClass("tabs-panels-noborder"); -}else{ -_31.addClass("tabs-header-noborder"); -_32.addClass("tabs-panels-noborder"); -} -}; -function _33(_34,pp,_35){ -var _36=$.data(_34,"tabs"); -_35=_35||{}; -pp.panel($.extend({},_35,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_35.icon?_35.icon:undefined),onLoad:function(){ -if(_35.onLoad){ -_35.onLoad.call(this,arguments); -} -_36.options.onLoad.call(_34,$(this)); -}})); -var _37=pp.panel("options"); -var _38=$(_34).children("div.tabs-header").find("ul.tabs"); -_37.tab=$("
                                      • ").appendTo(_38); -_37.tab.append(""+""+""+""); -$(_34).tabs("update",{tab:pp,options:_37}); -}; -function _39(_3a,_3b){ -var _3c=$.data(_3a,"tabs").options; -var _3d=$.data(_3a,"tabs").tabs; -if(_3b.selected==undefined){ -_3b.selected=true; -} -var pp=$("
                                        ").appendTo($(_3a).children("div.tabs-panels")); -_3d.push(pp); -_33(_3a,pp,_3b); -_3c.onAdd.call(_3a,_3b.title,_3d.length-1); -_12(_3a); -if(_3b.selected){ -_3e(_3a,_3d.length-1); -} -}; -function _3f(_40,_41){ -var _42=$.data(_40,"tabs").selectHis; -var pp=_41.tab; -var _43=pp.panel("options").title; -pp.panel($.extend({},_41.options,{iconCls:(_41.options.icon?_41.options.icon:undefined)})); -var _44=pp.panel("options"); -var tab=_44.tab; -var _45=tab.find("span.tabs-title"); -var _46=tab.find("span.tabs-icon"); -_45.html(_44.title); -_46.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(_44.closable){ -_45.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_45.removeClass("tabs-closable"); -} -if(_44.iconCls){ -_45.addClass("tabs-with-icon"); -_46.addClass(_44.iconCls); -}else{ -_45.removeClass("tabs-with-icon"); -} -if(_43!=_44.title){ -for(var i=0;i<_42.length;i++){ -if(_42[i]==_43){ -_42[i]=_44.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(_44.tools){ -var _47=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(_44.tools)){ -for(var i=0;i<_44.tools.length;i++){ -var t=$("").appendTo(_47); -t.addClass(_44.tools[i].iconCls); -if(_44.tools[i].handler){ -t.bind("click",{handler:_44.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(_44.tools).children().appendTo(_47); -} -var pr=_47.children().length*12; -if(_44.closable){ -pr+=8; -}else{ -pr-=3; -_47.css("right","5px"); -} -_45.css("padding-right",pr+"px"); -} -_12(_40); -$.data(_40,"tabs").options.onUpdate.call(_40,_44.title,_48(_40,pp)); -}; -function _49(_4a,_4b){ -var _4c=$.data(_4a,"tabs").options; -var _4d=$.data(_4a,"tabs").tabs; -var _4e=$.data(_4a,"tabs").selectHis; -if(!_4f(_4a,_4b)){ -return; -} -var tab=_50(_4a,_4b); -var _51=tab.panel("options").title; -var _52=_48(_4a,tab); -if(_4c.onBeforeClose.call(_4a,_51,_52)==false){ -return; -} -var tab=_50(_4a,_4b,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -_4c.onClose.call(_4a,_51,_52); -_12(_4a); -for(var i=0;i<_4e.length;i++){ -if(_4e[i]==_51){ -_4e.splice(i,1); -i--; -} -} -var _53=_4e.pop(); -if(_53){ -_3e(_4a,_53); -}else{ -if(_4d.length){ -_3e(_4a,0); -} -} -}; -function _50(_54,_55,_56){ -var _57=$.data(_54,"tabs").tabs; -if(typeof _55=="number"){ -if(_55<0||_55>=_57.length){ -return null; -}else{ -var tab=_57[_55]; -if(_56){ -_57.splice(_55,1); -} -return tab; -} -} -for(var i=0;i<_57.length;i++){ -var tab=_57[i]; -if(tab.panel("options").title==_55){ -if(_56){ -_57.splice(i,1); -} -return tab; -} -} -return null; -}; -function _48(_58,tab){ -var _59=$.data(_58,"tabs").tabs; -for(var i=0;i<_59.length;i++){ -if(_59[i][0]==$(tab)[0]){ -return i; -} -} -return -1; -}; -function _1f(_5a){ -var _5b=$.data(_5a,"tabs").tabs; -for(var i=0;i<_5b.length;i++){ -var tab=_5b[i]; -if(tab.panel("options").closed==false){ -return tab; -} -} -return null; -}; -function _5c(_5d){ -var _5e=$.data(_5d,"tabs").tabs; -for(var i=0;i<_5e.length;i++){ -if(_5e[i].panel("options").selected){ -_3e(_5d,i); -return; -} -} -if(_5e.length){ -_3e(_5d,0); -} -}; -function _3e(_5f,_60){ -var _61=$.data(_5f,"tabs").options; -var _62=$.data(_5f,"tabs").tabs; -var _63=$.data(_5f,"tabs").selectHis; -if(_62.length==0){ -return; -} -var _64=_50(_5f,_60); -if(!_64){ -return; -} -var _65=_1f(_5f); -if(_65){ -_65.panel("close"); -_65.panel("options").tab.removeClass("tabs-selected"); -} -_64.panel("open"); -var _66=_64.panel("options").title; -_63.push(_66); -var tab=_64.panel("options").tab; -tab.addClass("tabs-selected"); -var _67=$(_5f).find(">div.tabs-header>div.tabs-wrap"); -var _68=tab.position().left; -var _69=_68+tab.outerWidth(); -if(_68<0||_69>_67.width()){ -var _6a=_68-(_67.width()-tab.width())/2; -$(_5f).tabs("scrollBy",_6a); -}else{ -$(_5f).tabs("scrollBy",0); -} -_1c(_5f); -_61.onSelect.call(_5f,_66,_48(_5f,_64)); -}; -function _4f(_6b,_6c){ -return _50(_6b,_6c)!=null; -}; -$.fn.tabs=function(_6d,_6e){ -if(typeof _6d=="string"){ -return $.fn.tabs.methods[_6d](this,_6e); -} -_6d=_6d||{}; -return this.each(function(){ -var _6f=$.data(this,"tabs"); -var _70; -if(_6f){ -_70=$.extend(_6f.options,_6d); -_6f.options=_70; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_6d),tabs:[],selectHis:[]}); -_23(this); -} -_c(this); -_2e(this); -_12(this); -_29(this); -_5c(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_12(this); -_1c(this); -}); -},add:function(jq,_71){ -return jq.each(function(){ -_39(this,_71); -}); -},close:function(jq,_72){ -return jq.each(function(){ -_49(this,_72); -}); -},getTab:function(jq,_73){ -return _50(jq[0],_73); -},getTabIndex:function(jq,tab){ -return _48(jq[0],tab); -},getSelected:function(jq){ -return _1f(jq[0]); -},select:function(jq,_74){ -return jq.each(function(){ -_3e(this,_74); -}); -},exists:function(jq,_75){ -return _4f(jq[0],_75); -},update:function(jq,_76){ -return jq.each(function(){ -_3f(this,_76); -}); -},enableTab:function(jq,_77){ -return jq.each(function(){ -$(this).tabs("getTab",_77).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_78){ -return jq.each(function(){ -$(this).tabs("getTab",_78).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_79){ -return jq.each(function(){ -var _7a=$(this).tabs("options"); -var _7b=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(_7b._scrollLeft()+_79,_7c()); -_7b.animate({scrollLeft:pos},_7a.scrollDuration); -function _7c(){ -var w=0; -var ul=_7b.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-_7b.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_7d){ -return $.extend({},$.parser.parseOptions(_7d,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_7e){ -},onSelect:function(_7f,_80){ -},onBeforeClose:function(_81,_82){ -},onClose:function(_83,_84){ -},onAdd:function(_85,_86){ -},onUpdate:function(_87,_88){ -},onContextMenu:function(e,_89,_8a){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.timespinner.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.timespinner.js deleted file mode 100644 index f78a389..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.timespinner.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"timespinner").options; -$(_2).addClass("timespinner-f"); -$(_2).spinner(_3); -$(_2).unbind(".timespinner"); -$(_2).bind("click.timespinner",function(){ -var _4=0; -if(this.selectionStart!=null){ -_4=this.selectionStart; -}else{ -if(this.createTextRange){ -var _5=_2.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_5); -_4=s.text.length; -} -} -if(_4>=0&&_4<=2){ -_3.highlight=0; -}else{ -if(_4>=3&&_4<=5){ -_3.highlight=1; -}else{ -if(_4>=6&&_4<=8){ -_3.highlight=2; -} -} -} -_7(_2); -}).bind("blur.timespinner",function(){ -_6(_2); -}); -}; -function _7(_8){ -var _9=$.data(_8,"timespinner").options; -var _a=0,_b=0; -if(_9.highlight==0){ -_a=0; -_b=2; -}else{ -if(_9.highlight==1){ -_a=3; -_b=5; -}else{ -if(_9.highlight==2){ -_a=6; -_b=8; -} -} -} -if(_8.selectionStart!=null){ -_8.setSelectionRange(_a,_b); -}else{ -if(_8.createTextRange){ -var _c=_8.createTextRange(); -_c.collapse(); -_c.moveEnd("character",_b); -_c.moveStart("character",_a); -_c.select(); -} -} -$(_8).focus(); -}; -function _d(_e,_f){ -var _10=$.data(_e,"timespinner").options; -if(!_f){ -return null; -} -var vv=_f.split(_10.separator); -for(var i=0;i_14){ -_14=_15; -} -if(_16&&_16<_14){ -_14=_16; -} -var tt=[_17(_14.getHours()),_17(_14.getMinutes())]; -if(_12.showSeconds){ -tt.push(_17(_14.getSeconds())); -} -var val=tt.join(_12.separator); -_12.value=val; -$(_11).val(val); -function _17(_18){ -return (_18<10?"0":"")+_18; -}; -}; -function _19(_1a,_1b){ -var _1c=$.data(_1a,"timespinner").options; -var val=$(_1a).val(); -if(val==""){ -val=[0,0,0].join(_1c.separator); -} -var vv=val.split(_1c.separator); -for(var i=0;i"+"
                                        "+"
                                        "+"
                                        "+"").appendTo("body"); -_12.tip=tip; -_14(_11); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_13.position); -_7(_11); -_12.showTimer=setTimeout(function(){ -_6(_11); -tip.show(); -_13.onShow.call(_11,e); -var _15=tip.children(".tooltip-arrow-outer"); -var _16=tip.children(".tooltip-arrow"); -var bc="border-"+_13.position+"-color"; -_15.add(_16).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_15.css(bc,tip.css(bc)); -_16.css(bc,tip.css("backgroundColor")); -},_13.showDelay); -}; -function _17(_18,e){ -var _19=$.data(_18,"tooltip"); -if(_19&&_19.tip){ -_7(_18); -_19.hideTimer=setTimeout(function(){ -_19.tip.hide(); -_19.options.onHide.call(_18,e); -},_19.options.hideDelay); -} -}; -function _14(_1a,_1b){ -var _1c=$.data(_1a,"tooltip"); -var _1d=_1c.options; -if(_1b){ -_1d.content=_1b; -} -if(!_1c.tip){ -return; -} -var cc=typeof _1d.content=="function"?_1d.content.call(_1a):_1d.content; -_1c.tip.children(".tooltip-content").html(cc); -_1d.onUpdate.call(_1a,cc); -}; -function _1e(_1f){ -var _20=$.data(_1f,"tooltip"); -if(_20){ -_7(_1f); -var _21=_20.options; -if(_20.tip){ -_20.tip.remove(); -} -if(_21._title){ -$(_1f).attr("title",_21._title); -} -$.removeData(_1f,"tooltip"); -$(_1f).unbind(".tooltip").removeClass("tooltip-f"); -_21.onDestroy.call(_1f); -} -}; -$.fn.tooltip=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.tooltip.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24=$.data(this,"tooltip"); -if(_24){ -$.extend(_24.options,_22); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_22)}); -_1(this); -} -_3(this); -_14(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_10(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_17(this,e); -}); -},update:function(jq,_25){ -return jq.each(function(){ -_14(this,_25); -}); -},reposition:function(jq){ -return jq.each(function(){ -_6(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1e(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_26){ -var t=$(_26); -var _27=$.extend({},$.parser.parseOptions(_26,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!_27.content){ -_27.content=_27._title; -} -return _27; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_28){ -},onPosition:function(_29,top){ -},onDestroy:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.tree.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.tree.js deleted file mode 100644 index c33f22f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.tree.js +++ /dev/null @@ -1,1148 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(_2); -_3.addClass("tree"); -return _3; -}; -function _4(_5){ -var _6=[]; -_7(_6,$(_5)); -function _7(aa,_8){ -_8.children("li").each(function(){ -var _9=$(this); -var _a=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_9.attr("checked")?true:undefined)}); -_a.text=_9.children("span").html(); -if(!_a.text){ -_a.text=_9.html(); -} -var _b=_9.children("ul"); -if(_b.length){ -_a.children=[]; -_7(_a.children,_b); -} -aa.push(_a); -}); -}; -return _6; -}; -function _c(_d){ -var _e=$.data(_d,"tree").options; -$(_d).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _f=tt.closest("div.tree-node"); -if(!_f.length){ -return; -} -_f.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _10=tt.closest("div.tree-node"); -if(!_10.length){ -return; -} -_10.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _11=tt.closest("div.tree-node"); -if(!_11.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_86(_d,_11[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_39(_d,_11[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_d8(_d,_11[0]); -_e.onClick.call(_d,_14(_d,_11[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _12=$(e.target).closest("div.tree-node"); -if(!_12.length){ -return; -} -_d8(_d,_12[0]); -_e.onDblClick.call(_d,_14(_d,_12[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _13=$(e.target).closest("div.tree-node"); -if(!_13.length){ -return; -} -_e.onContextMenu.call(_d,e,_14(_d,_13[0])); -e.stopPropagation(); -}); -}; -function _15(_16){ -var _17=$(_16).find("div.tree-node"); -_17.draggable("disable"); -_17.css("cursor","pointer"); -}; -function _18(_19){ -var _1a=$.data(_19,"tree"); -var _1b=_1a.options; -var _1c=_1a.tree; -_1a.disabledNodes=[]; -_1c.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_1d){ -var p=$("
                                        ").appendTo("body"); -p.html(" "+$(_1d).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_1b.onBeforeDrag.call(_19,_14(_19,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _1e=$(this).find("span.tree-indent"); -if(_1e.length){ -e.data.offsetWidth-=_1e.length*_1e.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_1b.onStartDrag.call(_19,_14(_19,this)); -var _1f=_14(_19,this); -if(_1f.id==undefined){ -_1f.id="easyui_tree_node_id_temp"; -_cb(_19,_1f); -} -_1a.draggingNodeId=_1f.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_1a.disabledNodes.length;i++){ -$(_1a.disabledNodes[i]).droppable("enable"); -} -_1a.disabledNodes=[]; -var _20=_d5(_19,_1a.draggingNodeId); -if(_20&&_20.id=="easyui_tree_node_id_temp"){ -_20.id=""; -_cb(_19,_20); -} -_1b.onStopDrag.call(_19,_20); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_21){ -if(_1b.onDragEnter.call(_19,this,_14(_19,_21))==false){ -_22(_21,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragOver:function(e,_23){ -if($(this).droppable("options").disabled){ -return; -} -var _24=_23.pageY; -var top=$(this).offset().top; -var _25=top+$(this).outerHeight(); -_22(_23,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_24>top+(_25-top)/2){ -if(_25-_24<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_24-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_1b.onDragOver.call(_19,this,_14(_19,_23))==false){ -_22(_23,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragLeave:function(e,_26){ -_22(_26,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_1b.onDragLeave.call(_19,this,_14(_19,_26)); -},onDrop:function(e,_27){ -var _28=this; -var _29,_2a; -if($(this).hasClass("tree-node-append")){ -_29=_2b; -_2a="append"; -}else{ -_29=_2c; -_2a=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_1b.onBeforeDrop.call(_19,_28,_c4(_19,_27),_2a)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_29(_27,_28,_2a); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _22(_2d,_2e){ -var _2f=$(_2d).draggable("proxy").find("span.tree-dnd-icon"); -_2f.removeClass("tree-dnd-yes tree-dnd-no").addClass(_2e?"tree-dnd-yes":"tree-dnd-no"); -}; -function _2b(_30,_31){ -if(_14(_19,_31).state=="closed"){ -_7a(_19,_31,function(){ -_32(); -}); -}else{ -_32(); -} -function _32(){ -var _33=$(_19).tree("pop",_30); -$(_19).tree("append",{parent:_31,data:[_33]}); -_1b.onDrop.call(_19,_31,_33,"append"); -}; -}; -function _2c(_34,_35,_36){ -var _37={}; -if(_36=="top"){ -_37.before=_35; -}else{ -_37.after=_35; -} -var _38=$(_19).tree("pop",_34); -_37.data=_38; -$(_19).tree("insert",_37); -_1b.onDrop.call(_19,_35,_38,_36); -}; -}; -function _39(_3a,_3b,_3c){ -var _3d=$.data(_3a,"tree").options; -if(!_3d.checkbox){ -return; -} -var _3e=_14(_3a,_3b); -if(_3d.onBeforeCheck.call(_3a,_3e,_3c)==false){ -return; -} -var _3f=$(_3b); -var ck=_3f.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_3c){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_3d.cascadeCheck){ -_40(_3f); -_41(_3f); -} -_3d.onCheck.call(_3a,_3e,_3c); -function _41(_42){ -var _43=_42.next().find(".tree-checkbox"); -_43.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_42.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_43.addClass("tree-checkbox1"); -}else{ -_43.addClass("tree-checkbox0"); -} -}; -function _40(_44){ -var _45=_91(_3a,_44[0]); -if(_45){ -var ck=$(_45.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_46(_44)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_47(_44)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_40($(_45.target)); -} -function _46(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _47(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _48(_49,_4a){ -var _4b=$.data(_49,"tree").options; -var _4c=$(_4a); -if(_4d(_49,_4a)){ -var ck=_4c.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -_39(_49,_4a,false); -} -}else{ -if(_4b.onlyLeafCheck){ -$("").insertBefore(_4c.find(".tree-title")); -} -} -}else{ -var ck=_4c.find(".tree-checkbox"); -if(_4b.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _4e=true; -var _4f=true; -var _50=_51(_49,_4a); -for(var i=0;i<_50.length;i++){ -if(_50[i].checked){ -_4f=false; -}else{ -_4e=false; -} -} -if(_4e){ -_39(_49,_4a,true); -} -if(_4f){ -_39(_49,_4a,false); -} -} -} -} -} -}; -function _52(_53,ul,_54,_55){ -var _56=$.data(_53,"tree").options; -_54=_56.loadFilter.call(_53,_54,$(ul).prev("div.tree-node")[0]); -if(!_55){ -$(ul).empty(); -} -var _57=[]; -var _58=[]; -var _59=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_5a(ul,_54,_59); -if(_56.dnd){ -_18(_53); -}else{ -_15(_53); -} -if(_57.length){ -_39(_53,_57[0],false); -} -for(var i=0;i<_58.length;i++){ -_39(_53,_58[i],true); -} -setTimeout(function(){ -_62(_53,_53); -},0); -var _5b=null; -if(_53!=ul){ -var _5c=$(ul).prev(); -_5b=_14(_53,_5c[0]); -} -_56.onLoadSuccess.call(_53,_5b,_54); -function _5a(ul,_5d,_5e){ -for(var i=0;i<_5d.length;i++){ -var li=$("
                                      • ").appendTo(ul); -var _5f=_5d[i]; -if(_5f.state!="open"&&_5f.state!="closed"){ -_5f.state="open"; -} -var _60=$("
                                        ").appendTo(li); -_60.attr("node-id",_5f.id); -$.data(_60[0],"tree-node",{id:_5f.id,text:_5f.text,iconCls:_5f.iconCls,attributes:_5f.attributes}); -$("").html(_56.formatter.call(_53,_5f)).appendTo(_60); -if(_56.checkbox){ -if(_56.onlyLeafCheck){ -if(_5f.state=="open"&&(!_5f.children||!_5f.children.length)){ -if(_5f.checked){ -$("").prependTo(_60); -}else{ -$("").prependTo(_60); -} -} -}else{ -if(_5f.checked){ -$("").prependTo(_60); -_58.push(_60[0]); -}else{ -$("").prependTo(_60); -if(_5d==_54){ -_57.push(_60[0]); -} -} -} -} -if(_5f.children&&_5f.children.length){ -var _61=$("
                                          ").appendTo(li); -if(_5f.state=="open"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -_61.css("display","none"); -} -_5a(_61,_5f.children,_5e+1); -}else{ -if(_5f.state=="closed"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -} -} -for(var j=0;j<_5e;j++){ -$("").prependTo(_60); -} -} -}; -}; -function _62(_63,ul,_64){ -var _65=$.data(_63,"tree").options; -if(!_65.lines){ -return; -} -if(!_64){ -_64=true; -$(_63).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_63).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _66=$(_63).tree("getRoots"); -if(_66.length>1){ -$(_66[0].target).addClass("tree-root-first"); -}else{ -if(_66.length==1){ -$(_66[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var _67=$(this).children("div.tree-node"); -var ul=_67.next("ul"); -if(ul.length){ -if($(this).next().length){ -_68(_67); -} -_62(_63,ul,_64); -}else{ -_69(_67); -} -}); -var _6a=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_6a.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _69(_6b,_6c){ -var _6d=_6b.find("span.tree-icon"); -_6d.prev("span.tree-indent").addClass("tree-join"); -}; -function _68(_6e){ -var _6f=_6e.find("span.tree-indent, span.tree-hit").length; -_6e.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_6f-1)+")").addClass("tree-line"); -}); -}; -}; -function _70(_71,ul,_72,_73){ -var _74=$.data(_71,"tree").options; -_72=_72||{}; -var _75=null; -if(_71!=ul){ -var _76=$(ul).prev(); -_75=_14(_71,_76[0]); -} -if(_74.onBeforeLoad.call(_71,_75,_72)==false){ -return; -} -var _77=$(ul).prev().children("span.tree-folder"); -_77.addClass("tree-loading"); -var _78=_74.loader.call(_71,_72,function(_79){ -_77.removeClass("tree-loading"); -_52(_71,ul,_79); -if(_73){ -_73(); -} -},function(){ -_77.removeClass("tree-loading"); -_74.onLoadError.apply(_71,arguments); -if(_73){ -_73(); -} -}); -if(_78==false){ -_77.removeClass("tree-loading"); -} -}; -function _7a(_7b,_7c,_7d){ -var _7e=$.data(_7b,"tree").options; -var hit=$(_7c).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var _7f=_14(_7b,_7c); -if(_7e.onBeforeExpand.call(_7b,_7f)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_7c).next(); -if(ul.length){ -if(_7e.animate){ -ul.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -ul.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}else{ -var _80=$("
                                            ").insertAfter(_7c); -_70(_7b,_80[0],{id:_7f.id},function(){ -if(_80.is(":empty")){ -_80.remove(); -} -if(_7e.animate){ -_80.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -_80.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}); -} -}; -function _81(_82,_83){ -var _84=$.data(_82,"tree").options; -var hit=$(_83).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var _85=_14(_82,_83); -if(_84.onBeforeCollapse.call(_82,_85)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_83).next(); -if(_84.animate){ -ul.slideUp("normal",function(){ -_84.onCollapse.call(_82,_85); -}); -}else{ -ul.css("display","none"); -_84.onCollapse.call(_82,_85); -} -}; -function _86(_87,_88){ -var hit=$(_88).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_81(_87,_88); -}else{ -_7a(_87,_88); -} -}; -function _89(_8a,_8b){ -var _8c=_51(_8a,_8b); -if(_8b){ -_8c.unshift(_14(_8a,_8b)); -} -for(var i=0;i<_8c.length;i++){ -_7a(_8a,_8c[i].target); -} -}; -function _8d(_8e,_8f){ -var _90=[]; -var p=_91(_8e,_8f); -while(p){ -_90.unshift(p); -p=_91(_8e,p.target); -} -for(var i=0;i<_90.length;i++){ -_7a(_8e,_90[i].target); -} -}; -function _92(_93,_94){ -var c=$(_93).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_94); -var _95=n.offset().top; -if(c[0].tagName!="BODY"){ -var _96=c.offset().top; -if(_95<_96){ -c.scrollTop(c.scrollTop()+_95-_96); -}else{ -if(_95+n.outerHeight()>_96+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+_95+n.outerHeight()-_96-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(_95); -} -}; -function _97(_98,_99){ -var _9a=_51(_98,_99); -if(_99){ -_9a.unshift(_14(_98,_99)); -} -for(var i=0;i<_9a.length;i++){ -_81(_98,_9a[i].target); -} -}; -function _9b(_9c){ -var _9d=_9e(_9c); -if(_9d.length){ -return _9d[0]; -}else{ -return null; -} -}; -function _9e(_9f){ -var _a0=[]; -$(_9f).children("li").each(function(){ -var _a1=$(this).children("div.tree-node"); -_a0.push(_14(_9f,_a1[0])); -}); -return _a0; -}; -function _51(_a2,_a3){ -var _a4=[]; -if(_a3){ -_a5($(_a3)); -}else{ -var _a6=_9e(_a2); -for(var i=0;i<_a6.length;i++){ -_a4.push(_a6[i]); -_a5($(_a6[i].target)); -} -} -function _a5(_a7){ -_a7.next().find("div.tree-node").each(function(){ -_a4.push(_14(_a2,this)); -}); -}; -return _a4; -}; -function _91(_a8,_a9){ -var ul=$(_a9).parent().parent(); -if(ul[0]==_a8){ -return null; -}else{ -return _14(_a8,ul.prev()[0]); -} -}; -function _aa(_ab,_ac){ -_ac=_ac||"checked"; -if(!$.isArray(_ac)){ -_ac=[_ac]; -} -var _ad=[]; -for(var i=0;i<_ac.length;i++){ -var s=_ac[i]; -if(s=="checked"){ -_ad.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_ad.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_ad.push("span.tree-checkbox2"); -} -} -} -} -var _ae=[]; -$(_ab).find(_ad.join(",")).each(function(){ -var _af=$(this).parent(); -_ae.push(_14(_ab,_af[0])); -}); -return _ae; -}; -function _b0(_b1){ -var _b2=$(_b1).find("div.tree-node-selected"); -if(_b2.length){ -return _14(_b1,_b2[0]); -}else{ -return null; -} -}; -function _b3(_b4,_b5){ -var _b6=$(_b5.parent); -var _b7=_b5.data; -if(!_b7){ -return; -} -_b7=$.isArray(_b7)?_b7:[_b7]; -if(!_b7.length){ -return; -} -var ul; -if(_b6.length==0){ -ul=$(_b4); -}else{ -if(_4d(_b4,_b6[0])){ -var _b8=_b6.find("span.tree-icon"); -_b8.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_b8); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=_b6.next(); -if(!ul.length){ -ul=$("
                                              ").insertAfter(_b6); -} -} -_52(_b4,ul[0],_b7,true); -_48(_b4,ul.prev()); -}; -function _b9(_ba,_bb){ -var ref=_bb.before||_bb.after; -var _bc=_91(_ba,ref); -var _bd=_bb.data; -if(!_bd){ -return; -} -_bd=$.isArray(_bd)?_bd:[_bd]; -if(!_bd.length){ -return; -} -_b3(_ba,{parent:(_bc?_bc.target:null),data:_bd}); -var li=$(); -var _be=_bc?$(_bc.target).next().children("li:last"):$(_ba).children("li:last"); -for(var i=0;i<_bd.length;i++){ -li=_be.add(li); -_be=_be.prev(); -} -if(_bb.before){ -li.insertBefore($(ref).parent()); -}else{ -li.insertAfter($(ref).parent()); -} -}; -function _bf(_c0,_c1){ -var _c2=_91(_c0,_c1); -var _c3=$(_c1); -var li=_c3.parent(); -var ul=li.parent(); -li.remove(); -if(ul.children("li").length==0){ -var _c3=ul.prev(); -_c3.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_c3.find(".tree-hit").remove(); -$("").prependTo(_c3); -if(ul[0]!=_c0){ -ul.remove(); -} -} -if(_c2){ -_48(_c0,_c2.target); -} -_62(_c0,_c0); -}; -function _c4(_c5,_c6){ -function _c7(aa,ul){ -ul.children("li").each(function(){ -var _c8=$(this).children("div.tree-node"); -var _c9=_14(_c5,_c8[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_c9.children=[]; -_c7(_c9.children,sub); -} -aa.push(_c9); -}); -}; -if(_c6){ -var _ca=_14(_c5,_c6); -_ca.children=[]; -_c7(_ca.children,$(_c6).next()); -return _ca; -}else{ -return null; -} -}; -function _cb(_cc,_cd){ -var _ce=$.data(_cc,"tree").options; -var _cf=$(_cd.target); -var _d0=_14(_cc,_cd.target); -if(_d0.iconCls){ -_cf.find(".tree-icon").removeClass(_d0.iconCls); -} -var _d1=$.extend({},_d0,_cd); -$.data(_cd.target,"tree-node",_d1); -_cf.attr("node-id",_d1.id); -_cf.find(".tree-title").html(_ce.formatter.call(_cc,_d1)); -if(_d1.iconCls){ -_cf.find(".tree-icon").addClass(_d1.iconCls); -} -if(_d0.checked!=_d1.checked){ -_39(_cc,_cd.target,_d1.checked); -} -}; -function _14(_d2,_d3){ -var _d4=$.extend({},$.data(_d3,"tree-node"),{target:_d3,checked:$(_d3).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_4d(_d2,_d3)){ -_d4.state=$(_d3).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return _d4; -}; -function _d5(_d6,id){ -var _d7=$(_d6).find("div.tree-node[node-id=\""+id+"\"]"); -if(_d7.length){ -return _14(_d6,_d7[0]); -}else{ -return null; -} -}; -function _d8(_d9,_da){ -var _db=$.data(_d9,"tree").options; -var _dc=_14(_d9,_da); -if(_db.onBeforeSelect.call(_d9,_dc)==false){ -return; -} -$("div.tree-node-selected",_d9).removeClass("tree-node-selected"); -$(_da).addClass("tree-node-selected"); -_db.onSelect.call(_d9,_dc); -}; -function _4d(_dd,_de){ -var _df=$(_de); -var hit=_df.children("span.tree-hit"); -return hit.length==0; -}; -function _e0(_e1,_e2){ -var _e3=$.data(_e1,"tree").options; -var _e4=_14(_e1,_e2); -if(_e3.onBeforeEdit.call(_e1,_e4)==false){ -return; -} -$(_e2).css("position","relative"); -var nt=$(_e2).find(".tree-title"); -var _e5=nt.outerWidth(); -nt.empty(); -var _e6=$("").appendTo(nt); -_e6.val(_e4.text).focus(); -_e6.width(_e5+20); -_e6.height(document.compatMode=="CSS1Compat"?(18-(_e6.outerHeight()-_e6.height())):18); -_e6.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_e7(_e1,_e2); -return false; -}else{ -if(e.keyCode==27){ -_ed(_e1,_e2); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_e7(_e1,_e2); -}); -}; -function _e7(_e8,_e9){ -var _ea=$.data(_e8,"tree").options; -$(_e9).css("position",""); -var _eb=$(_e9).find("input.tree-editor"); -var val=_eb.val(); -_eb.remove(); -var _ec=_14(_e8,_e9); -_ec.text=val; -_cb(_e8,_ec); -_ea.onAfterEdit.call(_e8,_ec); -}; -function _ed(_ee,_ef){ -var _f0=$.data(_ee,"tree").options; -$(_ef).css("position",""); -$(_ef).find("input.tree-editor").remove(); -var _f1=_14(_ee,_ef); -_cb(_ee,_f1); -_f0.onCancelEdit.call(_ee,_f1); -}; -$.fn.tree=function(_f2,_f3){ -if(typeof _f2=="string"){ -return $.fn.tree.methods[_f2](this,_f3); -} -var _f2=_f2||{}; -return this.each(function(){ -var _f4=$.data(this,"tree"); -var _f5; -if(_f4){ -_f5=$.extend(_f4.options,_f2); -_f4.options=_f5; -}else{ -_f5=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f2); -$.data(this,"tree",{options:_f5,tree:_1(this)}); -var _f6=_4(this); -if(_f6.length&&!_f5.data){ -_f5.data=_f6; -} -} -_c(this); -if(_f5.lines){ -$(this).addClass("tree-lines"); -} -if(_f5.data){ -_52(this,this,_f5.data); -}else{ -if(_f5.dnd){ -_18(this); -}else{ -_15(this); -} -} -_70(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,_f7){ -return jq.each(function(){ -_52(this,this,_f7); -}); -},getNode:function(jq,_f8){ -return _14(jq[0],_f8); -},getData:function(jq,_f9){ -return _c4(jq[0],_f9); -},reload:function(jq,_fa){ -return jq.each(function(){ -if(_fa){ -var _fb=$(_fa); -var hit=_fb.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -_fb.next().remove(); -_7a(this,_fa); -}else{ -$(this).empty(); -_70(this,this); -} -}); -},getRoot:function(jq){ -return _9b(jq[0]); -},getRoots:function(jq){ -return _9e(jq[0]); -},getParent:function(jq,_fc){ -return _91(jq[0],_fc); -},getChildren:function(jq,_fd){ -return _51(jq[0],_fd); -},getChecked:function(jq,_fe){ -return _aa(jq[0],_fe); -},getSelected:function(jq){ -return _b0(jq[0]); -},isLeaf:function(jq,_ff){ -return _4d(jq[0],_ff); -},find:function(jq,id){ -return _d5(jq[0],id); -},select:function(jq,_100){ -return jq.each(function(){ -_d8(this,_100); -}); -},check:function(jq,_101){ -return jq.each(function(){ -_39(this,_101,true); -}); -},uncheck:function(jq,_102){ -return jq.each(function(){ -_39(this,_102,false); -}); -},collapse:function(jq,_103){ -return jq.each(function(){ -_81(this,_103); -}); -},expand:function(jq,_104){ -return jq.each(function(){ -_7a(this,_104); -}); -},collapseAll:function(jq,_105){ -return jq.each(function(){ -_97(this,_105); -}); -},expandAll:function(jq,_106){ -return jq.each(function(){ -_89(this,_106); -}); -},expandTo:function(jq,_107){ -return jq.each(function(){ -_8d(this,_107); -}); -},scrollTo:function(jq,_108){ -return jq.each(function(){ -_92(this,_108); -}); -},toggle:function(jq,_109){ -return jq.each(function(){ -_86(this,_109); -}); -},append:function(jq,_10a){ -return jq.each(function(){ -_b3(this,_10a); -}); -},insert:function(jq,_10b){ -return jq.each(function(){ -_b9(this,_10b); -}); -},remove:function(jq,_10c){ -return jq.each(function(){ -_bf(this,_10c); -}); -},pop:function(jq,_10d){ -var node=jq.tree("getData",_10d); -jq.tree("remove",_10d); -return node; -},update:function(jq,_10e){ -return jq.each(function(){ -_cb(this,_10e); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_18(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_15(this); -}); -},beginEdit:function(jq,_10f){ -return jq.each(function(){ -_e0(this,_10f); -}); -},endEdit:function(jq,_110){ -return jq.each(function(){ -_e7(this,_110); -}); -},cancelEdit:function(jq,_111){ -return jq.each(function(){ -_ed(this,_111); -}); -}}; -$.fn.tree.parseOptions=function(_112){ -var t=$(_112); -return $.extend({},$.parser.parseOptions(_112,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_113,_114,_115){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_113,dataType:"json",success:function(data){ -_114(data); -},error:function(){ -_115.apply(this,arguments); -}}); -},loadFilter:function(data,_116){ -return data; -},onBeforeLoad:function(node,_117){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_118){ -},onCheck:function(node,_119){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_11a,_11b){ -},onDragOver:function(_11c,_11d){ -},onDragLeave:function(_11e,_11f){ -},onBeforeDrop:function(_120,_121,_122){ -},onDrop:function(_123,_124,_125){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.treegrid.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.treegrid.js deleted file mode 100644 index 9aee2c6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.treegrid.js +++ /dev/null @@ -1,1100 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"treegrid"); -var _4=_3.options; -$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ -return false; -},onBeforeLoad:function(){ -return false; -},onLoadSuccess:function(){ -},onResizeColumn:function(_5,_6){ -_20(_2); -_4.onResizeColumn.call(_2,_5,_6); -},onSortColumn:function(_7,_8){ -_4.sortName=_7; -_4.sortOrder=_8; -if(_4.remoteSort){ -_1f(_2); -}else{ -var _9=$(_2).treegrid("getData"); -_39(_2,0,_9); -} -_4.onSortColumn.call(_2,_7,_8); -},onBeforeEdit:function(_a,_b){ -if(_4.onBeforeEdit.call(_2,_b)==false){ -return false; -} -},onAfterEdit:function(_c,_d,_e){ -_4.onAfterEdit.call(_2,_d,_e); -},onCancelEdit:function(_f,row){ -_4.onCancelEdit.call(_2,row); -},onSelect:function(_10){ -_4.onSelect.call(_2,_41(_2,_10)); -},onUnselect:function(_11){ -_4.onUnselect.call(_2,_41(_2,_11)); -},onSelectAll:function(){ -_4.onSelectAll.call(_2,$.data(_2,"treegrid").data); -},onUnselectAll:function(){ -_4.onUnselectAll.call(_2,$.data(_2,"treegrid").data); -},onCheck:function(_12){ -_4.onCheck.call(_2,_41(_2,_12)); -},onUncheck:function(_13){ -_4.onUncheck.call(_2,_41(_2,_13)); -},onCheckAll:function(){ -_4.onCheckAll.call(_2,$.data(_2,"treegrid").data); -},onUncheckAll:function(){ -_4.onUncheckAll.call(_2,$.data(_2,"treegrid").data); -},onClickRow:function(_14){ -_4.onClickRow.call(_2,_41(_2,_14)); -},onDblClickRow:function(_15){ -_4.onDblClickRow.call(_2,_41(_2,_15)); -},onClickCell:function(_16,_17){ -_4.onClickCell.call(_2,_17,_41(_2,_16)); -},onDblClickCell:function(_18,_19){ -_4.onDblClickCell.call(_2,_19,_41(_2,_18)); -},onRowContextMenu:function(e,_1a){ -_4.onContextMenu.call(_2,e,_41(_2,_1a)); -}})); -if(!_4.columns){ -var _1b=$.data(_2,"datagrid").options; -_4.columns=_1b.columns; -_4.frozenColumns=_1b.frozenColumns; -} -_3.dc=$.data(_2,"datagrid").dc; -if(_4.pagination){ -var _1c=$(_2).datagrid("getPager"); -_1c.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_1d,_1e){ -_4.pageNumber=_1d; -_4.pageSize=_1e; -_1f(_2); -}}); -_4.pageSize=_1c.pagination("options").pageSize; -} -}; -function _20(_21,_22){ -var _23=$.data(_21,"datagrid").options; -var dc=$.data(_21,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!_23.nowrap||_23.autoRowHeight)){ -if(_22!=undefined){ -var _24=_25(_21,_22); -for(var i=0;i<_24.length;i++){ -_26(_24[i][_23.idField]); -} -} -} -$(_21).datagrid("fixRowHeight",_22); -function _26(_27){ -var tr1=_23.finder.getTr(_21,_27,"body",1); -var tr2=_23.finder.getTr(_21,_27,"body",2); -tr1.css("height",""); -tr2.css("height",""); -var _28=Math.max(tr1.height(),tr2.height()); -tr1.css("height",_28); -tr2.css("height",_28); -}; -}; -function _29(_2a){ -var dc=$.data(_2a,"datagrid").dc; -var _2b=$.data(_2a,"treegrid").options; -if(!_2b.rownumbers){ -return; -} -dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ -$(this).html(i+1); -}); -}; -function _2c(_2d){ -var dc=$.data(_2d,"datagrid").dc; -var _2e=dc.body1.add(dc.body2); -var _2f=($.data(_2e[0],"events")||$._data(_2e[0],"events")).click[0].handler; -dc.body1.add(dc.body2).bind("mouseover",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.addClass("tree-expanded-hover"):tt.addClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.removeClass("tree-expanded-hover"):tt.removeClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).unbind("click").bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_30(_2d,tr.attr("node-id")); -}else{ -_2f(e); -} -e.stopPropagation(); -}); -}; -function _31(_32,_33){ -var _34=$.data(_32,"treegrid").options; -var tr1=_34.finder.getTr(_32,_33,"body",1); -var tr2=_34.finder.getTr(_32,_33,"body",2); -var _35=$(_32).datagrid("getColumnFields",true).length+(_34.rownumbers?1:0); -var _36=$(_32).datagrid("getColumnFields",false).length; -_37(tr1,_35); -_37(tr2,_36); -function _37(tr,_38){ -$(""+""+"
                                              "+""+"").insertAfter(tr); -}; -}; -function _39(_3a,_3b,_3c,_3d){ -var _3e=$.data(_3a,"treegrid"); -var _3f=_3e.options; -var dc=_3e.dc; -_3c=_3f.loadFilter.call(_3a,_3c,_3b); -var _40=_41(_3a,_3b); -if(_40){ -var _42=_3f.finder.getTr(_3a,_3b,"body",1); -var _43=_3f.finder.getTr(_3a,_3b,"body",2); -var cc1=_42.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_43.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_3d){ -_40.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_3d){ -_3e.data=[]; -} -} -if(!_3d){ -cc1.empty(); -cc2.empty(); -} -if(_3f.view.onBeforeRender){ -_3f.view.onBeforeRender.call(_3f.view,_3a,_3b,_3c); -} -_3f.view.render.call(_3f.view,_3a,cc1,true); -_3f.view.render.call(_3f.view,_3a,cc2,false); -if(_3f.showFooter){ -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer1,true); -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer2,false); -} -if(_3f.view.onAfterRender){ -_3f.view.onAfterRender.call(_3f.view,_3a); -} -_3f.onLoadSuccess.call(_3a,_40,_3c); -if(!_3b&&_3f.pagination){ -var _44=$.data(_3a,"treegrid").total; -var _45=$(_3a).datagrid("getPager"); -if(_45.pagination("options").total!=_44){ -_45.pagination({total:_44}); -} -} -_20(_3a); -_29(_3a); -$(_3a).treegrid("autoSizeColumn"); -}; -function _1f(_46,_47,_48,_49,_4a){ -var _4b=$.data(_46,"treegrid").options; -var _4c=$(_46).datagrid("getPanel").find("div.datagrid-body"); -if(_48){ -_4b.queryParams=_48; -} -var _4d=$.extend({},_4b.queryParams); -if(_4b.pagination){ -$.extend(_4d,{page:_4b.pageNumber,rows:_4b.pageSize}); -} -if(_4b.sortName){ -$.extend(_4d,{sort:_4b.sortName,order:_4b.sortOrder}); -} -var row=_41(_46,_47); -if(_4b.onBeforeLoad.call(_46,row,_4d)==false){ -return; -} -var _4e=_4c.find("tr[node-id=\""+_47+"\"] span.tree-folder"); -_4e.addClass("tree-loading"); -$(_46).treegrid("loading"); -var _4f=_4b.loader.call(_46,_4d,function(_50){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_39(_46,_47,_50,_49); -if(_4a){ -_4a(); -} -},function(){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_4b.onLoadError.apply(_46,arguments); -if(_4a){ -_4a(); -} -}); -if(_4f==false){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -} -}; -function _51(_52){ -var _53=_54(_52); -if(_53.length){ -return _53[0]; -}else{ -return null; -} -}; -function _54(_55){ -return $.data(_55,"treegrid").data; -}; -function _56(_57,_58){ -var row=_41(_57,_58); -if(row._parentId){ -return _41(_57,row._parentId); -}else{ -return null; -} -}; -function _25(_59,_5a){ -var _5b=$.data(_59,"treegrid").options; -var _5c=$(_59).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _5d=[]; -if(_5a){ -_5e(_5a); -}else{ -var _5f=_54(_59); -for(var i=0;i<_5f.length;i++){ -_5d.push(_5f[i]); -_5e(_5f[i][_5b.idField]); -} -} -function _5e(_60){ -var _61=_41(_59,_60); -if(_61&&_61.children){ -for(var i=0,len=_61.children.length;i").insertBefore(_96); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_39(_92,_93.parent,_93.data,true); -}; -function _97(_98,_99){ -var ref=_99.before||_99.after; -var _9a=$.data(_98,"treegrid").options; -var _9b=_56(_98,ref); -_91(_98,{parent:(_9b?_9b[_9a.idField]:null),data:[_99.data]}); -_9c(true); -_9c(false); -_29(_98); -function _9c(_9d){ -var _9e=_9d?1:2; -var tr=_9a.finder.getTr(_98,_99.data[_9a.idField],"body",_9e); -var _9f=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var _a0=_9a.finder.getTr(_98,ref,"body",_9e); -if(_99.before){ -tr.insertBefore(_a0); -}else{ -var sub=_a0.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:_a0); -} -_9f.remove(); -}; -}; -function _a1(_a2,_a3){ -var _a4=$.data(_a2,"treegrid").options; -var tr=_a4.finder.getTr(_a2,_a3); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _a5=del(_a3); -if(_a5){ -if(_a5.children.length==0){ -tr=_a4.finder.getTr(_a2,_a5[_a4.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var _a6=tr.children("td[field=\""+_a4.treeField+"\"]").children("div.datagrid-cell"); -_a6.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_a6.find(".tree-hit").remove(); -$("").prependTo(_a6); -} -} -_29(_a2); -function del(id){ -var cc; -var _a7=_56(_a2,_a3); -if(_a7){ -cc=_a7.children; -}else{ -cc=$(_a2).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_c9.length;i++){ -var row=_c9[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=_c0.rowStyler?_c0.rowStyler.call(_bd,row):""; -var _cb=""; -var _cc=""; -if(typeof css=="string"){ -_cc=css; -}else{ -if(css){ -_cb=css["class"]||""; -_cc=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_c3++%2&&_c0.striped?"datagrid-row-alt ":" ")+_cb+"\""; -var _cd=_cc?"style=\""+_cc+"\"":""; -var _ce=_c2+"-"+(_c7?1:2)+"-"+row[_c0.idField]; -_ca.push(""); -_ca=_ca.concat(_c4.renderRow.call(_c4,_bd,_c1,_c7,_c8,row)); -_ca.push(""); -if(row.children&&row.children.length){ -var tt=_c6(_c7,_c8+1,row.children); -var v=row.state=="closed"?"none":"block"; -_ca.push("
                                              "); -_ca=_ca.concat(tt); -_ca.push("
                                              "); -} -} -_ca.push(""); -return _ca; -}; -},renderFooter:function(_cf,_d0,_d1){ -var _d2=$.data(_cf,"treegrid").options; -var _d3=$.data(_cf,"treegrid").footer||[]; -var _d4=$(_cf).datagrid("getColumnFields",_d1); -var _d5=[""]; -for(var i=0;i<_d3.length;i++){ -var row=_d3[i]; -row[_d2.idField]=row[_d2.idField]||("foot-row-id"+i); -_d5.push(""); -_d5.push(this.renderRow.call(this,_cf,_d4,_d1,0,row)); -_d5.push(""); -} -_d5.push("
                                              "); -$(_d0).html(_d5.join("")); -},renderRow:function(_d6,_d7,_d8,_d9,row){ -var _da=$.data(_d6,"treegrid").options; -var cc=[]; -if(_d8&&_da.rownumbers){ -cc.push("
                                              0
                                              "); -} -for(var i=0;i<_d7.length;i++){ -var _db=_d7[i]; -var col=$(_d6).datagrid("getColumnOption",_db); -if(col){ -var css=col.styler?(col.styler(row[_db],row)||""):""; -var _dc=""; -var _dd=""; -if(typeof css=="string"){ -_dd=css; -}else{ -if(cc){ -_dc=css["class"]||""; -_dd=css["style"]||""; -} -} -var cls=_dc?"class=\""+_dc+"\"":""; -var _de=col.hidden?"style=\"display:none;"+_dd+"\"":(_dd?"style=\""+_dd+"\"":""); -cc.push(""); -if(col.checkbox){ -var _de=""; -}else{ -var _de=_dd; -if(col.align){ -_de+=";text-align:"+col.align+";"; -} -if(!_da.nowrap){ -_de+=";white-space:normal;height:auto;"; -}else{ -if(_da.autoRowHeight){ -_de+=";height:auto;"; -} -} -} -cc.push("
                                              "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_db],row); -}else{ -val=row[_db]; -} -if(_db==_da.treeField){ -for(var j=0;j<_d9;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                              "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_df,id){ -this.updateRow.call(this,_df,id,{}); -},updateRow:function(_e0,id,row){ -var _e1=$.data(_e0,"treegrid").options; -var _e2=$(_e0).treegrid("find",id); -$.extend(_e2,row); -var _e3=$(_e0).treegrid("getLevel",id)-1; -var _e4=_e1.rowStyler?_e1.rowStyler.call(_e0,_e2):""; -function _e5(_e6){ -var _e7=$(_e0).treegrid("getColumnFields",_e6); -var tr=_e1.finder.getTr(_e0,id,"body",(_e6?1:2)); -var _e8=tr.find("div.datagrid-cell-rownumber").html(); -var _e9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_e0,_e7,_e6,_e3,_e2)); -tr.attr("style",_e4||""); -tr.find("div.datagrid-cell-rownumber").html(_e8); -if(_e9){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_e5.call(this,true); -_e5.call(this,false); -$(_e0).treegrid("fixRowHeight",id); -},onBeforeRender:function(_ea,_eb,_ec){ -if($.isArray(_eb)){ -_ec={total:_eb.length,rows:_eb}; -_eb=null; -} -if(!_ec){ -return false; -} -var _ed=$.data(_ea,"treegrid"); -var _ee=_ed.options; -if(_ec.length==undefined){ -if(_ec.footer){ -_ed.footer=_ec.footer; -} -if(_ec.total){ -_ed.total=_ec.total; -} -_ec=this.transfer(_ea,_eb,_ec.rows); -}else{ -function _ef(_f0,_f1){ -for(var i=0;i<_f0.length;i++){ -var row=_f0[i]; -row._parentId=_f1; -if(row.children&&row.children.length){ -_ef(row.children,row[_ee.idField]); -} -} -}; -_ef(_ec,_eb); -} -var _f2=_41(_ea,_eb); -if(_f2){ -if(_f2.children){ -_f2.children=_f2.children.concat(_ec); -}else{ -_f2.children=_ec; -} -}else{ -_ed.data=_ed.data.concat(_ec); -} -this.sort(_ea,_ec); -this.treeNodes=_ec; -this.treeLevel=$(_ea).treegrid("getLevel",_eb); -},sort:function(_f3,_f4){ -var _f5=$.data(_f3,"treegrid").options; -if(!_f5.remoteSort&&_f5.sortName){ -var _f6=_f5.sortName.split(","); -var _f7=_f5.sortOrder.split(","); -_f8(_f4); -} -function _f8(_f9){ -_f9.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_f6.length;i++){ -var sn=_f6[i]; -var so=_f7[i]; -var col=$(_f3).treegrid("getColumnOption",sn); -var _fa=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_fa(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i<_f9.length;i++){ -var _fb=_f9[i].children; -if(_fb&&_fb.length){ -_f8(_fb); -} -} -}; -},transfer:function(_fc,_fd,_fe){ -var _ff=$.data(_fc,"treegrid").options; -var rows=[]; -for(var i=0;i<_fe.length;i++){ -rows.push(_fe[i]); -} -var _100=[]; -for(var i=0;i=_2b[0]&&len<=_2b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_2c,_2d){ -var _2e={}; -_2e[_2d[1]]=_2c; -var _2f=$.ajax({url:_2d[0],dataType:"json",data:_2e,async:false,cache:false,type:"post"}).responseText; -return _2f=="true"; -},message:"Please fix this field."}}}; -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.window.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.window.js deleted file mode 100644 index 38d05d1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/plugins/jquery.window.js +++ /dev/null @@ -1,288 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -var _4=$.data(_2,"window").options; -if(_3){ -if(_3.width){ -_4.width=_3.width; -} -if(_3.height){ -_4.height=_3.height; -} -if(_3.left!=null){ -_4.left=_3.left; -} -if(_3.top!=null){ -_4.top=_3.top; -} -} -$(_2).panel("resize",_4); -}; -function _5(_6,_7){ -var _8=$.data(_6,"window"); -if(_7){ -if(_7.left!=null){ -_8.options.left=_7.left; -} -if(_7.top!=null){ -_8.options.top=_7.top; -} -} -$(_6).panel("move",_8.options); -if(_8.shadow){ -_8.shadow.css({left:_8.options.left,top:_8.options.top}); -} -}; -function _9(_a,_b){ -var _c=$.data(_a,"window"); -var _d=_c.options; -var _e=_d.width; -if(isNaN(_e)){ -_e=_c.window._outerWidth(); -} -if(_d.inline){ -var _f=_c.window.parent(); -_d.left=(_f.width()-_e)/2+_f.scrollLeft(); -}else{ -_d.left=($(window)._outerWidth()-_e)/2+$(document).scrollLeft(); -} -if(_b){ -_5(_a); -} -}; -function _10(_11,_12){ -var _13=$.data(_11,"window"); -var _14=_13.options; -var _15=_14.height; -if(isNaN(_15)){ -_15=_13.window._outerHeight(); -} -if(_14.inline){ -var _16=_13.window.parent(); -_14.top=(_16.height()-_15)/2+_16.scrollTop(); -}else{ -_14.top=($(window)._outerHeight()-_15)/2+$(document).scrollTop(); -} -if(_12){ -_5(_11); -} -}; -function _17(_18){ -var _19=$.data(_18,"window"); -var win=$(_18).panel($.extend({},_19.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_19.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_19.options.onBeforeDestroy.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.mask){ -_19.mask.remove(); -} -},onClose:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onClose.call(_18); -},onOpen:function(){ -if(_19.mask){ -_19.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_19.shadow){ -_19.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.window.css("z-index",$.fn.window.defaults.zIndex++); -_19.options.onOpen.call(_18); -},onResize:function(_1a,_1b){ -var _1c=$(this).panel("options"); -$.extend(_19.options,{width:_1c.width,height:_1c.height,left:_1c.left,top:_1c.top}); -if(_19.shadow){ -_19.shadow.css({left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.options.onResize.call(_18,_1a,_1b); -},onMinimize:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onMinimize.call(_18); -},onBeforeCollapse:function(){ -if(_19.options.onBeforeCollapse.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.hide(); -} -},onExpand:function(){ -if(_19.shadow){ -_19.shadow.show(); -} -_19.options.onExpand.call(_18); -}})); -_19.window=win.panel("panel"); -if(_19.mask){ -_19.mask.remove(); -} -if(_19.options.modal==true){ -_19.mask=$("
                                              ").insertAfter(_19.window); -_19.mask.css({width:(_19.options.inline?_19.mask.parent().width():_1d().width),height:(_19.options.inline?_19.mask.parent().height():_1d().height),display:"none"}); -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.options.shadow==true){ -_19.shadow=$("
                                              ").insertAfter(_19.window); -_19.shadow.css({display:"none"}); -} -if(_19.options.left==null){ -_9(_18); -} -if(_19.options.top==null){ -_10(_18); -} -_5(_18); -if(_19.options.closed==false){ -win.window("open"); -} -}; -function _1e(_1f){ -var _20=$.data(_1f,"window"); -_20.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_20.options.draggable==false,onStartDrag:function(e){ -if(_20.mask){ -_20.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_20.shadow){ -_20.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_20.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_20.proxy){ -_20.proxy=$("
                                              ").insertAfter(_20.window); -} -_20.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(_20.window._outerWidth()); -_20.proxy._outerHeight(_20.window._outerHeight()); -setTimeout(function(){ -if(_20.proxy){ -_20.proxy.show(); -} -},500); -},onDrag:function(e){ -_20.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_20.options.left=e.data.left; -_20.options.top=e.data.top; -$(_1f).window("move"); -_20.proxy.remove(); -_20.proxy=null; -}}); -_20.window.resizable({disabled:_20.options.resizable==false,onStartResize:function(e){ -_20.pmask=$("
                                              ").insertAfter(_20.window); -_20.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_20.window._outerWidth(),height:_20.window._outerHeight()}); -if(!_20.proxy){ -_20.proxy=$("
                                              ").insertAfter(_20.window); -} -_20.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_20.proxy.css({left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_20.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_1(_1f); -_20.pmask.remove(); -_20.pmask=null; -_20.proxy.remove(); -_20.proxy=null; -}}); -}; -function _1d(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_1d().width,height:_1d().height}); -},50); -}); -$.fn.window=function(_21,_22){ -if(typeof _21=="string"){ -var _23=$.fn.window.methods[_21]; -if(_23){ -return _23(this,_22); -}else{ -return this.panel(_21,_22); -} -} -_21=_21||{}; -return this.each(function(){ -var _24=$.data(this,"window"); -if(_24){ -$.extend(_24.options,_21); -}else{ -_24=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_21)}); -if(!_24.options.inline){ -document.body.appendChild(this); -} -} -_17(this); -_1e(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _25=jq.panel("options"); -var _26=$.data(jq[0],"window").options; -return $.extend(_26,{closed:_25.closed,collapsed:_25.collapsed,minimized:_25.minimized,maximized:_25.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_27){ -return jq.each(function(){ -_1(this,_27); -}); -},move:function(jq,_28){ -return jq.each(function(){ -_5(this,_28); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_9(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_10(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_9(this); -_10(this); -_5(this); -}); -}}; -$.fn.window.parseOptions=function(_29){ -return $.extend({},$.fn.panel.parseOptions(_29),$.parser.parseOptions(_29,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/accordion.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/accordion.css deleted file mode 100644 index a0f6ddc..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/calendar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/calendar.css deleted file mode 100644 index 514f3e3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/combo.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/combo.css deleted file mode 100644 index d0af3b7..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/combobox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/combobox.css deleted file mode 100644 index 9c55f28..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/datagrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/datagrid.css deleted file mode 100644 index 2a616fb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/datebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/datebox.css deleted file mode 100644 index e368f64..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/dialog.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/dialog.css deleted file mode 100644 index 4ee224a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/easyui.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/easyui.css deleted file mode 100644 index 8e20555..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/easyui.css +++ /dev/null @@ -1,2292 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/Thumbs.db b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/accordion_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/accordion_arrows.png deleted file mode 100644 index 45fd44a..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/blank.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/calendar_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/combo_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/combo_arrow.png deleted file mode 100644 index ac58921..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/datagrid_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/datagrid_icons.png deleted file mode 100644 index bdf87e3..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/datebox_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/layout_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/layout_arrows.png deleted file mode 100644 index 19c611f..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/linkbutton_bg.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/loading.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/menu_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/menu_arrows.png deleted file mode 100644 index 2a98494..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/messager_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/pagination_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/pagination_icons.png deleted file mode 100644 index b3315fa..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/panel_tools.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/panel_tools.png deleted file mode 100644 index f97761e..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/searchbox_button.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/slider_handle.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/spinner_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/spinner_arrows.png deleted file mode 100644 index 25ee848..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/tabs_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/tabs_icons.png deleted file mode 100644 index 732b123..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/tree_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/tree_icons.png deleted file mode 100644 index 2b4fd20..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/validatebox_warning.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/layout.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/layout.css deleted file mode 100644 index 31190da..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/linkbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/linkbutton.css deleted file mode 100644 index 69de8e2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/menu.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/menu.css deleted file mode 100644 index 9e89ea5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/menubutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/menubutton.css deleted file mode 100644 index b936c02..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/messager.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/messager.css deleted file mode 100644 index f378f2a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/pagination.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/pagination.css deleted file mode 100644 index 92fa015..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/panel.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/panel.css deleted file mode 100644 index 0197324..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/progressbar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/progressbar.css deleted file mode 100644 index 79fcf62..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/propertygrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/propertygrid.css deleted file mode 100644 index d71ce7c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/searchbox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/searchbox.css deleted file mode 100644 index a502652..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/slider.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/slider.css deleted file mode 100644 index da31fd6..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/spinner.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/spinner.css deleted file mode 100644 index 18ea2a9..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/splitbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/splitbutton.css deleted file mode 100644 index 3391b9c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tabs.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tabs.css deleted file mode 100644 index 40ba8f1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tooltip.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tooltip.css deleted file mode 100644 index 8dfbfed..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tree.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tree.css deleted file mode 100644 index ea955cb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/validatebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/window.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/window.css deleted file mode 100644 index 1277273..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/black/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/accordion.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/accordion.css deleted file mode 100644 index 6b80dc2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/calendar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/calendar.css deleted file mode 100644 index 83458b2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/combo.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/combo.css deleted file mode 100644 index 42b913a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/combobox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/combobox.css deleted file mode 100644 index 0ad3cb7..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/datagrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/datagrid.css deleted file mode 100644 index 7826541..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/datebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/datebox.css deleted file mode 100644 index 6225a0d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/dialog.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/dialog.css deleted file mode 100644 index 77552bb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/easyui.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/easyui.css deleted file mode 100644 index ea7ef8f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/easyui.css +++ /dev/null @@ -1,2265 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; - border: none; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/Thumbs.db b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/accordion_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/blank.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/calendar_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/combo_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/datagrid_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/datebox_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/layout_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/linkbutton_bg.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/loading.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/menu_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/messager_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/pagination_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/panel_tools.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/panel_tools.png deleted file mode 100644 index 19ecc94..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/searchbox_button.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/slider_handle.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/spinner_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/tabs_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/tree_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/validatebox_warning.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/layout.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/layout.css deleted file mode 100644 index 0292cf5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/linkbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/linkbutton.css deleted file mode 100644 index 6a79c55..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/menu.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/menu.css deleted file mode 100644 index c6089d5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/menubutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/menubutton.css deleted file mode 100644 index 9246499..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/messager.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/messager.css deleted file mode 100644 index 3ed98c7..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/pagination.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/pagination.css deleted file mode 100644 index 3df2050..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/panel.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/panel.css deleted file mode 100644 index 2600688..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/progressbar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/progressbar.css deleted file mode 100644 index db80e3a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/propertygrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/propertygrid.css deleted file mode 100644 index 5f5fbb3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/searchbox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/searchbox.css deleted file mode 100644 index b13708d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/slider.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/slider.css deleted file mode 100644 index a4db046..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/spinner.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/spinner.css deleted file mode 100644 index 1a28f8a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/splitbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/splitbutton.css deleted file mode 100644 index 61635c3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tabs.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tabs.css deleted file mode 100644 index 2978394..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tooltip.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tooltip.css deleted file mode 100644 index 2881b70..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tree.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tree.css deleted file mode 100644 index af7e273..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/validatebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/window.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/window.css deleted file mode 100644 index b22024a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/default/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/accordion.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/accordion.css deleted file mode 100644 index 3cb451b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/calendar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/calendar.css deleted file mode 100644 index d087f25..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/combo.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/combo.css deleted file mode 100644 index 1fdf982..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/combobox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/combobox.css deleted file mode 100644 index 71b9470..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/datagrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/datagrid.css deleted file mode 100644 index 2bad00a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/datebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/datebox.css deleted file mode 100644 index 8c41350..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/dialog.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/dialog.css deleted file mode 100644 index fcd00ad..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/easyui.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/easyui.css deleted file mode 100644 index 89660cb..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/easyui.css +++ /dev/null @@ -1,2264 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/Thumbs.db b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/accordion_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/accordion_arrows.png deleted file mode 100644 index a0b8769..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/blank.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/calendar_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/combo_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/combo_arrow.png deleted file mode 100644 index 04f4ba0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/datagrid_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/datagrid_icons.png deleted file mode 100644 index 73c4e88..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/datebox_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/layout_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/layout_arrows.png deleted file mode 100644 index bf7929f..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/linkbutton_bg.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/loading.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/menu_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/messager_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/pagination_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/pagination_icons.png deleted file mode 100644 index e0f1b07..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/panel_tools.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/panel_tools.png deleted file mode 100644 index f33f8c9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/searchbox_button.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/slider_handle.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/spinner_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/spinner_arrows.png deleted file mode 100644 index dba62bb..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/tabs_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/tabs_icons.png deleted file mode 100644 index dfa10f7..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/tree_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/validatebox_warning.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/layout.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/layout.css deleted file mode 100644 index d26772e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/linkbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/linkbutton.css deleted file mode 100644 index fd725e1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/menu.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/menu.css deleted file mode 100644 index 51c2cff..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/menubutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/menubutton.css deleted file mode 100644 index dc61b34..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/messager.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/messager.css deleted file mode 100644 index 9b3aed2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/pagination.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/pagination.css deleted file mode 100644 index 2fc3d1f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/panel.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/panel.css deleted file mode 100644 index f38009a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/progressbar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/progressbar.css deleted file mode 100644 index 93818e3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/propertygrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/propertygrid.css deleted file mode 100644 index 90e4520..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/searchbox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/searchbox.css deleted file mode 100644 index a98939a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/slider.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/slider.css deleted file mode 100644 index 38e4e5b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/spinner.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/spinner.css deleted file mode 100644 index 0d9f2b0..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/splitbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/splitbutton.css deleted file mode 100644 index f2bbb87..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tabs.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tabs.css deleted file mode 100644 index 7a48b33..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tooltip.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tooltip.css deleted file mode 100644 index 51c5b83..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tree.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tree.css deleted file mode 100644 index c705f39..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/validatebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/window.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/window.css deleted file mode 100644 index b06cfc0..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/gray/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icon.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icon.css deleted file mode 100644 index 11e0642..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icon.css +++ /dev/null @@ -1,64 +0,0 @@ -.icon-blank{ - background:url('icons/blank.gif') no-repeat center center; -} -.icon-add{ - background:url('icons/edit_add.png') no-repeat center center; -} -.icon-edit{ - background:url('icons/pencil.png') no-repeat center center; -} -.icon-remove{ - background:url('icons/edit_remove.png') no-repeat center center; -} -.icon-save{ - background:url('icons/filesave.png') no-repeat center center; -} -.icon-cut{ - background:url('icons/cut.png') no-repeat center center; -} -.icon-ok{ - background:url('icons/ok.png') no-repeat center center; -} -.icon-no{ - background:url('icons/no.png') no-repeat center center; -} -.icon-cancel{ - background:url('icons/cancel.png') no-repeat center center; -} -.icon-reload{ - background:url('icons/reload.png') no-repeat center center; -} -.icon-search{ - background:url('icons/search.png') no-repeat center center; -} -.icon-print{ - background:url('icons/print.png') no-repeat center center; -} -.icon-help{ - background:url('icons/help.png') no-repeat center center; -} -.icon-undo{ - background:url('icons/undo.png') no-repeat center center; -} -.icon-redo{ - background:url('icons/redo.png') no-repeat center center; -} -.icon-back{ - background:url('icons/back.png') no-repeat center center; -} -.icon-sum{ - background:url('icons/sum.png') no-repeat center center; -} -.icon-tip{ - background:url('icons/tip.png') no-repeat center center; -} - -.icon-mini-add{ - background:url('icons/mini_add.png') no-repeat center center; -} -.icon-mini-edit{ - background:url('icons/mini_edit.png') no-repeat center center; -} -.icon-mini-refresh{ - background:url('icons/mini_refresh.png') no-repeat center center; -} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/back.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/back.png deleted file mode 100644 index 3fe8b17..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/back.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/blank.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/cancel.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/cancel.png deleted file mode 100644 index a432b49..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/cancel.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/cut.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/cut.png deleted file mode 100644 index 21fdb4d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/cut.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/edit_add.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/edit_add.png deleted file mode 100644 index e948508..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/edit_add.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/edit_remove.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/edit_remove.png deleted file mode 100644 index d555d92..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/edit_remove.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/filesave.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/filesave.png deleted file mode 100644 index fd0048d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/filesave.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/help.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/help.png deleted file mode 100644 index 28a0f9e..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/help.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_add.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_add.png deleted file mode 100644 index fd82b92..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_add.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_edit.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_edit.png deleted file mode 100644 index db9221a..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_edit.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_refresh.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_refresh.png deleted file mode 100644 index 6cdd016..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/mini_refresh.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/no.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/no.png deleted file mode 100644 index 37a7c74..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/no.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/ok.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/ok.png deleted file mode 100644 index 5b0f6a6..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/ok.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/pencil.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/pencil.png deleted file mode 100644 index 5b8cc89..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/pencil.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/print.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/print.png deleted file mode 100644 index fdf67a1..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/print.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/redo.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/redo.png deleted file mode 100644 index f1e45cf..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/redo.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/reload.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/reload.png deleted file mode 100644 index f51cab8..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/reload.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/search.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/search.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/search.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/sum.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/sum.png deleted file mode 100644 index fd7b32e..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/sum.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/tip.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/tip.png deleted file mode 100644 index 845e110..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/tip.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/undo.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/undo.png deleted file mode 100644 index 6129fa0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/icons/undo.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/accordion.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/accordion.css deleted file mode 100644 index 31d6079..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/calendar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/calendar.css deleted file mode 100644 index 798ed97..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/combo.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/combo.css deleted file mode 100644 index 8922f8e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/combobox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/combobox.css deleted file mode 100644 index 97205d3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/datagrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/datagrid.css deleted file mode 100644 index 7d0445a..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/datagrid.css +++ /dev/null @@ -1,252 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/datebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/datebox.css deleted file mode 100644 index b0f71e2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/dialog.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/dialog.css deleted file mode 100644 index 316cdc4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/easyui.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/easyui.css deleted file mode 100644 index 6403e3f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/easyui.css +++ /dev/null @@ -1,2238 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/Thumbs.db b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/accordion_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/blank.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/calendar_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/combo_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/datagrid_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/datebox_arrow.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/layout_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/linkbutton_bg.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/loading.gif b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/menu_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/messager_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/pagination_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/panel_tools.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/panel_tools.png deleted file mode 100644 index fe682ef..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/searchbox_button.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/slider_handle.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/spinner_arrows.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/tabs_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/tree_icons.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/validatebox_warning.png b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/layout.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/layout.css deleted file mode 100644 index 7057fb2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/linkbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/linkbutton.css deleted file mode 100644 index 9bf5dc5..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/menu.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/menu.css deleted file mode 100644 index 5012a50..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/menubutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/menubutton.css deleted file mode 100644 index 53d830e..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/messager.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/messager.css deleted file mode 100644 index 3b9ac40..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/pagination.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/pagination.css deleted file mode 100644 index cf3268f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/panel.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/panel.css deleted file mode 100644 index f71d5e8..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/panel.css +++ /dev/null @@ -1,119 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/progressbar.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/progressbar.css deleted file mode 100644 index 7721f1b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/propertygrid.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/propertygrid.css deleted file mode 100644 index f5ae0c4..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/searchbox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/searchbox.css deleted file mode 100644 index 4e01696..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/slider.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/slider.css deleted file mode 100644 index a0907f3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/spinner.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/spinner.css deleted file mode 100644 index 8676724..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/splitbutton.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/splitbutton.css deleted file mode 100644 index d98239b..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tabs.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tabs.css deleted file mode 100644 index 7c95798..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tabs.css +++ /dev/null @@ -1,320 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tooltip.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tooltip.css deleted file mode 100644 index 8382539..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tree.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tree.css deleted file mode 100644 index a2ec693..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/validatebox.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/window.css b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/window.css deleted file mode 100644 index 6d2f911..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/easyui/themes/metro/window.css +++ /dev/null @@ -1,81 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/export.js b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/export.js deleted file mode 100644 index 86ed543..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/js/export.js +++ /dev/null @@ -1,74 +0,0 @@ - -// -// =========================== -// 导出及查询页面通用Js -// =========================== -// 此脚本依赖于:json4html.js - -// -// 配置: -// expr.portal = '这里为导出项的类名'; -// -// expr.checkParams = function (data) { -// //这里校验参数的准确性,data为Json格式 -// return true; -// }; -// -// -// - - -if (!window.$JS) { alert('请加载json4html.js文件!'); } - -var expr = { - ele: '', - appPath: '/', - hanlderPrefix: '/wxm/Export_', - portal: '', - _getParams: function () { - return encodeURIComponent($JS.json.toString(this.ele)); - }, - - checkParams: function (data) { - return true; - }, - getDataUrl: function () { - if (this.checkParams()) { - var _appPath = window.appPath || this.appPath; - return (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'GetExportData?portal=' + this.portal - + '¶ms=' + this._getParams(); - } - return null; - }, - showExportDialog: function (title, width, height) { - if (!expr.checkParams()) return; - var _appPath = window.appPath || this.appPath; - var url = (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'Setup?portal=' + expr.portal - + '¶ms=' + expr._getParams(); - - var dia = $JS.dialog.create2(title || '导出数据'); - dia.open(url, width || 400, height || 300); - }, - search: function (id) { - $('#' + id).datagrid({ url: expr.getDataUrl() }); - }, - reload: function (id) { - $('#' + id).datagrid('reload'); - }, - bindTotalView: function (id) { - if (!expr.checkParams()) return; - var _appPath = window.appPath || this.appPath; - var url = (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'Export/GetTotalView?portal=' + expr.portal - + '¶ms=' + expr._getParams(); - - $JS.xhr.post(url, {}, function (json) { - $JS.json.bind(id || 'totalView', json); - }); - } -}; diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_item.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_item.html deleted file mode 100644 index f284f9d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_item.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - 文本素材 - - - - -
                                              -
                                              -
                                              -
                                              - - -
                                              -
                                              *标题:
                                              -
                                              - -
                                              -
                                              - -
                                              -
                                              *图片:
                                              -
                                              - - - -
                                              -
                                              - -
                                              -
                                              *排序: -
                                              -
                                              - -
                                              -
                                              启用:
                                              -
                                              - - - - -
                                              -
                                              - -
                                              -
                                              备注:
                                              -
                                              -
                                              - -
                                              -
                                              -
                                              - -
                                              -
                                              *链接:
                                              -
                                              - -
                                              -
                                              - - - -
                                              -
                                              -
                                              - 保存 -
                                              -
                                              - - -
                                              -
                                              -
                                              - -
                                              - - - - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_itemlist.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_itemlist.html deleted file mode 100644 index 538d685..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_itemlist.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - 订单列表 - - - - - - - - - -
                                              -
                                              - - -
                                              - -
                                              - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_res.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_res.html deleted file mode 100644 index 945d7f2..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/article_res.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - 文本素材s - - - - -
                                              -
                                              -
                                              -
                                              - -
                                              -
                                              *素材Key:
                                              -
                                              - -
                                              -
                                              -
                                              -
                                              -
                                              - 保存 -
                                              -
                                              - - -
                                              -
                                              -
                                              - -
                                              - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/basic_setting.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/basic_setting.html deleted file mode 100644 index 4592d77..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/basic_setting.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - 修改配置 - - - - - -
                                              -
                                              基本
                                              - -
                                              -
                                              *开发者URL:
                                              -
                                              -
                                              - ${data.url} -
                                              - *拷贝此Url到微信后台 -
                                              -
                                              - -
                                              -
                                              *开发者Token:
                                              -
                                              - -
                                              -
                                              -
                                              -
                                              微信API设置
                                              -
                                              -
                                              *AppId:
                                              -
                                              - -
                                              -
                                              -
                                              -
                                              *AppSecret:
                                              -
                                              - -
                                              -
                                              - -
                                              -
                                              *消息解密
                                              AES KEY:
                                              -
                                              - -
                                              如果为明文模式,则不填写。
                                              -
                                              -
                                              - - -
                                              其他设置
                                              -
                                              -
                                              - *欢迎语: -
                                              -
                                              - -
                                              留空,则自动调用素材(key:welcome)。
                                              -
                                              -
                                              - - - -
                                              -
                                              - *默认自动回复消息: -
                                              -
                                              - -
                                              留空则不自动回复。
                                              -
                                              -
                                              - -
                                              -
                                              -
                                              - 保存 -
                                              -
                                              - - -
                                              - -
                                              -
                                              - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/export_import.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/export_import.html deleted file mode 100644 index 8487939..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/export_import.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - 导入数据 - - - - -
                                              - - - - - - - - - - - - - -
                                              上传数据文件: - - (*.xls文件) -
                                              - 上传文件 -
                                              -
                                              下载数据模板: - 点击这里下载 -
                                              - 导入 -
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/export_setup.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/export_setup.html deleted file mode 100644 index 83484e3..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/export_setup.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - 导出数据 - - - - - - ${export.setup} - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu.html deleted file mode 100644 index f04e57f..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - 所有栏目 - - - - -
                                              - - - - - -
                                              -
                                              - -
                                              -
                                              -
                                              -
                                              -
                                              -

                                              操作帮助

                                              -
                                              -
                                              - - 点击生效菜单 - -
                                              - 微信菜单隔天生效,或重新关注可立即生效。 -
                                              -
                                              -
                                              -
                                              -
                                              - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu_create.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu_create.html deleted file mode 100644 index 8b41b5c..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu_create.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - 更新栏目 - - - -
                                              -
                                              - - -
                                              - 添加菜单
                                              - -
                                              -
                                              *名称:
                                              -
                                              - -
                                              5字以内
                                              -
                                              -
                                              - - -
                                              -
                                              *类型:
                                              -
                                              - - -
                                              -
                                              - - - -
                                              -
                                              *资源:
                                              -
                                              - -
                                              - 可以用"res:素材名称"调用素材 -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - 保存 -
                                              -
                                              -
                                              - -
                                              - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu_edit.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu_edit.html deleted file mode 100644 index 1bc3511..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/menu_edit.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - 更新栏目 - - - -
                                              - -
                                              - - - -
                                              - 修改菜单
                                              - -
                                              -
                                              *名称:
                                              -
                                              - -
                                              5字以内
                                              -
                                              -
                                              - - -
                                              -
                                              *类型:
                                              -
                                              - - -
                                              -
                                              - - - -
                                              -
                                              *资源:
                                              -
                                              - -
                                              - 可以用"res:素材名称"调用素材 -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - 保存 -
                                              -
                                              - -
                                              - -
                                              - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/resource_list.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/resource_list.html deleted file mode 100644 index e62b049..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/resource_list.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - 订单列表 - - - - - - - - - -
                                              -
                                              - - -
                                              - -
                                              - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/resource_list2.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/resource_list2.html deleted file mode 100644 index 37f5fff..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/resource_list2.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - 文档列表 - - - - - -
                                              - - - - - -
                                              -
                                              -
                                              -
                                              - -
                                              -
                                              -
                                              - - - - - - - - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/text_res.html b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/text_res.html deleted file mode 100644 index ffc7689..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/mg/text_res.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - 文本素材s - - - - -
                                              -
                                              -
                                              -
                                              - -
                                              -
                                              *素材Key:
                                              -
                                              - -
                                              -
                                              -
                                              -
                                              *内容:
                                              -
                                              -
                                              - 建议:使用一键排版功能可以快速生成有格式的内容。

                                              - -
                                              -
                                              -
                                              - -
                                              -
                                              -
                                              - 保存 -
                                              -
                                              - - -
                                              -
                                              -
                                              - -
                                              - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/plugin.config b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/plugin.config deleted file mode 100644 index db26729..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/plugin.config +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/ArticleItemList.config b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/ArticleItemList.config deleted file mode 100644 index 7e2a32d..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/ArticleItemList.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/CaseGallery.config b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/CaseGallery.config deleted file mode 100644 index 55c2a22..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/CaseGallery.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/ResourceList.config b/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/ResourceList.config deleted file mode 100644 index c063ea1..0000000 --- a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin/query/ResourceList.config +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/com.mapfre.weixin/weixin.dll b/J6/src/examples/com.mapfre.weixin/weixin.dll deleted file mode 100644 index 626c4c5..0000000 Binary files a/J6/src/examples/com.mapfre.weixin/weixin.dll and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/Conf.cs b/J6/src/examples/com.plugin.helloworld/Conf.cs deleted file mode 100644 index 94d1b0c..0000000 --- a/J6/src/examples/com.plugin.helloworld/Conf.cs +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : Config.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using AtNet.DevFw.PluginKernel; -using Com.PluginKernel; - -namespace Com.Plugin -{ - /// - /// Description of Config. - /// - public class Conf - { - /// - /// 是否为开发模式 - /// - public static bool DebugMode=!true; - - internal static PluginPackAttribute PluginAttrs; - public static string DB_PREFIX=""; - - static Conf() - { - PluginAttrs = PluginUtil.GetAttribute
                                              (); - - //初始化配置 - - - //bool isChanged=false; - //if(!PackAttr.Settings.Contains("notify.workerindent")) - //{ - // PackAttr.Settings.Append("notify.workerindent",""); - // isChanged=true; - //} - - //if(!PackAttr.Settings.Contains("alipay.account")) - //{ - // PackAttr.Settings.Append("alipay.account",""); - // isChanged=true; - //} - - //if(!PackAttr.Settings.Contains("alipay.userkey")) - //{ - // PackAttr.Settings.Append("alipay.userkey",""); - // isChanged=true; - //} - - //if(!PackAttr.Settings.Contains("alipay.secret")) - //{ - // PackAttr.Settings.Append("alipay.secret",""); - // isChanged=true; - //} - - // if (isChanged) PluginAttrs.Settings.Flush(); - - } - - - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/DbGenerator.cs b/J6/src/examples/com.plugin.helloworld/Core/DbGenerator.cs deleted file mode 100644 index cded9d7..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/DbGenerator.cs +++ /dev/null @@ -1,34 +0,0 @@ -using AtNet.DevFw.Data; -using AtNet.DevFw.PluginKernel; - -namespace Com.Plugin.Core -{ - public class DbGenerator - { - private string _connString; - - internal DbGenerator() - { - } - - /// - /// 数据库访问对象 - /// - public DataBaseAccess New() - { - if (_connString == null) - { - _connString = Conf.PluginAttrs.Settings["db_conn"]; - if (_connString.Contains("$ROOT")) - { - string dir = PluginUtil.GetAttribute
                                              ().WorkSpace; - _connString = _connString.Replace("$ROOT", dir.Substring(0, dir.Length - 1)); - } - } - return new DataBaseAccess( - DataBaseType.SQLServer, - _connString - ); - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/Helper.cs b/J6/src/examples/com.plugin.helloworld/Core/Helper.cs deleted file mode 100644 index e6ac05f..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Helper.cs +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : Helper.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Data; -using System.Web; -using AtNet.DevFw.Framework.Extensions; -using Newtonsoft.Json; - -namespace Com.Plugin.Core -{ - internal class Helper - { - - - - public static void PagerJson(HttpResponse rsp,DataTable rows, string pager) - { - const string fmt = "{'pager':'%pager%','rows':%html%}"; - rsp.Write(fmt.Template( - pager.Replace("'", "\\'"), - JsonConvert.SerializeObject(rows) - )); - rsp.ContentType = "application/json"; - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/ILogic/IDataLogic.cs b/J6/src/examples/com.plugin.helloworld/Core/ILogic/IDataLogic.cs deleted file mode 100644 index fb5fe77..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/ILogic/IDataLogic.cs +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : IDataLogic.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Collections; -using System.Data; - -namespace Com.Plugin.Core.ILogic -{ - /// - /// Description of ICustomer. - /// - public interface IDataLogic - { - DataTable GetQueryView(string queryName, Hashtable hash, int pageSize, int currentPageIndex, out int totalCount); - - DataRow GetTotalView(string queryName, Hashtable hash); - - string GetColumnMappingString(string queryName); - - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/IocObject.cs b/J6/src/examples/com.plugin.helloworld/Core/IocObject.cs deleted file mode 100644 index 87a871d..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/IocObject.cs +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : IocObject.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using AtNet.DevFw.Data; -using Com.Plugin.Core.ILogic; -using Com.Plugin.Core.Logic; -using StructureMap; - -namespace Com.Plugin.Core -{ - /// - /// Description of LogicHelper. - /// - public class IocObject - { - static IocObject() - { - ObjectFactory.Configure(o => - { - o.For().Singleton().Use(new DbGenerator()); - o.For().Singleton().Use(); - } - ); - - Data = ObjectFactory.GetInstance(); - _dao = ObjectFactory.GetInstance(); - } - - - internal static readonly IDataLogic Data; - private static DbGenerator _dao; - - public static DataBaseAccess GetDao() - { - return _dao.New(); - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/Logic/DataLogic.cs b/J6/src/examples/com.plugin.helloworld/Core/Logic/DataLogic.cs deleted file mode 100644 index bd31926..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Logic/DataLogic.cs +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : DataLogic.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Text.RegularExpressions; -using Com.Plugin.Core.ILogic; -using Ops.Toolkit.Data.Export; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.IO; -using AtNet.DevFw.Data; -using AtNet.DevFw.Framework.Extensions; - -namespace Com.Plugin.Core.Logic -{ - internal class DataLogic : IDataLogic - { - private IDictionary configDict; - private readonly string _baseDirectory; - private static Regex reg = new Regex("(DROP|SELECT|DELETE|UPDATE)\\s",RegexOptions.IgnoreCase); - - public DataLogic() - { - this.configDict = new Dictionary(); - _baseDirectory = Conf.PluginAttrs.WorkSpace; - } - - private ExportItemConfig GetConfigByQueryName(string queryName) - { - if (!this.configDict.ContainsKey(queryName)) - { - string filePath = _baseDirectory + "query/" + queryName + ".config"; - - if (!File.Exists(filePath)) - { - throw new Exception("不包含查询:" + queryName); - } - ExportItemConfig cfg = ExportUtil.GetExportItemFormXml( - File.ReadAllText(filePath) - , null); - - this.configDict.Add(queryName, cfg); - } - return this.configDict[queryName]; - } - - public DataTable GetQueryView(string queryName, Hashtable hash, int pageSize, int currentPageIndex, - out int totalCount) - { - DataBaseAccess db = IocObject.GetDao(); - - string query = this.GetConfigByQueryName(queryName).Query; - string queryTotal = this.GetConfigByQueryName(queryName).Total; - - //添加分页参数 - if (hash != null) - { - foreach (DictionaryEntry o in hash) - { - if (reg.IsMatch(o.Value.ToString())) - { - throw new ArgumentException("含有不安全的查询!"); - } - - } - hash.Add("page_start", currentPageIndex<=0?0:(currentPageIndex - 1) * pageSize); - hash.Add("page_end", (currentPageIndex) * pageSize); - hash.Add("page_size", pageSize); - - - //格式化 - query = query.Template(hash); - // throw new Exception(query + "/" + currentPageIndex+"/"+pageSize); - if (!String.IsNullOrEmpty(queryTotal)) - { - queryTotal = queryTotal.Template(hash); - } - } - - - //获取分页结果 - DataTable dataTable = db.GetDataSet(query, hash).Tables[0]; - - //获取统计数据 - if (!String.IsNullOrEmpty(queryTotal)) - { - object data = db.ExecuteScalar(queryTotal, hash); - int.TryParse(data.ToString(), out totalCount); - } - else - { - totalCount = dataTable.Rows.Count; - } - - return dataTable; - } - - public string GetColumnMappingString(string queryName) - { - return this.GetConfigByQueryName(queryName).ColumnMappingString; - } - - public DataRow GetTotalView(string queryName, Hashtable hash) - { - throw new NotImplementedException(); - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/SqlFormat.cs b/J6/src/examples/com.plugin.helloworld/Core/SqlFormat.cs deleted file mode 100644 index f307a2c..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/SqlFormat.cs +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : SqlFormat.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using AtNet.DevFw.Data; - -namespace Com.Plugin.Core -{ - /// - /// Description of OrmMapping. - /// - internal class SqlFormat:ISqlFormat - { - public string Format(string source,params string[] objs) - { - source=source.Replace("$PREFIX_",Conf.DB_PREFIX); - if(objs.Length!=0){ - source=String.Format(source,objs); - } - return source; - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/Utils/DataExport.cs b/J6/src/examples/com.plugin.helloworld/Core/Utils/DataExport.cs deleted file mode 100644 index d677d98..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Utils/DataExport.cs +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : ExportItem.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Collections; -using System.Collections.Generic; -using System.Data; -using Ops.Toolkit.Data; -using Ops.Toolkit.Data.Export; - -namespace Com.Plugin.Core.Utils -{ - public class ExportItem:BaseDataExportPortal - { - public ExportItem(string queryName, DataColumnMapping[] columns):base(columns) - { - this.PortalKey = queryName; - } - - public override DataTable GetShemalAndData( Hashtable hash,out int totalCount) - { - return IocObject.Data.GetQueryView( - this.PortalKey, - hash, - hash.ContainsKey("pageSize") ? int.Parse(hash["pageSize"].ToString()) : 100000, - hash.ContainsKey("pageIndex") ? int.Parse(hash["pageIndex"].ToString()) : 1, out totalCount); - } - - public override DataRow GetTotalView(Hashtable hash) - { - return IocObject.Data.GetTotalView( - this.PortalKey, - hash); - } - - - public override sealed string PortalKey { get; set; } - } - - - public class ExportItemManager - { - private static readonly IDictionary exportPortals; - - static ExportItemManager() - { - exportPortals = new Dictionary(); - } - - public static IDataExportPortal GetPortal(string queryName) - { - if (!exportPortals.Keys.Contains(queryName)) - { - DataColumnMapping[] columns = - ExportUtil.GetColumnMappings(IocObject.Data.GetColumnMappingString(queryName)); - - exportPortals.Add(queryName,new ExportItem(queryName,columns)); - } - return exportPortals[queryName]; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/Core/Utils/ExcelExportProvider.cs b/J6/src/examples/com.plugin.helloworld/Core/Utils/ExcelExportProvider.cs deleted file mode 100644 index 66b4d6a..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Utils/ExcelExportProvider.cs +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : LocaledExcelExportProvider.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Collections.Generic; -using System.Data; -using System.IO; -using NPOI.HSSF.UserModel; -using NPOI.SS.UserModel; -using Ops.Toolkit.Data.Export; - -namespace Com.Plugin.Core.Utils -{ - public sealed class LocaledExcelExportProvider : IDataExportProvider - { - public byte[] Export(DataTable dt, IDictionary columns) - { - HSSFWorkbook wb = new HSSFWorkbook(); - MemoryStream ms = new MemoryStream(); - - ISheet sheet = wb.CreateSheet("Sheet1"); - - //填充表头 - IRow dataRow = sheet.CreateRow(0); - - bool isReColumn = !(columns == null || columns.Count == 0); - - int tmpInt = 0; - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - dataRow.CreateCell(tmpInt++).SetCellValue(columns[columnName]); - } - } - else - { - foreach (DataColumn column in dt.Columns) - { - dataRow.CreateCell(tmpInt++).SetCellValue(column.ColumnName); - } - } - - //填充内容 - for (int i = 0; i < dt.Rows.Count; i++) - { - dataRow = sheet.CreateRow(i + 1); - - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - dataRow.CreateCell(tmpInt++).SetCellValue(dt.Rows[i][columnName].ToString()); - } - } - else - { - for (int j = 0; j < dt.Columns.Count; j++) - { - dataRow.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString()); - } - } - } - - - wb.Write(ms); - //rsp.AddHeader("Content-Disposition", string.Format("attachment; filename=EmptyWorkbook.xls")); - //rsp.BinaryWrite(ms.ToArray()); - - wb = null; - ms.Close(); - byte[] bytes = ms.ToArray(); - ms.Dispose(); - - return bytes; - } - - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/Utils/ExportHandle.cs b/J6/src/examples/com.plugin.helloworld/Core/Utils/ExportHandle.cs deleted file mode 100644 index 9466e33..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Utils/ExportHandle.cs +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : LocaledExcelExportProvider.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Web; -using Newtonsoft.Json; -using Ops.Toolkit.Data.Export; -using Ops.Toolkit.Data.Export.ExportProvider; -using Ops.Toolkit.Data.Export.UI; - -namespace Com.Plugin.Core.Utils -{ - - public class ExportHandle - { - public static string Setup(string portal) - { - IDataExportPortal dp = ExportItemManager.GetPortal(portal); - return WebExportOptionUIBuilder.BuildColumnCheckHtml(dp); - } - - public static string GetExportData(HttpContext context) - { - IDataExportPortal portal = ExportItemManager.GetPortal(context.Request.QueryString["portal"]); - ExportParams parameter = DataExportDirector.GetExportParams( - context.Request["params"], null); - int pageIndex, pageSize; - - if (context.Request["page"] != null) - { - int.TryParse(context.Request["page"], out pageIndex); - parameter.Parameters.Add("pageIndex", pageIndex); - } - - if (context.Request["rows"] != null) - { - int.TryParse(context.Request["rows"], out pageSize); - parameter.Parameters.Add("pageSize", pageSize); - } - - int totalCount; - DataTable dt = portal.GetShemalAndData(parameter.Parameters, out totalCount); - return JsonConvert.SerializeObject(new { total = totalCount, rows = dt }); - } - - public static void ProcessExport(HttpContext context) - { - IList columnFields; - IDataExportProvider provider; - string extension; - string portal = context.Request["portal"]; - string columns = context.Request["columns"]; - - //获取导出提供者 - switch (context.Request["exportFormat"] ?? "excel") - { - default: - case "excel": - provider = new LocaledExcelExportProvider(); - extension = "xls"; - break; - case "csv": - provider = new CsvExportProvider(); - extension = "csv"; - break; - case "txt": - provider = new TextExportProvider(); - extension = "txt"; - break; - } - - - //获取列名 - // Regex reg = new Regex("^export_fields\\[\\d+\\]$", RegexOptions.IgnoreCase); - columnFields = new List(); - -// foreach (string key in context.Request.QueryString.Keys) -// { -// if (reg.IsMatch(key)) -// { -// columnFields.Add(context.Request.QueryString[key]); -// } -// } - - - IDataExportPortal _portal = ExportItemManager.GetPortal(context.Request.QueryString["portal"]); - if (_portal == null) throw new ArgumentNullException("_portal"); - - ExportParams parameter = DataExportDirector.GetExportParams(context.Request["params"], columnFields.ToArray()); - - - byte[] bytes = DataExportDirector.Export(_portal, parameter, provider); - - context.Response.BinaryWrite(bytes); - context.Response.ContentType = "application/octet-stream"; - context.Response.AppendHeader("Content-Disposition", String.Format("attachment;filename=\"{0:yyyyMMdd-hhssfff}.{1}\"", - DateTime.Now, - extension)); - - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Core/Utils/NPOIHelper.cs b/J6/src/examples/com.plugin.helloworld/Core/Utils/NPOIHelper.cs deleted file mode 100644 index 6ed7442..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Utils/NPOIHelper.cs +++ /dev/null @@ -1,298 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : NPOIHelper.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Data; -using System.IO; -using System.Web; -using NPOI.HSSF.UserModel; -using NPOI.SS.UserModel; - -namespace Com.Plugin.Core.Utils -{ - public class NPOIHelper - { - private static int ExcelMaxRow = 65535; - - /// - /// 由DataSet导出Excel - /// - /// 要导出数据的DataTable - /// 工作表名称 - /// Excel工作表 - private static Stream ExportDataSetToExcel(DataSet sourceDs) - { - HSSFWorkbook workbook = new HSSFWorkbook(); - MemoryStream ms = new MemoryStream(); - - for (int i = 0; i < sourceDs.Tables.Count; i++) - { - HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(sourceDs.Tables[i].TableName); - HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); - // handling header. - foreach (DataColumn column in sourceDs.Tables[i].Columns) - headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); - // handling value. - int rowIndex = 1; - foreach (DataRow row in sourceDs.Tables[i].Rows) - { - HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); - foreach (DataColumn column in sourceDs.Tables[i].Columns) - { - dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); - } - rowIndex++; - } - } - workbook.Write(ms); - ms.Flush(); - ms.Position = 0; - workbook = null; - return ms; - } - - /// - /// 由DataSet导出Excel - /// - /// 要导出数据的DataTable - /// 指定Excel工作表名称 - /// Excel工作表 - public static void ExportDataSetToExcel(DataSet sourceDs, string fileName) - { - //检查是否有Table数量超过65325 - for (int t = 0; t < sourceDs.Tables.Count; t++) - { - if (sourceDs.Tables[t].Rows.Count > ExcelMaxRow) - { - DataSet ds = GetdtGroup(sourceDs.Tables[t].Copy()); - sourceDs.Tables.RemoveAt(t); - //将得到的ds插入 sourceDs中 - for (int g = 0; g < ds.Tables.Count; g++) - { - DataTable dt = ds.Tables[g].Copy(); - sourceDs.Tables.Add(dt); - } - t--; - } - } - - MemoryStream ms = ExportDataSetToExcel(sourceDs) as MemoryStream; - HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); - HttpContext.Current.Response.BinaryWrite(ms.ToArray()); - HttpContext.Current.ApplicationInstance.CompleteRequest(); - //HttpContext.Current.Response.End(); - ms.Close(); - ms = null; - } - - /// - /// 由DataTable导出Excel - /// - /// 要导出数据的DataTable - /// Excel工作表 - private static Stream ExportDataTableToExcel(DataTable sourceTable) - { - HSSFWorkbook workbook = new HSSFWorkbook(); - MemoryStream ms = new MemoryStream(); - HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(sourceTable.TableName); - HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); - // handling header. - foreach (DataColumn column in sourceTable.Columns) - headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); - // handling value. - int rowIndex = 1; - foreach (DataRow row in sourceTable.Rows) - { - HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); - foreach (DataColumn column in sourceTable.Columns) - { - dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); - } - rowIndex++; - } - workbook.Write(ms); - ms.Flush(); - ms.Position = 0; - sheet = null; - headerRow = null; - workbook = null; - return ms; - } - - /// - /// 由DataTable导出Excel - /// - /// 要导出数据的DataTable - /// 指定Excel工作表名称 - /// Excel工作表 - public static void ExportDataTableToExcel(DataTable sourceTable, string fileName) - { - //如数据超过65325则分成多个Table导出 - if (sourceTable.Rows.Count > ExcelMaxRow) - { - DataSet ds = GetdtGroup(sourceTable); - //导出DataSet - ExportDataSetToExcel(ds, fileName); - } - else - { - MemoryStream ms = ExportDataTableToExcel(sourceTable) as MemoryStream; - HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); - HttpContext.Current.Response.BinaryWrite(ms.ToArray()); - HttpContext.Current.ApplicationInstance.CompleteRequest(); - //HttpContext.Current.Response.End(); - ms.Close(); - ms = null; - } - } - - /// - /// 传入行数超过65325的Table,返回DataSet - /// - /// - /// - public static DataSet GetdtGroup(DataTable dt) - { - string tablename = dt.TableName; - - DataSet ds = new DataSet(); - ds.Tables.Add(dt); - - double n = dt.Rows.Count / Convert.ToDouble(ExcelMaxRow); - - //创建表 - for (int i = 1; i < n; i++) - { - DataTable dtAdd = dt.Clone(); - dtAdd.TableName = tablename + "_" + i.ToString(); - ds.Tables.Add(dtAdd); - } - - //分解数据 - for (int i = 1; i < ds.Tables.Count; i++) - { - //新表行数达到最大 或 基表数量不足 - while (ds.Tables[i].Rows.Count != ExcelMaxRow && ds.Tables[0].Rows.Count != ExcelMaxRow) - { - ds.Tables[i].Rows.Add(ds.Tables[0].Rows[ExcelMaxRow].ItemArray); - ds.Tables[0].Rows.RemoveAt(ExcelMaxRow); - - } - } - - return ds; - } - - /// - /// 由DataTable导出Excel - /// - /// 要导出数据的DataTable - /// 指定Excel工作表名称 - /// Excel工作表 - public static void ExportDataTableToExcelModel(DataTable sourceTable, string modelpath, string modelName, - string fileName, string sheetName) - { - int rowIndex = 2; //从第二行开始,因为前两行是模板里面的内容 - int colIndex = 0; - FileStream file = new FileStream(modelpath + modelName + ".xls", FileMode.Open, FileAccess.Read); - //读入excel模板 - HSSFWorkbook hssfworkbook = new HSSFWorkbook(file); - HSSFSheet sheet1 = (HSSFSheet)hssfworkbook.GetSheet("Sheet1"); - sheet1.GetRow(0).GetCell(0).SetCellValue("excelTitle"); //设置表头 - foreach (DataRow row in sourceTable.Rows) - { - //双循环写入sourceTable中的数据 - rowIndex++; - colIndex = 0; - HSSFRow xlsrow = (HSSFRow)sheet1.CreateRow(rowIndex); - foreach (DataColumn col in sourceTable.Columns) - { - xlsrow.CreateCell(colIndex).SetCellValue(row[col.ColumnName].ToString()); - colIndex++; - } - } - sheet1.ForceFormulaRecalculation = true; - FileStream fileS = new FileStream(modelpath + fileName + ".xls", FileMode.Create); //保存 - hssfworkbook.Write(fileS); - fileS.Close(); - file.Close(); - } - - - public static DataSet ImportFromExcel(string excelPath) - { - DataSet ds = new DataSet(); - using (FileStream file = new FileStream(excelPath, FileMode.Open, FileAccess.Read)) - { - HSSFWorkbook hssfworkbook = new HSSFWorkbook(file); - - ISheet sheet = hssfworkbook.GetSheetAt(0); - ds.Tables.Add(GetDataTableFromSheet(sheet)); - } - return ds; - } - - private static DataTable GetDataTableFromSheet(ISheet sheet) - { - System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); - - DataTable dt = new DataTable(); - - int rowIndex = 0; - string columnName = null; - while (rows.MoveNext()) - { - IRow row = (IRow)rows.Current; - //添加列 - if (rowIndex++ == 0) - { - for (int i = 0; i < row.LastCellNum; i++) - { - ICell cell = row.GetCell(i); - if (cell == null) - { - columnName = "C" + i.ToString(); - } - - else - { - columnName = cell.ToString(); - } - dt.Columns.Add(columnName); - } - } - else - { - //添加行 - DataRow dr = dt.NewRow(); - for (int i = 0; i < row.LastCellNum; i++) - { - ICell cell = row.GetCell(i); - - if (cell == null) - { - dr[i] = null; - } - - else - { - dr[i] = cell.ToString(); - } - } - - dt.Rows.Add(dr); - } - } - - return dt; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/Core/Utils/VerifyCodeManager.cs b/J6/src/examples/com.plugin.helloworld/Core/Utils/VerifyCodeManager.cs deleted file mode 100644 index a141695..0000000 --- a/J6/src/examples/com.plugin.helloworld/Core/Utils/VerifyCodeManager.cs +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : VerifyCodeManager.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System; -using System.Web; - -namespace Com.Plugin.Core.Utils -{ - /// - /// 验证码管理器 - /// - internal static class VerifyCodeManager - { - /// - /// 添加词语 - /// - /// - public static void AddWord(string word) - { - if (word != null) - { - HttpContext.Current.Session["$manager.login.verifycode"] = word; - } - } - - /// - /// 比较验证码 - /// - /// - /// - public static bool Compare(string inputWord) - { - var sess = HttpContext.Current.Session["$manager.login.verifycode"]; - if (sess != null) - { - return String.Compare(inputWord, sess.ToString(), true) == 0; - } - return true; - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Main.cs b/J6/src/examples/com.plugin.helloworld/Main.cs deleted file mode 100644 index e93e83c..0000000 --- a/J6/src/examples/com.plugin.helloworld/Main.cs +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : Main.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ -using System; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Web.Plugins; - -namespace Com.Plugin -{ - /// - /// Description of Main. - /// - public class Main:IPlugin - { - private PluginPackAttribute _attr; - - public PluginConnectionResult Connect(IPluginHost app) - { - IExtendApp _app = app as IExtendApp; - if(_app!=null) - { - RequestProxry req=new RequestProxry(_app); - _app.Register(this,req.HandleGet,req.HandlePost); - // Cms.Plugins.MapExtendPluginRoute(this); - } - - return PluginConnectionResult.Success; - } - - public bool Install() - { - return true; - } - - public bool Uninstall() - { - return true; - } - - public void Run() - { - - } - - public void Pause() - { - } - - public string GetMessage() - { - return ""; - } - - public object Call(string method, params object[] parameters) - { - throw new NotImplementedException(); - } - public void Logln(string line) - { - Logger.Println("[WeiXin]:" + line); - } - - - public PluginPackAttribute GetAttribute() - { - return this._attr ?? (this._attr = PluginUtil.GetAttribute(this)); - } - } -} diff --git a/J6/src/examples/com.plugin.helloworld/Properties/AssemblyInfo.cs b/J6/src/examples/com.plugin.helloworld/Properties/AssemblyInfo.cs deleted file mode 100644 index bef6622..0000000 --- a/J6/src/examples/com.plugin.helloworld/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using AtNet.DevFw.PluginKernel; -using Com.PluginKernel; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("OPS.CMS!NET-插件")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("OPS Inc")] -[assembly: AssemblyProduct("OPS.CMS!NET-插件")] -[assembly: AssemblyCopyright("Copyright © ops 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("b7be3f8d-90ff-44d7-a32a-00cd3581c102")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.*")] - -[assembly:PluginPack( - - //工作标识,将会在plugins下生成同名的目录,用于存放插件资源 - "com.plugin.helloworld", - - //插件图标,可为空 - Icon = "icon.png", - - //插件名称 - Name = "Hello World!", - - //插件开发者 - Author = "ops", - - //插件访问入口 - PortalUrl = "/com.plugin.helloworld.sh.aspx", - - //插件设置地址 - ConfigUrl = "", - - //插件描述 - Description = "Hello world!" - -)] diff --git a/J6/src/examples/com.plugin.helloworld/README.md b/J6/src/examples/com.plugin.helloworld/README.md deleted file mode 100644 index 2dd3668..0000000 --- a/J6/src/examples/com.plugin.helloworld/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 插件开发指南 Ops.Cms Plugin Development Guide # -## 插件的扩展名 ## - 插件是一个.dll(或.so)为扩展名的类库。建议使用.so作为插件的后缀, - ASP.NET下.so插件放在bin目录下,可以自动加载。 - -## 如何编译为.so格式 ## - VS项目属性=》生成事件=》后期生成事件中输入下面命令,编译后可以自动得到.so文件。 - move $(TargetPath) $(SolutionDir)$(OutDir)$(TargetName).so - -## 如何加载插件 ## - 编写插件后,编译项目,将编译生成的.dll文件拷贝到网站的plugins目录下, - 重新启动可加载插件。 - -## 自动生成并加载插件 ## - 此操作需要将插件的后缀设置为.so.同样可以定义编译事件,将插件拷贝到网站的bin目录下即可。 \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/RequestHandle.cs b/J6/src/examples/com.plugin.helloworld/RequestHandle.cs deleted file mode 100644 index 75645ec..0000000 --- a/J6/src/examples/com.plugin.helloworld/RequestHandle.cs +++ /dev/null @@ -1,288 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : RequestHandle.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ -using System; -using System.Data; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Text.RegularExpressions; -using System.Web; -using AtNet.DevFw; -using AtNet.DevFw.Data; -using AtNet.DevFw.Framework.Extensions; -using AtNet.DevFw.Framework.Graphic; -using AtNet.DevFw.Framework.Web.UI; -using AtNet.DevFw.Template; -using AtNet.DevFw.Web.Plugins; -using Com.Plugin.Core; -using Com.Plugin.Core.Utils; - -namespace Com.Plugin -{ - /// - /// Description of MobileActions. - /// - public partial class RequestHandle - { - - private string workSpace; - private int imgWidth; - private int imgHeight; - private string waterPath; - private long quality = 90L; - private long compress = 50L; - private IExtendApp _app; - - internal RequestHandle(IExtendApp app) - { - this._app = app; - // workSpace = Config.PluginAttrs.WorkSpace; - // log = new LogFile(workSpace + "log.txt"); - // - // imgWidth = int.Parse(Config.PluginAttrs.Settings["img.width"]); - // imgHeight = int.Parse(Config.PluginAttrs.Settings["img.height"]); - // - // if (Config.PluginAttrs.Settings.Contains("quality")) - // { - // quality = long.Parse(Config.PluginAttrs.Settings["quality"]); - // } - // - // if (Config.PluginAttrs.Settings.Contains("compress")) - // { - // compress = long.Parse(Config.PluginAttrs.Settings["compress"]); - // } - // - // - // float waterMarkPercent = float.Parse(Config.PluginAttrs.Settings["img.water.percent"]); - // if (waterMarkPercent == 0F) waterMarkPercent = 1; - // - // waterPath = workSpace + "watermark_resize.png"; - // Image srcImg = new Bitmap(workSpace + "watermark.png"); - // byte[] data = GraphicsHelper.DrawBySize(srcImg, - // ImageSizeMode.SuitWidth, - // (int)(srcImg.Width * waterMarkPercent), - // (int)(srcImg.Height * waterMarkPercent), - // ImageFormat.Png, - // 100L, - // 100L, - // null); - // - // using (FileStream fs = new FileStream(waterPath, FileMode.OpenOrCreate, FileAccess.Write)) - // { - // fs.Write(data, 0, data.Length); - // fs.Flush(); - // fs.Dispose(); - // } - // - // srcImg.Dispose(); - } - - - /// - /// 首页 - /// - /// - public string Default(HttpContext context) - { - return "Hello world! it's call from a plugin."; - } - - public void Download(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return; - - string url = context.Request["url"]; - string filePath = AppDomain.CurrentDomain.BaseDirectory + url; - if (!File.Exists(filePath)) - { - context.Response.Write("资源不存在"); - return; - } - - string fileName = Regex.Match(url, "(\\\\|/)(([^\\\\/]+)\\.(.+))$").Groups[2].Value; - context.Response.AppendHeader("Content-Type", ""); - context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); - - const int bufferSize = 100; - byte[] buffer = new byte[bufferSize]; - int readSize = -1; - - using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) - { - while (readSize != 0) - { - readSize = fs.Read(buffer, 0, bufferSize); - context.Response.BinaryWrite(buffer); - } - } - } - - - /// - /// 上传文件 - /// - /// - /// - public string Upload_post(HttpContext context) - { - string uploadfor = context.Request["for"]; - string id = context.Request["upload.id"]; - DateTime dt = DateTime.Now; - string dir = string.Format("/images/{0:yyyyMMdd}/", dt); - string name = String.Format("{0}{1:HHss}{2}", - String.IsNullOrEmpty(uploadfor) ? "" : uploadfor + "_", - dt, String.Empty.RandomLetters(4)); - - string file = new FileUpload(dir, name).Upload(); - if (uploadfor == "image") - { - string rootPath = FwCtx.PhysicalPath; - - - Bitmap img = new Bitmap(rootPath + file); - int width, height; - if (img.Width > img.Height) - { - width = imgWidth; - height = imgHeight; - } - else - { - width = imgHeight; - height = imgWidth; - } - - byte[] data = GraphicsHelper.DrawBySize(img, ImageSizeMode.CustomSize, width, height, ImageFormat.Png, 100L, 80L, null); - img.Dispose(); - MemoryStream ms1 = new MemoryStream(data); - img = new Bitmap(ms1); - - Image water = new Bitmap(waterPath); - - data = GraphicsHelper.MakeWatermarkImage( - img, - water, - WatermarkPosition.Middle - ); - - ms1.Dispose(); - img.Dispose(); - - FileStream fs = File.OpenWrite(rootPath + file); - BinaryWriter w = new BinaryWriter(fs); - w.Write(data); - w.Flush(); - fs.Dispose(); - } - - return "{" + String.Format("url:'{0}'", file) + "}"; - } - - /// - /// 验证码 - /// - /// - public void VerifyCode(HttpContext context) - { - string word = null; - VerifyCode v = new VerifyCode(); - var font = v.GetDefaultFont(); - try - { - font = new System.Drawing.Font(font.FontFamily, 16); - v.AllowRepeat = false; - context.Response.BinaryWrite(v.GraphicDrawImage(4, - VerifyWordOptions.Number, - !true, - font, - 30, - out word)); - } - catch - { - if (font != null) - { - font.Dispose(); - } - } - context.Response.ContentType = "Image/Jpeg"; - VerifyCodeManager.AddWord(word); - } - - /// - /// 导出 - /// - /// - /// - public string Export_Setup(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return null; - - TemplatePage page =this._app.GetPage
                                              ("admin/export_setup.html"); - //page.AddVariable("page", new PageVariable()); - page.AddVariable("export", new { setup = ExportHandle.Setup(context.Request["portal"]) }); - return page.ToString(); - } - - /// - /// 导出数据源 - /// - /// - /// - public string Export_GetExportData_Post(HttpContext context) - { - return ExportHandle.GetExportData(context); - } - - public void Export_ProcessExport(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return; - ExportHandle.ProcessExport(context); - } - - public string Export_Import(HttpContext context) - { - if (!RequestProxry.VerifyLogin(context)) return null; - - TemplatePage page = Cms.Plugins.GetPage
                                              ("admin/export_import.html"); - page.AddVariable("page", new PageVariable()); - page.AddVariable("case", new { json = new object() }); - return page.ToString(); - } - - public string Export_Import_post(HttpContext context) - { - // try - // { - FileInfo file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + context.Request["file"]); - DataTable dt = NPOIHelper.ImportFromExcel(file.FullName).Tables[0]; - //DataView dv = dt.DefaultView; - //dv.Sort = "财务编号 ASC"; - SqlQuery[] querys = new SqlQuery[dt.Rows.Count]; - int i = 0; - DateTime importTime = DateTime.Now; - foreach (DataRow dr in dt.Rows) - { - const string insertSql = @" "; - } - - int rows = IocObject.GetDao().ExecuteNonQuery(querys); - if (rows < 0) rows = 0; - return "{result:true,message:'导入完成,共导入" + rows.ToString() + "条!'}"; - /* } - catch (Exception exc) - { - return "{result:false,message:'"+exc.Message+"!'}"; - }*/ - } - } - -} diff --git a/J6/src/examples/com.plugin.helloworld/RequestProxry.cs b/J6/src/examples/com.plugin.helloworld/RequestProxry.cs deleted file mode 100644 index 35f508d..0000000 --- a/J6/src/examples/com.plugin.helloworld/RequestProxry.cs +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : RequestProxry.cs - * author : newmin (new.min@msn.com) - * date : 2012/12/01 23:00:00 - * description : - * history : - */ - -using System.Web; -using AtNet.DevFw.Web.Plugins; - -namespace Com.Plugin -{ - /// - /// Description of HandleRequest. - /// - public class RequestProxry - { - private readonly IExtendApp _app; - private readonly RequestHandle _handler; - public RequestProxry(IExtendApp app) - { - this._app = app; - this._handler = new RequestHandle(app); - } - - public static bool VerifyLogin(HttpContext context) - { - bool result = UserState.Administrator.HasLogin; - if (!result) - { - context.Response.Write(""); - } - return result; - } - - public void HandleGet(HttpContext context, ref bool handled) - { - if (this._app.HanleRequestUse(_handler, context, false)) - { - handled = true; - } - } - - public void HandlePost(HttpContext context, ref bool handled) - { - if (this._app.HanleRequestUse(_handler, context, true)) - { - handled = true; - } - } - - } -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/admin/case_gallery.html b/J6/src/examples/com.plugin.helloworld/cir/admin/case_gallery.html deleted file mode 100644 index 7021e9c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/admin/case_gallery.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - 图片列表 - - - - - - - - - -
                                              -
                                              - - -
                                              - -
                                              - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/admin/case_list.html b/J6/src/examples/com.plugin.helloworld/cir/admin/case_list.html deleted file mode 100644 index a524cb7..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/admin/case_list.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - 订单列表 - - - - - - - - - -
                                              -
                                              - - -
                                              - -
                                              - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/admin/export_import.html b/J6/src/examples/com.plugin.helloworld/cir/admin/export_import.html deleted file mode 100644 index 8487939..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/admin/export_import.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - 导入数据 - - - - -
                                              - - - - - - - - - - - - - -
                                              上传数据文件: - - (*.xls文件) -
                                              - 上传文件 -
                                              -
                                              下载数据模板: - 点击这里下载 -
                                              - 导入 -
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/admin/export_setup.html b/J6/src/examples/com.plugin.helloworld/cir/admin/export_setup.html deleted file mode 100644 index 83484e3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/admin/export_setup.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - 导出数据 - - - - - - ${export.setup} - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/admin/index.html b/J6/src/examples/com.plugin.helloworld/cir/admin/index.html deleted file mode 100644 index 05d7504..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/admin/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - 管理端 - - - - - - - -
                                              -
                                              -
                                              - - -
                                              - -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/admin/save_case.html b/J6/src/examples/com.plugin.helloworld/cir/admin/save_case.html deleted file mode 100644 index 05d7504..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/admin/save_case.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - 管理端 - - - - - - - -
                                              -
                                              -
                                              - - -
                                              - -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/btn.png b/J6/src/examples/com.plugin.helloworld/cir/css/btn.png deleted file mode 100644 index 2326588..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/css/btn.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/css.css b/J6/src/examples/com.plugin.helloworld/cir/css/css.css deleted file mode 100644 index 8073c26..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/css/css.css +++ /dev/null @@ -1,18 +0,0 @@ -.page-header{ background: url(top_bg.gif) repeat-x;height: 230px;} -.page-header .cent{ width: 900px;margin: 0 auto;position: relative;} -.page-header .cent .l1{ width: 603px;height: 141px;position: absolute;left: 0;top: 47px;background: url(header_l1.gif) no-repeat;} -.page-header .cent .l2{ width: 284px;height: 184px;position: absolute;right: 10px;top: 47px;background: url(header_l2.gif) no-repeat;} -.container{ width: 900px;margin: 10px auto;overflow: hidden;} -.clearfix{ clear: both;} - -.partner_ctrl{ float: left;width: 280px;margin-right: 560px;background: #f0f0f0;border:solid 2px #666} -.main{width: 580px; float: right;margin-left: -590px;border-top: solid 5px #ddd; - border-bottom: solid 5px #f0f0f0; - overflow: hidden;padding: 10px 0;} - -/*.partner_ctrl,.main{ padding-bottom: 1000px;margin-bottom: -1000px;}*/ - -div.form table{ margin: 10px 20px;line-height: 40px;} -.tipbox{padding: 30px 0;background: url(tip.png) 80px 50px no-repeat;height: 100px; - line-height: 100px;font-size: 14px;padding-left: 180px;color:#666;font-weight: bold;} - diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/css_mobile.css b/J6/src/examples/com.plugin.helloworld/cir/css/css_mobile.css deleted file mode 100644 index c09f6ab..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/css/css_mobile.css +++ /dev/null @@ -1,23 +0,0 @@ -/*.page-header{ background: url(top_bg.gif) repeat-x;height: 230px;} -.page-header .cent{margin: 0 auto;position: relative;} - -.page-header .cent .l1{ width: 603px;height: 141px;position: absolute;left: 0;top: 47px;background: url(header_l1.gif) no-repeat;} -.page-header .cent .l2{ width: 284px;height: 184px;position: absolute;right: 10px;top: 47px;background: url(header_l2.gif) no-repeat;} -*/ -body{ margin: 0;} -html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -.container{margin: 0px auto;overflow: hidden;} -.clearfix{ clear: both;} -.hidden{ display: none;} - -.partner_ctrl{ background: #ddd;border:solid 0px #333} -.main{border-top: solid 5px #ddd;border-bottom: solid 5px #f0f0f0;overflow: hidden;padding: 10px 0;} - -/*.partner_ctrl,.main{ padding-bottom: 1000px;margin-bottom: -1000px;}*/ - -div.form table{ margin: 10px 20px;line-height: 40px;} -.tipbox{padding: 30px 0;background: url(tip.png) 80px 50px no-repeat;height: 100px; - line-height: 100px;font-size: 14px;padding-left: 180px;color:#666;font-weight: bold;} - -ul - diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/header_l1.gif b/J6/src/examples/com.plugin.helloworld/cir/css/header_l1.gif deleted file mode 100644 index 6b9d4aa..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/css/header_l1.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/header_l2.gif b/J6/src/examples/com.plugin.helloworld/cir/css/header_l2.gif deleted file mode 100644 index f59bc86..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/css/header_l2.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/header_mobile.gif b/J6/src/examples/com.plugin.helloworld/cir/css/header_mobile.gif deleted file mode 100644 index 42b88cc..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/css/header_mobile.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/tip.png b/J6/src/examples/com.plugin.helloworld/cir/css/tip.png deleted file mode 100644 index 936ae4a..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/css/tip.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/css/top_bg.gif b/J6/src/examples/com.plugin.helloworld/cir/css/top_bg.gif deleted file mode 100644 index 5c8cee6..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/css/top_bg.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/db/cir.db b/J6/src/examples/com.plugin.helloworld/cir/db/cir.db deleted file mode 100644 index 2bd3263..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/db/cir.db and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/DatePicker.htm b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/DatePicker.htm deleted file mode 100644 index 3684f77..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/DatePicker.htm +++ /dev/null @@ -1,49 +0,0 @@ - - - -DatePicker - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/WdatePicker.js b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/WdatePicker.js deleted file mode 100644 index ea96731..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/WdatePicker.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * My97 DatePicker 4.5 - * SITE: http://dp.my97.net - * BLOG: http://my97.cnblogs.com - * MAIL: smallcarrot@163.com - */ -var $dp,WdatePicker;(function(){var _={ -$wdate:true, -$dpPath:"", -$crossFrame:false, -position:{}, -lang:"auto", -skin:"default", -dateFmt:"yyyy-MM-dd", -realDateFmt:"yyyy-MM-dd", -realTimeFmt:"HH:mm:ss", -realFullFmt:"%Date %Time", -minDate:"1900-01-01 00:00:00", -maxDate:"2099-12-31 23:59:59", -startDate:"", -alwaysUseStartDate:false, -yearOffset:1911, -isShowWeek:false, -highLineWeekDay:true, -isShowClear:true, -isShowToday:true, -isShowOthers:true, -readOnly:false, -errDealMode:0, -autoPickDate:null, -qsEnabled:true, - -specialDates:null,specialDays:null,disabledDates:null,disabledDays:null,opposite:false,onpicking:null,onpicked:null,onclearing:null,oncleared:null,eCont:null,vel:null,errMsg:"",quickSel:[],has:{}};WdatePicker=U;var X=window,O="document",J="documentElement",C="getElementsByTagName",V,A,T,I,b;switch(navigator.appName){case"Microsoft Internet Explorer":T=true;break;case"Opera":b=true;break;default:I=true;break}A=L();if(_.$wdate)M(A+"skin/WdatePicker.css");V=X;if(_.$crossFrame){try{while(V.parent[O]!=V[O]&&V.parent[O][C]("frameset").length==0)V=V.parent}catch(P){}}if(!V.$dp)V.$dp={ff:I,ie:T,opera:b,el:null,win:X,status:0,defMinDate:_.minDate,defMaxDate:_.maxDate,flatCfgs:[]};$dp=V.$dp;if($dp.status==0)Z(X,function(){U(null,true)});if(!X[O].docMD){E(X[O],"onmousedown",D);X[O].docMD=true}if(!V[O].docMD){E(V[O],"onmousedown",D);V[O].docMD=true}E(X,"onunload",function(){if($dp.dd)Q($dp.dd,"none")});function B(){V.$dp=V.$dp||{};obj={$:function($){return(typeof $=="string")?this.win[O].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=""){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var A in $){if(this.dt[A]===undefined)this.errMsg="invalid property:"+A;this.dt[A]+=$[A]}if(this.dt.refresh())return this.dt}return""},show:function(){Q(this.dd,"block")},hide:function(){Q(this.dd,"none")},attachEvent:E};for(var $ in obj)V.$dp[$]=obj[$];$dp=V.$dp}function E(A,$,_){if(T)A.attachEvent($,_);else{var B=$.replace(/on/,"");_._ieEmuEventHandler=function($){return _($)};A.addEventListener(B,_._ieEmuEventHandler,false)}}function L(){var _,A,$=document.getElementsByTagName("script");for(var B=0;B<$.length;B++){_=$[B].src.substring(0,$[B].src.toLowerCase().indexOf("wdatepicker.js"));A=_.lastIndexOf("/");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function F(F){var E,C;if(F.substring(0,1)!="/"&&F.indexOf("://")==-1){E=V.location.href;C=location.href;if(E.indexOf("?")>-1)E=E.substring(0,E.indexOf("?"));if(C.indexOf("?")>-1)C=C.substring(0,C.indexOf("?"));var $="",D="",A="",H,G,B="";for(H=0;H_.scrollLeft||A.scrollLeft>_.scrollLeft))?A:_;return{"top":B.scrollTop,"left":B.scrollLeft}}function D($){src=$?($.srcElement||$.target):null;if($dp&&$dp.cal&&!$dp.eCont&&$dp.dd&&Q($dp.dd)=="block"&&src!=$dp.el)$dp.cal.close()}function Y(){$dp.status=2;H()}function H(){if($dp.flatCfgs.length>0){var $=$dp.flatCfgs.shift();$.el={innerHTML:""};$.autoPickDate=true;$.qsEnabled=false;K($)}}var R,$;function U(E,_){B();$dp.win=X;E=E||{};if(_){if(!D()){$=$||setInterval(function(){if(V[O].readyState=="complete")clearInterval($);U(null,true)},50);return}if($dp.status==0){$dp.status=1;K({el:{innerHTML:""}},true)}else return}else if(E.eCont){E.eCont=$dp.$(E.eCont);$dp.flatCfgs.push(E);if($dp.status==2)H()}else{if($dp.status==0)$dp.status=1;if($dp.status!=2)return;var C=A();if(C){$dp.srcEl=C.srcElement||C.target;C.cancelBubble=true}E.el=$dp.$(E.el||$dp.srcEl);if(!E.el||E.el&&E.el.disabled||(E.el==$dp.el&&Q($dp.dd)!="none"&&$dp.dd.style.left!="-1970px"))return;K(E)}function D(){if(T&&V!=X&&V[O].readyState!="complete")return false;return true}function A(){if(I){func=A.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}return null}return event}}function S(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function Q(_,$){if(_)if($!=null)_.style.display=$;else return S(_,"display")}function K(E,$){for(var D in _)if(D.substring(0,1)!="$")$dp[D]=_[D];for(D in E)if($dp[D]===undefined)$dp.errMsg="invalid property:"+D;else $dp[D]=E[D];$dp.elProp=$dp.el&&$dp.el.nodeName=="INPUT"?"value":"innerHTML";if($dp.el[$dp.elProp]==null)return;if($dp.lang=="auto")$dp.lang=T?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!$dp.dd||$dp.eCont||($dp.lang&&$dp.realLang&&$dp.realLang.name!=$dp.lang&&$dp.getLangIndex&&$dp.getLangIndex($dp.lang)>=0)){if($dp.dd&&!$dp.eCont)V[O].body.removeChild($dp.dd);if(_.$dpPath=="")F(A);var B="";if($dp.eCont){$dp.eCont.innerHTML=B;Z($dp.eCont.childNodes[0],Y)}else{$dp.dd=V[O].createElement("DIV");$dp.dd.style.cssText="position:absolute;z-index:19700";$dp.dd.innerHTML=B;V[O].body.appendChild($dp.dd);Z($dp.dd.childNodes[0],Y);if($)$dp.dd.style.left=$dp.dd.style.top="-1970px";else{$dp.show();C()}}}else if($dp.cal){$dp.show();$dp.cal.init();if(!$dp.eCont)C()}function C(){var F=$dp.position.left,B=$dp.position.top,C=$dp.el;if(C!=$dp.srcEl&&(Q(C)=="none"||C.type=="hidden"))C=$dp.srcEl;var H=W(C),$=G(X),D=N(V),A=a(V),E=$dp.dd.offsetHeight,_=$dp.dd.offsetWidth;if(isNaN(B)){if(B=="above"||(B!="under"&&(($.topM+H.bottom+E>D.height)&&($.topM+H.top-E>0))))B=A.top+$.topM+H.top-E-3;else B=A.top+$.topM+H.bottom;B+=T?-1:1}else B+=A.top+$.topM;if(isNaN(F))F=A.left+Math.min($.leftM+H.left,D.width-_-5)-(T?2:0);else F+=A.left+$.leftM;$dp.dd.style.top=B+"px";$dp.dd.style.left=F+"px"}}})() diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/calendar.js b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/calendar.js deleted file mode 100644 index cb6db60..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/calendar.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * My97 DatePicker 4.5 - * SITE: http://dp.my97.net - * BLOG: http://my97.cnblogs.com - * MAIL: smallcarrot@163.com - */ -var $c;if($FF){Event.prototype.__defineSetter__("returnValue",function($){if(!$)this.preventDefault();return $});Event.prototype.__defineGetter__("srcElement",function(){var $=this.target;while($.nodeType!=1)$=$.parentNode;return $});HTMLElement.prototype.attachEvent=function($,_){var A=$.replace(/on/,"");_._ieEmuEventHandler=function($){window.event=$;return _()};this.addEventListener(A,_._ieEmuEventHandler,false)}}function My97DP(){$c=this;$dp.$w=window;$dt=this.date=new DPDate();this.QS=[];$d=document.createElement("div");$d.className="WdateDiv";$d.onmousedown=hideSel;$d.innerHTML="
                                               
                                              ";attachTabEvent($d,function(){hideSel()});_();this.init();$();$d.MI.attachEvent("onkeydown",A);$d.yI.attachEvent("onkeydown",A);$d.MI.onfocus=function($){this.className="yminputfocus";this.value=attr(this,"realValue");this.select();$c._fM();showB($d.MD)};$d.MI.onblur=function(){var $;if($lastInput==this){$dt.M=pIntDef(this.value,$dt.M);$=true}c_M($dt.M,$);this.className="yminput";hide($d.MD)};$d.yI.onfocus=function(){this.className="yminputfocus";this.select();$c._fy();showB($d.yD)};$d.yI.onblur=function(){var $;if($lastInput==this){$dt.y=pIntDef(this.value,$dt.y);$=true}c_y($dt.y,$);this.className="yminput";hide($d.yD)};$d.HI.onfocus=function(){$c.currFocus=this;this.select();$c._fH();showB($d.HD)};$d.HI.onblur=function(){var $;if($lastInput==this){$dt.H=pIntDef(this.value,$dt.H);$=true}c_H($dt.H,$);hide($d.HD)};$d.mI.onfocus=function(){$c.currFocus=this;this.select();$c._fm();showB($d.mD)};$d.mI.onblur=function(){var $;if($lastInput==this){$dt.m=pIntDef(this.value,$dt.m);$=true}c_m($dt.m,$);hide($d.mD)};$d.sI.onfocus=function(){$c.currFocus=this;this.select();$c._fs();showB($d.sD)};$d.sI.onblur=function(){var $;if($lastInput==this){$dt.s=pIntDef(this.value,$dt.s);$=true}c_s($dt.s,$);hide($d.sD)};$d.HI.attachEvent("onkeydown",A);$d.mI.attachEvent("onkeydown",A);$d.sI.attachEvent("onkeydown",A);$d.upButton.onclick=function(){updownEvent(1)};$d.downButton.onmousedown=function(){updownEvent(-1)};$d.qsDiv.onclick=function(){if($d.qsDivSel.style.display!="block"){$c._fillQS();showB($d.qsDivSel)}else hide($d.qsDivSel)};attachTabEvent($d.okI,function(){if($dp.dd.style.display!="none")$d.MI.focus();event.returnValue=false});document.body.appendChild($d);function _(){var A=$d.getElementsByTagName("div"),$=$d.getElementsByTagName("input"),B=$d.getElementsByTagName("button"),_=$d.getElementsByTagName("span");$d.navLeftImg=A[1];$d.leftImg=A[2];$d.rightImg=A[8];$d.navRightImg=A[7];$d.MI=$[0];$d.yI=$[1];$d.titleDiv=A[0];$d.MD=A[4];$d.yD=A[6];$d.qsDivSel=A[9];$d.dDiv=A[10];$d.tDiv=A[11];$d.HD=A[12];$d.mD=A[13];$d.sD=A[14];$d.qsDiv=A[15];$d.bDiv=A[16];$d.HI=$[2];$d.mI=$[4];$d.sI=$[6];$d.clearI=$[7];$d.todayI=$[8];$d.okI=$[9];$d.upButton=B[0];$d.downButton=B[1];$d.timeSpan=_[0]}function $(){$d.navLeftImg.onclick=function(){$ny=$ny<=0?$ny-1:-1;if($ny%5==0)$d.yI.focus();c_y($dt.y-1)};$d.leftImg.onclick=function(){var $=$dt.M;if($>1)$-=1;else{$=12;$dt.y-=1}s_y($dt.y);c_M($)};$d.rightImg.onclick=function(){var $=$dt.M;if($<12)$+=1;else{$=1;$dt.y+=1}s_y($dt.y);c_M($)};$d.navRightImg.onclick=function(){$ny=$ny>=0?$ny+1:1;if($ny%5==0)$d.yI.focus();c_y($dt.y+1)}}function A(){var $=event,_=($.which==undefined)?$.keyCode:$.which;if(!$OPERA&&!((_>=48&&_<=57)||(_>=96&&_<=105)||_==8||_==46||_==37||_==39||_==9))$.returnValue=false;$lastInput=$.srcElement}}My97DP.prototype={init:function(){$ny=0;$dp.cal=this;if($dp.readOnly&&$dp.el.readOnly!=null){$dp.el.readOnly=true;$dp.el.blur()}$();this.dateFmt=$dp.dateFmt;this._dealFmt();this.autoPickDate=$dp.autoPickDate||(($dp.has.st)?false:true);$tdt=this.tdate=new DPDate();this.ddateRe=this._initRe("disabledDates");this.ddayRe=this._initRe("disabledDays");this.sdateRe=this._initRe("specialDates");this.sdayRe=this._initRe("specialDays");this.loadDate();this.minDate=this.doCustomDate($dp.minDate,$dp.minDate!=$dp.defMinDate?$dp.realFmt:$dp.realFullFmt,$dp.defMinDate);this.maxDate=this.doCustomDate($dp.maxDate,$dp.maxDate!=$dp.defMaxDate?$dp.realFmt:$dp.realFullFmt,$dp.defMaxDate);if(this.minDate.compareWith(this.maxDate)>0)$dp.errMsg=$lang.err_1;this._makeDateInRange();$sdt=this.sdate=new DPDate($dt.y,$dt.M,$dt.d,$dt.H,$dt.m,$dt.s);if(!$dp.alwaysUseStartDate&&$dp.el[$dp.elProp]!="")this.update();this.oldValue=$dp.el[$dp.elProp];attr($d.MI,"realValue",$dt.M);$d.MI.value=$lang.aMonStr[$dt.M-1];$d.yI.value=$dt.y;$d.HI.value=$dt.H;$d.mI.value=$dt.m;$d.sI.value=$dt.s;$d.timeSpan.innerHTML=$lang.timeStr;$d.clearI.value=$lang.clearStr;$d.todayI.value=$lang.todayStr;$d.okI.value=$lang.okStr;this.initShowAndHide();this.initBtn();if($dp.errMsg)alert($dp.errMsg);this.redraw();hideSel();if($dp.el.nodeType==1)$dp.attachEvent($dp.el,"onkeydown",function($){if($dp.el==($.srcElement||$.target)){k=($.which==undefined)?$.keyCode:$.which;if(k==9)if(!$dp.cal.checkAndUpdate()){$.preventDefault?$.preventDefault():$.returnValue=false;$dp.cal.mark(false,2);$dp.show()}else{$dp.cal.mark(true);$dp.hide()}}});function $(){var _,$;for(_=0;($=document.getElementsByTagName("link")[_]);_++)if(attr($,"rel").indexOf("style")!=-1&&attr($,"title")){$.disabled=true;if(attr($,"title")==$dp.skin)$.disabled=false}}},splitDate:function(J,C,P,E,B,G,F,K,L){var $;if(J&&J.loadDate)$=J;else{$=new DPDate();if(J!=""){C=C||$dp.dateFmt;var H,O=0,A=/yyyy|yyy|yy|y|MM|M|dd|d|HH|H|mm|m|ss|s/g,N=J.split(/\W+/),_=C.match(A);A.lastIndex=0;if(!L&&N.length!=_.length){var D=0,M="^";while((N=A.exec(C))!==null){D=N.index-D;M+=(D==0)?"":(".{"+D+"}");D=A.lastIndex;switch(N[0]){case"yyyy":M+="(\\d{4})";break;case"yyy":M+="(\\d{3})";break;default:M+="(\\d\\d?)";break}}M+=".*$";N=new RegExp(M).exec(J);O=1}if(N){for(H=0;H<_.length;H++){var I=N[H+O];if(I)switch(_[H]){case"y":case"yy":I=pIntDef(I,0);if(I<50)I+=2000;else I+=1900;$.y=I;break;case"yyy":$.y=pIntDef(I,0)+$dp.yearOffset;break;default:$[_[H].slice(-1)]=I;break}}}else $.d=32}}$.coverDate(P,E,B,G,F,K);return $},_initRe:function(_){var B,$=$dp[_],A="(?:";if($){for(B=0;B<$.length;B++){A+=this.doExp($[B]);if(B!=$.length-1)A+="|"}A=new RegExp(A+")")}else A=null;return A},update:function(){var $=this.getDateStr();if($dp.el[$dp.elProp]!=$)$dp.el[$dp.elProp]=$;this.setRealValue()},setRealValue:function($){var _=$dp.$($dp.vel),$=rtn($,this.getDateStr($dp.realFmt));if(_)_.value=$;attr($dp.el,"realValue",$)},doExp:function(s){var ps="yMdHms",arr,tmpEval,re=/#\{(.*?)\}/;s=s+"";for(var i=0;i=0){A=A.replace(/%ld/g,"0");$.d=0;$.M=pInt($.M)+1}$.refresh()}return $},loadDate:function(){var _,$;if($dp.alwaysUseStartDate||($dp.startDate!=""&&$dp.el[$dp.elProp]=="")){_=this.doExp($dp.startDate);$=$dp.realFmt}else{_=$dp.el[$dp.elProp];$=this.dateFmt}$dt.loadFromDate(this.splitDate(_,$));if($dp.has.sd&&!this.isDate($dt)){$dt.y=$tdt.y;$dt.M=$tdt.M;$dt.d=$tdt.d}if($dp.has.st&&!this.isTime($dt)){$dt.H=$tdt.H;$dt.m=$tdt.m;$dt.s=$tdt.s}},isDate:function($){if($.y!=null)$=doStr($.y,4)+"-"+$.M+"-"+$.d;return $.match(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/)},isTime:function($){if($.H!=null)$=$.H+":"+$.m+":"+$.s;return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},_makeDateInRange:function(){var _=this.checkRange(),A=true;if(_!=0){A=false;var $;if(_>0)$=this.maxDate;else $=this.minDate;if($dp.has.sd){$dt.y=$.y;$dt.M=$.M;$dt.d=$.d}if($dp.has.st){$dt.H=$.H;$dt.m=$.m;$dt.s=$.s}}return A},checkRange:function(A,$){$=$||$dt;var _=$.compareWith(this.minDate,A);if(_>0){_=$.compareWith(this.maxDate,A);if(_<0)_=0}return _},checkValid:function($,A,B){A=A||$dp.has.minUnit;var _=this.checkRange(A,$);if(_==0){if(A=="d"&&B==null)B=new Date($.y,$.M-1,$.d).getDay();_=!this.testDisDay(B)&&!this.testDisDate($)}else _=false;return _},checkAndUpdate:function(){var _=$dp.el,A=this,$=$dp.el[$dp.elProp];if($!=null){if($!=""&&!$dp.readOnly)A.date.loadFromDate(A.splitDate($,A.dateFmt));if($==""||(A.isDate(A.date)&&A.isTime(A.date)&&A.checkValid(A.date))){if($!="")A.update();else A.setRealValue("")}else return false}return true},close:function(){hideSel();if(this.checkAndUpdate()){this.mark(true);$dp.hide()}else this.mark(false)},_fd:function(){var F,D,E,L,H=new sb(),G,A,I,C,K="",$="",_=new DPDate($dt.y,$dt.M,$dt.d,0,0,0),J=_.y,B=_.M;G=new Date(J,B-1,1).getDay();A=1-G;I=new Date(J,B,0).getDay();C=new Date(J,B,0).getDate();H.a("");H.a("");F=$dp.isShowWeek?0:1;while(F<8)H.a("");H.a("");for(F=1,D=A;F<7;F++){H.a("");for(E=0;E<7;E++){_.loadDate(J,B,D++);_.refresh();if(_.M==B){L=true;if(_.compareWith($sdt,"d")==0)K="Wselday";else if(_.compareWith($tdt,"d")==0)K="Wtoday";else K=(($dp.highLineWeekDay&&(E==0||E==6))?"Wwday":"Wday");$=(($dp.highLineWeekDay&&(E==0||E==6))?"WwdayOn":"WdayOn")}else if($dp.isShowOthers){L=true;K="WotherDay";$="WotherDayOn"}else L=false;if($dp.isShowWeek&&E==0&&(F<4||L))H.a("");H.a("")}else H.a(">")}H.a("")}H.a("
                                              "+$lang.aWeekStr[F++]+"
                                              "+getWeek(_,1)+""+_.d+"
                                              ");return H.j()},testDisDate:function($){return this.testDate($,this.ddateRe,!$dp.opposite)},testDisDay:function($){return this.testDay($,this.ddayRe,!$dp.opposite)},testSpeDate:function($){return this.testDate($,this.sdateRe,1)},testSpeDay:function($){return this.testDay($,this.sdayRe,1)},testDate:function(_,B,A){var $=B&&B.test(this.getDateStr($dp.realFmt,_));return $&&A},testDay:function(B,A,_){var $=A&&A.test(B);return $&&_},_f:function(p,c,r,e){var s=new sb();bak=$dt[p];s.a("");for(var j=0;j"+(p=="M"?$lang.aMonStr[$dt[p]-1]:$dt[p])+"")}s.a("")}s.a("
                                              ");$dt[p]=bak;return s.j()},_fM:function(){$d.MD.innerHTML=this._f("M",2,6,"i+j*6+1")},_fy:function(_){var B,A=$dt.y,$=new sb();_=rtn(_,A-5);$.a(this._f("y",2,5,_+"+i+j*5"));$.a("
                                              \u2190_+10?"class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy("+(_+10)+")'":"class='invalidMenu'");$.a(">\u2192
                                              ");$d.yD.innerHTML=$.j()},_fHMS:function(A,_,$){$d[A+"D"].innerHTML=this._f(A,6,_,$)},_fH:function(){this._fHMS("H",4,"i * 6 + j")},_fm:function(){this._fHMS("m",2,"i * 30 + j * 5")},_fs:function(){this._fHMS("s",1,"j * 10")},_fillQS:function(A){this.initQS();var _=$d.qsDivSel,C=_.style,$=new sb();$.a("");$.a("");for(var B=0;B")}else $.a("");$.a("
                                              "+$lang.quickStr+"
                                              ");if(!A)$.a("
                                              \xd7
                                              ");$.a("
                                              ");_.innerHTML=$.j()},_dealFmt:function(){$(/yyyy|yyy|yy|y/);$(/MM|M/);$(/dd|d/);$(/HH|H/);$(/mm|m/);$(/ss|s/);$dp.has.sd=($dp.has.y||$dp.has.M||$dp.has.d)?true:false;$dp.has.st=($dp.has.H||$dp.has.m||$dp.has.s)?true:false;$dp.realFullFmt=$dp.realFullFmt.replace(/%Date/,$dp.realDateFmt).replace(/%Time/,$dp.realTimeFmt);if($dp.has.sd){if($dp.has.st)$dp.realFmt=$dp.realFullFmt;else $dp.realFmt=$dp.realDateFmt}else $dp.realFmt=$dp.realTimeFmt;function $(_){var $=(_+"").slice(1,2);$dp.has[$]=_.exec($dp.dateFmt)?($dp.has.minUnit=$,true):false}},initShowAndHide:function(){var $=false;$dp.has.y?($=true,show($d.yI,$d.navLeftImg,$d.navRightImg)):hide($d.yI,$d.navLeftImg,$d.navRightImg);$dp.has.M?($=true,show($d.MI,$d.leftImg,$d.rightImg)):hide($d.MI,$d.leftImg,$d.rightImg);$?show($d.titleDiv):hide($d.titleDiv);if($dp.has.st){show($d.tDiv);disHMS($d.HI,$dp.has.H);disHMS($d.mI,$dp.has.m);disHMS($d.sI,$dp.has.s)}else hide($d.tDiv);shorH($d.clearI,$dp.isShowClear);shorH($d.todayI,$dp.isShowToday);shorH($d.qsDiv,($dp.has.d&&$dp.qsEnabled));if($dp.eCont)hide($d.bDiv)},mark:function(B,D){var A=$dp.el,_=$FF?"class":"className";if(B)C(A);else{if(D==null)D=$dp.errDealMode;switch(D){case 0:if(confirm($lang.errAlertMsg)){A[$dp.elProp]=this.oldValue;C(A)}else $(A);break;case 1:A[$dp.elProp]=this.oldValue;C(A);break;case 2:$(A);break}}function C(A){var B=A.className;if(B){var $=B.replace(/WdateFmtErr/g,"");if(B!=$)attr(A,_,$)}}function $($){attr($,_,$.className+" WdateFmtErr")}},getP:function(C,_,$){$=$||$dt;var E,B,D,A;switch(C.charAt(0)){case"w":A=getDay($);break;case"D":B=[C];A=$lang.aWeekStr[getDay($)+1];break;case"W":A=getWeek($);break;case"y":B=["yyyy","yyy","yy","y"];break;default:break}B=B||[C+C,C];_=_||B[0];for(E=0;E=0)_=_.replace(D,doStr((C=="y"&&D.length<4)?(D.length<3?$.y%100:($.y+2000-$dp.yearOffset)%1000):A,D.length))}return _},getDateStr:function(_,$){$=$||$dt;_=_||this.dateFmt;var A="yMdHmswWD";for(var B=0;B0)$dt.d--;this.update();if(!$dp.eCont)if(this.checkValid($dt)){$c.mark(true);hide($dp.dd)}else $c.mark(false);if($dp.onpicked)$dp.onpicked.call($dp.el,$dp);else if(this.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,"change")},initBtn:function(){$d.clearI.onclick=function(){var $;if($dp.onclearing)$=$dp.onclearing.call($dp.el,$dp);if(!$){$dp.el[$dp.elProp]="";$c.setRealValue("");hide($dp.dd);if($dp.oncleared)$dp.oncleared.call($dp.el,$dp);else if($c.oldValue!=$dp.el[$dp.elProp]&&$dp.el.onchange)fireEvent($dp.el,"change")}};$d.okI.onclick=function(){day_Click()};if($dp.el[$dp.elProp]=="")$d.okI.value=$lang.okStr;else $d.okI.value=$lang.updateStr;if(this.checkValid($tdt)){$d.todayI.disabled=false;$d.todayI.onclick=function(){var $=$c.tdate;day_Click($.y,$.M,$.d,$.H,$.m,$.s)}}else $d.todayI.disabled=true},initQS:function(){var H,G,A,F,C=[],$=5,E=$dp.quickSel.length,_=$dp.has.minUnit;if(E>$)E=$;else if(_=="m"||_=="s")C=[0,15,30,45,59,-60,-45,-30,-15,-1];else for(H=0;H<$*2;H++)C[H]=$dt[_]-$+1+H;for(H=G=0;H0)_setAll($c.maxDate);function _setAll($){s_y($.y);s_M($.M);s_d($.d);if($dp.has.st){s_H($.H);s_m($.m);s_s($.s)}}}function s_y($){$dt.y=$d.yI.value=$}function s_M($){$dt.M=$;attr($d.MI,"realValue",$);$d.MI.value=$lang.aMonStr[$-1]}function s_d($){$sdt.d=$dt.d=$}function s_H($){$dt.H=$d.HI.value=$}function s_m($){$dt.m=$d.mI.value=$}function s_s($){$dt.s=$d.sI.value=$}function attr(A,_,$){if($===undefined)return A.getAttribute(_);else if(A.setAttribute)A.setAttribute(_,$)}function makeInRange(_,$,A){if(_<$)_=$;else if(_>A)_=A;return _}function attachTabEvent($,_){$.attachEvent("onkeydown",function(){var $=event,A=($.which==undefined)?$.keyCode:$.which;if(A==9)_()})}function doStr($,_){$=$+"";while($.length<_)$="0"+$;return $}function hideSel(){hide($d.yD,$d.MD,$d.HD,$d.mD,$d.sD)}function updownEvent($){if($c.currFocus==undefined)$c.currFocus=$d.HI;switch($c.currFocus){case $d.HI:c_H($dt.H+$);break;case $d.mI:c_m($dt.m+$);break;case $d.sI:c_s($dt.s+$);break}}function DPDate(D,A,$,C,B,_){this.loadDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(E,$.getFullYear());this.M=pIntDef(B,$.getMonth()+1);this.d=pIntDef(_,$.getDate());this.H=pIntDef(D,$.getHours());this.m=pIntDef(C,$.getMinutes());this.s=pIntDef(A,$.getSeconds())};this.loadFromDate=function($){if($==null)return;this.loadDate($.y,$.M,$.d,$.H,$.m,$.s)};this.coverDate=function(E,B,_,D,C,A){var $=new Date();this.y=pIntDef(this.y,rtn(E,$.getFullYear()));this.M=pIntDef(this.M,rtn(B,$.getMonth()+1));this.d=$dp.has.d?pIntDef(this.d,rtn(_,$.getDate())):1;this.H=pIntDef(this.H,rtn(D,$.getHours()));this.m=pIntDef(this.m,rtn(C,$.getMinutes()));this.s=pIntDef(this.s,rtn(A,$.getSeconds()))};this.compareWith=function($,C){var A="yMdHms",_,B;C=A.indexOf(C);C=C>=0?C:5;for(var D=0;D<=C;D++){B=A.charAt(D);_=this[B]-$[B];if(_>0)return 1;else if(_<0)return-1}return 0};this.refresh=function(){var $=new Date(this.y,this.M-1,this.d,this.H,this.m,this.s);this.y=$.getFullYear();this.M=$.getMonth()+1;this.d=$.getDate();this.H=$.getHours();this.m=$.getMinutes();this.s=$.getSeconds();return!isNaN(this.y)};this.loadDate(D,A,$,C,B,_)}function pInt($){return parseInt($,10)}function pIntDef(_,$){_=pInt(_);if(isNaN(_))_=$;return _}function rtn($,_){return $==null?_:$}function fireEvent(A,$){if($IE)A.fireEvent("on"+$);else{var _=document.createEvent("HTMLEvents");_.initEvent($,true,true);A.dispatchEvent(_)}} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/config.js b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/config.js deleted file mode 100644 index 5bc5241..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/config.js +++ /dev/null @@ -1,12 +0,0 @@ -var langList = -[ - {name:'en', charset:'UTF-8'}, - {name:'zh-cn', charset:'gb2312'}, - {name:'zh-tw', charset:'GBK'} -]; - -var skinList = -[ - {name:'default', charset:'gb2312'}, - {name:'whyGreen', charset:'gb2312'} -]; \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/en.js b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/en.js deleted file mode 100644 index 43928d4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/en.js +++ /dev/null @@ -1,12 +0,0 @@ -var $lang={ -errAlertMsg: "Invalid date or the date out of range,redo or not?", -aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], -aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], -clearStr: "Clear", -todayStr: "Today", -okStr: "OK", -updateStr: "OK", -timeStr: "Time", -quickStr: "Quick Selection", -err_1: 'MinDate Cannot be bigger than MaxDate!' -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/vssver2.scc b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/vssver2.scc deleted file mode 100644 index cea8546..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/zh-cn.js b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/zh-cn.js deleted file mode 100644 index dfabd92..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/zh-cn.js +++ /dev/null @@ -1,12 +0,0 @@ -var $lang={ -errAlertMsg: "Ϸڸʽڳ޶Χ,Ҫ?", -aWeekStr: ["","","һ","","","","",""], -aMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], -clearStr: "", -todayStr: "", -okStr: "ȷ", -updateStr: "ȷ", -timeStr: "ʱ", -quickStr: "ѡ", -err_1: 'Сڲܴ!' -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/zh-tw.js b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/zh-tw.js deleted file mode 100644 index dd8859b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/lang/zh-tw.js +++ /dev/null @@ -1,12 +0,0 @@ -var $lang={ -errAlertMsg: "Ϸڸʽڳ޶,ҪN?", -aWeekStr: ["","","һ","","","","",""], -aMonStr: ["һ","","","","","","","","","ʮ","ʮһ","ʮ"], -clearStr: "", -todayStr: "", -okStr: "_", -updateStr: "_", -timeStr: "rg", -quickStr: "x", -err_1: 'Сڲܴ!' -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/WdatePicker.css b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/WdatePicker.css deleted file mode 100644 index 8d447b5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/WdatePicker.css +++ /dev/null @@ -1,10 +0,0 @@ -.Wdate{ - border:#999 1px solid; - height:20px; - background:#fff url(datePicker.gif) no-repeat right; -} - -.WdateFmtErr{ - font-weight:bold; - color:red; -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/datePicker.gif b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/datePicker.gif deleted file mode 100644 index d6bf40c..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/datePicker.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/datepicker.css b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/datepicker.css deleted file mode 100644 index 62b57ad..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/datepicker.css +++ /dev/null @@ -1,240 +0,0 @@ -/* - * My97 DatePicker 4.6 - * Ƥ:default - */ - -/* ѡ DIV */ -.WdateDiv{ - width:180px; - background-color:#FFFFFF; - border:#bbb 1px solid; - padding:2px; -} -.WdateDiv *{font-size:9pt;} - -/**************************** - * ͼ - ***************************/ -.WdateDiv .NavImg { - cursor:pointer; - width:16px; - height:16px; - margin-top:1px; -} -.WdateDiv .NavImgll { background:url(img.gif) no-repeat; } -.WdateDiv .NavImgl { background:url(img.gif) no-repeat -16px 0px; } -.WdateDiv .NavImgr { background:url(img.gif) no-repeat -32px 0px; } -.WdateDiv .NavImgrr { background:url(img.gif) no-repeat -48px 0px; } - -/**************************** - * · - ***************************/ -/* · DIV */ -.WdateDiv #dpTitle{ - height:24px; - margin-bottom:2px; - padding:1px; -} -/* · INPUT */ -.WdateDiv .yminput{ - margin-top:2px; - text-align:center; - border:0px; - height:16px; - width:50px; - cursor:pointer; -} -/* ·ýʱʽ INPUT */ -.WdateDiv .yminputfocus{ - margin-top:2px; - text-align:center; - font-weight:bold; - color:blue; - border:#ccc 1px solid; - height:16px; - width:50px; -} -/* ˵ѡ DIV */ -.WdateDiv .menuSel{ - position:absolute; - background-color:#FFFFFF; - border:#ccc 1px solid; - display:none; -} -/* ˵ʽ TD */ -.WdateDiv .menu{ - cursor:pointer; - background-color:#fff; -} -/* ˵mouseoverʽ TD */ -.WdateDiv .menuOn{ - cursor:pointer; - background-color:#BEEBEE; -} -/* ˵Чʱʽ TD */ -.WdateDiv .invalidMenu{ - color:#aaa; -} -/* ѡƫ DIV */ -.WdateDiv .YMenu{ - margin-top:16px; - -} -/* ѡƫ DIV */ -.WdateDiv .MMenu{ - margin-top:16px; - *width:62px; -} -/* ʱѡλ DIV */ -.WdateDiv .hhMenu{ - margin-top:-90px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .mmMenu{ - margin-top:-46px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .ssMenu{ - margin-top:-24px; - margin-left:26px; -} - -/**************************** - * - ***************************/ - .WdateDiv .Wweek { - text-align:center; - background:#DAF3F5; - border-right:#BDEBEE 1px solid; - } -/**************************** - * , - ***************************/ -/* TR */ -.WdateDiv .MTitle{ - background-color:#BDEBEE; -} -/* TABLE */ -.WdateDiv .WdayTable{ - line-height:20px; - border:#c5d9e8 1px solid; -} -/* ڸʽ TD */ -.WdateDiv .Wday{ - cursor:pointer; -} -/* ڸmouseoverʽ TD */ -.WdateDiv .WdayOn{ - cursor:pointer; - background-color:#C0EBEF; -} -/* ĩڸʽ TD */ -.WdateDiv .Wwday{ - cursor:pointer; - color:#FF2F2F; -} -/* ĩڸmouseoverʽ TD */ -.WdateDiv .WwdayOn{ - cursor:pointer; - color:#000; - background-color:#C0EBEF; -} -.WdateDiv .Wtoday{ - cursor:pointer; - color:blue; -} -.WdateDiv .Wselday{ - background-color:#A9E4E9; -} -/* ·ݵ */ -.WdateDiv .WotherDay{ - cursor:pointer; - color:#6A6AFF; -} -/* ·ݵmouseoverʽ */ -.WdateDiv .WotherDayOn{ - cursor:pointer; - background-color:#C0EBEF; -} -/* Чڵʽ,ڷΧڸʽ,ѡ */ -.WdateDiv .WinvalidDay{ - color:#aaa; -} -/* ڵʽ */ -.WdateDiv .WspecialDay{ - background-color:#66F4DF; -} - -/**************************** - * ʱ - ***************************/ -/* ʱ DIV */ -.WdateDiv #dpTime{ - float:left; - margin-top:3px; - margin-right:30px; -} -/* ʱ SPAN */ -.WdateDiv #dpTime #dpTimeStr{ - margin-left:1px; -} -/* ʱ INPUT */ -.WdateDiv #dpTime input{ - height:16px; - width:18px; - text-align:center; - border:#ccc 1px solid; -} -/* ʱ ʱ INPUT */ -.WdateDiv #dpTime .tB{ - border-right:0px; -} -/* ʱ ֺͼ ':' INPUT */ -.WdateDiv #dpTime .tE{ - border-left:0; - border-right:0; -} -/* ʱ INPUT */ -.WdateDiv #dpTime .tm{ - width:7px; - border-left:0; - border-right:0; -} -/* ʱұߵϰť BUTTON */ -.WdateDiv #dpTime #dpTimeUp{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -32px -16px; -} -/* ʱұߵ°ť BUTTON */ -.WdateDiv #dpTime #dpTimeDown{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -48px -16px; -} -/**************************** - * - ***************************/ - .WdateDiv #dpQS { - float:left; - margin-right:3px; - margin-top:3px; - background:url(img.gif) no-repeat 0px -16px; - width:20px; - height:20px; - cursor:pointer; - } -.WdateDiv #dpControl { - text-align:right; - margin-top:3px; -} -.WdateDiv .dpButton{ - height:20px; - width:45px; - border:#ccc 1px solid; - padding:2px; -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/img.gif b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/img.gif deleted file mode 100644 index 053205d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/img.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/vssver2.scc b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/vssver2.scc deleted file mode 100644 index e87cb1f..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/default/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/vssver2.scc b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/vssver2.scc deleted file mode 100644 index 6256d5a..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/bg.jpg b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/bg.jpg deleted file mode 100644 index 75516a6..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/bg.jpg and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/datepicker.css b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/datepicker.css deleted file mode 100644 index 8dce218..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/datepicker.css +++ /dev/null @@ -1,247 +0,0 @@ -/* - * My97 DatePicker 4.6 - * Ƥ:whyGreen - */ - -/* ѡ DIV */ -.WdateDiv{ - width:180px; - background-color:#fff; - border:#C5E1E4 1px solid; - padding:2px; -} -.WdateDiv *{font-size:9pt;} - -/**************************** - * ͼ - ***************************/ -.WdateDiv .NavImg { - cursor:pointer; - width:16px; - height:16px; - margin-top:1px; -} -.WdateDiv .NavImgll { background:url(img.gif) no-repeat; } -.WdateDiv .NavImgl { background:url(img.gif) no-repeat -16px 0px; } -.WdateDiv .NavImgr { background:url(img.gif) no-repeat -32px 0px; } -.WdateDiv .NavImgrr { background:url(img.gif) no-repeat -48px 0px; } -/**************************** - * · - ***************************/ -/* · DIV */ -.WdateDiv #dpTitle{ - height:24px; - padding:1px; - border:#c5d9e8 1px solid; - background:url(bg.jpg); - margin-bottom:2px; -} -/* · INPUT */ -.WdateDiv .yminput{ - margin-top:2px; - text-align:center; - border:0px; - height:16px; - width:50px; - color:#034c50; - background-color:transparent; - cursor:pointer; -} -/* ·ýʱʽ INPUT */ -.WdateDiv .yminputfocus{ - margin-top:2px; - text-align:center; - border:#939393 1px solid; - font-weight:bold; - color:#034c50; - height:16px; - width:50px; -} -/* ˵ѡ DIV */ -.WdateDiv .menuSel{ - position:absolute; - background-color:#FFFFFF; - border:#A3C6C8 1px solid; - display:none; -} -/* ˵ʽ TD */ -.WdateDiv .menu{ - cursor:pointer; - background-color:#fff; - color:#11777C; -} -/* ˵mouseoverʽ TD */ -.WdateDiv .menuOn{ - cursor:pointer; - background-color:#BEEBEE; -} -/* ˵Чʱʽ TD */ -.WdateDiv .invalidMenu{ - color:#aaa; -} -/* ѡƫ DIV */ -.WdateDiv .YMenu{ - margin-top:16px; -} -/* ѡƫ DIV */ -.WdateDiv .MMenu{ - margin-top:16px; - *width:62px; -} -/* ʱѡλ DIV */ -.WdateDiv .hhMenu{ - margin-top:-90px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .mmMenu{ - margin-top:-46px; - margin-left:26px; -} -/* ѡλ DIV */ -.WdateDiv .ssMenu{ - margin-top:-24px; - margin-left:26px; -} - -/**************************** - * - ***************************/ - .WdateDiv .Wweek { - text-align:center; - background:#DAF3F5; - border-right:#BDEBEE 1px solid; - } -/**************************** - * , - ***************************/ - /* TR */ -.WdateDiv .MTitle{ - color:#13777e; - background-color:#bdebee; -} -/* TABLE */ -.WdateDiv .WdayTable{ - line-height:20px; - color:#13777e; - background-color:#edfbfb; - border:#BEE9F0 1px solid; -} -/* ڸʽ TD */ -.WdateDiv .Wday{ - cursor:pointer; -} -/* ڸmouseoverʽ TD */ -.WdateDiv .WdayOn{ - cursor:pointer; - background-color:#74d2d9 ; -} -/* ĩڸʽ TD */ -.WdateDiv .Wwday{ - cursor:pointer; - color:#ab1e1e; -} -/* ĩڸmouseoverʽ TD */ -.WdateDiv .WwdayOn{ - cursor:pointer; - background-color:#74d2d9; -} -.WdateDiv .Wtoday{ - cursor:pointer; - color:blue; -} -.WdateDiv .Wselday{ - background-color:#A7E2E7; -} -/* ·ݵ */ -.WdateDiv .WotherDay{ - cursor:pointer; - color:#0099CC; -} -/* ·ݵmouseoverʽ */ -.WdateDiv .WotherDayOn{ - cursor:pointer; - background-color:#C0EBEF; -} -/* Чڵʽ,ڷΧڸʽ,ѡ */ -.WdateDiv .WinvalidDay{ - color:#aaa; -} -/* ڵʽ */ -.WdateDiv .WspecialDay{ - background-color:#66F4DF; -} - -/**************************** - * ʱ - ***************************/ -/* ʱ DIV */ -.WdateDiv #dpTime{ - -} -/* ʱ SPAN */ -.WdateDiv #dpTime #dpTimeStr{ - margin-left:1px; - color:#497F7F; -} -/* ʱ INPUT */ -.WdateDiv #dpTime input{ - height:16px; - width:18px; - text-align:center; - color:#333; - border:#61CAD0 1px solid; -} -/* ʱ ʱ INPUT */ -.WdateDiv #dpTime .tB{ - border-right:0px; -} -/* ʱ ֺͼ ':' INPUT */ -.WdateDiv #dpTime .tE{ - border-left:0; - border-right:0; -} -/* ʱ INPUT */ -.WdateDiv #dpTime .tm{ - width:7px; - border-left:0; - border-right:0; -} -/* ʱұߵϰť BUTTON */ -.WdateDiv #dpTime #dpTimeUp{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -32px -16px; -} -/* ʱұߵ°ť BUTTON */ -.WdateDiv #dpTime #dpTimeDown{ - height:10px; - width:13px; - border:0px; - background:url(img.gif) no-repeat -48px -16px; -} -/**************************** - * - ***************************/ - .WdateDiv #dpQS { - float:left; - margin-right:3px; - margin-top:3px; - background:url(img.gif) no-repeat 0px -16px; - width:20px; - height:20px; - cursor:pointer; - } -.WdateDiv #dpControl { - text-align:right; - margin-top:3px; -} -.WdateDiv .dpButton{ - height:20px; - width:45px; - padding:2px; - border:#38B1B9 1px solid; - background-color:#CFEBEE; - color:#08575B; -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/img.gif b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/img.gif deleted file mode 100644 index 4003f20..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/img.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/vssver2.scc b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/vssver2.scc deleted file mode 100644 index f5406dc..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/skin/whyGreen/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/vssver2.scc b/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/vssver2.scc deleted file mode 100644 index 3b72025..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/DatePicker/vssver2.scc and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/_content.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                              Here is the content loaded via AJAX.

                                              -
                                                -
                                              • easyui is a collection of user-interface plugin based on jQuery.
                                              • -
                                              • easyui provides essential functionality for building modern, interactive, javascript applications.
                                              • -
                                              • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                              • -
                                              • complete framework for HTML5 web page.
                                              • -
                                              • easyui save your time and scales while developing your products.
                                              • -
                                              • easyui is very easy but powerful.
                                              • -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/actions.html deleted file mode 100644 index ecb3aaf..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/actions.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Accordion Actions - jQuery EasyUI Demo - - - - - - - -

                                              Accordion Actions

                                              -
                                              -
                                              -
                                              Click the buttons below to add or remove accordion items.
                                              -
                                              -
                                              - Select - Add - Remove -
                                              -
                                              -
                                              -

                                              Accordion for jQuery

                                              -

                                              Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/ajax.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/ajax.html deleted file mode 100644 index 11be6c1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/ajax.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Loading Accordion Content with AJAX - jQuery EasyUI Demo - - - - - - - -

                                              Loading Accordion Content with AJAX

                                              -
                                              -
                                              -
                                              Click AJAX panel header to load content via AJAX.
                                              -
                                              -
                                              -
                                              -
                                              -

                                              Accordion for jQuery

                                              -

                                              Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                              -
                                              -
                                              -

                                              The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

                                              -
                                              -
                                              -
                                              -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/basic.html deleted file mode 100644 index a47958e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/basic.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Basic Accordion - jQuery EasyUI Demo - - - - - - - -

                                              Basic Accordion

                                              -
                                              -
                                              -
                                              Click on panel header to show its content.
                                              -
                                              -
                                              -
                                              -
                                              -

                                              Accordion for jQuery

                                              -

                                              Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                              -
                                              -
                                              -

                                              The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

                                              -
                                              -
                                              -
                                                -
                                              • - Foods -
                                                  -
                                                • - Fruits -
                                                    -
                                                  • apple
                                                  • -
                                                  • orange
                                                  • -
                                                  -
                                                • -
                                                • - Vegetables -
                                                    -
                                                  • tomato
                                                  • -
                                                  • carrot
                                                  • -
                                                  • cabbage
                                                  • -
                                                  • potato
                                                  • -
                                                  • lettuce
                                                  • -
                                                  -
                                                • -
                                                -
                                              • -
                                              -
                                              -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/datagrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/tools.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/tools.html deleted file mode 100644 index 261d763..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/accordion/tools.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Accordion Tools - jQuery EasyUI Demo - - - - - - - -

                                              Accordion Tools

                                              -
                                              -
                                              -
                                              Click the tools on top right of panel to perform actions.
                                              -
                                              -
                                              -
                                              -
                                              -

                                              Accordion for jQuery

                                              -

                                              Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                              -
                                              -
                                              -

                                              The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProduct IDList PriceUnit CostAttributeStatus
                                              -
                                              -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/calendar/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/calendar/basic.html deleted file mode 100644 index 5dc3260..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/calendar/basic.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Basic Calendar - jQuery EasyUI Demo - - - - - - - -

                                              Basic Calendar

                                              -
                                              -
                                              -
                                              Click to select date.
                                              -
                                              - -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/calendar/firstday.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/calendar/firstday.html deleted file mode 100644 index fd6863b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/calendar/firstday.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - First Day of Week - jQuery EasyUI Demo - - - - - - - -

                                              First Day of Week

                                              -
                                              -
                                              -
                                              Choose the first day of the week.
                                              -
                                              - -
                                              - -
                                              - -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combo/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combo/basic.html deleted file mode 100644 index d9ac911..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combo/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Combo - jQuery EasyUI Demo - - - - - - - -

                                              Basic Combo

                                              -
                                              -
                                              -
                                              Click the right arrow button to show drop down panel that can be filled with any content.
                                              -
                                              - -
                                              -
                                              Select a language
                                              - Java
                                              - C#
                                              - Ruby
                                              - Basic
                                              - Fortran -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/actions.html deleted file mode 100644 index 35e4a29..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/actions.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - ComboBox Actions - jQuery EasyUI Demo - - - - - - - -

                                              ComboBox

                                              -
                                              -
                                              -
                                              Click the buttons below to perform actions.
                                              -
                                              - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/basic.html deleted file mode 100644 index 95f3b45..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/basic.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Basic ComboBox - jQuery EasyUI Demo - - - - - - - -

                                              Basic ComboBox

                                              -
                                              -
                                              -
                                              Type in ComboBox to try auto complete.
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/combobox_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/combobox_data1.json deleted file mode 100644 index 8bfba76..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/combobox_data1.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "id":1, - "text":"Java", - "desc":"Write once, run anywhere" -},{ - "id":2, - "text":"C#", - "desc":"One of the programming languages designed for the Common Language Infrastructure" -},{ - "id":3, - "text":"Ruby", - "selected":true, - "desc":"A dynamic, reflective, general-purpose object-oriented programming language" -},{ - "id":4, - "text":"Perl", - "desc":"A high-level, general-purpose, interpreted, dynamic programming language" -},{ - "id":5, - "text":"Basic", - "desc":"A family of general-purpose, high-level programming languages" -}] \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/combobox_data2.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/combobox_data2.json deleted file mode 100644 index fcaca4f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/combobox_data2.json +++ /dev/null @@ -1,47 +0,0 @@ -[{ - "value":"f20", - "text":"Firefox 2.0 or higher", - "group":"Firefox" -},{ - "value":"f15", - "text":"Firefox 1.5.x", - "group":"Firefox" -},{ - "value":"f10", - "text":"Firefox 1.0.x", - "group":"Firefox" -},{ - "value":"ie7", - "text":"Microsoft Internet Explorer 7.0 or higher", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie6", - "text":"Microsoft Internet Explorer 6.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie5", - "text":"Microsoft Internet Explorer 5.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie4", - "text":"Microsoft Internet Explorer 4.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"op9", - "text":"Opera 9.0 or higher", - "group":"Opera" -},{ - "value":"op8", - "text":"Opera 8.x", - "group":"Opera" -},{ - "value":"op7", - "text":"Opera 7.x", - "group":"Opera" -},{ - "value":"Safari", - "text":"Safari" -},{ - "value":"Other", - "text":"Other" -}] \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/customformat.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/customformat.html deleted file mode 100644 index bdd6d92..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/customformat.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Custom Format in ComboBox - jQuery EasyUI Demo - - - - - - - -

                                              Custom Format in ComboBox

                                              -
                                              -
                                              -
                                              This sample shows how to custom the format of list item.
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/dynamicdata.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/dynamicdata.html deleted file mode 100644 index 7e22988..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/dynamicdata.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Load Dynamic ComboBox Data - jQuery EasyUI Demo - - - - - - - -

                                              Load Dynamic ComboBox Data

                                              -
                                              -
                                              -
                                              Click the button below to load data.
                                              -
                                              -
                                              - LoadData -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/group.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/group.html deleted file mode 100644 index 560e78e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/group.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Group ComboBox - jQuery EasyUI Demo - - - - - - - -

                                              Group ComboBox

                                              -
                                              -
                                              -
                                              This example shows how to display combobox items in groups.
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/multiple.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/multiple.html deleted file mode 100644 index ce02d84..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/multiple.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Multiple Select - jQuery EasyUI Demo - - - - - - - -

                                              Load Dynamic ComboBox Data

                                              -
                                              -
                                              -
                                              Drop down the panel and select multiple items.
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/navigation.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/navigation.html deleted file mode 100644 index a62e4a0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/navigation.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - Navigate ComboBox - jQuery EasyUI Demo - - - - - - - -

                                              Navigate ComboBox

                                              -
                                              -
                                              -
                                              Navigate through combobox items width keyboard to select an item.
                                              -
                                              -
                                              - - SelectOnNavigation -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/remotedata.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/remotedata.html deleted file mode 100644 index 592cc39..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/remotedata.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Binding to Remote Data - jQuery EasyUI Demo - - - - - - - -

                                              Binding to Remote Data

                                              -
                                              -
                                              -
                                              The ComboBox is bound to a remote data.
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/remotejsonp.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/remotejsonp.html deleted file mode 100644 index 52c99fe..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combobox/remotejsonp.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Remote JSONP - jQuery EasyUI Demo - - - - - - - -

                                              Remote JSONP

                                              -
                                              -
                                              -
                                              This sample shows how to use JSONP to retrieve data from a remote site.
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/actions.html deleted file mode 100644 index 0d1930b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/actions.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - ComboGrid Actions - jQuery EasyUI Demo - - - - - - - -

                                              ComboGrid Actions

                                              -
                                              -
                                              -
                                              Click the buttons below to perform actions.
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/basic.html deleted file mode 100644 index a43cb0b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/basic.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Basic ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                              Basic ComboGrid

                                              -
                                              -
                                              -
                                              Click the right arrow button to show the DataGrid.
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/datagrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/datagrid_data1.json deleted file mode 100644 index 3a62a71..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"selected":true,"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/initvalue.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/initvalue.html deleted file mode 100644 index 920b035..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/initvalue.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Initialize Value for ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                              Initialize Value for ComboGrid

                                              -
                                              -
                                              -
                                              Initialize value when ComboGrid is created.
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/multiple.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/multiple.html deleted file mode 100644 index 2b4273a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/multiple.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Multiple ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                              Multiple ComboGrid

                                              -
                                              -
                                              -
                                              Click the right arrow button to show the DataGrid and select items.
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/navigation.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/navigation.html deleted file mode 100644 index cfb7fad..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combogrid/navigation.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Navigate ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                              Navigate ComboGrid

                                              -
                                              -
                                              -
                                              Navigate through grid items with keyboard to select an item.
                                              -
                                              -
                                              - - SelectOnNavigation -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/actions.html deleted file mode 100644 index 671659d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/actions.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - ComboTree Actions - jQuery EasyUI Demo - - - - - - - -

                                              ComboTree Actions

                                              -
                                              -
                                              -
                                              Click the buttons below to perform actions
                                              -
                                              - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/basic.html deleted file mode 100644 index 09d5ca7..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/basic.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Basic ComboTree - jQuery EasyUI Demo - - - - - - - -

                                              Basic ComboTree

                                              -
                                              -
                                              -
                                              Click the right arrow button to show the tree panel.
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/initvalue.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/initvalue.html deleted file mode 100644 index 5f6576c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/initvalue.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Initialize Value for ComboTree - jQuery EasyUI Demo - - - - - - - -

                                              Initialize Value for ComboTree

                                              -
                                              -
                                              -
                                              Initialize Value when ComboTree is created.
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/multiple.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/multiple.html deleted file mode 100644 index cbdd23f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/multiple.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Multiple ComboTree - jQuery EasyUI Demo - - - - - - - -

                                              Multiple ComboTree

                                              -
                                              -
                                              -
                                              Click the right arrow button to show the tree panel and select multiple nodes.
                                              -
                                              -
                                              - Cascade Check: - -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/tree_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/combotree/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/aligncolumns.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/aligncolumns.html deleted file mode 100644 index 41ce52f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/aligncolumns.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Aligning Columns in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Aligning Columns in DataGrid

                                              -
                                              -
                                              -
                                              Use align and halign properties to set the alignment of the columns and their header.
                                              -
                                              -
                                              - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/basic.html deleted file mode 100644 index 223a37c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/basic.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Basic DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Basic DataGrid

                                              -
                                              -
                                              -
                                              The DataGrid is created from markup, no JavaScript code needed.
                                              -
                                              -
                                              - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/cellediting.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/cellediting.html deleted file mode 100644 index 4a8b9a6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/cellediting.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - Cell Editing in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Cell Editing in DataGrid

                                              -
                                              -
                                              -
                                              Click a cell to start editing.
                                              -
                                              -
                                              - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/cellstyle.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/cellstyle.html deleted file mode 100644 index 4a4bc4c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/cellstyle.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - DataGrid Cell Style - jQuery EasyUI Demo - - - - - - - -

                                              DataGrid Cell Style

                                              -
                                              -
                                              -
                                              The cells which listprice value is less than 30 are highlighted.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/checkbox.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/checkbox.html deleted file mode 100644 index e01266c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/checkbox.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CheckBox Selection on DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              CheckBox Selection on DataGrid

                                              -
                                              -
                                              -
                                              Click the checkbox on header to select or unselect all selections.
                                              -
                                              -
                                              - - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              -
                                              - Selection Mode: -
                                              - SelectOnCheck:
                                              - CheckOnSelect: -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/clientpagination.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/clientpagination.html deleted file mode 100644 index 6af7b0d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/clientpagination.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Client Side Pagination in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Client Side Pagination in DataGrid

                                              -
                                              -
                                              -
                                              This sample shows how to implement client side pagination in DataGrid.
                                              -
                                              -
                                              - - - - - - - - - - - - - -
                                              Inv NoDateNameAmountPriceCostNote
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/columngroup.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/columngroup.html deleted file mode 100644 index 258799d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/columngroup.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Column Group - jQuery EasyUI Demo - - - - - - - -

                                              Column Group

                                              -
                                              -
                                              -
                                              The header cells can be merged. Useful to group columns under a category.
                                              -
                                              -
                                              - - - - - - - - - - - - - - -
                                              Item IDProductItem Details
                                              List PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/complextoolbar.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/complextoolbar.html deleted file mode 100644 index 767c030..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/complextoolbar.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - DataGrid Complex Toolbar - jQuery EasyUI Demo - - - - - - - -

                                              DataGrid Complex Toolbar

                                              -
                                              -
                                              -
                                              The DataGrid toolbar can be defined from a <div/> markup, so you can define the layout of toolbar easily.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              -
                                              -
                                              - - - - - -
                                              -
                                              - Date From: - To: - Language: - - Search -
                                              -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/contextmenu.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/contextmenu.html deleted file mode 100644 index 9c59838..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/contextmenu.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - Context Menu on DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Context Menu on DataGrid

                                              -
                                              -
                                              -
                                              Right click on the header of DataGrid to display context menu.
                                              -
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/custompager.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/custompager.html deleted file mode 100644 index c1a80a6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/custompager.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Custom DataGrid Pager - jQuery EasyUI Demo - - - - - - - -

                                              Custom DataGrid Pager

                                              -
                                              -
                                              -
                                              You can append some buttons to the standard datagrid pager bar.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/datagrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/datagrid_data2.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/datagrid_data2.json deleted file mode 100644 index 4a27e14..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/datagrid_data2.json +++ /dev/null @@ -1,15 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":28.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":63.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -],"footer":[ - {"unitcost":19.80,"listprice":60.40,"productid":"Average:"}, - {"unitcost":198.00,"listprice":604.00,"productid":"Total:"} -]} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/footer.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/footer.html deleted file mode 100644 index 3e1a615..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/footer.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Footer Rows in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Footer Rows in DataGrid

                                              -
                                              -
                                              -
                                              The summary informations can be displayed in footer rows.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProduct IDList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/formatcolumns.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/formatcolumns.html deleted file mode 100644 index cbf6f40..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/formatcolumns.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Format DataGrid Columns - jQuery EasyUI Demo - - - - - - - -

                                              Format DataGrid Columns

                                              -
                                              -
                                              -
                                              The list price value will show red color when less than 30.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/frozencolumns.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/frozencolumns.html deleted file mode 100644 index 19650e5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/frozencolumns.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Frozen Columns in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Frozen Columns in DataGrid

                                              -
                                              -
                                              -
                                              You can freeze some columns that can't scroll out of view.
                                              -
                                              -
                                              - - - - - - - - - - - - - - - -
                                              Item IDProduct
                                              List PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/frozenrows.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/frozenrows.html deleted file mode 100644 index 6072511..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/frozenrows.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Frozen Rows in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Frozen Rows in DataGrid

                                              -
                                              -
                                              -
                                              This sample shows how to freeze some rows that will always be displayed at the top when the datagrid is scrolled down.
                                              -
                                              -
                                              - - - - - - - - - - - - - - - -
                                              Item IDProduct
                                              List PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/mergecells.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/mergecells.html deleted file mode 100644 index 2751bcf..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/mergecells.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Merge Cells for DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Merge Cells for DataGrid

                                              -
                                              -
                                              -
                                              Cells in DataGrid body can be merged.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              ProductItem IDList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/multisorting.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/multisorting.html deleted file mode 100644 index 2a744af..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/multisorting.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Multiple Sorting - jQuery EasyUI Demo - - - - - - - -

                                              Multiple Sorting

                                              -
                                              -
                                              -
                                              Set 'multiSort' property to true to enable multiple column sorting.
                                              -
                                              -
                                              - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/products.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/products.json deleted file mode 100644 index 2c512bc..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/products.json +++ /dev/null @@ -1,9 +0,0 @@ -[ -{"productid":"FI-SW-01","productname":"Koi"}, -{"productid":"K9-DL-01","productname":"Dalmation"}, -{"productid":"RP-SN-01","productname":"Rattlesnake"}, -{"productid":"RP-LI-02","productname":"Iguana"}, -{"productid":"FL-DSH-01","productname":"Manx"}, -{"productid":"FL-DLH-02","productname":"Persian"}, -{"productid":"AV-CB-01","productname":"Amazon Parrot"} -] diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowborder.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowborder.html deleted file mode 100644 index bad6fa4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowborder.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Row Border in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Row Border in DataGrid

                                              -
                                              -
                                              -
                                              This sample shows how to change the row border style of datagrid.
                                              -
                                              -
                                              - Border: - - Striped: - -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowediting.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowediting.html deleted file mode 100644 index a743e08..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowediting.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Row Editing in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                              Row Editing in DataGrid

                                              -
                                              -
                                              -
                                              Click the row to start editing.
                                              -
                                              -
                                              - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowstyle.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowstyle.html deleted file mode 100644 index aefbfa7..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/rowstyle.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - DataGrid Row Style - jQuery EasyUI Demo - - - - - - - -

                                              DataGrid Row Style

                                              -
                                              -
                                              -
                                              The rows which listprice value is less than 30 are highlighted.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/selection.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/selection.html deleted file mode 100644 index bfe57f8..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/selection.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - DataGrid Selection - jQuery EasyUI Demo - - - - - - - -

                                              DataGrid Selection

                                              -
                                              -
                                              -
                                              Choose a selection mode and select one or more rows.
                                              -
                                              - - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              -
                                              - Selection Mode: - -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/simpletoolbar.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/simpletoolbar.html deleted file mode 100644 index 8aca43f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/simpletoolbar.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - DataGrid with Toolbar - jQuery EasyUI Demo - - - - - - - -

                                              DataGrid with Toolbar

                                              -
                                              -
                                              -
                                              Put buttons on top toolbar of DataGrid.
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProductList PriceUnit CostAttributeStatus
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/transform.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/transform.html deleted file mode 100644 index dc2a420..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datagrid/transform.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Transform DataGrid from Table - jQuery EasyUI Demo - - - - - - - -

                                              Transform DataGrid from Table

                                              -
                                              -
                                              -
                                              Transform DataGrid from an existing, unformatted html table.
                                              -
                                              -
                                              - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                              Item IDProductList PriceAttribute
                                              EST-1FI-SW-0136.50Large
                                              EST-10K9-DL-0118.50Spotted Adult Female
                                              EST-11RP-SN-0128.50Venomless
                                              EST-12RP-SN-0126.50Rattleless
                                              EST-13RP-LI-0235.50Green Adult
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/basic.html deleted file mode 100644 index 9fc40a6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic DateBox - jQuery EasyUI Demo - - - - - - - -

                                              Basic DateBox

                                              -
                                              -
                                              -
                                              Click the calendar image on the right side.
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/dateformat.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/dateformat.html deleted file mode 100644 index 5a45cc0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/dateformat.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Date Format - jQuery EasyUI Demo - - - - - - - -

                                              Date Format

                                              -
                                              -
                                              -
                                              Different date formats are applied to different DateBox components.
                                              -
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/events.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/events.html deleted file mode 100644 index 68c8b29..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/events.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - DateBox Events - jQuery EasyUI Demo - - - - - - - -

                                              DateBox Events

                                              -
                                              -
                                              -
                                              Click the calendar image on the right side.
                                              -
                                              -
                                              - -
                                              - Selected Date: - -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/validate.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/validate.html deleted file mode 100644 index a0b4ca3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datebox/validate.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Validate DateBox - jQuery EasyUI Demo - - - - - - - -

                                              Validate DateBox

                                              -
                                              -
                                              -
                                              When the selected date is greater than specified date. The field validator will raise an error.
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/basic.html deleted file mode 100644 index 59bec16..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic DateTimeBox - jQuery EasyUI Demo - - - - - - - -

                                              Basic DateTimeBox

                                              -
                                              -
                                              -
                                              Click the calendar image on the right side.
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/initvalue.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/initvalue.html deleted file mode 100644 index 809e113..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/initvalue.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Initialize Value for DateTime - jQuery EasyUI Demo - - - - - - - -

                                              Initialize Value for DateTime

                                              -
                                              -
                                              -
                                              The value is initialized when DateTimeBox has been created.
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/showseconds.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/showseconds.html deleted file mode 100644 index bcd3707..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/datetimebox/showseconds.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Display Seconds - jQuery EasyUI Demo - - - - - - - -

                                              Display Seconds

                                              -
                                              -
                                              -
                                              The user can decide to display seconds part or not.
                                              -
                                              -
                                              - Show Seconds: - -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/demo.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/demo.css deleted file mode 100644 index 824a8ab..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/demo.css +++ /dev/null @@ -1,26 +0,0 @@ -*{ - font-size:12px; -} -body { - font-family:helvetica,tahoma,verdana,sans-serif; - padding:20px; - font-size:13px; - margin:0; -} -h2 { - font-size:18px; - font-weight:bold; - margin:0; - margin-bottom:15px; -} -.demo-info{ - background:#FFFEE6; - color:#8F5700; - padding:12px; -} -.demo-tip{ - width:16px; - height:16px; - margin-right:8px; - float:left; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/basic.html deleted file mode 100644 index 0875bb2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic Dialog - jQuery EasyUI Demo - - - - - - - -

                                              Basic Dialog

                                              -
                                              -
                                              -
                                              Click below button to open or close dialog.
                                              -
                                              -
                                              - Open - Close -
                                              -
                                              - The dialog content. -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/complextoolbar.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/complextoolbar.html deleted file mode 100644 index cce5594..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/complextoolbar.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Complex Toolbar on Dialog - jQuery EasyUI Demo - - - - - - - -

                                              Complex Toolbar on Dialog

                                              -
                                              -
                                              -
                                              This sample shows how to create complex toolbar on dialog.
                                              -
                                              -
                                              - Open - Close -
                                              -
                                              - The dialog content. -
                                              -
                                              - - - - - -
                                              - Edit - Help - - -
                                              -
                                              -
                                              - Save - Close -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/toolbarbuttons.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/toolbarbuttons.html deleted file mode 100644 index 4265bef..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/dialog/toolbarbuttons.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Toolbar and Buttons - jQuery EasyUI Demo - - - - - - - -

                                              Toolbar and Buttons

                                              -
                                              -
                                              -
                                              The toolbar and buttons can be added to dialog.
                                              -
                                              -
                                              - Open - Close -
                                              -
                                              - The dialog content. -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/basic.html deleted file mode 100644 index ee2aed1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/basic.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Basic Draggable - jQuery EasyUI Demo - - - - - - - -

                                              Basic Draggable

                                              -
                                              -
                                              -
                                              Move the boxes below by clicking on it with mouse.
                                              -
                                              -
                                              -
                                              -
                                              -
                                              Title
                                              -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/constain.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/constain.html deleted file mode 100644 index ae6eee1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/constain.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Constrain Draggable - jQuery EasyUI Demo - - - - - - - -

                                              Constrain Draggable

                                              -
                                              -
                                              -
                                              The draggable object can only be moved within its parent container.
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/snap.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/snap.html deleted file mode 100644 index 0bf82b2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/draggable/snap.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Snap Draggable - jQuery EasyUI Demo - - - - - - - -

                                              Snap Draggable

                                              -
                                              -
                                              -
                                              This sample shows how to snap a draggable object to a 20x20 grid.
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/accept.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/accept.html deleted file mode 100644 index ab279f8..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/accept.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Accept a Drop - jQuery EasyUI Demo - - - - - - - -

                                              Accept a Drop

                                              -
                                              -
                                              -
                                              Some draggable object can not be accepted.
                                              -
                                              -
                                              -
                                              - drag me! -
                                              Drag 1
                                              -
                                              Drag 2
                                              -
                                              Drag 3
                                              -
                                              -
                                              - drop here! -
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/basic.html deleted file mode 100644 index 2ba8687..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/basic.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - Basic Droppable - jQuery EasyUI Demo - - - - - - - -

                                              Basic Droppable

                                              -
                                              -
                                              -
                                              Drag the boxed on left to the target area on right.
                                              -
                                              -
                                              -
                                              -
                                              Source
                                              -
                                              -
                                              Apple
                                              -
                                              Peach
                                              -
                                              Orange
                                              -
                                              -
                                              -
                                              -
                                              Target
                                              -
                                              -
                                              -
                                              -
                                              - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/sort.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/sort.html deleted file mode 100644 index ec5d966..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/droppable/sort.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Change Items Order - jQuery EasyUI Demo - - - - - - - -

                                              Change Items Order

                                              -
                                              -
                                              -
                                              Drag the list items to change their order.
                                              -
                                              -
                                              -
                                                -
                                              • Drag 1
                                              • -
                                              • Drag 2
                                              • -
                                              • Drag 3
                                              • -
                                              • Drag 4
                                              • -
                                              • Drag 5
                                              • -
                                              • Drag 6
                                              • -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/easyloader/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/easyloader/basic.html deleted file mode 100644 index 44a09eb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/easyloader/basic.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Basic EasyLoader - jQuery EasyUI Demo - - - - - - - -

                                              Basic EasyLoader

                                              -
                                              -
                                              -
                                              Click the buttons below to load components dynamically.
                                              -
                                              - -
                                              -
                                              -
                                              - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/basic.html deleted file mode 100644 index b8e1dc1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/basic.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Basic Form - jQuery EasyUI Demo - - - - - - - -

                                              Basic Form

                                              -
                                              -
                                              -
                                              Fill the form and submit it.
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - - - - - - - - - - - - - - - - - - - - - -
                                              Name:
                                              Email:
                                              Subject:
                                              Message:
                                              Language: - -
                                              -
                                              -
                                              -
                                              - Submit - Clear -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/form_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/form_data1.json deleted file mode 100644 index e6f6ab1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/form_data1.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name":"easyui", - "email":"easyui@gmail.com", - "subject":"Subject Title", - "message":"Message Content", - "language":"en" -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/load.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/load.html deleted file mode 100644 index dabb4ba..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/form/load.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Load Form Data - jQuery EasyUI Demo - - - - - - - -

                                              Load Form Data

                                              -
                                              -
                                              -
                                              Click the buttons below to load form data.
                                              -
                                              - -
                                              -
                                              -
                                              - - - - - - - - - - - - - - - - - - - - - -
                                              Name:
                                              Email:
                                              Subject:
                                              Message:
                                              Language: - -
                                              -
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/_content.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/_content.html deleted file mode 100644 index 66c1bd5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                              jQuery EasyUI framework help you build your web page easily.

                                              -
                                                -
                                              • easyui is a collection of user-interface plugin based on jQuery.
                                              • -
                                              • easyui provides essential functionality for building modern, interactive, javascript applications.
                                              • -
                                              • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                              • -
                                              • complete framework for HTML5 web page.
                                              • -
                                              • easyui save your time and scales while developing your products.
                                              • -
                                              • easyui is very easy but powerful.
                                              • -
                                              - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/addremove.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/addremove.html deleted file mode 100644 index daf8c04..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/addremove.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Add and Remove Layout - jQuery EasyUI Demo - - - - - - - -

                                              Add and Remove Layout

                                              -
                                              -
                                              -
                                              Click the buttons below to add or remove region panel of layout.
                                              -
                                              -
                                              - Select Region Panel: - - Add - Remove -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/autoheight.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/autoheight.html deleted file mode 100644 index bc71e94..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/autoheight.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Auto Height for Layout - jQuery EasyUI Demo - - - - - - - -

                                              Auto Height for Layout

                                              -
                                              -
                                              -
                                              This example shows how to auto adjust layout height after dynamically adding items.
                                              -
                                              - -
                                              -
                                              -
                                              -
                                              -
                                              -

                                              Panel Content.

                                              -

                                              Panel Content.

                                              -

                                              Panel Content.

                                              -

                                              Panel Content.

                                              -

                                              Panel Content.

                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/basic.html deleted file mode 100644 index a98cfc9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Layout - jQuery EasyUI Demo - - - - - - - -

                                              Basic Layout

                                              -
                                              -
                                              -
                                              The layout contains north,south,west,east and center regions.
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              - - - - - - - - - - - -
                                              Item IDProduct IDList PriceUnit CostAttributeStatus
                                              -
                                              -
                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/complex.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/complex.html deleted file mode 100644 index 29e6d41..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/complex.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Complex Layout - jQuery EasyUI Demo - - - - - - - -

                                              Complex Layout

                                              -
                                              -
                                              -
                                              This sample shows how to create a complex layout.
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                              -
                                                -
                                                -
                                                -
                                                -
                                                - content1 -
                                                -
                                                - content2 -
                                                -
                                                - content3 -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                - - - - - - - - - - - -
                                                Item IDProduct IDList PriceUnit CostAttributeStatus
                                                -
                                                -
                                                -
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/datagrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/full.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/full.html deleted file mode 100644 index c83bf07..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/full.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - Full Layout - jQuery EasyUI Demo - - - - - - - -
                                                north region
                                                -
                                                west content
                                                -
                                                east region
                                                -
                                                south region
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/nestedlayout.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/nestedlayout.html deleted file mode 100644 index 2e80b89..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/nestedlayout.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Nested Layout - jQuery EasyUI Demo - - - - - - - -

                                                Nested Layout

                                                -
                                                -
                                                -
                                                The layout region panel contains another layout or other components.
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/nocollapsible.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/nocollapsible.html deleted file mode 100644 index 3d2938e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/nocollapsible.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - No collapsible button in Layout - jQuery EasyUI Demo - - - - - - - -

                                                No collapsible button in Layout

                                                -
                                                -
                                                -
                                                The layout region panel has no collapsible button.
                                                -
                                                -
                                                -
                                                -
                                                -
                                                -
                                                - -
                                                -
                                                -
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/propertygrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/propertygrid_data1.json deleted file mode 100644 index 12b2d00..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/propertygrid_data1.json +++ /dev/null @@ -1,20 +0,0 @@ -{"total":7,"rows":[ - {"name":"Name","value":"Bill Smith","group":"ID Settings","editor":"text"}, - {"name":"Address","value":"","group":"ID Settings","editor":"text"}, - {"name":"Age","value":"40","group":"ID Settings","editor":"numberbox"}, - {"name":"Birthday","value":"01/02/2012","group":"ID Settings","editor":"datebox"}, - {"name":"SSN","value":"123-456-7890","group":"ID Settings","editor":"text"}, - {"name":"Email","value":"bill@gmail.com","group":"Marketing Settings","editor":{ - "type":"validatebox", - "options":{ - "validType":"email" - } - }}, - {"name":"FrequentBuyer","value":"false","group":"Marketing Settings","editor":{ - "type":"checkbox", - "options":{ - "on":true, - "off":false - } - }} -]} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/tree_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/layout/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/basic.html deleted file mode 100644 index 7e0ed7a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/basic.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Basic LinkButton - jQuery EasyUI Demo - - - - - - - -

                                                Basic LinkButton

                                                -
                                                -
                                                -
                                                Buttons can be created from <a/> link.
                                                -
                                                -
                                                -
                                                - Add - Remove - Save - Cut - Text Button -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/group.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/group.html deleted file mode 100644 index 4560e90..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/group.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Button Group - jQuery EasyUI Demo - - - - - - - -

                                                Button Group

                                                -
                                                -
                                                -
                                                In a button group only one button can be selected.
                                                -
                                                -
                                                - -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/iconalign.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/iconalign.html deleted file mode 100644 index 4c044a4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/iconalign.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Icon Align on LinkButton - jQuery EasyUI Demo - - - - - - - -

                                                Icon Align on LinkButton

                                                -
                                                -
                                                -
                                                Change the icon align to place icon on left or right of button.
                                                -
                                                -
                                                -
                                                - Add - Remove - Save - Cut -
                                                -
                                                - Select Icon Align: - -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/plain.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/plain.html deleted file mode 100644 index 6331f0a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/plain.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Plain LinkButton - jQuery EasyUI Demo - - - - - - - -

                                                Plain LinkButton

                                                -
                                                -
                                                -
                                                The link buttons have plain effect.
                                                -
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/toggle.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/toggle.html deleted file mode 100644 index d2df604..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/linkbutton/toggle.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Toggle Button - jQuery EasyUI Demo - - - - - - - -

                                                Toggle Button

                                                -
                                                -
                                                -
                                                Click the button below to switch its selected state.
                                                -
                                                -
                                                -
                                                - Add - Remove - Save - Cut - Text Button -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/basic.html deleted file mode 100644 index c5d15ee..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/basic.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Basic Menu - jQuery EasyUI Demo - - - - - - - -

                                                Basic Menu

                                                -
                                                -
                                                -
                                                Right click on page to display menu.
                                                -
                                                -
                                                - -
                                                -
                                                New
                                                -
                                                - Open -
                                                -
                                                Word
                                                -
                                                Excel
                                                -
                                                PowerPoint
                                                -
                                                - M1 -
                                                -
                                                sub1
                                                -
                                                sub2
                                                -
                                                - Sub -
                                                -
                                                sub21
                                                -
                                                sub22
                                                -
                                                sub23
                                                -
                                                -
                                                -
                                                sub3
                                                -
                                                -
                                                -
                                                - Window Demos -
                                                -
                                                Window
                                                -
                                                Dialog
                                                - -
                                                -
                                                -
                                                -
                                                -
                                                Save
                                                -
                                                Print
                                                - -
                                                Exit
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/customitem.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/customitem.html deleted file mode 100644 index 03c0b33..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/customitem.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Custom Menu Item - jQuery EasyUI Demo - - - - - - - -

                                                Custom Menu Item

                                                -
                                                -
                                                -
                                                Right click on page to display menu, move to the 'Open' item to display its custom sub content.
                                                -
                                                -
                                                -
                                                -
                                                New
                                                -
                                                - Open - -
                                                -
                                                Save
                                                -
                                                Print
                                                - -
                                                Exit
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/events.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/events.html deleted file mode 100644 index 9e8bea3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menu/events.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Menu Events - jQuery EasyUI Demo - - - - - - - -

                                                Menu Events

                                                -
                                                -
                                                -
                                                Right click on page to display menu and click an item.
                                                -
                                                -
                                                -
                                                -
                                                New
                                                -
                                                Save
                                                -
                                                Print
                                                - -
                                                Exit
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menubutton/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menubutton/actions.html deleted file mode 100644 index 7ec5feb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menubutton/actions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - MenuButton Actions - jQuery EasyUI Demo - - - - - - - -

                                                MenuButton Actions

                                                -
                                                -
                                                -
                                                Click the buttons below to perform actions.
                                                -
                                                - -
                                                - Home - Edit - Help - About -
                                                -
                                                -
                                                Undo
                                                -
                                                Redo
                                                - -
                                                Cut
                                                -
                                                Copy
                                                -
                                                Paste
                                                - -
                                                - Toolbar -
                                                -
                                                Address
                                                -
                                                Link
                                                -
                                                Navigation Toolbar
                                                -
                                                Bookmark Toolbar
                                                - -
                                                New Toolbar...
                                                -
                                                -
                                                -
                                                Delete
                                                -
                                                Select All
                                                -
                                                -
                                                -
                                                Help
                                                -
                                                Update
                                                -
                                                About
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menubutton/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menubutton/basic.html deleted file mode 100644 index 28bb67e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/menubutton/basic.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Basic MenuButton - jQuery EasyUI Demo - - - - - - - -

                                                Basic MenuButton

                                                -
                                                -
                                                -
                                                Move mouse over the button to drop down menu.
                                                -
                                                -
                                                -
                                                - Home - Edit - Help - About -
                                                -
                                                -
                                                Undo
                                                -
                                                Redo
                                                - -
                                                Cut
                                                -
                                                Copy
                                                -
                                                Paste
                                                - -
                                                - Toolbar -
                                                -
                                                Address
                                                -
                                                Link
                                                -
                                                Navigation Toolbar
                                                -
                                                Bookmark Toolbar
                                                - -
                                                New Toolbar...
                                                -
                                                -
                                                -
                                                Delete
                                                -
                                                Select All
                                                -
                                                -
                                                -
                                                Help
                                                -
                                                Update
                                                -
                                                About
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/alert.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/alert.html deleted file mode 100644 index 35c6bf9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/alert.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Alert Messager - jQuery EasyUI Demo - - - - - - - -

                                                Alert Messager

                                                -
                                                -
                                                -
                                                Click on each button to display different alert message box.
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/basic.html deleted file mode 100644 index b9637ab..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/basic.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - Basic Messager - jQuery EasyUI Demo - - - - - - - -

                                                Basic Messager

                                                -
                                                -
                                                -
                                                Click on each button to see a distinct message box.
                                                -
                                                -
                                                - Show - Slide - Fade - Progress -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/interactive.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/interactive.html deleted file mode 100644 index 12b9298..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/interactive.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Interactive Messager - jQuery EasyUI Demo - - - - - - - -

                                                Interactive Messager

                                                -
                                                -
                                                -
                                                Click on each button to display interactive message box.
                                                -
                                                -
                                                - Confirm - Prompt -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/position.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/position.html deleted file mode 100644 index f7f241a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/messager/position.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Message Box Position - jQuery EasyUI Demo - - - - - - - -

                                                Message Box Position

                                                -
                                                -
                                                -
                                                Click the buttons below to display message box on different position.
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/basic.html deleted file mode 100644 index c34f4fc..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/basic.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Basic NumberBox - jQuery EasyUI Demo - - - - - - - -

                                                Basic NumberBox

                                                -
                                                -
                                                -
                                                The Box can only input number.
                                                -
                                                -
                                                - -
                                                - Value: -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/format.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/format.html deleted file mode 100644 index fe14b65..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/format.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Format NumberBox - jQuery EasyUI Demo - - - - - - - -

                                                Format NumberBox

                                                -
                                                -
                                                -
                                                Number formatting is the ability to control how a number is displayed.
                                                -
                                                -
                                                - - - - - - - - - - - - - - - - - - - - - -
                                                Number in the United States
                                                Number in France
                                                Currency:USD
                                                Currency:EUR
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/range.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/range.html deleted file mode 100644 index e91a6b0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberbox/range.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Number Range - jQuery EasyUI Demo - - - - - - - -

                                                Number Range

                                                -
                                                -
                                                -
                                                The value is constrained to a range between 10 and 90.
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/basic.html deleted file mode 100644 index df62d96..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/basic.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Basic NumberSpinner - jQuery EasyUI Demo - - - - - - - -

                                                Basic NumberSpinner

                                                -
                                                -
                                                -
                                                Click spinner button to change value.
                                                -
                                                -
                                                - -
                                                - Value: -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/increment.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/increment.html deleted file mode 100644 index 35cd86c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/increment.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Increment Number - jQuery EasyUI Demo - - - - - - - -

                                                Increment Number

                                                -
                                                -
                                                -
                                                The sample shows how to set the increment step.
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/range.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/range.html deleted file mode 100644 index 02d8371..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/numberspinner/range.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Number Range - jQuery EasyUI Demo - - - - - - - -

                                                Number Range

                                                -
                                                -
                                                -
                                                The value is constrained to a range between 10 and 100.
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/basic.html deleted file mode 100644 index cfd62cf..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic Pagination - jQuery EasyUI Demo - - - - - - - -

                                                Basic Pagination

                                                -
                                                -
                                                -
                                                The user can change page number and page size on page bar.
                                                -
                                                -
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/custombuttons.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/custombuttons.html deleted file mode 100644 index 15ea480..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/custombuttons.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Custom Pagination Buttons - jQuery EasyUI Demo - - - - - - - -

                                                Custom Pagination Buttons

                                                -
                                                -
                                                -
                                                The customized buttons can be append to page bar.
                                                -
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/simple.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/simple.html deleted file mode 100644 index 7009970..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/pagination/simple.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Simplify Pagination - jQuery EasyUI Demo - - - - - - - -

                                                Simplify Pagination

                                                -
                                                -
                                                -
                                                The sample shows how to simplify pagination.
                                                -
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/_content.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                Here is the content loaded via AJAX.

                                                -
                                                  -
                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                • -
                                                • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                • -
                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                • -
                                                • complete framework for HTML5 web page.
                                                • -
                                                • easyui save your time and scales while developing your products.
                                                • -
                                                • easyui is very easy but powerful.
                                                • -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/basic.html deleted file mode 100644 index cb87f92..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/basic.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Basic Panel - jQuery EasyUI Demo - - - - - - - -

                                                Basic Panel

                                                -
                                                -
                                                -
                                                The panel is a container for other components or elements.
                                                -
                                                -
                                                - Open - Close -
                                                -
                                                -

                                                jQuery EasyUI framework help you build your web page easily.

                                                -
                                                  -
                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                • -
                                                • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                • -
                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                • -
                                                • complete framework for HTML5 web page.
                                                • -
                                                • easyui save your time and scales while developing your products.
                                                • -
                                                • easyui is very easy but powerful.
                                                • -
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/customtools.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/customtools.html deleted file mode 100644 index c3d72cb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/customtools.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Custom Panel Tools - jQuery EasyUI Demo - - - - - - - -

                                                Custom Panel Tools

                                                -
                                                -
                                                -
                                                Click the right top buttons to perform actions with panel.
                                                -
                                                -
                                                -
                                                -

                                                jQuery EasyUI framework help you build your web page easily.

                                                -
                                                  -
                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                • -
                                                • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                • -
                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                • -
                                                • complete framework for HTML5 web page.
                                                • -
                                                • easyui save your time and scales while developing your products.
                                                • -
                                                • easyui is very easy but powerful.
                                                • -
                                                -
                                                -
                                                - - - - -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/loadcontent.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/loadcontent.html deleted file mode 100644 index 865ccb5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/loadcontent.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Load Panel Content - jQuery EasyUI Demo - - - - - - - -

                                                Load Panel Content

                                                -
                                                -
                                                -
                                                Click the refresh button on top right of panel to load content.
                                                -
                                                -
                                                -
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/nestedpanel.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/nestedpanel.html deleted file mode 100644 index 348d19e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/nestedpanel.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Nested Panel - jQuery EasyUI Demo - - - - - - - -

                                                Nested Panel

                                                -
                                                -
                                                -
                                                The panel can be placed inside containers and can contain other components.
                                                -
                                                -
                                                -
                                                -
                                                -
                                                - Left Content -
                                                -
                                                - Right Content -
                                                -
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/paneltools.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/paneltools.html deleted file mode 100644 index f708916..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/panel/paneltools.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Panel Tools - jQuery EasyUI Demo - - - - - - - -

                                                Panel Tools

                                                -
                                                -
                                                -
                                                Click the right top buttons to perform actions with panel.
                                                -
                                                - -
                                                -
                                                -

                                                jQuery EasyUI framework help you build your web page easily.

                                                -
                                                  -
                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                • -
                                                • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                • -
                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                • -
                                                • complete framework for HTML5 web page.
                                                • -
                                                • easyui save your time and scales while developing your products.
                                                • -
                                                • easyui is very easy but powerful.
                                                • -
                                                -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/progressbar/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/progressbar/basic.html deleted file mode 100644 index a1eb973..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/progressbar/basic.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Basic ProgressBar - jQuery EasyUI Demo - - - - - - - -

                                                Basic ProgressBar

                                                -
                                                -
                                                -
                                                Click the button below to show progress information.
                                                -
                                                -
                                                - Start -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/basic.html deleted file mode 100644 index 064c20f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/basic.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Basic PropertyGrid - jQuery EasyUI Demo - - - - - - - -

                                                Basic PropertyGrid

                                                -
                                                -
                                                -
                                                Click on row to change each property value.
                                                -
                                                - - -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/customcolumns.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/customcolumns.html deleted file mode 100644 index f8bc494..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/customcolumns.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Customize Columns of PropertyGrid - jQuery EasyUI Demo - - - - - - - -

                                                Customize Columns of PropertyGrid

                                                -
                                                -
                                                -
                                                The columns of PropertyGrid can be changed.
                                                -
                                                -
                                                - -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/groupformat.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/groupformat.html deleted file mode 100644 index e847a74..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/groupformat.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Group Format - jQuery EasyUI Demo - - - - - - - -

                                                Group Format

                                                -
                                                -
                                                -
                                                The user can change the group information.
                                                -
                                                -
                                                - -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/propertygrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/propertygrid_data1.json deleted file mode 100644 index 12b2d00..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/propertygrid/propertygrid_data1.json +++ /dev/null @@ -1,20 +0,0 @@ -{"total":7,"rows":[ - {"name":"Name","value":"Bill Smith","group":"ID Settings","editor":"text"}, - {"name":"Address","value":"","group":"ID Settings","editor":"text"}, - {"name":"Age","value":"40","group":"ID Settings","editor":"numberbox"}, - {"name":"Birthday","value":"01/02/2012","group":"ID Settings","editor":"datebox"}, - {"name":"SSN","value":"123-456-7890","group":"ID Settings","editor":"text"}, - {"name":"Email","value":"bill@gmail.com","group":"Marketing Settings","editor":{ - "type":"validatebox", - "options":{ - "validType":"email" - } - }}, - {"name":"FrequentBuyer","value":"false","group":"Marketing Settings","editor":{ - "type":"checkbox", - "options":{ - "on":true, - "off":false - } - }} -]} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/resizable/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/resizable/basic.html deleted file mode 100644 index 1c274d6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/resizable/basic.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Basic Resizable - jQuery EasyUI Demo - - - - - - - -

                                                Basic Resizable

                                                -
                                                -
                                                -
                                                Click on the edge of box and move the edge to resize the box.
                                                -
                                                -
                                                -
                                                -
                                                Resize Me
                                                -
                                                -
                                                -
                                                Title
                                                -
                                                Drag and Resize Me
                                                -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/searchbox/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/searchbox/basic.html deleted file mode 100644 index 602d177..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/searchbox/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic SearchBox - jQuery EasyUI Demo - - - - - - - -

                                                Basic SearchBox

                                                -
                                                -
                                                -
                                                Click search button or press enter key in input box to do searching.
                                                -
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/searchbox/category.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/searchbox/category.html deleted file mode 100644 index 0d1103a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/searchbox/category.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Search Category - jQuery EasyUI Demo - - - - - - - -

                                                Search Category

                                                -
                                                -
                                                -
                                                Select a category and click search button or press enter key in input box to do searching.
                                                -
                                                -
                                                - -
                                                -
                                                All News
                                                -
                                                Sports News
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/basic.html deleted file mode 100644 index 3c96f93..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/basic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Basic Slider - jQuery EasyUI Demo - - - - - - - -

                                                Basic Slider

                                                -
                                                -
                                                -
                                                Drag the slider to change value.
                                                -
                                                -
                                                -
                                                - -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/formattip.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/formattip.html deleted file mode 100644 index 6114bd1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/formattip.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Format Tip Information - jQuery EasyUI Demo - - - - - - - -

                                                Format Tip Information

                                                -
                                                -
                                                -
                                                This sample shows how to format tip information.
                                                -
                                                -
                                                -
                                                - -
                                                -
                                                jQuery EasyUI
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/rule.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/rule.html deleted file mode 100644 index 49623a2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/rule.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Slider Rule - jQuery EasyUI Demo - - - - - - - -

                                                Slider Rule

                                                -
                                                -
                                                -
                                                This sample shows how to define slider rule.
                                                -
                                                -
                                                -
                                                - -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/vertical.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/vertical.html deleted file mode 100644 index 42676e1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/slider/vertical.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Vertical Slider - jQuery EasyUI Demo - - - - - - - -

                                                Vertical Slider

                                                -
                                                -
                                                -
                                                This sample shows how to create a vertical slider.
                                                -
                                                -
                                                - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/splitbutton/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/splitbutton/actions.html deleted file mode 100644 index 795fe8c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/splitbutton/actions.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - SplitButton Actions - jQuery EasyUI Demo - - - - - - - -

                                                SplitButton Actions

                                                -
                                                -
                                                -
                                                Click the buttons below to perform actions.
                                                -
                                                - -
                                                - Home - Edit - Ok - Help -
                                                -
                                                -
                                                Undo
                                                -
                                                Redo
                                                - -
                                                Cut
                                                -
                                                Copy
                                                -
                                                Paste
                                                - -
                                                - Toolbar -
                                                -
                                                Address
                                                -
                                                Link
                                                -
                                                Navigation Toolbar
                                                -
                                                Bookmark Toolbar
                                                - -
                                                New Toolbar...
                                                -
                                                -
                                                -
                                                Delete
                                                -
                                                Select All
                                                -
                                                -
                                                -
                                                Ok
                                                -
                                                Cancel
                                                -
                                                -
                                                -
                                                Help
                                                -
                                                Update
                                                -
                                                - About - -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/splitbutton/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/splitbutton/basic.html deleted file mode 100644 index 0c3a3f6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/splitbutton/basic.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Basic SplitButton - jQuery EasyUI Demo - - - - - - - -

                                                Basic SplitButton

                                                -
                                                -
                                                -
                                                Move mouse over the arrow area of button to drop down menu.
                                                -
                                                -
                                                -
                                                - Home - Edit - Ok - Help -
                                                -
                                                -
                                                Undo
                                                -
                                                Redo
                                                - -
                                                Cut
                                                -
                                                Copy
                                                -
                                                Paste
                                                - -
                                                - Toolbar -
                                                -
                                                Address
                                                -
                                                Link
                                                -
                                                Navigation Toolbar
                                                -
                                                Bookmark Toolbar
                                                - -
                                                New Toolbar...
                                                -
                                                -
                                                -
                                                Delete
                                                -
                                                Select All
                                                -
                                                -
                                                -
                                                Ok
                                                -
                                                Cancel
                                                -
                                                -
                                                -
                                                Help
                                                -
                                                Update
                                                -
                                                - About - -
                                                -
                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/_content.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                Here is the content loaded via AJAX.

                                                -
                                                  -
                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                • -
                                                • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                • -
                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                • -
                                                • complete framework for HTML5 web page.
                                                • -
                                                • easyui save your time and scales while developing your products.
                                                • -
                                                • easyui is very easy but powerful.
                                                • -
                                                - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/autoheight.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/autoheight.html deleted file mode 100644 index 6c5b4da..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/autoheight.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Auto Height for Tabs - jQuery EasyUI Demo - - - - - - - -

                                                Auto Height for Tabs

                                                -
                                                -
                                                -
                                                The tabs height is auto adjusted according to tab panel content.
                                                -
                                                -
                                                -
                                                -
                                                -

                                                jQuery EasyUI framework help you build your web page easily.

                                                -
                                                  -
                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                • -
                                                • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                • -
                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                • -
                                                • complete framework for HTML5 web page.
                                                • -
                                                • easyui save your time and scales while developing your products.
                                                • -
                                                • easyui is very easy but powerful.
                                                • -
                                                -
                                                -
                                                -
                                                  -
                                                  -
                                                  - This is the help content. -
                                                  -
                                                  - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/basic.html deleted file mode 100644 index 00233cc..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/basic.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Basic Tabs - jQuery EasyUI Demo - - - - - - - -

                                                  Basic Tabs

                                                  -
                                                  -
                                                  -
                                                  Click tab strip to swap tab panel content.
                                                  -
                                                  -
                                                  -
                                                  -
                                                  -

                                                  jQuery EasyUI framework help you build your web page easily.

                                                  -
                                                    -
                                                  • easyui is a collection of user-interface plugin based on jQuery.
                                                  • -
                                                  • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                  • -
                                                  • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                  • -
                                                  • complete framework for HTML5 web page.
                                                  • -
                                                  • easyui save your time and scales while developing your products.
                                                  • -
                                                  • easyui is very easy but powerful.
                                                  • -
                                                  -
                                                  -
                                                  -
                                                    -
                                                    -
                                                    - This is the help content. -
                                                    -
                                                    - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/fixedwidth.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/fixedwidth.html deleted file mode 100644 index 2526a32..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/fixedwidth.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Fixed Tab Width - jQuery EasyUI Demo - - - - - - - -

                                                    Fixed Tab Width

                                                    -
                                                    -
                                                    -
                                                    The tab strips have fixed width and height.
                                                    -
                                                    -
                                                    -
                                                    -
                                                    -

                                                    Home Content.

                                                    -
                                                    -
                                                    -

                                                    Maps Content.

                                                    -
                                                    -
                                                    -

                                                    Journal Content.

                                                    -
                                                    -
                                                    -

                                                    History Content.

                                                    -
                                                    -
                                                    -

                                                    References Content.

                                                    -
                                                    -
                                                    -

                                                    Contact Content.

                                                    -
                                                    -
                                                    - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/hover.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/hover.html deleted file mode 100644 index f5ce183..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/hover.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Hover Tabs - jQuery EasyUI Demo - - - - - - - -

                                                    Hover Tabs

                                                    -
                                                    -
                                                    -
                                                    Move mouse over the tab strip to open the tab panel.
                                                    -
                                                    -
                                                    -
                                                    -
                                                    -

                                                    jQuery EasyUI framework help you build your web page easily.

                                                    -
                                                      -
                                                    • easyui is a collection of user-interface plugin based on jQuery.
                                                    • -
                                                    • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                    • -
                                                    • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                    • -
                                                    • complete framework for HTML5 web page.
                                                    • -
                                                    • easyui save your time and scales while developing your products.
                                                    • -
                                                    • easyui is very easy but powerful.
                                                    • -
                                                    -
                                                    -
                                                    -
                                                      -
                                                      -
                                                      - This is the help content. -
                                                      -
                                                      - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/modem.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/modem.png deleted file mode 100644 index be5a2eb..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/modem.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/pda.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/pda.png deleted file mode 100644 index 1458d9b..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/pda.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/scanner.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/scanner.png deleted file mode 100644 index 974635d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/scanner.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/tablet.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/tablet.png deleted file mode 100644 index fa871f5..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/images/tablet.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/nestedtabs.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/nestedtabs.html deleted file mode 100644 index 15c426a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/nestedtabs.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Nested Tabs - jQuery EasyUI Demo - - - - - - - -

                                                      Nested Tabs

                                                      -
                                                      -
                                                      -
                                                      The tab panel can contain sub tabs or other components.
                                                      -
                                                      -
                                                      -
                                                      -
                                                      -
                                                      -
                                                      Content 1
                                                      -
                                                      Content 2
                                                      -
                                                      Content 3
                                                      -
                                                      -
                                                      -
                                                      -
                                                      - -
                                                      -
                                                      - - - - - - - - - - - - - - - - - - - - -
                                                      Title1Title2Title3
                                                      d11d12d13
                                                      d21d22d23
                                                      -
                                                      -
                                                      - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/striptools.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/striptools.html deleted file mode 100644 index bb611eb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/striptools.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Tabs Strip Tools - jQuery EasyUI Demo - - - - - - - -

                                                      Tabs Strip Tools

                                                      -
                                                      -
                                                      -
                                                      Click the mini-buttons on the tab strip to perform actions.
                                                      -
                                                      -
                                                      -
                                                      -
                                                      -

                                                      jQuery EasyUI framework help you build your web page easily.

                                                      -
                                                        -
                                                      • easyui is a collection of user-interface plugin based on jQuery.
                                                      • -
                                                      • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                      • -
                                                      • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                      • -
                                                      • complete framework for HTML5 web page.
                                                      • -
                                                      • easyui save your time and scales while developing your products.
                                                      • -
                                                      • easyui is very easy but powerful.
                                                      • -
                                                      -
                                                      -
                                                      - This is the help content. -
                                                      -
                                                      -
                                                      - - - -
                                                      - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabimage.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabimage.html deleted file mode 100644 index aa93354..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabimage.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Tabs with Images - jQuery EasyUI Demo - - - - - - - -

                                                      Tabs with Images

                                                      -
                                                      -
                                                      -
                                                      The tab strip can display big images.
                                                      -
                                                      -
                                                      -
                                                      -
                                                      -

                                                      A modem (modulator-demodulator) is a device that modulates an analog carrier signal to encode digital information, and also demodulates such a carrier signal to decode the transmitted information.

                                                      -
                                                      -
                                                      -

                                                      In computing, an image scanner—often abbreviated to just scanner—is a device that optically scans images, printed text, handwriting, or an object, and converts it to a digital image.

                                                      -
                                                      -
                                                      -

                                                      A personal digital assistant (PDA), also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. PDAs are largely considered obsolete with the widespread adoption of smartphones.

                                                      -
                                                      -
                                                      -

                                                      A tablet computer, or simply tablet, is a one-piece mobile computer. Devices typically have a touchscreen, with finger or stylus gestures replacing the conventional computer mouse.

                                                      -
                                                      -
                                                      - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabposition.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabposition.html deleted file mode 100644 index de67ac4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabposition.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Tab Position - jQuery EasyUI Demo - - - - - - - -

                                                      Tab Position

                                                      -
                                                      -
                                                      -
                                                      Click the 'position' drop-down list and select an item to change the tab position.
                                                      -
                                                      -
                                                      - Position: - -
                                                      -
                                                      -
                                                      -

                                                      jQuery EasyUI framework help you build your web page easily.

                                                      -
                                                        -
                                                      • easyui is a collection of user-interface plugin based on jQuery.
                                                      • -
                                                      • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                      • -
                                                      • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                      • -
                                                      • complete framework for HTML5 web page.
                                                      • -
                                                      • easyui save your time and scales while developing your products.
                                                      • -
                                                      • easyui is very easy but powerful.
                                                      • -
                                                      -
                                                      -
                                                      -
                                                        -
                                                        -
                                                        - This is the help content. -
                                                        -
                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabstools.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabstools.html deleted file mode 100644 index 3851f50..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tabstools.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Tabs Tools - jQuery EasyUI Demo - - - - - - - -

                                                        Tabs Tools

                                                        -
                                                        -
                                                        -
                                                        Click the buttons on the top right of tabs header to add or remove tab panel.
                                                        -
                                                        -
                                                        -
                                                        -
                                                        -
                                                        - - -
                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tree_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tabs/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/actions.html deleted file mode 100644 index 9d43e89..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/actions.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - TimeSpinner Actions - jQuery EasyUI Demo - - - - - - - -

                                                        TimeSpinner Actions

                                                        -
                                                        -
                                                        -
                                                        Click the buttons below to perform actions.
                                                        -
                                                        - - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/basic.html deleted file mode 100644 index e62666d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic TimeSpinner - jQuery EasyUI Demo - - - - - - - -

                                                        Basic TimeSpinner

                                                        -
                                                        -
                                                        -
                                                        Click spin button to adjust time.
                                                        -
                                                        -
                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/range.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/range.html deleted file mode 100644 index d2cce16..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/timespinner/range.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Time Range - jQuery EasyUI Demo - - - - - - - -

                                                        Time Range

                                                        -
                                                        -
                                                        -
                                                        The time value is constrained in specified range.
                                                        -
                                                        -
                                                        - From 08:30 to 18:00 -
                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/_content.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                        Here is the content loaded via AJAX.

                                                        -
                                                          -
                                                        • easyui is a collection of user-interface plugin based on jQuery.
                                                        • -
                                                        • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                        • -
                                                        • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                        • -
                                                        • complete framework for HTML5 web page.
                                                        • -
                                                        • easyui save your time and scales while developing your products.
                                                        • -
                                                        • easyui is very easy but powerful.
                                                        • -
                                                        - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/_dialog.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/_dialog.html deleted file mode 100644 index 2c1b464..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/_dialog.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Dialog Content - - -
                                                        -
                                                        -
                                                        User Name:
                                                        - -
                                                        -
                                                        -
                                                        Password:
                                                        - -
                                                        -
                                                        - Login - Cancel -
                                                        -
                                                        - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/ajax.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/ajax.html deleted file mode 100644 index 3274d82..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/ajax.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Ajax Tooltip - jQuery EasyUI Demo - - - - - - - -

                                                        Ajax Tooltip

                                                        -
                                                        -
                                                        -
                                                        The tooltip content can be loaded via AJAX.
                                                        -
                                                        -
                                                        - Hove me to display tooltip content via AJAX. - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/basic.html deleted file mode 100644 index 1cccde2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/basic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Basic Tooltip - jQuery EasyUI Demo - - - - - - - -

                                                        Basic Tooltip

                                                        -
                                                        -
                                                        -
                                                        Hover the links to display tooltip message.
                                                        -
                                                        -
                                                        -

                                                        The tooltip can use each elements title attribute. - Hover me to display tooltip. -

                                                        - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/customcontent.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/customcontent.html deleted file mode 100644 index c55ec1d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/customcontent.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Custom Tooltip Content - jQuery EasyUI Demo - - - - - - - -

                                                        Custom Tooltip Content

                                                        -
                                                        -
                                                        -
                                                        Access to each elements attribute to get the tooltip content.
                                                        -
                                                        -
                                                        -
                                                        - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/customstyle.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/customstyle.html deleted file mode 100644 index a739e66..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/customstyle.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Custom Tooltip Style - jQuery EasyUI Demo - - - - - - - -

                                                        Custom Tooltip Style

                                                        -
                                                        -
                                                        -
                                                        This sample shows how to change the tooltip style.
                                                        -
                                                        -
                                                        -
                                                        -
                                                        Hover Me
                                                        -
                                                        -
                                                        -
                                                        Hover Me
                                                        -
                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/position.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/position.html deleted file mode 100644 index b33e7e0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/position.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Tooltip Position - jQuery EasyUI Demo - - - - - - - -

                                                        Tooltip Position

                                                        -
                                                        -
                                                        -
                                                        Click the drop-down list below to change where the tooltip appears.
                                                        -
                                                        -
                                                        - Select position: - -
                                                        -
                                                        Hover Me
                                                        -
                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/toolbar.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/toolbar.html deleted file mode 100644 index adc4a64..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/toolbar.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Tooltip as Toolbar - jQuery EasyUI Demo - - - - - - - -

                                                        Tooltip as Toolbar

                                                        -
                                                        -
                                                        -
                                                        This sample shows how to create a tooltip style toolbar.
                                                        -
                                                        -
                                                        -
                                                        -

                                                        Hover me to display toolbar.

                                                        -
                                                        -
                                                        -
                                                        - - - - - -
                                                        -
                                                        - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/tooltipdialog.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/tooltipdialog.html deleted file mode 100644 index 4ce5f66..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tooltip/tooltipdialog.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Tooltip Dialog - jQuery EasyUI Demo - - - - - - - -

                                                        Tooltip Dialog

                                                        -
                                                        -
                                                        -
                                                        This sample shows how to create a tooltip dialog.
                                                        -
                                                        -
                                                        -
                                                        -

                                                        Click here to see the tooltip dialog. -

                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/actions.html deleted file mode 100644 index 7b3342c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/actions.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Tree Actions - jQuery EasyUI Demo - - - - - - - -

                                                        Tree Actions

                                                        -
                                                        -
                                                        -
                                                        Click the buttons below to perform actions.
                                                        -
                                                        - -
                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/animation.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/animation.html deleted file mode 100644 index 7afed71..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/animation.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Animation Tree - jQuery EasyUI Demo - - - - - - - -

                                                          Animation Tree

                                                          -
                                                          -
                                                          -
                                                          Apply 'animate' property to true to enable animation effect.
                                                          -
                                                          -
                                                          -
                                                            - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/basic.html deleted file mode 100644 index 21cdca4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/basic.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Basic Tree - jQuery EasyUI Demo - - - - - - - -

                                                            Basic Tree

                                                            -
                                                            -
                                                            -
                                                            Click the arrow on the left to expand or collapse nodes.
                                                            -
                                                            -
                                                            -
                                                              -
                                                            • - My Documents -
                                                                -
                                                              • - Photos -
                                                                  -
                                                                • - Friend -
                                                                • -
                                                                • - Wife -
                                                                • -
                                                                • - Company -
                                                                • -
                                                                -
                                                              • -
                                                              • - Program Files -
                                                                  -
                                                                • Intel
                                                                • -
                                                                • Java
                                                                • -
                                                                • Microsoft Office
                                                                • -
                                                                • Games
                                                                • -
                                                                -
                                                              • -
                                                              • index.html
                                                              • -
                                                              • about.html
                                                              • -
                                                              • welcome.html
                                                              • -
                                                              -
                                                            • -
                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/checkbox.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/checkbox.html deleted file mode 100644 index f859397..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/checkbox.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - CheckBox Tree - jQuery EasyUI Demo - - - - - - - -

                                                            CheckBox Tree

                                                            -
                                                            -
                                                            -
                                                            Tree nodes with check boxes.
                                                            -
                                                            -
                                                            - GetChecked -
                                                            - CascadeCheck - OnlyLeafCheck -
                                                            -
                                                              - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/contextmenu.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/contextmenu.html deleted file mode 100644 index 64dfec3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/contextmenu.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - Tree Context Menu - jQuery EasyUI Demo - - - - - - - -

                                                              Tree Context Menu

                                                              -
                                                              -
                                                              -
                                                              Right click on a node to display context menu.
                                                              -
                                                              -
                                                              -
                                                              -
                                                                -
                                                                -
                                                                Append
                                                                -
                                                                Remove
                                                                - -
                                                                Expand
                                                                -
                                                                Collapse
                                                                -
                                                                - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/dnd.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/dnd.html deleted file mode 100644 index 20943c8..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/dnd.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Drag Drop Tree Nodes - jQuery EasyUI Demo - - - - - - - -

                                                                Drag Drop Tree Nodes

                                                                -
                                                                -
                                                                -
                                                                Press mouse down and drag a node to another position.
                                                                -
                                                                -
                                                                -
                                                                  - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/editable.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/editable.html deleted file mode 100644 index 8223131..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/editable.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Editable Tree - jQuery EasyUI Demo - - - - - - - -

                                                                  Editable Tree

                                                                  -
                                                                  -
                                                                  -
                                                                  Click the node to begin edit, press enter key to stop edit or esc key to cancel edit.
                                                                  -
                                                                  -
                                                                  -
                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/icons.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/icons.html deleted file mode 100644 index 3dbc5a9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/icons.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Tree Node Icons - jQuery EasyUI Demo - - - - - - - -

                                                                    Tree Node Icons

                                                                    -
                                                                    -
                                                                    -
                                                                    This sample illustrates how to add icons to tree node.
                                                                    -
                                                                    -
                                                                    -
                                                                      - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/lines.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/lines.html deleted file mode 100644 index 074791f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/lines.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Tree Lines - jQuery EasyUI Demo - - - - - - - -

                                                                      Tree Lines

                                                                      -
                                                                      -
                                                                      -
                                                                      This sample shows how to show tree lines.
                                                                      -
                                                                      -
                                                                      -
                                                                      -
                                                                        - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/tree_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/tree_data2.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/tree_data2.json deleted file mode 100644 index 14e3429..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/tree/tree_data2.json +++ /dev/null @@ -1,61 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "state":"closed", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java" - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games" - }] - },{ - "id":16, - "text":"Actions", - "children":[{ - "text":"Add", - "iconCls":"icon-add" - },{ - "text":"Remove", - "iconCls":"icon-remove" - },{ - "text":"Save", - "iconCls":"icon-save" - },{ - "text":"Search", - "iconCls":"icon-search" - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/actions.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/actions.html deleted file mode 100644 index f1e0f81..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/actions.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - TreeGrid Actions - jQuery EasyUI Demo - - - - - - - -

                                                                        TreeGrid Actions

                                                                        -
                                                                        -
                                                                        -
                                                                        Click the buttons below to perform actions.
                                                                        -
                                                                        - - - - - - - - - - - -
                                                                        Task NamePersonsBegin DateEnd DateProgress
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/basic.html deleted file mode 100644 index 29d8c98..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/basic.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Basic TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                        Basic TreeGrid

                                                                        -
                                                                        -
                                                                        -
                                                                        TreeGrid allows you to expand or collapse group rows.
                                                                        -
                                                                        -
                                                                        - - - - - - - - -
                                                                        NameSizeModified Date
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/clientpagination.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/clientpagination.html deleted file mode 100644 index 3638df9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/clientpagination.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - Client Side Pagination in TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                        Client Side Pagination in TreeGrid

                                                                        -
                                                                        -
                                                                        -
                                                                        This sample shows how to implement client side pagination in TreeGrid.
                                                                        -
                                                                        -
                                                                        - - - - - - - - - - -
                                                                        Task NamePersonsBegin DateEnd DateProgress
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/contextmenu.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/contextmenu.html deleted file mode 100644 index 3156f34..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/contextmenu.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - TreeGrid ContextMenu - jQuery EasyUI Demo - - - - - - - -

                                                                        TreeGrid ContextMenu

                                                                        -
                                                                        -
                                                                        -
                                                                        Right click to display the context menu.
                                                                        -
                                                                        -
                                                                        - - - - - - - - - - -
                                                                        Task NamePersonsBegin DateEnd DateProgress
                                                                        -
                                                                        -
                                                                        Append
                                                                        -
                                                                        Remove
                                                                        - -
                                                                        Collapse
                                                                        -
                                                                        Expand
                                                                        -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/editable.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/editable.html deleted file mode 100644 index 0216bd1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/editable.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Editable TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                        Editable TreeGrid

                                                                        -
                                                                        -
                                                                        -
                                                                        Select one node and click edit button to perform editing.
                                                                        -
                                                                        -
                                                                        - Edit - Save - Cancel -
                                                                        - - - - - - - - - - -
                                                                        Task NamePersonsBegin DateEnd DateProgress
                                                                        - - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/footer.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/footer.html deleted file mode 100644 index 801583e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/footer.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - TreeGrid with Footer - jQuery EasyUI Demo - - - - - - - -

                                                                        TreeGrid with Footer

                                                                        -
                                                                        -
                                                                        -
                                                                        Show summary information on TreeGrid footer.
                                                                        -
                                                                        -
                                                                        -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/reports.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/reports.html deleted file mode 100644 index 034d8c3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/reports.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Reports using TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                        Reports using TreeGrid

                                                                        -
                                                                        -
                                                                        -
                                                                        Using TreeGrid to show complex reports.
                                                                        -
                                                                        -
                                                                        - - - - - - - - - - - - - - - - - - - - - - -
                                                                        Region
                                                                        20092010
                                                                        1st qrt.2st qrt.3st qrt.4st qrt.1st qrt.2st qrt.3st qrt.4st qrt.
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data1.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data1.json deleted file mode 100644 index 0313d46..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data1.json +++ /dev/null @@ -1,73 +0,0 @@ -[{ - "id":1, - "name":"C", - "size":"", - "date":"02/19/2010", - "children":[{ - "id":2, - "name":"Program Files", - "size":"120 MB", - "date":"03/20/2010", - "children":[{ - "id":21, - "name":"Java", - "size":"", - "date":"01/13/2010", - "state":"closed", - "children":[{ - "id":211, - "name":"java.exe", - "size":"142 KB", - "date":"01/13/2010" - },{ - "id":212, - "name":"jawt.dll", - "size":"5 KB", - "date":"01/13/2010" - }] - },{ - "id":22, - "name":"MySQL", - "size":"", - "date":"01/13/2010", - "state":"closed", - "children":[{ - "id":221, - "name":"my.ini", - "size":"10 KB", - "date":"02/26/2009" - },{ - "id":222, - "name":"my-huge.ini", - "size":"5 KB", - "date":"02/26/2009" - },{ - "id":223, - "name":"my-large.ini", - "size":"5 KB", - "date":"02/26/2009" - }] - }] - },{ - "id":3, - "name":"eclipse", - "size":"", - "date":"01/20/2010", - "children":[{ - "id":31, - "name":"eclipse.exe", - "size":"56 KB", - "date":"05/19/2009" - },{ - "id":32, - "name":"eclipse.ini", - "size":"1 KB", - "date":"04/20/2010" - },{ - "id":33, - "name":"notice.html", - "size":"7 KB", - "date":"03/17/2005" - }] - }] -}] \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data2.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data2.json deleted file mode 100644 index f917507..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data2.json +++ /dev/null @@ -1,11 +0,0 @@ -{"total":7,"rows":[ - {"id":1,"name":"All Tasks","begin":"3/4/2010","end":"3/20/2010","progress":60,"iconCls":"icon-ok"}, - {"id":2,"name":"Designing","begin":"3/4/2010","end":"3/10/2010","progress":100,"_parentId":1,"state":"closed"}, - {"id":21,"name":"Database","persons":2,"begin":"3/4/2010","end":"3/6/2010","progress":100,"_parentId":2}, - {"id":22,"name":"UML","persons":1,"begin":"3/7/2010","end":"3/8/2010","progress":100,"_parentId":2}, - {"id":23,"name":"Export Document","persons":1,"begin":"3/9/2010","end":"3/10/2010","progress":100,"_parentId":2}, - {"id":3,"name":"Coding","persons":2,"begin":"3/11/2010","end":"3/18/2010","progress":80}, - {"id":4,"name":"Testing","persons":1,"begin":"3/19/2010","end":"3/20/2010","progress":20} -],"footer":[ - {"name":"Total Persons:","persons":7,"iconCls":"icon-sum"} -]} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data3.json b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data3.json deleted file mode 100644 index 0475c38..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/treegrid/treegrid_data3.json +++ /dev/null @@ -1,13 +0,0 @@ -{"total":9,"rows":[ - {"id":1,"region":"Wyoming"}, - {"id":11,"region":"Albin","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":12,"region":"Canon","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":13,"region":"Egbert","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":2,"region":"Washington"}, - {"id":21,"region":"Bellingham","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":22,"region":"Chehalis","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":23,"region":"Ellensburg","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":24,"region":"Monroe","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2} -],"footer":[ - {"region":"Total","f1":14000,"f2":12600,"f3":13321,"f4":15281,"f5":14931,"f6":13461,"f7":14126,"f8":12866} -]} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/validatebox/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/validatebox/basic.html deleted file mode 100644 index 4746862..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/validatebox/basic.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Basic ValidateBox - jQuery EasyUI Demo - - - - - - - -

                                                                        Basic ValidateBox

                                                                        -
                                                                        -
                                                                        -
                                                                        It's easy to add validate logic to a input box.
                                                                        -
                                                                        -
                                                                        -
                                                                        - - - - - - - - - - - - - - - - - - - - - -
                                                                        User Name:
                                                                        Email:
                                                                        Birthday:
                                                                        URL:
                                                                        Phone:
                                                                        -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/validatebox/customtooltip.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/validatebox/customtooltip.html deleted file mode 100644 index 53ab216..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/validatebox/customtooltip.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - Custom ValidateBox Tooltip - jQuery EasyUI Demo - - - - - - - -

                                                                        Custom ValidateBox Tooltip

                                                                        -
                                                                        -
                                                                        -
                                                                        This sample shows how to display another tooltip message on a valid textbox.
                                                                        -
                                                                        -
                                                                        -
                                                                        - - - - - - - - - - - - - - - - - - - - - -
                                                                        User Name:
                                                                        Email:
                                                                        Birthday:
                                                                        URL:
                                                                        Phone:
                                                                        -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/basic.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/basic.html deleted file mode 100644 index f974a78..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic Window - jQuery EasyUI Demo - - - - - - - -

                                                                        Basic Window

                                                                        -
                                                                        -
                                                                        -
                                                                        Window can be dragged freely on screen.
                                                                        -
                                                                        -
                                                                        - Open - Close -
                                                                        -
                                                                        - The window content. -
                                                                        - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/customtools.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/customtools.html deleted file mode 100644 index 1572449..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/customtools.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Custom Window Tools - jQuery EasyUI Demo - - - - - - - -

                                                                        Custom Window Tools

                                                                        -
                                                                        -
                                                                        -
                                                                        Click the right top buttons to perform actions.
                                                                        -
                                                                        -
                                                                        - Open - Close -
                                                                        -
                                                                        - The window content. -
                                                                        -
                                                                        - - - - -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/inlinewindow.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/inlinewindow.html deleted file mode 100644 index a66cacd..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/inlinewindow.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Inline Window - jQuery EasyUI Demo - - - - - - - -

                                                                        Inline Window

                                                                        -
                                                                        -
                                                                        -
                                                                        The inline window stay inside its parent.
                                                                        -
                                                                        -
                                                                        - Open - Close -
                                                                        -
                                                                        -
                                                                        - This window stay inside its parent -
                                                                        -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/modalwindow.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/modalwindow.html deleted file mode 100644 index 6174815..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/modalwindow.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Modal Window - jQuery EasyUI Demo - - - - - - - -

                                                                        Modal Window

                                                                        -
                                                                        -
                                                                        -
                                                                        Click the open button below to open the modal window.
                                                                        -
                                                                        -
                                                                        - Open - Close -
                                                                        -
                                                                        - The window content. -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/windowlayout.html b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/windowlayout.html deleted file mode 100644 index 3478939..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/demo/window/windowlayout.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Window Layout - jQuery EasyUI Demo - - - - - - - -

                                                                        Window Layout

                                                                        -
                                                                        -
                                                                        -
                                                                        Using layout on window.
                                                                        -
                                                                        -
                                                                        - Open - Close -
                                                                        -
                                                                        -
                                                                        -
                                                                        -
                                                                        - jQuery EasyUI framework help you build your web page easily. -
                                                                        -
                                                                        - Ok - Cancel -
                                                                        -
                                                                        -
                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/dgloader.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/dgloader.js deleted file mode 100644 index 1080cbb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/dgloader.js +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************* -* 文 件 名:dgloader.js -* 文件描述:用于加载datagrid控件 -* 创 建 人:刘成文 -* 创建日期:2012-002 10:09:33 -********************************************/ -var pageTag = 'datagrid'; -if (!window.dgp) alert('初始化失败!'); -$(function () { - $('#'+dgp.id).datagrid({ - queryParams: dgp.query, - width: dgp.width, - height: dgp.height, - nowrap: true, - cache: false, - striped: true, - singleSelect: false, - idfield: dgp.idField, - pagination: dgp.paging, - pageSize: dgp.pageSize, - fitColumns: true, //列根据宽度调整 - fit: true, - url: dgp.dataUrl, - - //列 - columns: dgp.columns || null, - //工具栏 - toolbar: [ - - ], - //选择列 - onHeaderContextMenu: function (e, field) { - //DataGridExtend.headerContextMenu(e, field, $(this).attr('ID'), pageTag + '.' + $(this).attr('ID')) - }, - //加载成功的时候,初始化隐藏列 - onLoadSuccess: function (data) { - //DataGridExtend.loadSuccessInit($(this).attr('ID'), pageTag + '.' + $(this).attr('ID')); - // DataGridExtend.ShowTip_Url(); - }, - onLoadError: function () { - $.messager.alert('提示', '数据加载错误,请重新登录系统', 'error'); - } - }); - //搜素栏 - $(".datagrid-toolbar").append($(".searchBar")); - //工具栏 - $(".datagrid-toolbar").append($(".toolBar")); - //messageBar - $(".datagrid-toolbar").append($("#messageBar")); - - $(window).resize(function () { - $("#"+pageTag).datagrid("resize"); - }); - -}); - - -function test() { - alert('功能未实现!'); -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/easyloader.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/easyloader.js deleted file mode 100644 index 732e056..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/easyloader.js +++ /dev/null @@ -1,192 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function(){ -var _1={draggable:{js:"jquery.draggable.js"},droppable:{js:"jquery.droppable.js"},resizable:{js:"jquery.resizable.js"},linkbutton:{js:"jquery.linkbutton.js",css:"linkbutton.css"},progressbar:{js:"jquery.progressbar.js",css:"progressbar.css"},tooltip:{js:"jquery.tooltip.js",css:"tooltip.css"},pagination:{js:"jquery.pagination.js",css:"pagination.css",dependencies:["linkbutton"]},datagrid:{js:"jquery.datagrid.js",css:"datagrid.css",dependencies:["panel","resizable","linkbutton","pagination"]},treegrid:{js:"jquery.treegrid.js",css:"tree.css",dependencies:["datagrid"]},propertygrid:{js:"jquery.propertygrid.js",css:"propertygrid.css",dependencies:["datagrid"]},panel:{js:"jquery.panel.js",css:"panel.css"},window:{js:"jquery.window.js",css:"window.css",dependencies:["resizable","draggable","panel"]},dialog:{js:"jquery.dialog.js",css:"dialog.css",dependencies:["linkbutton","window"]},messager:{js:"jquery.messager.js",css:"messager.css",dependencies:["linkbutton","window","progressbar"]},layout:{js:"jquery.layout.js",css:"layout.css",dependencies:["resizable","panel"]},form:{js:"jquery.form.js"},menu:{js:"jquery.menu.js",css:"menu.css"},tabs:{js:"jquery.tabs.js",css:"tabs.css",dependencies:["panel","linkbutton"]},menubutton:{js:"jquery.menubutton.js",css:"menubutton.css",dependencies:["linkbutton","menu"]},splitbutton:{js:"jquery.splitbutton.js",css:"splitbutton.css",dependencies:["menubutton"]},accordion:{js:"jquery.accordion.js",css:"accordion.css",dependencies:["panel"]},calendar:{js:"jquery.calendar.js",css:"calendar.css"},combo:{js:"jquery.combo.js",css:"combo.css",dependencies:["panel","validatebox"]},combobox:{js:"jquery.combobox.js",css:"combobox.css",dependencies:["combo"]},combotree:{js:"jquery.combotree.js",dependencies:["combo","tree"]},combogrid:{js:"jquery.combogrid.js",dependencies:["combo","datagrid"]},validatebox:{js:"jquery.validatebox.js",css:"validatebox.css",dependencies:["tooltip"]},numberbox:{js:"jquery.numberbox.js",dependencies:["validatebox"]},searchbox:{js:"jquery.searchbox.js",css:"searchbox.css",dependencies:["menubutton"]},spinner:{js:"jquery.spinner.js",css:"spinner.css",dependencies:["validatebox"]},numberspinner:{js:"jquery.numberspinner.js",dependencies:["spinner","numberbox"]},timespinner:{js:"jquery.timespinner.js",dependencies:["spinner"]},tree:{js:"jquery.tree.js",css:"tree.css",dependencies:["draggable","droppable"]},datebox:{js:"jquery.datebox.js",css:"datebox.css",dependencies:["calendar","combo"]},datetimebox:{js:"jquery.datetimebox.js",dependencies:["datebox","timespinner"]},slider:{js:"jquery.slider.js",dependencies:["draggable"]},tooltip:{js:"jquery.tooltip.js"},parser:{js:"jquery.parser.js"}}; -var _2={"af":"easyui-lang-af.js","ar":"easyui-lang-ar.js","bg":"easyui-lang-bg.js","ca":"easyui-lang-ca.js","cs":"easyui-lang-cs.js","cz":"easyui-lang-cz.js","da":"easyui-lang-da.js","de":"easyui-lang-de.js","el":"easyui-lang-el.js","en":"easyui-lang-en.js","es":"easyui-lang-es.js","fr":"easyui-lang-fr.js","it":"easyui-lang-it.js","jp":"easyui-lang-jp.js","nl":"easyui-lang-nl.js","pl":"easyui-lang-pl.js","pt_BR":"easyui-lang-pt_BR.js","ru":"easyui-lang-ru.js","sv_SE":"easyui-lang-sv_SE.js","tr":"easyui-lang-tr.js","zh_CN":"easyui-lang-zh_CN.js","zh_TW":"easyui-lang-zh_TW.js"}; -var _3={}; -function _4(_5,_6){ -var _7=false; -var _8=document.createElement("script"); -_8.type="text/javascript"; -_8.language="javascript"; -_8.src=_5; -_8.onload=_8.onreadystatechange=function(){ -if(!_7&&(!_8.readyState||_8.readyState=="loaded"||_8.readyState=="complete")){ -_7=true; -_8.onload=_8.onreadystatechange=null; -if(_6){ -_6.call(_8); -} -} -}; -document.getElementsByTagName("head")[0].appendChild(_8); -}; -function _9(_a,_b){ -_4(_a,function(){ -document.getElementsByTagName("head")[0].removeChild(this); -if(_b){ -_b(); -} -}); -}; -function _c(_d,_e){ -var _f=document.createElement("link"); -_f.rel="stylesheet"; -_f.type="text/css"; -_f.media="screen"; -_f.href=_d; -document.getElementsByTagName("head")[0].appendChild(_f); -if(_e){ -_e.call(_f); -} -}; -function _10(_11,_12){ -_3[_11]="loading"; -var _13=_1[_11]; -var _14="loading"; -var _15=(easyloader.css&&_13["css"])?"loading":"loaded"; -if(easyloader.css&&_13["css"]){ -if(/^http/i.test(_13["css"])){ -var url=_13["css"]; -}else{ -var url=easyloader.base+"themes/"+easyloader.theme+"/"+_13["css"]; -} -_c(url,function(){ -_15="loaded"; -if(_14=="loaded"&&_15=="loaded"){ -_16(); -} -}); -} -if(/^http/i.test(_13["js"])){ -var url=_13["js"]; -}else{ -var url=easyloader.base+"plugins/"+_13["js"]; -} -_4(url,function(){ -_14="loaded"; -if(_14=="loaded"&&_15=="loaded"){ -_16(); -} -}); -function _16(){ -_3[_11]="loaded"; -easyloader.onProgress(_11); -if(_12){ -_12(); -} -}; -}; -function _17(_18,_19){ -var mm=[]; -var _1a=false; -if(typeof _18=="string"){ -add(_18); -}else{ -for(var i=0;i<_18.length;i++){ -add(_18[i]); -} -} -function add(_1b){ -if(!_1[_1b]){ -return; -} -var d=_1[_1b]["dependencies"]; -if(d){ -for(var i=0;i").appendTo("body"); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); -(function($){ -function _1b(e){ -var _1c=$.data(e.data.target,"draggable"); -var _1d=_1c.options; -var _1e=_1c.proxy; -var _1f=e.data; -var _20=_1f.startLeft+e.pageX-_1f.startX; -var top=_1f.startTop+e.pageY-_1f.startY; -if(_1e){ -if(_1e.parent()[0]==document.body){ -if(_1d.deltaX!=null&&_1d.deltaX!=undefined){ -_20=e.pageX+_1d.deltaX; -}else{ -_20=e.pageX-e.data.offsetWidth; -} -if(_1d.deltaY!=null&&_1d.deltaY!=undefined){ -top=e.pageY+_1d.deltaY; -}else{ -top=e.pageY-e.data.offsetHeight; -} -}else{ -if(_1d.deltaX!=null&&_1d.deltaX!=undefined){ -_20+=e.data.offsetWidth+_1d.deltaX; -} -if(_1d.deltaY!=null&&_1d.deltaY!=undefined){ -top+=e.data.offsetHeight+_1d.deltaY; -} -} -} -if(e.data.parent!=document.body){ -_20+=$(e.data.parent).scrollLeft(); -top+=$(e.data.parent).scrollTop(); -} -if(_1d.axis=="h"){ -_1f.left=_20; -}else{ -if(_1d.axis=="v"){ -_1f.top=top; -}else{ -_1f.left=_20; -_1f.top=top; -} -} -}; -function _21(e){ -var _22=$.data(e.data.target,"draggable"); -var _23=_22.options; -var _24=_22.proxy; -if(!_24){ -_24=$(e.data.target); -} -_24.css({left:e.data.left,top:e.data.top}); -$("body").css("cursor",_23.cursor); -}; -function _25(e){ -$.fn.draggable.isDragging=true; -var _26=$.data(e.data.target,"draggable"); -var _27=_26.options; -var _28=$(".droppable").filter(function(){ -return e.data.target!=this; -}).filter(function(){ -var _29=$.data(this,"droppable").options.accept; -if(_29){ -return $(_29).filter(function(){ -return this==e.data.target; -}).length>0; -}else{ -return true; -} -}); -_26.droppables=_28; -var _2a=_26.proxy; -if(!_2a){ -if(_27.proxy){ -if(_27.proxy=="clone"){ -_2a=$(e.data.target).clone().insertAfter(e.data.target); -}else{ -_2a=_27.proxy.call(e.data.target,e.data.target); -} -_26.proxy=_2a; -}else{ -_2a=$(e.data.target); -} -} -_2a.css("position","absolute"); -_1b(e); -_21(e); -_27.onStartDrag.call(e.data.target,e); -return false; -}; -function _2b(e){ -var _2c=$.data(e.data.target,"draggable"); -_1b(e); -if(_2c.options.onDrag.call(e.data.target,e)!=false){ -_21(e); -} -var _2d=e.data.target; -_2c.droppables.each(function(){ -var _2e=$(this); -if(_2e.droppable("options").disabled){ -return; -} -var p2=_2e.offset(); -if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_43.options.edge; -}; -}); -}; -$.fn.draggable.methods={options:function(jq){ -return $.data(jq[0],"draggable").options; -},proxy:function(jq){ -return $.data(jq[0],"draggable").proxy; -},enable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:true}); -}); -}}; -$.fn.draggable.parseOptions=function(_48){ -var t=$(_48); -return $.extend({},$.parser.parseOptions(_48,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,onBeforeDrag:function(e){ -},onStartDrag:function(e){ -},onDrag:function(e){ -},onStopDrag:function(e){ -}}; -$.fn.draggable.isDragging=false; -})(jQuery); -(function($){ -function _49(_4a){ -$(_4a).addClass("droppable"); -$(_4a).bind("_dragenter",function(e,_4b){ -$.data(_4a,"droppable").options.onDragEnter.apply(_4a,[e,_4b]); -}); -$(_4a).bind("_dragleave",function(e,_4c){ -$.data(_4a,"droppable").options.onDragLeave.apply(_4a,[e,_4c]); -}); -$(_4a).bind("_dragover",function(e,_4d){ -$.data(_4a,"droppable").options.onDragOver.apply(_4a,[e,_4d]); -}); -$(_4a).bind("_drop",function(e,_4e){ -$.data(_4a,"droppable").options.onDrop.apply(_4a,[e,_4e]); -}); -}; -$.fn.droppable=function(_4f,_50){ -if(typeof _4f=="string"){ -return $.fn.droppable.methods[_4f](this,_50); -} -_4f=_4f||{}; -return this.each(function(){ -var _51=$.data(this,"droppable"); -if(_51){ -$.extend(_51.options,_4f); -}else{ -_49(this); -$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_4f)}); -} -}); -}; -$.fn.droppable.methods={options:function(jq){ -return $.data(jq[0],"droppable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:true}); -}); -}}; -$.fn.droppable.parseOptions=function(_52){ -var t=$(_52); -return $.extend({},$.parser.parseOptions(_52,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_53){ -},onDragOver:function(e,_54){ -},onDragLeave:function(e,_55){ -},onDrop:function(e,_56){ -}}; -})(jQuery); -(function($){ -$.fn.resizable=function(_57,_58){ -if(typeof _57=="string"){ -return $.fn.resizable.methods[_57](this,_58); -} -function _59(e){ -var _5a=e.data; -var _5b=$.data(_5a.target,"resizable").options; -if(_5a.dir.indexOf("e")!=-1){ -var _5c=_5a.startWidth+e.pageX-_5a.startX; -_5c=Math.min(Math.max(_5c,_5b.minWidth),_5b.maxWidth); -_5a.width=_5c; -} -if(_5a.dir.indexOf("s")!=-1){ -var _5d=_5a.startHeight+e.pageY-_5a.startY; -_5d=Math.min(Math.max(_5d,_5b.minHeight),_5b.maxHeight); -_5a.height=_5d; -} -if(_5a.dir.indexOf("w")!=-1){ -var _5c=_5a.startWidth-e.pageX+_5a.startX; -_5c=Math.min(Math.max(_5c,_5b.minWidth),_5b.maxWidth); -_5a.width=_5c; -_5a.left=_5a.startLeft+_5a.startWidth-_5a.width; -} -if(_5a.dir.indexOf("n")!=-1){ -var _5d=_5a.startHeight-e.pageY+_5a.startY; -_5d=Math.min(Math.max(_5d,_5b.minHeight),_5b.maxHeight); -_5a.height=_5d; -_5a.top=_5a.startTop+_5a.startHeight-_5a.height; -} -}; -function _5e(e){ -var _5f=e.data; -var t=$(_5f.target); -t.css({left:_5f.left,top:_5f.top}); -if(t.outerWidth()!=_5f.width){ -t._outerWidth(_5f.width); -} -if(t.outerHeight()!=_5f.height){ -t._outerHeight(_5f.height); -} -}; -function _60(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _61(e){ -_59(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_5e(e); -} -return false; -}; -function _62(e){ -$.fn.resizable.isResizing=false; -_59(e,true); -_5e(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _63=null; -var _64=$.data(this,"resizable"); -if(_64){ -$(this).unbind(".resizable"); -_63=$.extend(_64.options,_57||{}); -}else{ -_63=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_57||{}); -$.data(this,"resizable",{options:_63}); -} -if(_63.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var dir=_65(e); -if(dir==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",dir+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_65(e); -if(dir==""){ -return; -} -function _66(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _67={target:e.data.target,dir:dir,startLeft:_66("left"),startTop:_66("top"),left:_66("left"),top:_66("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_67,_60); -$(document).bind("mousemove.resizable",_67,_61); -$(document).bind("mouseup.resizable",_67,_62); -$("body").css("cursor",dir+"-resize"); -}); -function _65(e){ -var tt=$(e.data.target); -var dir=""; -var _68=tt.offset(); -var _69=tt.outerWidth(); -var _6a=tt.outerHeight(); -var _6b=_63.edge; -if(e.pageY>_68.top&&e.pageY<_68.top+_6b){ -dir+="n"; -}else{ -if(e.pageY<_68.top+_6a&&e.pageY>_68.top+_6a-_6b){ -dir+="s"; -} -} -if(e.pageX>_68.left&&e.pageX<_68.left+_6b){ -dir+="w"; -}else{ -if(e.pageX<_68.left+_69&&e.pageX>_68.left+_69-_6b){ -dir+="e"; -} -} -var _6c=_63.handles.split(","); -for(var i=0;i<_6c.length;i++){ -var _6d=_6c[i].replace(/(^\s*)|(\s*$)/g,""); -if(_6d=="all"||_6d==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_6e){ -var t=$(_6e); -return $.extend({},$.parser.parseOptions(_6e,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); -(function($){ -function _6f(_70){ -var _71=$.data(_70,"linkbutton").options; -var t=$(_70); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_71.plain){ -t.addClass("l-btn-plain"); -} -if(_71.selected){ -t.addClass(_71.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_71.group||""); -t.attr("id",_71.id||""); -t.html(""+""+""); -if(_71.text){ -t.find(".l-btn-text").html(_71.text); -if(_71.iconCls){ -t.find(".l-btn-text").addClass(_71.iconCls).addClass(_71.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_71.iconCls){ -t.find(".l-btn-empty").addClass(_71.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_71.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_71.toggle&&!_71.disabled){ -t.bind("click.linkbutton",function(){ -if(_71.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_72(_70,_71.selected); -_73(_70,_71.disabled); -}; -function _72(_74,_75){ -var _76=$.data(_74,"linkbutton").options; -if(_75){ -if(_76.group){ -$("a.l-btn[group=\""+_76.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_74).addClass(_76.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_76.selected=true; -}else{ -if(!_76.group){ -$(_74).removeClass("l-btn-selected l-btn-plain-selected"); -_76.selected=false; -} -} -}; -function _73(_77,_78){ -var _79=$.data(_77,"linkbutton"); -var _7a=_79.options; -$(_77).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_78){ -_7a.disabled=true; -var _7b=$(_77).attr("href"); -if(_7b){ -_79.href=_7b; -$(_77).attr("href","javascript:void(0)"); -} -if(_77.onclick){ -_79.onclick=_77.onclick; -_77.onclick=null; -} -_7a.plain?$(_77).addClass("l-btn-disabled l-btn-plain-disabled"):$(_77).addClass("l-btn-disabled"); -}else{ -_7a.disabled=false; -if(_79.href){ -$(_77).attr("href",_79.href); -} -if(_79.onclick){ -_77.onclick=_79.onclick; -} -} -}; -$.fn.linkbutton=function(_7c,_7d){ -if(typeof _7c=="string"){ -return $.fn.linkbutton.methods[_7c](this,_7d); -} -_7c=_7c||{}; -return this.each(function(){ -var _7e=$.data(this,"linkbutton"); -if(_7e){ -$.extend(_7e.options,_7c); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_7c)}); -$(this).removeAttr("disabled"); -} -_6f(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_73(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_73(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_72(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_72(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_7f){ -var t=$(_7f); -return $.extend({},$.parser.parseOptions(_7f,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); -(function($){ -function _80(_81){ -var _82=$.data(_81,"pagination"); -var _83=_82.options; -var bb=_82.bb={}; -var _84=$(_81).addClass("pagination").html("
                                                                        "); -var tr=_84.find("tr"); -function _85(_86){ -var btn=_83.nav[_86]; -var a=$("").appendTo(tr); -a.wrap(""); -a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -btn.handler.call(_81); -}); -return a; -}; -if(_83.showPageList){ -var ps=$(""); -ps.bind("change",function(){ -_83.pageSize=parseInt($(this).val()); -_83.onChangePageSize.call(_81,_83.pageSize); -_88(_81,_83.pageNumber); -}); -for(var i=0;i<_83.pageList.length;i++){ -$("").text(_83.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -$("
                                                                        ").appendTo(tr); -} -bb.first=_85("first"); -bb.prev=_85("prev"); -$("
                                                                        ").appendTo(tr); -$("").html(_83.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _87=parseInt($(this).val())||1; -_88(_81,_87); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -$("
                                                                        ").appendTo(tr); -bb.next=_85("next"); -bb.last=_85("last"); -if(_83.showRefresh){ -$("
                                                                        ").appendTo(tr); -bb.refresh=_85("refresh"); -} -if(_83.buttons){ -$("
                                                                        ").appendTo(tr); -if($.isArray(_83.buttons)){ -for(var i=0;i<_83.buttons.length;i++){ -var btn=_83.buttons[i]; -if(btn=="-"){ -$("
                                                                        ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(btn.handler||function(){ -}); -a.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_83.buttons).appendTo(td).show(); -} -} -$("
                                                                        ").appendTo(_84); -$("
                                                                        ").appendTo(_84); -}; -function _88(_89,_8a){ -var _8b=$.data(_89,"pagination").options; -_8c(_89,{pageNumber:_8a}); -_8b.onSelectPage.call(_89,_8b.pageNumber,_8b.pageSize); -}; -function _8c(_8d,_8e){ -var _8f=$.data(_8d,"pagination"); -var _90=_8f.options; -var bb=_8f.bb; -$.extend(_90,_8e||{}); -var ps=$(_8d).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_90.pageSize+""); -_90.pageSize=parseInt(ps.val()); -} -var _91=Math.ceil(_90.total/_90.pageSize)||1; -if(_90.pageNumber<1){ -_90.pageNumber=1; -} -if(_90.pageNumber>_91){ -_90.pageNumber=_91; -} -bb.num.val(_90.pageNumber); -bb.after.html(_90.afterPageText.replace(/{pages}/,_91)); -var _92=_90.displayMsg; -_92=_92.replace(/{from}/,_90.total==0?0:_90.pageSize*(_90.pageNumber-1)+1); -_92=_92.replace(/{to}/,Math.min(_90.pageSize*(_90.pageNumber),_90.total)); -_92=_92.replace(/{total}/,_90.total); -$(_8d).find("div.pagination-info").html(_92); -bb.first.add(bb.prev).linkbutton({disabled:(_90.pageNumber==1)}); -bb.next.add(bb.last).linkbutton({disabled:(_90.pageNumber==_91)}); -_93(_8d,_90.loading); -}; -function _93(_94,_95){ -var _96=$.data(_94,"pagination"); -var _97=_96.options; -var bb=_96.bb; -_97.loading=_95; -if(_97.showRefresh){ -_96.bb.refresh.linkbutton({iconCls:(_97.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_98,_99){ -if(typeof _98=="string"){ -return $.fn.pagination.methods[_98](this,_99); -} -_98=_98||{}; -return this.each(function(){ -var _9a; -var _9b=$.data(this,"pagination"); -if(_9b){ -_9a=$.extend(_9b.options,_98); -}else{ -_9a=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_98); -$.data(this,"pagination",{options:_9a}); -} -_80(this); -_8c(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_93(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_93(this,false); -}); -},refresh:function(jq,_9c){ -return jq.each(function(){ -_8c(this,_9c); -}); -},select:function(jq,_9d){ -return jq.each(function(){ -_88(this,_9d); -}); -}}; -$.fn.pagination.parseOptions=function(_9e){ -var t=$(_9e); -return $.extend({},$.parser.parseOptions(_9e,[{total:"number",pageSize:"number",pageNumber:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,onSelectPage:function(_9f,_a0){ -},onBeforeRefresh:function(_a1,_a2){ -},onRefresh:function(_a3,_a4){ -},onChangePageSize:function(_a5){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _a6=$(this).pagination("options"); -if(_a6.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _a7=$(this).pagination("options"); -if(_a7.pageNumber>1){ -$(this).pagination("select",_a7.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _a8=$(this).pagination("options"); -var _a9=Math.ceil(_a8.total/_a8.pageSize); -if(_a8.pageNumber<_a9){ -$(this).pagination("select",_a8.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _aa=$(this).pagination("options"); -var _ab=Math.ceil(_aa.total/_aa.pageSize); -if(_aa.pageNumber<_ab){ -$(this).pagination("select",_ab); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _ac=$(this).pagination("options"); -if(_ac.onBeforeRefresh.call(this,_ac.pageNumber,_ac.pageSize)!=false){ -$(this).pagination("select",_ac.pageNumber); -_ac.onRefresh.call(this,_ac.pageNumber,_ac.pageSize); -} -}}}}; -})(jQuery); -(function($){ -function _ad(_ae){ -var _af=$(_ae); -_af.addClass("tree"); -return _af; -}; -function _b0(_b1){ -var _b2=[]; -_b3(_b2,$(_b1)); -function _b3(aa,_b4){ -_b4.children("li").each(function(){ -var _b5=$(this); -var _b6=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_b5.attr("checked")?true:undefined)}); -_b6.text=_b5.children("span").html(); -if(!_b6.text){ -_b6.text=_b5.html(); -} -var _b7=_b5.children("ul"); -if(_b7.length){ -_b6.children=[]; -_b3(_b6.children,_b7); -} -aa.push(_b6); -}); -}; -return _b2; -}; -function _b8(_b9){ -var _ba=$.data(_b9,"tree").options; -$(_b9).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _bb=tt.closest("div.tree-node"); -if(!_bb.length){ -return; -} -_bb.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _bc=tt.closest("div.tree-node"); -if(!_bc.length){ -return; -} -_bc.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _bd=tt.closest("div.tree-node"); -if(!_bd.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_121(_b9,_bd[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_e5(_b9,_bd[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_162(_b9,_bd[0]); -_ba.onClick.call(_b9,_c0(_b9,_bd[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _be=$(e.target).closest("div.tree-node"); -if(!_be.length){ -return; -} -_162(_b9,_be[0]); -_ba.onDblClick.call(_b9,_c0(_b9,_be[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _bf=$(e.target).closest("div.tree-node"); -if(!_bf.length){ -return; -} -_ba.onContextMenu.call(_b9,e,_c0(_b9,_bf[0])); -e.stopPropagation(); -}); -}; -function _c1(_c2){ -var _c3=$(_c2).find("div.tree-node"); -_c3.draggable("disable"); -_c3.css("cursor","pointer"); -}; -function _c4(_c5){ -var _c6=$.data(_c5,"tree"); -var _c7=_c6.options; -var _c8=_c6.tree; -_c6.disabledNodes=[]; -_c8.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_c9){ -var p=$("
                                                                        ").appendTo("body"); -p.html(" "+$(_c9).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_c7.onBeforeDrag.call(_c5,_c0(_c5,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _ca=$(this).find("span.tree-indent"); -if(_ca.length){ -e.data.offsetWidth-=_ca.length*_ca.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_c7.onStartDrag.call(_c5,_c0(_c5,this)); -var _cb=_c0(_c5,this); -if(_cb.id==undefined){ -_cb.id="easyui_tree_node_id_temp"; -_15a(_c5,_cb); -} -_c6.draggingNodeId=_cb.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_c6.disabledNodes.length;i++){ -$(_c6.disabledNodes[i]).droppable("enable"); -} -_c6.disabledNodes=[]; -var _cc=_160(_c5,_c6.draggingNodeId); -if(_cc&&_cc.id=="easyui_tree_node_id_temp"){ -_cc.id=""; -_15a(_c5,_cc); -} -_c7.onStopDrag.call(_c5,_cc); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_cd){ -if(_c7.onDragEnter.call(_c5,this,_c0(_c5,_cd))==false){ -_ce(_cd,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_c6.disabledNodes.push(this); -} -},onDragOver:function(e,_cf){ -if($(this).droppable("options").disabled){ -return; -} -var _d0=_cf.pageY; -var top=$(this).offset().top; -var _d1=top+$(this).outerHeight(); -_ce(_cf,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_d0>top+(_d1-top)/2){ -if(_d1-_d0<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_d0-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_c7.onDragOver.call(_c5,this,_c0(_c5,_cf))==false){ -_ce(_cf,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_c6.disabledNodes.push(this); -} -},onDragLeave:function(e,_d2){ -_ce(_d2,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_c7.onDragLeave.call(_c5,this,_c0(_c5,_d2)); -},onDrop:function(e,_d3){ -var _d4=this; -var _d5,_d6; -if($(this).hasClass("tree-node-append")){ -_d5=_d7; -_d6="append"; -}else{ -_d5=_d8; -_d6=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_c7.onBeforeDrop.call(_c5,_d4,_154(_c5,_d3),_d6)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_d5(_d3,_d4,_d6); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _ce(_d9,_da){ -var _db=$(_d9).draggable("proxy").find("span.tree-dnd-icon"); -_db.removeClass("tree-dnd-yes tree-dnd-no").addClass(_da?"tree-dnd-yes":"tree-dnd-no"); -}; -function _d7(_dc,_dd){ -if(_c0(_c5,_dd).state=="closed"){ -_119(_c5,_dd,function(){ -_de(); -}); -}else{ -_de(); -} -function _de(){ -var _df=$(_c5).tree("pop",_dc); -$(_c5).tree("append",{parent:_dd,data:[_df]}); -_c7.onDrop.call(_c5,_dd,_df,"append"); -}; -}; -function _d8(_e0,_e1,_e2){ -var _e3={}; -if(_e2=="top"){ -_e3.before=_e1; -}else{ -_e3.after=_e1; -} -var _e4=$(_c5).tree("pop",_e0); -_e3.data=_e4; -$(_c5).tree("insert",_e3); -_c7.onDrop.call(_c5,_e1,_e4,_e2); -}; -}; -function _e5(_e6,_e7,_e8){ -var _e9=$.data(_e6,"tree").options; -if(!_e9.checkbox){ -return; -} -var _ea=_c0(_e6,_e7); -if(_e9.onBeforeCheck.call(_e6,_ea,_e8)==false){ -return; -} -var _eb=$(_e7); -var ck=_eb.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_e8){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_e9.cascadeCheck){ -_ec(_eb); -_ed(_eb); -} -_e9.onCheck.call(_e6,_ea,_e8); -function _ed(_ee){ -var _ef=_ee.next().find(".tree-checkbox"); -_ef.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_ee.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_ef.addClass("tree-checkbox1"); -}else{ -_ef.addClass("tree-checkbox0"); -} -}; -function _ec(_f0){ -var _f1=_12c(_e6,_f0[0]); -if(_f1){ -var ck=$(_f1.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_f2(_f0)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_f3(_f0)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_ec($(_f1.target)); -} -function _f2(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _f3(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _f4(_f5,_f6){ -var _f7=$.data(_f5,"tree").options; -var _f8=$(_f6); -if(_f9(_f5,_f6)){ -var ck=_f8.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_e5(_f5,_f6,true); -}else{ -_e5(_f5,_f6,false); -} -}else{ -if(_f7.onlyLeafCheck){ -$("").insertBefore(_f8.find(".tree-title")); -} -} -}else{ -var ck=_f8.find(".tree-checkbox"); -if(_f7.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_e5(_f5,_f6,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _fa=true; -var _fb=true; -var _fc=_fd(_f5,_f6); -for(var i=0;i<_fc.length;i++){ -if(_fc[i].checked){ -_fb=false; -}else{ -_fa=false; -} -} -if(_fa){ -_e5(_f5,_f6,true); -} -if(_fb){ -_e5(_f5,_f6,false); -} -} -} -} -} -}; -function _fe(_ff,ul,data,_100){ -var opts=$.data(_ff,"tree").options; -data=opts.loadFilter.call(_ff,data,$(ul).prev("div.tree-node")[0]); -if(!_100){ -$(ul).empty(); -} -var _101=[]; -var _102=[]; -var _103=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_104(ul,data,_103); -if(opts.dnd){ -_c4(_ff); -}else{ -_c1(_ff); -} -if(_101.length){ -_e5(_ff,_101[0],false); -} -for(var i=0;i<_102.length;i++){ -_e5(_ff,_102[i],true); -} -setTimeout(function(){ -_109(_ff,_ff); -},0); -var _105=null; -if(_ff!=ul){ -var node=$(ul).prev(); -_105=_c0(_ff,node[0]); -} -opts.onLoadSuccess.call(_ff,_105,data); -function _104(ul,_106,_107){ -for(var i=0;i<_106.length;i++){ -var li=$("
                                                                      • ").appendTo(ul); -var item=_106[i]; -if(item.state!="open"&&item.state!="closed"){ -item.state="open"; -} -var node=$("
                                                                        ").appendTo(li); -node.attr("node-id",item.id); -$.data(node[0],"tree-node",{id:item.id,text:item.text,iconCls:item.iconCls,attributes:item.attributes}); -$("").html(opts.formatter.call(_ff,item)).appendTo(node); -if(opts.checkbox){ -if(opts.onlyLeafCheck){ -if(item.state=="open"&&(!item.children||!item.children.length)){ -if(item.checked){ -$("").prependTo(node); -}else{ -$("").prependTo(node); -} -} -}else{ -if(item.checked){ -$("").prependTo(node); -_102.push(node[0]); -}else{ -$("").prependTo(node); -if(_106==data){ -_101.push(node[0]); -} -} -} -} -if(item.children&&item.children.length){ -var _108=$("
                                                                          ").appendTo(li); -if(item.state=="open"){ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -}else{ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -_108.css("display","none"); -} -_104(_108,item.children,_107+1); -}else{ -if(item.state=="closed"){ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -}else{ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -} -} -for(var j=0;j<_107;j++){ -$("").prependTo(node); -} -} -}; -}; -function _109(_10a,ul,_10b){ -var opts=$.data(_10a,"tree").options; -if(!opts.lines){ -return; -} -if(!_10b){ -_10b=true; -$(_10a).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_10a).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _10c=$(_10a).tree("getRoots"); -if(_10c.length>1){ -$(_10c[0].target).addClass("tree-root-first"); -}else{ -if(_10c.length==1){ -$(_10c[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var node=$(this).children("div.tree-node"); -var ul=node.next("ul"); -if(ul.length){ -if($(this).next().length){ -_10d(node); -} -_109(_10a,ul,_10b); -}else{ -_10e(node); -} -}); -var _10f=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_10f.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _10e(node,_110){ -var icon=node.find("span.tree-icon"); -icon.prev("span.tree-indent").addClass("tree-join"); -}; -function _10d(node){ -var _111=node.find("span.tree-indent, span.tree-hit").length; -node.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_111-1)+")").addClass("tree-line"); -}); -}; -}; -function _112(_113,ul,_114,_115){ -var opts=$.data(_113,"tree").options; -_114=_114||{}; -var _116=null; -if(_113!=ul){ -var node=$(ul).prev(); -_116=_c0(_113,node[0]); -} -if(opts.onBeforeLoad.call(_113,_116,_114)==false){ -return; -} -var _117=$(ul).prev().children("span.tree-folder"); -_117.addClass("tree-loading"); -var _118=opts.loader.call(_113,_114,function(data){ -_117.removeClass("tree-loading"); -_fe(_113,ul,data); -if(_115){ -_115(); -} -},function(){ -_117.removeClass("tree-loading"); -opts.onLoadError.apply(_113,arguments); -if(_115){ -_115(); -} -}); -if(_118==false){ -_117.removeClass("tree-loading"); -} -}; -function _119(_11a,_11b,_11c){ -var opts=$.data(_11a,"tree").options; -var hit=$(_11b).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var node=_c0(_11a,_11b); -if(opts.onBeforeExpand.call(_11a,node)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_11b).next(); -if(ul.length){ -if(opts.animate){ -ul.slideDown("normal",function(){ -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -}); -}else{ -ul.css("display","block"); -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -} -}else{ -var _11d=$("
                                                                            ").insertAfter(_11b); -_112(_11a,_11d[0],{id:node.id},function(){ -if(_11d.is(":empty")){ -_11d.remove(); -} -if(opts.animate){ -_11d.slideDown("normal",function(){ -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -}); -}else{ -_11d.css("display","block"); -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -} -}); -} -}; -function _11e(_11f,_120){ -var opts=$.data(_11f,"tree").options; -var hit=$(_120).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var node=_c0(_11f,_120); -if(opts.onBeforeCollapse.call(_11f,node)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_120).next(); -if(opts.animate){ -ul.slideUp("normal",function(){ -opts.onCollapse.call(_11f,node); -}); -}else{ -ul.css("display","none"); -opts.onCollapse.call(_11f,node); -} -}; -function _121(_122,_123){ -var hit=$(_123).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_11e(_122,_123); -}else{ -_119(_122,_123); -} -}; -function _124(_125,_126){ -var _127=_fd(_125,_126); -if(_126){ -_127.unshift(_c0(_125,_126)); -} -for(var i=0;i<_127.length;i++){ -_119(_125,_127[i].target); -} -}; -function _128(_129,_12a){ -var _12b=[]; -var p=_12c(_129,_12a); -while(p){ -_12b.unshift(p); -p=_12c(_129,p.target); -} -for(var i=0;i<_12b.length;i++){ -_119(_129,_12b[i].target); -} -}; -function _12d(_12e,_12f){ -var c=$(_12e).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_12f); -var ntop=n.offset().top; -if(c[0].tagName!="BODY"){ -var ctop=c.offset().top; -if(ntopctop+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(ntop); -} -}; -function _130(_131,_132){ -var _133=_fd(_131,_132); -if(_132){ -_133.unshift(_c0(_131,_132)); -} -for(var i=0;i<_133.length;i++){ -_11e(_131,_133[i].target); -} -}; -function _134(_135){ -var _136=_137(_135); -if(_136.length){ -return _136[0]; -}else{ -return null; -} -}; -function _137(_138){ -var _139=[]; -$(_138).children("li").each(function(){ -var node=$(this).children("div.tree-node"); -_139.push(_c0(_138,node[0])); -}); -return _139; -}; -function _fd(_13a,_13b){ -var _13c=[]; -if(_13b){ -_13d($(_13b)); -}else{ -var _13e=_137(_13a); -for(var i=0;i<_13e.length;i++){ -_13c.push(_13e[i]); -_13d($(_13e[i].target)); -} -} -function _13d(node){ -node.next().find("div.tree-node").each(function(){ -_13c.push(_c0(_13a,this)); -}); -}; -return _13c; -}; -function _12c(_13f,_140){ -var ul=$(_140).parent().parent(); -if(ul[0]==_13f){ -return null; -}else{ -return _c0(_13f,ul.prev()[0]); -} -}; -function _141(_142,_143){ -_143=_143||"checked"; -if(!$.isArray(_143)){ -_143=[_143]; -} -var _144=[]; -for(var i=0;i<_143.length;i++){ -var s=_143[i]; -if(s=="checked"){ -_144.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_144.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_144.push("span.tree-checkbox2"); -} -} -} -} -var _145=[]; -$(_142).find(_144.join(",")).each(function(){ -var node=$(this).parent(); -_145.push(_c0(_142,node[0])); -}); -return _145; -}; -function _146(_147){ -var node=$(_147).find("div.tree-node-selected"); -if(node.length){ -return _c0(_147,node[0]); -}else{ -return null; -} -}; -function _148(_149,_14a){ -var node=$(_14a.parent); -var data=_14a.data; -if(!data){ -return; -} -data=$.isArray(data)?data:[data]; -if(!data.length){ -return; -} -var ul; -if(node.length==0){ -ul=$(_149); -}else{ -if(_f9(_149,node[0])){ -var _14b=node.find("span.tree-icon"); -_14b.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_14b); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=node.next(); -if(!ul.length){ -ul=$("
                                                                              ").insertAfter(node); -} -} -_fe(_149,ul[0],data,true); -_f4(_149,ul.prev()); -}; -function _14c(_14d,_14e){ -var ref=_14e.before||_14e.after; -var _14f=_12c(_14d,ref); -var data=_14e.data; -if(!data){ -return; -} -data=$.isArray(data)?data:[data]; -if(!data.length){ -return; -} -_148(_14d,{parent:(_14f?_14f.target:null),data:data}); -var li=$(); -var last=_14f?$(_14f.target).next().children("li:last"):$(_14d).children("li:last"); -for(var i=0;i").prependTo(node); -if(ul[0]!=_151){ -ul.remove(); -} -} -if(_153){ -_f4(_151,_153.target); -} -_109(_151,_151); -}; -function _154(_155,_156){ -function _157(aa,ul){ -ul.children("li").each(function(){ -var node=$(this).children("div.tree-node"); -var _158=_c0(_155,node[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_158.children=[]; -_157(_158.children,sub); -} -aa.push(_158); -}); -}; -if(_156){ -var _159=_c0(_155,_156); -_159.children=[]; -_157(_159.children,$(_156).next()); -return _159; -}else{ -return null; -} -}; -function _15a(_15b,_15c){ -var opts=$.data(_15b,"tree").options; -var node=$(_15c.target); -var _15d=_c0(_15b,_15c.target); -if(_15d.iconCls){ -node.find(".tree-icon").removeClass(_15d.iconCls); -} -var data=$.extend({},_15d,_15c); -$.data(_15c.target,"tree-node",data); -node.attr("node-id",data.id); -node.find(".tree-title").html(opts.formatter.call(_15b,data)); -if(data.iconCls){ -node.find(".tree-icon").addClass(data.iconCls); -} -if(_15d.checked!=data.checked){ -_e5(_15b,_15c.target,data.checked); -} -}; -function _c0(_15e,_15f){ -var node=$.extend({},$.data(_15f,"tree-node"),{target:_15f,checked:$(_15f).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_f9(_15e,_15f)){ -node.state=$(_15f).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return node; -}; -function _160(_161,id){ -var node=$(_161).find("div.tree-node[node-id=\""+id+"\"]"); -if(node.length){ -return _c0(_161,node[0]); -}else{ -return null; -} -}; -function _162(_163,_164){ -var opts=$.data(_163,"tree").options; -var node=_c0(_163,_164); -if(opts.onBeforeSelect.call(_163,node)==false){ -return; -} -$("div.tree-node-selected",_163).removeClass("tree-node-selected"); -$(_164).addClass("tree-node-selected"); -opts.onSelect.call(_163,node); -}; -function _f9(_165,_166){ -var node=$(_166); -var hit=node.children("span.tree-hit"); -return hit.length==0; -}; -function _167(_168,_169){ -var opts=$.data(_168,"tree").options; -var node=_c0(_168,_169); -if(opts.onBeforeEdit.call(_168,node)==false){ -return; -} -$(_169).css("position","relative"); -var nt=$(_169).find(".tree-title"); -var _16a=nt.outerWidth(); -nt.empty(); -var _16b=$("").appendTo(nt); -_16b.val(node.text).focus(); -_16b.width(_16a+20); -_16b.height(document.compatMode=="CSS1Compat"?(18-(_16b.outerHeight()-_16b.height())):18); -_16b.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_16c(_168,_169); -return false; -}else{ -if(e.keyCode==27){ -_170(_168,_169); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_16c(_168,_169); -}); -}; -function _16c(_16d,_16e){ -var opts=$.data(_16d,"tree").options; -$(_16e).css("position",""); -var _16f=$(_16e).find("input.tree-editor"); -var val=_16f.val(); -_16f.remove(); -var node=_c0(_16d,_16e); -node.text=val; -_15a(_16d,node); -opts.onAfterEdit.call(_16d,node); -}; -function _170(_171,_172){ -var opts=$.data(_171,"tree").options; -$(_172).css("position",""); -$(_172).find("input.tree-editor").remove(); -var node=_c0(_171,_172); -_15a(_171,node); -opts.onCancelEdit.call(_171,node); -}; -$.fn.tree=function(_173,_174){ -if(typeof _173=="string"){ -return $.fn.tree.methods[_173](this,_174); -} -var _173=_173||{}; -return this.each(function(){ -var _175=$.data(this,"tree"); -var opts; -if(_175){ -opts=$.extend(_175.options,_173); -_175.options=opts; -}else{ -opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_173); -$.data(this,"tree",{options:opts,tree:_ad(this)}); -var data=_b0(this); -if(data.length&&!opts.data){ -opts.data=data; -} -} -_b8(this); -if(opts.lines){ -$(this).addClass("tree-lines"); -} -if(opts.data){ -_fe(this,this,opts.data); -}else{ -if(opts.dnd){ -_c4(this); -}else{ -_c1(this); -} -} -_112(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,data){ -return jq.each(function(){ -_fe(this,this,data); -}); -},getNode:function(jq,_176){ -return _c0(jq[0],_176); -},getData:function(jq,_177){ -return _154(jq[0],_177); -},reload:function(jq,_178){ -return jq.each(function(){ -if(_178){ -var node=$(_178); -var hit=node.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -node.next().remove(); -_119(this,_178); -}else{ -$(this).empty(); -_112(this,this); -} -}); -},getRoot:function(jq){ -return _134(jq[0]); -},getRoots:function(jq){ -return _137(jq[0]); -},getParent:function(jq,_179){ -return _12c(jq[0],_179); -},getChildren:function(jq,_17a){ -return _fd(jq[0],_17a); -},getChecked:function(jq,_17b){ -return _141(jq[0],_17b); -},getSelected:function(jq){ -return _146(jq[0]); -},isLeaf:function(jq,_17c){ -return _f9(jq[0],_17c); -},find:function(jq,id){ -return _160(jq[0],id); -},select:function(jq,_17d){ -return jq.each(function(){ -_162(this,_17d); -}); -},check:function(jq,_17e){ -return jq.each(function(){ -_e5(this,_17e,true); -}); -},uncheck:function(jq,_17f){ -return jq.each(function(){ -_e5(this,_17f,false); -}); -},collapse:function(jq,_180){ -return jq.each(function(){ -_11e(this,_180); -}); -},expand:function(jq,_181){ -return jq.each(function(){ -_119(this,_181); -}); -},collapseAll:function(jq,_182){ -return jq.each(function(){ -_130(this,_182); -}); -},expandAll:function(jq,_183){ -return jq.each(function(){ -_124(this,_183); -}); -},expandTo:function(jq,_184){ -return jq.each(function(){ -_128(this,_184); -}); -},scrollTo:function(jq,_185){ -return jq.each(function(){ -_12d(this,_185); -}); -},toggle:function(jq,_186){ -return jq.each(function(){ -_121(this,_186); -}); -},append:function(jq,_187){ -return jq.each(function(){ -_148(this,_187); -}); -},insert:function(jq,_188){ -return jq.each(function(){ -_14c(this,_188); -}); -},remove:function(jq,_189){ -return jq.each(function(){ -_150(this,_189); -}); -},pop:function(jq,_18a){ -var node=jq.tree("getData",_18a); -jq.tree("remove",_18a); -return node; -},update:function(jq,_18b){ -return jq.each(function(){ -_15a(this,_18b); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_c4(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_c1(this); -}); -},beginEdit:function(jq,_18c){ -return jq.each(function(){ -_167(this,_18c); -}); -},endEdit:function(jq,_18d){ -return jq.each(function(){ -_16c(this,_18d); -}); -},cancelEdit:function(jq,_18e){ -return jq.each(function(){ -_170(this,_18e); -}); -}}; -$.fn.tree.parseOptions=function(_18f){ -var t=$(_18f); -return $.extend({},$.parser.parseOptions(_18f,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_190,_191,_192){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_190,dataType:"json",success:function(data){ -_191(data); -},error:function(){ -_192.apply(this,arguments); -}}); -},loadFilter:function(data,_193){ -return data; -},onBeforeLoad:function(node,_194){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_195){ -},onCheck:function(node,_196){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_197,_198){ -},onDragOver:function(_199,_19a){ -},onDragLeave:function(_19b,_19c){ -},onBeforeDrop:function(_19d,_19e,_19f){ -},onDrop:function(_1a0,_1a1,_1a2){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); -(function($){ -function init(_1a3){ -$(_1a3).addClass("progressbar"); -$(_1a3).html("
                                                                              "); -return $(_1a3); -}; -function _1a4(_1a5,_1a6){ -var opts=$.data(_1a5,"progressbar").options; -var bar=$.data(_1a5,"progressbar").bar; -if(_1a6){ -opts.width=_1a6; -} -bar._outerWidth(opts.width)._outerHeight(opts.height); -bar.find("div.progressbar-text").width(bar.width()); -bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); -}; -$.fn.progressbar=function(_1a7,_1a8){ -if(typeof _1a7=="string"){ -var _1a9=$.fn.progressbar.methods[_1a7]; -if(_1a9){ -return _1a9(this,_1a8); -} -} -_1a7=_1a7||{}; -return this.each(function(){ -var _1aa=$.data(this,"progressbar"); -if(_1aa){ -$.extend(_1aa.options,_1a7); -}else{ -_1aa=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1a7),bar:init(this)}); -} -$(this).progressbar("setValue",_1aa.options.value); -_1a4(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_1ab){ -return jq.each(function(){ -_1a4(this,_1ab); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_1ac){ -if(_1ac<0){ -_1ac=0; -} -if(_1ac>100){ -_1ac=100; -} -return jq.each(function(){ -var opts=$.data(this,"progressbar").options; -var text=opts.text.replace(/{value}/,_1ac); -var _1ad=opts.value; -opts.value=_1ac; -$(this).find("div.progressbar-value").width(_1ac+"%"); -$(this).find("div.progressbar-text").html(text); -if(_1ad!=_1ac){ -opts.onChange.call(this,_1ac,_1ad); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_1ae){ -return $.extend({},$.parser.parseOptions(_1ae,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1af,_1b0){ -}}; -})(jQuery); -(function($){ -function init(_1b1){ -$(_1b1).addClass("tooltip-f"); -}; -function _1b2(_1b3){ -var opts=$.data(_1b3,"tooltip").options; -$(_1b3).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ -_1ba(_1b3,e); -}).bind(opts.hideEvent+".tooltip",function(e){ -_1c0(_1b3,e); -}).bind("mousemove.tooltip",function(e){ -if(opts.trackMouse){ -opts.trackMouseX=e.pageX; -opts.trackMouseY=e.pageY; -_1b4(_1b3); -} -}); -}; -function _1b5(_1b6){ -var _1b7=$.data(_1b6,"tooltip"); -if(_1b7.showTimer){ -clearTimeout(_1b7.showTimer); -_1b7.showTimer=null; -} -if(_1b7.hideTimer){ -clearTimeout(_1b7.hideTimer); -_1b7.hideTimer=null; -} -}; -function _1b4(_1b8){ -var _1b9=$.data(_1b8,"tooltip"); -if(!_1b9||!_1b9.tip){ -return; -} -var opts=_1b9.options; -var tip=_1b9.tip; -if(opts.trackMouse){ -t=$(); -var left=opts.trackMouseX+opts.deltaX; -var top=opts.trackMouseY+opts.deltaY; -}else{ -var t=$(_1b8); -var left=t.offset().left+opts.deltaX; -var top=t.offset().top+opts.deltaY; -} -switch(opts.position){ -case "right": -left+=t._outerWidth()+12+(opts.trackMouse?12:0); -top-=(tip._outerHeight()-t._outerHeight())/2; -break; -case "left": -left-=tip._outerWidth()+12+(opts.trackMouse?12:0); -top-=(tip._outerHeight()-t._outerHeight())/2; -break; -case "top": -left-=(tip._outerWidth()-t._outerWidth())/2; -top-=tip._outerHeight()+12+(opts.trackMouse?12:0); -break; -case "bottom": -left-=(tip._outerWidth()-t._outerWidth())/2; -top+=t._outerHeight()+12+(opts.trackMouse?12:0); -break; -} -tip.css({left:left,top:top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); -opts.onPosition.call(_1b8,left,top); -}; -function _1ba(_1bb,e){ -var _1bc=$.data(_1bb,"tooltip"); -var opts=_1bc.options; -var tip=_1bc.tip; -if(!tip){ -tip=$("
                                                                              "+"
                                                                              "+"
                                                                              "+"
                                                                              "+"
                                                                              ").appendTo("body"); -_1bc.tip=tip; -_1bd(_1bb); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); -_1b5(_1bb); -_1bc.showTimer=setTimeout(function(){ -_1b4(_1bb); -tip.show(); -opts.onShow.call(_1bb,e); -var _1be=tip.children(".tooltip-arrow-outer"); -var _1bf=tip.children(".tooltip-arrow"); -var bc="border-"+opts.position+"-color"; -_1be.add(_1bf).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_1be.css(bc,tip.css(bc)); -_1bf.css(bc,tip.css("backgroundColor")); -},opts.showDelay); -}; -function _1c0(_1c1,e){ -var _1c2=$.data(_1c1,"tooltip"); -if(_1c2&&_1c2.tip){ -_1b5(_1c1); -_1c2.hideTimer=setTimeout(function(){ -_1c2.tip.hide(); -_1c2.options.onHide.call(_1c1,e); -},_1c2.options.hideDelay); -} -}; -function _1bd(_1c3,_1c4){ -var _1c5=$.data(_1c3,"tooltip"); -var opts=_1c5.options; -if(_1c4){ -opts.content=_1c4; -} -if(!_1c5.tip){ -return; -} -var cc=typeof opts.content=="function"?opts.content.call(_1c3):opts.content; -_1c5.tip.children(".tooltip-content").html(cc); -opts.onUpdate.call(_1c3,cc); -}; -function _1c6(_1c7){ -var _1c8=$.data(_1c7,"tooltip"); -if(_1c8){ -_1b5(_1c7); -var opts=_1c8.options; -if(_1c8.tip){ -_1c8.tip.remove(); -} -if(opts._title){ -$(_1c7).attr("title",opts._title); -} -$.removeData(_1c7,"tooltip"); -$(_1c7).unbind(".tooltip").removeClass("tooltip-f"); -opts.onDestroy.call(_1c7); -} -}; -$.fn.tooltip=function(_1c9,_1ca){ -if(typeof _1c9=="string"){ -return $.fn.tooltip.methods[_1c9](this,_1ca); -} -_1c9=_1c9||{}; -return this.each(function(){ -var _1cb=$.data(this,"tooltip"); -if(_1cb){ -$.extend(_1cb.options,_1c9); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_1c9)}); -init(this); -} -_1b2(this); -_1bd(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_1ba(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_1c0(this,e); -}); -},update:function(jq,_1cc){ -return jq.each(function(){ -_1bd(this,_1cc); -}); -},reposition:function(jq){ -return jq.each(function(){ -_1b4(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1c6(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_1cd){ -var t=$(_1cd); -var opts=$.extend({},$.parser.parseOptions(_1cd,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!opts.content){ -opts.content=opts._title; -} -return opts; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_1ce){ -},onPosition:function(left,top){ -},onDestroy:function(){ -}}; -})(jQuery); -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1cf(node){ -node._remove(); -}; -function _1d0(_1d1,_1d2){ -var opts=$.data(_1d1,"panel").options; -var _1d3=$.data(_1d1,"panel").panel; -var _1d4=_1d3.children("div.panel-header"); -var _1d5=_1d3.children("div.panel-body"); -if(_1d2){ -if(_1d2.width){ -opts.width=_1d2.width; -} -if(_1d2.height){ -opts.height=_1d2.height; -} -if(_1d2.left!=null){ -opts.left=_1d2.left; -} -if(_1d2.top!=null){ -opts.top=_1d2.top; -} -} -opts.fit?$.extend(opts,_1d3._fit()):_1d3._fit(false); -_1d3.css({left:opts.left,top:opts.top}); -if(!isNaN(opts.width)){ -_1d3._outerWidth(opts.width); -}else{ -_1d3.width("auto"); -} -_1d4.add(_1d5)._outerWidth(_1d3.width()); -if(!isNaN(opts.height)){ -_1d3._outerHeight(opts.height); -_1d5._outerHeight(_1d3.height()-_1d4._outerHeight()); -}else{ -_1d5.height("auto"); -} -_1d3.css("height",""); -opts.onResize.apply(_1d1,[opts.width,opts.height]); -_1d3.find(">div.panel-body>div").triggerHandler("_resize"); -}; -function _1d6(_1d7,_1d8){ -var opts=$.data(_1d7,"panel").options; -var _1d9=$.data(_1d7,"panel").panel; -if(_1d8){ -if(_1d8.left!=null){ -opts.left=_1d8.left; -} -if(_1d8.top!=null){ -opts.top=_1d8.top; -} -} -_1d9.css({left:opts.left,top:opts.top}); -opts.onMove.apply(_1d7,[opts.left,opts.top]); -}; -function _1da(_1db){ -$(_1db).addClass("panel-body"); -var _1dc=$("
                                                                              ").insertBefore(_1db); -_1dc[0].appendChild(_1db); -_1dc.bind("_resize",function(){ -var opts=$.data(_1db,"panel").options; -if(opts.fit==true){ -_1d0(_1db); -} -return false; -}); -return _1dc; -}; -function _1dd(_1de){ -var opts=$.data(_1de,"panel").options; -var _1df=$.data(_1de,"panel").panel; -if(opts.tools&&typeof opts.tools=="string"){ -_1df.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(opts.tools); -} -_1cf(_1df.children("div.panel-header")); -if(opts.title&&!opts.noheader){ -var _1e0=$("
                                                                              "+opts.title+"
                                                                              ").prependTo(_1df); -if(opts.iconCls){ -_1e0.find(".panel-title").addClass("panel-with-icon"); -$("
                                                                              ").addClass(opts.iconCls).appendTo(_1e0); -} -var tool=$("
                                                                              ").appendTo(_1e0); -tool.bind("click",function(e){ -e.stopPropagation(); -}); -if(opts.tools){ -if(typeof opts.tools=="string"){ -$(opts.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); -}); -}else{ -for(var i=0;i").addClass(opts.tools[i].iconCls).appendTo(tool); -if(opts.tools[i].handler){ -t.bind("click",eval(opts.tools[i].handler)); -} -} -} -} -if(opts.collapsible){ -$("").appendTo(tool).bind("click",function(){ -if(opts.collapsed==true){ -_1fb(_1de,true); -}else{ -_1f0(_1de,true); -} -return false; -}); -} -if(opts.minimizable){ -$("").appendTo(tool).bind("click",function(){ -_201(_1de); -return false; -}); -} -if(opts.maximizable){ -$("").appendTo(tool).bind("click",function(){ -if(opts.maximized==true){ -_204(_1de); -}else{ -_1ef(_1de); -} -return false; -}); -} -if(opts.closable){ -$("").appendTo(tool).bind("click",function(){ -_1e1(_1de); -return false; -}); -} -_1df.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_1df.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1e2(_1e3){ -var _1e4=$.data(_1e3,"panel"); -var opts=_1e4.options; -if(opts.href){ -if(!_1e4.isLoaded||!opts.cache){ -if(opts.onBeforeLoad.call(_1e3)==false){ -return; -} -_1e4.isLoaded=false; -_1e5(_1e3); -if(opts.loadingMessage){ -$(_1e3).html($("
                                                                              ").html(opts.loadingMessage)); -} -$.ajax({url:opts.href,cache:false,dataType:"html",success:function(data){ -_1e6(opts.extractor.call(_1e3,data)); -opts.onLoad.apply(_1e3,arguments); -_1e4.isLoaded=true; -}}); -} -}else{ -if(opts.content){ -if(!_1e4.isLoaded){ -_1e5(_1e3); -_1e6(opts.content); -_1e4.isLoaded=true; -} -} -} -function _1e6(_1e7){ -$(_1e3).html(_1e7); -if($.parser){ -$.parser.parse($(_1e3)); -} -}; -}; -function _1e5(_1e8){ -var t=$(_1e8); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").tooltip("destroy"); -}; -function _1e9(_1ea){ -$(_1ea).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _1eb(_1ec,_1ed){ -var opts=$.data(_1ec,"panel").options; -var _1ee=$.data(_1ec,"panel").panel; -if(_1ed!=true){ -if(opts.onBeforeOpen.call(_1ec)==false){ -return; -} -} -_1ee.show(); -opts.closed=false; -opts.minimized=false; -var tool=_1ee.children("div.panel-header").find("a.panel-tool-restore"); -if(tool.length){ -opts.maximized=true; -} -opts.onOpen.call(_1ec); -if(opts.maximized==true){ -opts.maximized=false; -_1ef(_1ec); -} -if(opts.collapsed==true){ -opts.collapsed=false; -_1f0(_1ec); -} -if(!opts.collapsed){ -_1e2(_1ec); -_1e9(_1ec); -} -}; -function _1e1(_1f1,_1f2){ -var opts=$.data(_1f1,"panel").options; -var _1f3=$.data(_1f1,"panel").panel; -if(_1f2!=true){ -if(opts.onBeforeClose.call(_1f1)==false){ -return; -} -} -_1f3._fit(false); -_1f3.hide(); -opts.closed=true; -opts.onClose.call(_1f1); -}; -function _1f4(_1f5,_1f6){ -var opts=$.data(_1f5,"panel").options; -var _1f7=$.data(_1f5,"panel").panel; -if(_1f6!=true){ -if(opts.onBeforeDestroy.call(_1f5)==false){ -return; -} -} -_1e5(_1f5); -_1cf(_1f7); -opts.onDestroy.call(_1f5); -}; -function _1f0(_1f8,_1f9){ -var opts=$.data(_1f8,"panel").options; -var _1fa=$.data(_1f8,"panel").panel; -var body=_1fa.children("div.panel-body"); -var tool=_1fa.children("div.panel-header").find("a.panel-tool-collapse"); -if(opts.collapsed==true){ -return; -} -body.stop(true,true); -if(opts.onBeforeCollapse.call(_1f8)==false){ -return; -} -tool.addClass("panel-tool-expand"); -if(_1f9==true){ -body.slideUp("normal",function(){ -opts.collapsed=true; -opts.onCollapse.call(_1f8); -}); -}else{ -body.hide(); -opts.collapsed=true; -opts.onCollapse.call(_1f8); -} -}; -function _1fb(_1fc,_1fd){ -var opts=$.data(_1fc,"panel").options; -var _1fe=$.data(_1fc,"panel").panel; -var body=_1fe.children("div.panel-body"); -var tool=_1fe.children("div.panel-header").find("a.panel-tool-collapse"); -if(opts.collapsed==false){ -return; -} -body.stop(true,true); -if(opts.onBeforeExpand.call(_1fc)==false){ -return; -} -tool.removeClass("panel-tool-expand"); -if(_1fd==true){ -body.slideDown("normal",function(){ -opts.collapsed=false; -opts.onExpand.call(_1fc); -_1e2(_1fc); -_1e9(_1fc); -}); -}else{ -body.show(); -opts.collapsed=false; -opts.onExpand.call(_1fc); -_1e2(_1fc); -_1e9(_1fc); -} -}; -function _1ef(_1ff){ -var opts=$.data(_1ff,"panel").options; -var _200=$.data(_1ff,"panel").panel; -var tool=_200.children("div.panel-header").find("a.panel-tool-max"); -if(opts.maximized==true){ -return; -} -tool.addClass("panel-tool-restore"); -if(!$.data(_1ff,"panel").original){ -$.data(_1ff,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; -} -opts.left=0; -opts.top=0; -opts.fit=true; -_1d0(_1ff); -opts.minimized=false; -opts.maximized=true; -opts.onMaximize.call(_1ff); -}; -function _201(_202){ -var opts=$.data(_202,"panel").options; -var _203=$.data(_202,"panel").panel; -_203._fit(false); -_203.hide(); -opts.minimized=true; -opts.maximized=false; -opts.onMinimize.call(_202); -}; -function _204(_205){ -var opts=$.data(_205,"panel").options; -var _206=$.data(_205,"panel").panel; -var tool=_206.children("div.panel-header").find("a.panel-tool-max"); -if(opts.maximized==false){ -return; -} -_206.show(); -tool.removeClass("panel-tool-restore"); -$.extend(opts,$.data(_205,"panel").original); -_1d0(_205); -opts.minimized=false; -opts.maximized=false; -$.data(_205,"panel").original=null; -opts.onRestore.call(_205); -}; -function _207(_208){ -var opts=$.data(_208,"panel").options; -var _209=$.data(_208,"panel").panel; -var _20a=$(_208).panel("header"); -var body=$(_208).panel("body"); -_209.css(opts.style); -_209.addClass(opts.cls); -if(opts.border){ -_20a.removeClass("panel-header-noborder"); -body.removeClass("panel-body-noborder"); -}else{ -_20a.addClass("panel-header-noborder"); -body.addClass("panel-body-noborder"); -} -_20a.addClass(opts.headerCls); -body.addClass(opts.bodyCls); -if(opts.id){ -$(_208).attr("id",opts.id); -}else{ -$(_208).attr("id",""); -} -}; -function _20b(_20c,_20d){ -$.data(_20c,"panel").options.title=_20d; -$(_20c).panel("header").find("div.panel-title").html(_20d); -}; -var TO=false; -var _20e=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_20e){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_20e=false; -var _20f=$("body.layout"); -if(_20f.length){ -_20f.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_20e=true; -TO=false; -},200); -}); -$.fn.panel=function(_210,_211){ -if(typeof _210=="string"){ -return $.fn.panel.methods[_210](this,_211); -} -_210=_210||{}; -return this.each(function(){ -var _212=$.data(this,"panel"); -var opts; -if(_212){ -opts=$.extend(_212.options,_210); -_212.isLoaded=false; -}else{ -opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_210); -$(this).attr("title",""); -_212=$.data(this,"panel",{options:opts,panel:_1da(this),isLoaded:false}); -} -_1dd(this); -_207(this); -if(opts.doSize==true){ -_212.panel.css("display","block"); -_1d0(this); -} -if(opts.closed==true||opts.minimized==true){ -_212.panel.hide(); -}else{ -_1eb(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_213){ -return jq.each(function(){ -_20b(this,_213); -}); -},open:function(jq,_214){ -return jq.each(function(){ -_1eb(this,_214); -}); -},close:function(jq,_215){ -return jq.each(function(){ -_1e1(this,_215); -}); -},destroy:function(jq,_216){ -return jq.each(function(){ -_1f4(this,_216); -}); -},refresh:function(jq,href){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(href){ -$.data(this,"panel").options.href=href; -} -_1e2(this); -}); -},resize:function(jq,_217){ -return jq.each(function(){ -_1d0(this,_217); -}); -},move:function(jq,_218){ -return jq.each(function(){ -_1d6(this,_218); -}); -},maximize:function(jq){ -return jq.each(function(){ -_1ef(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_201(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_204(this); -}); -},collapse:function(jq,_219){ -return jq.each(function(){ -_1f0(this,_219); -}); -},expand:function(jq,_21a){ -return jq.each(function(){ -_1fb(this,_21a); -}); -}}; -$.fn.panel.parseOptions=function(_21b){ -var t=$(_21b); -return $.extend({},$.parser.parseOptions(_21b,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(data){ -var _21c=/]*>((.|[\n\r])*)<\/body>/im; -var _21d=_21c.exec(data); -if(_21d){ -return _21d[1]; -}else{ -return data; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_21e,_21f){ -},onMove:function(left,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); -(function($){ -function _220(_221,_222){ -var opts=$.data(_221,"window").options; -if(_222){ -if(_222.width){ -opts.width=_222.width; -} -if(_222.height){ -opts.height=_222.height; -} -if(_222.left!=null){ -opts.left=_222.left; -} -if(_222.top!=null){ -opts.top=_222.top; -} -} -$(_221).panel("resize",opts); -}; -function _223(_224,_225){ -var _226=$.data(_224,"window"); -if(_225){ -if(_225.left!=null){ -_226.options.left=_225.left; -} -if(_225.top!=null){ -_226.options.top=_225.top; -} -} -$(_224).panel("move",_226.options); -if(_226.shadow){ -_226.shadow.css({left:_226.options.left,top:_226.options.top}); -} -}; -function _227(_228,_229){ -var _22a=$.data(_228,"window"); -var opts=_22a.options; -var _22b=opts.width; -if(isNaN(_22b)){ -_22b=_22a.window._outerWidth(); -} -if(opts.inline){ -var _22c=_22a.window.parent(); -opts.left=(_22c.width()-_22b)/2+_22c.scrollLeft(); -}else{ -opts.left=($(window)._outerWidth()-_22b)/2+$(document).scrollLeft(); -} -if(_229){ -_223(_228); -} -}; -function _22d(_22e,_22f){ -var _230=$.data(_22e,"window"); -var opts=_230.options; -var _231=opts.height; -if(isNaN(_231)){ -_231=_230.window._outerHeight(); -} -if(opts.inline){ -var _232=_230.window.parent(); -opts.top=(_232.height()-_231)/2+_232.scrollTop(); -}else{ -opts.top=($(window)._outerHeight()-_231)/2+$(document).scrollTop(); -} -if(_22f){ -_223(_22e); -} -}; -function _233(_234){ -var _235=$.data(_234,"window"); -var win=$(_234).panel($.extend({},_235.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_235.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_235.options.onBeforeDestroy.call(_234)==false){ -return false; -} -if(_235.shadow){ -_235.shadow.remove(); -} -if(_235.mask){ -_235.mask.remove(); -} -},onClose:function(){ -if(_235.shadow){ -_235.shadow.hide(); -} -if(_235.mask){ -_235.mask.hide(); -} -_235.options.onClose.call(_234); -},onOpen:function(){ -if(_235.mask){ -_235.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_235.shadow){ -_235.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_235.options.left,top:_235.options.top,width:_235.window._outerWidth(),height:_235.window._outerHeight()}); -} -_235.window.css("z-index",$.fn.window.defaults.zIndex++); -_235.options.onOpen.call(_234); -},onResize:function(_236,_237){ -var opts=$(this).panel("options"); -$.extend(_235.options,{width:opts.width,height:opts.height,left:opts.left,top:opts.top}); -if(_235.shadow){ -_235.shadow.css({left:_235.options.left,top:_235.options.top,width:_235.window._outerWidth(),height:_235.window._outerHeight()}); -} -_235.options.onResize.call(_234,_236,_237); -},onMinimize:function(){ -if(_235.shadow){ -_235.shadow.hide(); -} -if(_235.mask){ -_235.mask.hide(); -} -_235.options.onMinimize.call(_234); -},onBeforeCollapse:function(){ -if(_235.options.onBeforeCollapse.call(_234)==false){ -return false; -} -if(_235.shadow){ -_235.shadow.hide(); -} -},onExpand:function(){ -if(_235.shadow){ -_235.shadow.show(); -} -_235.options.onExpand.call(_234); -}})); -_235.window=win.panel("panel"); -if(_235.mask){ -_235.mask.remove(); -} -if(_235.options.modal==true){ -_235.mask=$("
                                                                              ").insertAfter(_235.window); -_235.mask.css({width:(_235.options.inline?_235.mask.parent().width():_238().width),height:(_235.options.inline?_235.mask.parent().height():_238().height),display:"none"}); -} -if(_235.shadow){ -_235.shadow.remove(); -} -if(_235.options.shadow==true){ -_235.shadow=$("
                                                                              ").insertAfter(_235.window); -_235.shadow.css({display:"none"}); -} -if(_235.options.left==null){ -_227(_234); -} -if(_235.options.top==null){ -_22d(_234); -} -_223(_234); -if(_235.options.closed==false){ -win.window("open"); -} -}; -function _239(_23a){ -var _23b=$.data(_23a,"window"); -_23b.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_23b.options.draggable==false,onStartDrag:function(e){ -if(_23b.mask){ -_23b.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_23b.shadow){ -_23b.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_23b.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_23b.proxy){ -_23b.proxy=$("
                                                                              ").insertAfter(_23b.window); -} -_23b.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(_23b.window._outerWidth()); -_23b.proxy._outerHeight(_23b.window._outerHeight()); -setTimeout(function(){ -if(_23b.proxy){ -_23b.proxy.show(); -} -},500); -},onDrag:function(e){ -_23b.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_23b.options.left=e.data.left; -_23b.options.top=e.data.top; -$(_23a).window("move"); -_23b.proxy.remove(); -_23b.proxy=null; -}}); -_23b.window.resizable({disabled:_23b.options.resizable==false,onStartResize:function(e){ -_23b.pmask=$("
                                                                              ").insertAfter(_23b.window); -_23b.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_23b.window._outerWidth(),height:_23b.window._outerHeight()}); -if(!_23b.proxy){ -_23b.proxy=$("
                                                                              ").insertAfter(_23b.window); -} -_23b.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(e.data.width); -_23b.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_23b.proxy.css({left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(e.data.width); -_23b.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_23b.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_220(_23a); -_23b.pmask.remove(); -_23b.pmask=null; -_23b.proxy.remove(); -_23b.proxy=null; -}}); -}; -function _238(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_238().width,height:_238().height}); -},50); -}); -$.fn.window=function(_23c,_23d){ -if(typeof _23c=="string"){ -var _23e=$.fn.window.methods[_23c]; -if(_23e){ -return _23e(this,_23d); -}else{ -return this.panel(_23c,_23d); -} -} -_23c=_23c||{}; -return this.each(function(){ -var _23f=$.data(this,"window"); -if(_23f){ -$.extend(_23f.options,_23c); -}else{ -_23f=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_23c)}); -if(!_23f.options.inline){ -document.body.appendChild(this); -} -} -_233(this); -_239(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _240=jq.panel("options"); -var _241=$.data(jq[0],"window").options; -return $.extend(_241,{closed:_240.closed,collapsed:_240.collapsed,minimized:_240.minimized,maximized:_240.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_242){ -return jq.each(function(){ -_220(this,_242); -}); -},move:function(jq,_243){ -return jq.each(function(){ -_223(this,_243); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_227(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_22d(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_227(this); -_22d(this); -_223(this); -}); -}}; -$.fn.window.parseOptions=function(_244){ -return $.extend({},$.fn.panel.parseOptions(_244),$.parser.parseOptions(_244,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); -(function($){ -function _245(_246){ -var cp=document.createElement("div"); -while(_246.firstChild){ -cp.appendChild(_246.firstChild); -} -_246.appendChild(cp); -var _247=$(cp); -_247.attr("style",$(_246).attr("style")); -$(_246).removeAttr("style").css("overflow","hidden"); -_247.panel({border:false,doSize:false,bodyCls:"dialog-content"}); -return _247; -}; -function _248(_249){ -var opts=$.data(_249,"dialog").options; -var _24a=$.data(_249,"dialog").contentPanel; -if(opts.toolbar){ -if($.isArray(opts.toolbar)){ -$(_249).find("div.dialog-toolbar").remove(); -var _24b=$("
                                                                              ").prependTo(_249); -var tr=_24b.find("tr"); -for(var i=0;i
                                                                              ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(btn.handler||function(){ -}); -tool.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(opts.toolbar).addClass("dialog-toolbar").prependTo(_249); -$(opts.toolbar).show(); -} -}else{ -$(_249).find("div.dialog-toolbar").remove(); -} -if(opts.buttons){ -if($.isArray(opts.buttons)){ -$(_249).find("div.dialog-button").remove(); -var _24c=$("
                                                                              ").appendTo(_249); -for(var i=0;i").appendTo(_24c); -if(p.handler){ -_24d[0].onclick=p.handler; -} -_24d.linkbutton(p); -} -}else{ -$(opts.buttons).addClass("dialog-button").appendTo(_249); -$(opts.buttons).show(); -} -}else{ -$(_249).find("div.dialog-button").remove(); -} -var _24e=opts.href; -var _24f=opts.content; -opts.href=null; -opts.content=null; -_24a.panel({closed:opts.closed,cache:opts.cache,href:_24e,content:_24f,onLoad:function(){ -if(opts.height=="auto"){ -$(_249).window("resize"); -} -opts.onLoad.apply(_249,arguments); -}}); -$(_249).window($.extend({},opts,{onOpen:function(){ -if(_24a.panel("options").closed){ -_24a.panel("open"); -} -if(opts.onOpen){ -opts.onOpen.call(_249); -} -},onResize:function(_250,_251){ -var _252=$(_249); -_24a.panel("panel").show(); -_24a.panel("resize",{width:_252.width(),height:(_251=="auto")?"auto":_252.height()-_252.children("div.dialog-toolbar")._outerHeight()-_252.children("div.dialog-button")._outerHeight()}); -if(opts.onResize){ -opts.onResize.call(_249,_250,_251); -} -}})); -opts.href=_24e; -opts.content=_24f; -}; -function _253(_254,href){ -var _255=$.data(_254,"dialog").contentPanel; -_255.panel("refresh",href); -}; -$.fn.dialog=function(_256,_257){ -if(typeof _256=="string"){ -var _258=$.fn.dialog.methods[_256]; -if(_258){ -return _258(this,_257); -}else{ -return this.window(_256,_257); -} -} -_256=_256||{}; -return this.each(function(){ -var _259=$.data(this,"dialog"); -if(_259){ -$.extend(_259.options,_256); -}else{ -$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_256),contentPanel:_245(this)}); -} -_248(this); -}); -}; -$.fn.dialog.methods={options:function(jq){ -var _25a=$.data(jq[0],"dialog").options; -var _25b=jq.panel("options"); -$.extend(_25a,{closed:_25b.closed,collapsed:_25b.collapsed,minimized:_25b.minimized,maximized:_25b.maximized}); -var _25c=$.data(jq[0],"dialog").contentPanel; -return _25a; -},dialog:function(jq){ -return jq.window("window"); -},refresh:function(jq,href){ -return jq.each(function(){ -_253(this,href); -}); -}}; -$.fn.dialog.parseOptions=function(_25d){ -return $.extend({},$.fn.window.parseOptions(_25d),$.parser.parseOptions(_25d,["toolbar","buttons"])); -}; -$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); -})(jQuery); -(function($){ -function show(el,type,_25e,_25f){ -var win=$(el).window("window"); -if(!win){ -return; -} -switch(type){ -case null: -win.show(); -break; -case "slide": -win.slideDown(_25e); -break; -case "fade": -win.fadeIn(_25e); -break; -case "show": -win.show(_25e); -break; -} -var _260=null; -if(_25f>0){ -_260=setTimeout(function(){ -hide(el,type,_25e); -},_25f); -} -win.hover(function(){ -if(_260){ -clearTimeout(_260); -} -},function(){ -if(_25f>0){ -_260=setTimeout(function(){ -hide(el,type,_25e); -},_25f); -} -}); -}; -function hide(el,type,_261){ -if(el.locked==true){ -return; -} -el.locked=true; -var win=$(el).window("window"); -if(!win){ -return; -} -switch(type){ -case null: -win.hide(); -break; -case "slide": -win.slideUp(_261); -break; -case "fade": -win.fadeOut(_261); -break; -case "show": -win.hide(_261); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_261); -}; -function _262(_263){ -var opts=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -show(this,opts.showType,opts.showSpeed,opts.timeout); -return false; -},onBeforeClose:function(){ -hide(this,opts.showType,opts.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_263); -opts.style.zIndex=$.fn.window.defaults.zIndex++; -var win=$("
                                                                              ").html(opts.msg).appendTo("body"); -win.window(opts); -win.window("window").css(opts.style); -win.window("open"); -return win; -}; -function _264(_265,_266,_267){ -var win=$("
                                                                              ").appendTo("body"); -win.append(_266); -if(_267){ -var tb=$("
                                                                              ").appendTo(win); -for(var _268 in _267){ -$("").attr("href","javascript:void(0)").text(_268).css("margin-left",10).bind("click",eval(_267[_268])).appendTo(tb).linkbutton(); -} -} -win.window({title:_265,noheader:(_265?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_269){ -return _262(_269); -},alert:function(_26a,msg,icon,fn){ -var _26b="
                                                                              "+msg+"
                                                                              "; -switch(icon){ -case "error": -_26b="
                                                                              "+_26b; -break; -case "info": -_26b="
                                                                              "+_26b; -break; -case "question": -_26b="
                                                                              "+_26b; -break; -case "warning": -_26b="
                                                                              "+_26b; -break; -} -_26b+="
                                                                              "; -var _26c={}; -_26c[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_264(_26a,_26b,_26c); -return win; -},confirm:function(_26d,msg,fn){ -var _26e="
                                                                              "+"
                                                                              "+msg+"
                                                                              "+"
                                                                              "; -var _26f={}; -_26f[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_26f[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_264(_26d,_26e,_26f); -return win; -},prompt:function(_270,msg,fn){ -var _271="
                                                                              "+"
                                                                              "+msg+"
                                                                              "+"
                                                                              "+"
                                                                              "+"
                                                                              "; -var _272={}; -_272[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_272[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_264(_270,_271,_272); -win.children("input.messager-input").focus(); -return win; -},progress:function(_273){ -var _274={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _273=="string"){ -var _275=_274[_273]; -return _275(); -} -var opts=$.extend({title:"",msg:"",text:undefined,interval:300},_273||{}); -var _276="
                                                                              "; -var win=_264(opts.title,_276,null); -win.find("div.messager-p-msg").html(opts.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:opts.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(opts.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},opts.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); -(function($){ -function _277(_278){ -var _279=$.data(_278,"accordion"); -var opts=_279.options; -var _27a=_279.panels; -var cc=$(_278); -opts.fit?$.extend(opts,cc._fit()):cc._fit(false); -if(opts.width>0){ -cc._outerWidth(opts.width); -} -var _27b="auto"; -if(opts.height>0){ -cc._outerHeight(opts.height); -var _27c=_27a.length?_27a[0].panel("header").css("height","")._outerHeight():"auto"; -var _27b=cc.height()-(_27a.length-1)*_27c; -} -for(var i=0;i<_27a.length;i++){ -var _27d=_27a[i]; -_27d.panel("header")._outerHeight(_27c); -_27d.panel("resize",{width:cc.width(),height:_27b}); -} -}; -function _27e(_27f){ -var _280=$.data(_27f,"accordion").panels; -for(var i=0;i<_280.length;i++){ -var _281=_280[i]; -if(_281.panel("options").collapsed==false){ -return _281; -} -} -return null; -}; -function _282(_283,_284){ -var _285=$.data(_283,"accordion").panels; -for(var i=0;i<_285.length;i++){ -if(_285[i][0]==$(_284)[0]){ -return i; -} -} -return -1; -}; -function _286(_287,_288,_289){ -var _28a=$.data(_287,"accordion").panels; -if(typeof _288=="number"){ -if(_288<0||_288>=_28a.length){ -return null; -}else{ -var _28b=_28a[_288]; -if(_289){ -_28a.splice(_288,1); -} -return _28b; -} -} -for(var i=0;i<_28a.length;i++){ -var _28b=_28a[i]; -if(_28b.panel("options").title==_288){ -if(_289){ -_28a.splice(i,1); -} -return _28b; -} -} -return null; -}; -function _28c(_28d){ -var opts=$.data(_28d,"accordion").options; -var cc=$(_28d); -if(opts.border){ -cc.removeClass("accordion-noborder"); -}else{ -cc.addClass("accordion-noborder"); -} -}; -function _28e(_28f){ -var cc=$(_28f); -cc.addClass("accordion"); -var _290=[]; -cc.children("div").each(function(){ -var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_290.push(pp); -_292(_28f,pp,opts); -}); -cc.bind("_resize",function(e,_291){ -var opts=$.data(_28f,"accordion").options; -if(opts.fit==true||_291){ -_277(_28f); -} -return false; -}); -return {accordion:cc,panels:_290}; -}; -function _292(_293,pp,_294){ -pp.panel($.extend({},_294,{collapsible:false,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",onBeforeExpand:function(){ -if(_294.onBeforeExpand){ -if(_294.onBeforeExpand.call(this)==false){ -return false; -} -} -var curr=_27e(_293); -if(curr){ -var _295=$(curr).panel("header"); -_295.removeClass("accordion-header-selected"); -_295.find(".accordion-collapse").triggerHandler("click"); -} -var _295=pp.panel("header"); -_295.addClass("accordion-header-selected"); -_295.find(".accordion-collapse").removeClass("accordion-expand"); -},onExpand:function(){ -if(_294.onExpand){ -_294.onExpand.call(this); -} -var opts=$.data(_293,"accordion").options; -opts.onSelect.call(_293,pp.panel("options").title,_282(_293,this)); -},onBeforeCollapse:function(){ -if(_294.onBeforeCollapse){ -if(_294.onBeforeCollapse.call(this)==false){ -return false; -} -} -var _296=pp.panel("header"); -_296.removeClass("accordion-header-selected"); -_296.find(".accordion-collapse").addClass("accordion-expand"); -}})); -var _297=pp.panel("header"); -var t=$("").appendTo(_297.children("div.panel-tool")); -t.bind("click",function(e){ -var _298=$.data(_293,"accordion").options.animate; -_2a3(_293); -if(pp.panel("options").collapsed){ -pp.panel("expand",_298); -}else{ -pp.panel("collapse",_298); -} -return false; -}); -_297.click(function(){ -$(this).find(".accordion-collapse").triggerHandler("click"); -return false; -}); -}; -function _299(_29a,_29b){ -var _29c=_286(_29a,_29b); -if(!_29c){ -return; -} -var curr=_27e(_29a); -if(curr&&curr[0]==_29c[0]){ -return; -} -_29c.panel("header").triggerHandler("click"); -}; -function _29d(_29e){ -var _29f=$.data(_29e,"accordion").panels; -for(var i=0;i<_29f.length;i++){ -if(_29f[i].panel("options").selected){ -_2a0(i); -return; -} -} -if(_29f.length){ -_2a0(0); -} -function _2a0(_2a1){ -var opts=$.data(_29e,"accordion").options; -var _2a2=opts.animate; -opts.animate=false; -_299(_29e,_2a1); -opts.animate=_2a2; -}; -}; -function _2a3(_2a4){ -var _2a5=$.data(_2a4,"accordion").panels; -for(var i=0;i<_2a5.length;i++){ -_2a5[i].stop(true,true); -} -}; -function add(_2a6,_2a7){ -var _2a8=$.data(_2a6,"accordion"); -var opts=_2a8.options; -var _2a9=_2a8.panels; -if(_2a7.selected==undefined){ -_2a7.selected=true; -} -_2a3(_2a6); -var pp=$("
                                                                              ").appendTo(_2a6); -_2a9.push(pp); -_292(_2a6,pp,_2a7); -_277(_2a6); -opts.onAdd.call(_2a6,_2a7.title,_2a9.length-1); -if(_2a7.selected){ -_299(_2a6,_2a9.length-1); -} -}; -function _2aa(_2ab,_2ac){ -var _2ad=$.data(_2ab,"accordion"); -var opts=_2ad.options; -var _2ae=_2ad.panels; -_2a3(_2ab); -var _2af=_286(_2ab,_2ac); -var _2b0=_2af.panel("options").title; -var _2b1=_282(_2ab,_2af); -if(opts.onBeforeRemove.call(_2ab,_2b0,_2b1)==false){ -return; -} -var _2af=_286(_2ab,_2ac,true); -if(_2af){ -_2af.panel("destroy"); -if(_2ae.length){ -_277(_2ab); -var curr=_27e(_2ab); -if(!curr){ -_299(_2ab,0); -} -} -} -opts.onRemove.call(_2ab,_2b0,_2b1); -}; -$.fn.accordion=function(_2b2,_2b3){ -if(typeof _2b2=="string"){ -return $.fn.accordion.methods[_2b2](this,_2b3); -} -_2b2=_2b2||{}; -return this.each(function(){ -var _2b4=$.data(this,"accordion"); -var opts; -if(_2b4){ -opts=$.extend(_2b4.options,_2b2); -_2b4.opts=opts; -}else{ -opts=$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_2b2); -var r=_28e(this); -$.data(this,"accordion",{options:opts,accordion:r.accordion,panels:r.panels}); -} -_28c(this); -_277(this); -_29d(this); -}); -}; -$.fn.accordion.methods={options:function(jq){ -return $.data(jq[0],"accordion").options; -},panels:function(jq){ -return $.data(jq[0],"accordion").panels; -},resize:function(jq){ -return jq.each(function(){ -_277(this); -}); -},getSelected:function(jq){ -return _27e(jq[0]); -},getPanel:function(jq,_2b5){ -return _286(jq[0],_2b5); -},getPanelIndex:function(jq,_2b6){ -return _282(jq[0],_2b6); -},select:function(jq,_2b7){ -return jq.each(function(){ -_299(this,_2b7); -}); -},add:function(jq,_2b8){ -return jq.each(function(){ -add(this,_2b8); -}); -},remove:function(jq,_2b9){ -return jq.each(function(){ -_2aa(this,_2b9); -}); -}}; -$.fn.accordion.parseOptions=function(_2ba){ -var t=$(_2ba); -return $.extend({},$.parser.parseOptions(_2ba,["width","height",{fit:"boolean",border:"boolean",animate:"boolean"}])); -}; -$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,onSelect:function(_2bb,_2bc){ -},onAdd:function(_2bd,_2be){ -},onBeforeRemove:function(_2bf,_2c0){ -},onRemove:function(_2c1,_2c2){ -}}; -})(jQuery); -(function($){ -function _2c3(_2c4){ -var opts=$.data(_2c4,"tabs").options; -if(opts.tabPosition=="left"||opts.tabPosition=="right"){ -return; -} -var _2c5=$(_2c4).children("div.tabs-header"); -var tool=_2c5.children("div.tabs-tool"); -var _2c6=_2c5.children("div.tabs-scroller-left"); -var _2c7=_2c5.children("div.tabs-scroller-right"); -var wrap=_2c5.children("div.tabs-wrap"); -var _2c8=_2c5.outerHeight(); -if(opts.plain){ -_2c8-=_2c8-_2c5.height(); -} -tool._outerHeight(_2c8); -var _2c9=0; -$("ul.tabs li",_2c5).each(function(){ -_2c9+=$(this).outerWidth(true); -}); -var _2ca=_2c5.width()-tool._outerWidth(); -if(_2c9>_2ca){ -_2c6.add(_2c7).show()._outerHeight(_2c8); -if(opts.toolPosition=="left"){ -tool.css({left:_2c6.outerWidth(),right:""}); -wrap.css({marginLeft:_2c6.outerWidth()+tool._outerWidth(),marginRight:_2c7._outerWidth(),width:_2ca-_2c6.outerWidth()-_2c7.outerWidth()}); -}else{ -tool.css({left:"",right:_2c7.outerWidth()}); -wrap.css({marginLeft:_2c6.outerWidth(),marginRight:_2c7.outerWidth()+tool._outerWidth(),width:_2ca-_2c6.outerWidth()-_2c7.outerWidth()}); -} -}else{ -_2c6.add(_2c7).hide(); -if(opts.toolPosition=="left"){ -tool.css({left:0,right:""}); -wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_2ca}); -}else{ -tool.css({left:"",right:0}); -wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_2ca}); -} -} -}; -function _2cb(_2cc){ -var opts=$.data(_2cc,"tabs").options; -var _2cd=$(_2cc).children("div.tabs-header"); -if(opts.tools){ -if(typeof opts.tools=="string"){ -$(opts.tools).addClass("tabs-tool").appendTo(_2cd); -$(opts.tools).show(); -}else{ -_2cd.children("div.tabs-tool").remove(); -var _2ce=$("
                                                                              ").appendTo(_2cd); -var tr=_2ce.find("tr"); -for(var i=0;i").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(opts.tools[i].handler||function(){ -}); -tool.linkbutton($.extend({},opts.tools[i],{plain:true})); -} -} -}else{ -_2cd.children("div.tabs-tool").remove(); -} -}; -function _2cf(_2d0){ -var _2d1=$.data(_2d0,"tabs"); -var opts=_2d1.options; -var cc=$(_2d0); -opts.fit?$.extend(opts,cc._fit()):cc._fit(false); -cc.width(opts.width).height(opts.height); -var _2d2=$(_2d0).children("div.tabs-header"); -var _2d3=$(_2d0).children("div.tabs-panels"); -var wrap=_2d2.find("div.tabs-wrap"); -var ul=wrap.find(".tabs"); -for(var i=0;i<_2d1.tabs.length;i++){ -var _2d4=_2d1.tabs[i].panel("options"); -var p_t=_2d4.tab.find("a.tabs-inner"); -var _2d5=parseInt(_2d4.tabWidth||opts.tabWidth)||undefined; -if(_2d5){ -p_t._outerWidth(_2d5); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(opts.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(opts.tabPosition=="left"||opts.tabPosition=="right"){ -_2d2._outerWidth(opts.headerWidth); -_2d3._outerWidth(cc.width()-opts.headerWidth); -_2d2.add(_2d3)._outerHeight(opts.height); -wrap._outerWidth(_2d2.width()); -ul._outerWidth(wrap.width()).css("height",""); -}else{ -_2d2._outerWidth(opts.width).css("height",""); -ul._outerHeight(opts.tabHeight).css("width",""); -_2c3(_2d0); -var _2d6=opts.height; -if(!isNaN(_2d6)){ -_2d3._outerHeight(_2d6-_2d2.outerHeight()); -}else{ -_2d3.height("auto"); -} -var _2d5=opts.width; -if(!isNaN(_2d5)){ -_2d3._outerWidth(_2d5); -}else{ -_2d3.width("auto"); -} -} -}; -function _2d7(_2d8){ -var opts=$.data(_2d8,"tabs").options; -var tab=_2d9(_2d8); -if(tab){ -var _2da=$(_2d8).children("div.tabs-panels"); -var _2db=opts.width=="auto"?"auto":_2da.width(); -var _2dc=opts.height=="auto"?"auto":_2da.height(); -tab.panel("resize",{width:_2db,height:_2dc}); -} -}; -function _2dd(_2de){ -var tabs=$.data(_2de,"tabs").tabs; -var cc=$(_2de); -cc.addClass("tabs-container"); -var pp=$("
                                                                              ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                                                              "+"
                                                                              "+"
                                                                              "+"
                                                                              "+"
                                                                                "+"
                                                                                "+"
                                                                                ").prependTo(_2de); -cc.children("div.tabs-panels").children("div").each(function(i){ -var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -tabs.push(pp); -_2e8(_2de,pp,opts); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_2df){ -var opts=$.data(_2de,"tabs").options; -if(opts.fit==true||_2df){ -_2cf(_2de); -_2d7(_2de); -} -return false; -}); -}; -function _2e0(_2e1){ -var opts=$.data(_2e1,"tabs").options; -$(_2e1).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2e1).tabs("scrollBy",-opts.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2e1).tabs("scrollBy",opts.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_2f9(_2e1,_2e2(li)); -}else{ -if(li.length){ -_2ef(_2e1,_2e2(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -opts.onContextMenu.call(_2e1,e,li.find("span.tabs-title").html(),_2e2(li)); -} -}); -function _2e2(li){ -var _2e3=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2e3=i; -return false; -} -}); -return _2e3; -}; -}; -function _2e4(_2e5){ -var opts=$.data(_2e5,"tabs").options; -var _2e6=$(_2e5).children("div.tabs-header"); -var _2e7=$(_2e5).children("div.tabs-panels"); -_2e6.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_2e7.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(opts.tabPosition=="top"){ -_2e6.insertBefore(_2e7); -}else{ -if(opts.tabPosition=="bottom"){ -_2e6.insertAfter(_2e7); -_2e6.addClass("tabs-header-bottom"); -_2e7.addClass("tabs-panels-top"); -}else{ -if(opts.tabPosition=="left"){ -_2e6.addClass("tabs-header-left"); -_2e7.addClass("tabs-panels-right"); -}else{ -if(opts.tabPosition=="right"){ -_2e6.addClass("tabs-header-right"); -_2e7.addClass("tabs-panels-left"); -} -} -} -} -if(opts.plain==true){ -_2e6.addClass("tabs-header-plain"); -}else{ -_2e6.removeClass("tabs-header-plain"); -} -if(opts.border==true){ -_2e6.removeClass("tabs-header-noborder"); -_2e7.removeClass("tabs-panels-noborder"); -}else{ -_2e6.addClass("tabs-header-noborder"); -_2e7.addClass("tabs-panels-noborder"); -} -}; -function _2e8(_2e9,pp,_2ea){ -var _2eb=$.data(_2e9,"tabs"); -_2ea=_2ea||{}; -pp.panel($.extend({},_2ea,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_2ea.icon?_2ea.icon:undefined),onLoad:function(){ -if(_2ea.onLoad){ -_2ea.onLoad.call(this,arguments); -} -_2eb.options.onLoad.call(_2e9,$(this)); -}})); -var opts=pp.panel("options"); -var tabs=$(_2e9).children("div.tabs-header").find("ul.tabs"); -opts.tab=$("
                                                                              • ").appendTo(tabs); -opts.tab.append(""+""+""+""); -$(_2e9).tabs("update",{tab:pp,options:opts}); -}; -function _2ec(_2ed,_2ee){ -var opts=$.data(_2ed,"tabs").options; -var tabs=$.data(_2ed,"tabs").tabs; -if(_2ee.selected==undefined){ -_2ee.selected=true; -} -var pp=$("
                                                                                ").appendTo($(_2ed).children("div.tabs-panels")); -tabs.push(pp); -_2e8(_2ed,pp,_2ee); -opts.onAdd.call(_2ed,_2ee.title,tabs.length-1); -_2cf(_2ed); -if(_2ee.selected){ -_2ef(_2ed,tabs.length-1); -} -}; -function _2f0(_2f1,_2f2){ -var _2f3=$.data(_2f1,"tabs").selectHis; -var pp=_2f2.tab; -var _2f4=pp.panel("options").title; -pp.panel($.extend({},_2f2.options,{iconCls:(_2f2.options.icon?_2f2.options.icon:undefined)})); -var opts=pp.panel("options"); -var tab=opts.tab; -var _2f5=tab.find("span.tabs-title"); -var _2f6=tab.find("span.tabs-icon"); -_2f5.html(opts.title); -_2f6.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(opts.closable){ -_2f5.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_2f5.removeClass("tabs-closable"); -} -if(opts.iconCls){ -_2f5.addClass("tabs-with-icon"); -_2f6.addClass(opts.iconCls); -}else{ -_2f5.removeClass("tabs-with-icon"); -} -if(_2f4!=opts.title){ -for(var i=0;i<_2f3.length;i++){ -if(_2f3[i]==_2f4){ -_2f3[i]=opts.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(opts.tools){ -var _2f7=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(opts.tools)){ -for(var i=0;i").appendTo(_2f7); -t.addClass(opts.tools[i].iconCls); -if(opts.tools[i].handler){ -t.bind("click",{handler:opts.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(opts.tools).children().appendTo(_2f7); -} -var pr=_2f7.children().length*12; -if(opts.closable){ -pr+=8; -}else{ -pr-=3; -_2f7.css("right","5px"); -} -_2f5.css("padding-right",pr+"px"); -} -_2cf(_2f1); -$.data(_2f1,"tabs").options.onUpdate.call(_2f1,opts.title,_2f8(_2f1,pp)); -}; -function _2f9(_2fa,_2fb){ -var opts=$.data(_2fa,"tabs").options; -var tabs=$.data(_2fa,"tabs").tabs; -var _2fc=$.data(_2fa,"tabs").selectHis; -if(!_2fd(_2fa,_2fb)){ -return; -} -var tab=_2fe(_2fa,_2fb); -var _2ff=tab.panel("options").title; -var _300=_2f8(_2fa,tab); -if(opts.onBeforeClose.call(_2fa,_2ff,_300)==false){ -return; -} -var tab=_2fe(_2fa,_2fb,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -opts.onClose.call(_2fa,_2ff,_300); -_2cf(_2fa); -for(var i=0;i<_2fc.length;i++){ -if(_2fc[i]==_2ff){ -_2fc.splice(i,1); -i--; -} -} -var _301=_2fc.pop(); -if(_301){ -_2ef(_2fa,_301); -}else{ -if(tabs.length){ -_2ef(_2fa,0); -} -} -}; -function _2fe(_302,_303,_304){ -var tabs=$.data(_302,"tabs").tabs; -if(typeof _303=="number"){ -if(_303<0||_303>=tabs.length){ -return null; -}else{ -var tab=tabs[_303]; -if(_304){ -tabs.splice(_303,1); -} -return tab; -} -} -for(var i=0;idiv.tabs-header>div.tabs-wrap"); -var left=tab.position().left; -var _30f=left+tab.outerWidth(); -if(left<0||_30f>wrap.width()){ -var _310=left-(wrap.width()-tab.width())/2; -$(_309).tabs("scrollBy",_310); -}else{ -$(_309).tabs("scrollBy",0); -} -_2d7(_309); -opts.onSelect.call(_309,_30e,_2f8(_309,_30c)); -}; -function _2fd(_311,_312){ -return _2fe(_311,_312)!=null; -}; -$.fn.tabs=function(_313,_314){ -if(typeof _313=="string"){ -return $.fn.tabs.methods[_313](this,_314); -} -_313=_313||{}; -return this.each(function(){ -var _315=$.data(this,"tabs"); -var opts; -if(_315){ -opts=$.extend(_315.options,_313); -_315.options=opts; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_313),tabs:[],selectHis:[]}); -_2dd(this); -} -_2cb(this); -_2e4(this); -_2cf(this); -_2e0(this); -_307(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_2cf(this); -_2d7(this); -}); -},add:function(jq,_316){ -return jq.each(function(){ -_2ec(this,_316); -}); -},close:function(jq,_317){ -return jq.each(function(){ -_2f9(this,_317); -}); -},getTab:function(jq,_318){ -return _2fe(jq[0],_318); -},getTabIndex:function(jq,tab){ -return _2f8(jq[0],tab); -},getSelected:function(jq){ -return _2d9(jq[0]); -},select:function(jq,_319){ -return jq.each(function(){ -_2ef(this,_319); -}); -},exists:function(jq,_31a){ -return _2fd(jq[0],_31a); -},update:function(jq,_31b){ -return jq.each(function(){ -_2f0(this,_31b); -}); -},enableTab:function(jq,_31c){ -return jq.each(function(){ -$(this).tabs("getTab",_31c).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_31d){ -return jq.each(function(){ -$(this).tabs("getTab",_31d).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_31e){ -return jq.each(function(){ -var opts=$(this).tabs("options"); -var wrap=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(wrap._scrollLeft()+_31e,_31f()); -wrap.animate({scrollLeft:pos},opts.scrollDuration); -function _31f(){ -var w=0; -var ul=wrap.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-wrap.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_320){ -return $.extend({},$.parser.parseOptions(_320,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_321){ -},onSelect:function(_322,_323){ -},onBeforeClose:function(_324,_325){ -},onClose:function(_326,_327){ -},onAdd:function(_328,_329){ -},onUpdate:function(_32a,_32b){ -},onContextMenu:function(e,_32c,_32d){ -}}; -})(jQuery); -(function($){ -var _32e=false; -function _32f(_330){ -var _331=$.data(_330,"layout"); -var opts=_331.options; -var _332=_331.panels; -var cc=$(_330); -if(_330.tagName=="BODY"){ -cc._fit(); -}else{ -opts.fit?cc.css(cc._fit()):cc._fit(false); -} -function _333(pp){ -var opts=pp.panel("options"); -return Math.min(Math.max(opts.height,opts.minHeight),opts.maxHeight); -}; -function _334(pp){ -var opts=pp.panel("options"); -return Math.min(Math.max(opts.width,opts.minWidth),opts.maxWidth); -}; -var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; -function _335(pp){ -if(!pp.length){ -return; -} -var _336=_333(pp); -pp.panel("resize",{width:cc.width(),height:_336,left:0,top:0}); -cpos.top+=_336; -cpos.height-=_336; -}; -if(_33d(_332.expandNorth)){ -_335(_332.expandNorth); -}else{ -_335(_332.north); -} -function _337(pp){ -if(!pp.length){ -return; -} -var _338=_333(pp); -pp.panel("resize",{width:cc.width(),height:_338,left:0,top:cc.height()-_338}); -cpos.height-=_338; -}; -if(_33d(_332.expandSouth)){ -_337(_332.expandSouth); -}else{ -_337(_332.south); -} -function _339(pp){ -if(!pp.length){ -return; -} -var _33a=_334(pp); -pp.panel("resize",{width:_33a,height:cpos.height,left:cc.width()-_33a,top:cpos.top}); -cpos.width-=_33a; -}; -if(_33d(_332.expandEast)){ -_339(_332.expandEast); -}else{ -_339(_332.east); -} -function _33b(pp){ -if(!pp.length){ -return; -} -var _33c=_334(pp); -pp.panel("resize",{width:_33c,height:cpos.height,left:0,top:cpos.top}); -cpos.left+=_33c; -cpos.width-=_33c; -}; -if(_33d(_332.expandWest)){ -_33b(_332.expandWest); -}else{ -_33b(_332.west); -} -_332.center.panel("resize",cpos); -}; -function init(_33e){ -var cc=$(_33e); -cc.addClass("layout"); -function _33f(cc){ -cc.children("div").each(function(){ -var opts=$.fn.layout.parsePanelOptions(this); -if("north,south,east,west,center".indexOf(opts.region)>=0){ -_341(_33e,opts,this); -} -}); -}; -cc.children("form").length?_33f(cc.children("form")):_33f(cc); -cc.append("
                                                                                "); -cc.bind("_resize",function(e,_340){ -var opts=$.data(_33e,"layout").options; -if(opts.fit==true||_340){ -_32f(_33e); -} -return false; -}); -}; -function _341(_342,_343,el){ -_343.region=_343.region||"center"; -var _344=$.data(_342,"layout").panels; -var cc=$(_342); -var dir=_343.region; -if(_344[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
                                                                                ").appendTo(cc); -} -var _345=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var tool=$(this).panel("header").children("div.panel-tool"); -tool.children("a.panel-tool-collapse").hide(); -var _346={north:"up",south:"down",east:"right",west:"left"}; -if(!_346[dir]){ -return; -} -var _347="layout-button-"+_346[dir]; -var t=tool.children("a."+_347); -if(!t.length){ -t=$("").addClass(_347).appendTo(tool); -t.bind("click",{dir:dir},function(e){ -_353(_342,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_343); -pp.panel(_345); -_344[dir]=pp; -if(pp.panel("options").split){ -var _348=pp.panel("panel"); -_348.addClass("layout-split-"+dir); -var _349=""; -if(dir=="north"){ -_349="s"; -} -if(dir=="south"){ -_349="n"; -} -if(dir=="east"){ -_349="w"; -} -if(dir=="west"){ -_349="e"; -} -_348.resizable($.extend({},{handles:_349,onStartResize:function(e){ -_32e=true; -if(dir=="north"||dir=="south"){ -var _34a=$(">div.layout-split-proxy-v",_342); -}else{ -var _34a=$(">div.layout-split-proxy-h",_342); -} -var top=0,left=0,_34b=0,_34c=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_348.css("top"))+_348.outerHeight()-_34a.height(); -pos.left=parseInt(_348.css("left")); -pos.width=_348.outerWidth(); -pos.height=_34a.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_348.css("top")); -pos.left=parseInt(_348.css("left")); -pos.width=_348.outerWidth(); -pos.height=_34a.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_348.css("top"))||0; -pos.left=parseInt(_348.css("left"))||0; -pos.width=_34a.width(); -pos.height=_348.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_348.css("top"))||0; -pos.left=_348.outerWidth()-_34a.width(); -pos.width=_34a.width(); -pos.height=_348.outerHeight(); -} -} -} -} -_34a.css(pos); -$("
                                                                                ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _34d=$(">div.layout-split-proxy-v",_342); -_34d.css("top",e.pageY-$(_342).offset().top-_34d.height()/2); -}else{ -var _34d=$(">div.layout-split-proxy-h",_342); -_34d.css("left",e.pageX-$(_342).offset().left-_34d.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_32f(_342); -_32e=false; -cc.find(">div.layout-mask").remove(); -}},_343)); -} -}; -function _34e(_34f,_350){ -var _351=$.data(_34f,"layout").panels; -if(_351[_350].length){ -_351[_350].panel("destroy"); -_351[_350]=$(); -var _352="expand"+_350.substring(0,1).toUpperCase()+_350.substring(1); -if(_351[_352]){ -_351[_352].panel("destroy"); -_351[_352]=undefined; -} -} -}; -function _353(_354,_355,_356){ -if(_356==undefined){ -_356="normal"; -} -var _357=$.data(_354,"layout").panels; -var p=_357[_355]; -if(p.panel("options").onBeforeCollapse.call(p)==false){ -return; -} -var _358="expand"+_355.substring(0,1).toUpperCase()+_355.substring(1); -if(!_357[_358]){ -_357[_358]=_359(_355); -_357[_358].panel("panel").bind("click",function(){ -var _35a=_35b(); -p.panel("expand",false).panel("open").panel("resize",_35a.collapse); -p.panel("panel").animate(_35a.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_355},function(e){ -if(_32e==true){ -return; -} -_353(_354,e.data.region); -}); -}); -return false; -}); -} -var _35c=_35b(); -if(!_33d(_357[_358])){ -_357.center.panel("resize",_35c.resizeC); -} -p.panel("panel").animate(_35c.collapse,_356,function(){ -p.panel("collapse",false).panel("close"); -_357[_358].panel("open").panel("resize",_35c.expandP); -$(this).unbind(".layout"); -}); -function _359(dir){ -var icon; -if(dir=="east"){ -icon="layout-button-left"; -}else{ -if(dir=="west"){ -icon="layout-button-right"; -}else{ -if(dir=="north"){ -icon="layout-button-down"; -}else{ -if(dir=="south"){ -icon="layout-button-up"; -} -} -} -} -var _35d=$.extend({},$.fn.layout.paneldefaults,{cls:"layout-expand",title:" ",closed:true,doSize:false,tools:[{iconCls:icon,handler:function(){ -_361(_354,_355); -return false; -}}]}); -var p=$("
                                                                                ").appendTo(_354).panel(_35d); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _35b(){ -var cc=$(_354); -var _35e=_357.center.panel("options"); -if(_355=="east"){ -var _35f=_357["east"].panel("options"); -return {resizeC:{width:_35e.width+_35f.width-28},expand:{left:cc.width()-_35f.width},expandP:{top:_35e.top,left:cc.width()-28,width:28,height:_35e.height},collapse:{left:cc.width(),top:_35e.top,height:_35e.height}}; -}else{ -if(_355=="west"){ -var _360=_357["west"].panel("options"); -return {resizeC:{width:_35e.width+_360.width-28,left:28},expand:{left:0},expandP:{left:0,top:_35e.top,width:28,height:_35e.height},collapse:{left:-_360.width,top:_35e.top,height:_35e.height}}; -}else{ -if(_355=="north"){ -var hh=cc.height()-28; -if(_33d(_357.expandSouth)){ -hh-=_357.expandSouth.panel("options").height; -}else{ -if(_33d(_357.south)){ -hh-=_357.south.panel("options").height; -} -} -_357.east.panel("resize",{top:28,height:hh}); -_357.west.panel("resize",{top:28,height:hh}); -if(_33d(_357.expandEast)){ -_357.expandEast.panel("resize",{top:28,height:hh}); -} -if(_33d(_357.expandWest)){ -_357.expandWest.panel("resize",{top:28,height:hh}); -} -return {resizeC:{top:28,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_357["north"].panel("options").height,width:cc.width()}}; -}else{ -if(_355=="south"){ -var hh=cc.height()-28; -if(_33d(_357.expandNorth)){ -hh-=_357.expandNorth.panel("options").height; -}else{ -if(_33d(_357.north)){ -hh-=_357.north.panel("options").height; -} -} -_357.east.panel("resize",{height:hh}); -_357.west.panel("resize",{height:hh}); -if(_33d(_357.expandEast)){ -_357.expandEast.panel("resize",{height:hh}); -} -if(_33d(_357.expandWest)){ -_357.expandWest.panel("resize",{height:hh}); -} -return {resizeC:{height:hh},expand:{top:cc.height()-_357["south"].panel("options").height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _361(_362,_363){ -var _364=$.data(_362,"layout").panels; -var _365=_366(); -var p=_364[_363]; -if(p.panel("options").onBeforeExpand.call(p)==false){ -return; -} -var _367="expand"+_363.substring(0,1).toUpperCase()+_363.substring(1); -_364[_367].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_365.collapse); -p.panel("panel").animate(_365.expand,function(){ -_32f(_362); -}); -function _366(){ -var cc=$(_362); -var _368=_364.center.panel("options"); -if(_363=="east"&&_364.expandEast){ -return {collapse:{left:cc.width(),top:_368.top,height:_368.height},expand:{left:cc.width()-_364["east"].panel("options").width}}; -}else{ -if(_363=="west"&&_364.expandWest){ -return {collapse:{left:-_364["west"].panel("options").width,top:_368.top,height:_368.height},expand:{left:0}}; -}else{ -if(_363=="north"&&_364.expandNorth){ -return {collapse:{top:-_364["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_363=="south"&&_364.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_364["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _33d(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _369(_36a){ -var _36b=$.data(_36a,"layout").panels; -if(_36b.east.length&&_36b.east.panel("options").collapsed){ -_353(_36a,"east",0); -} -if(_36b.west.length&&_36b.west.panel("options").collapsed){ -_353(_36a,"west",0); -} -if(_36b.north.length&&_36b.north.panel("options").collapsed){ -_353(_36a,"north",0); -} -if(_36b.south.length&&_36b.south.panel("options").collapsed){ -_353(_36a,"south",0); -} -}; -$.fn.layout=function(_36c,_36d){ -if(typeof _36c=="string"){ -return $.fn.layout.methods[_36c](this,_36d); -} -_36c=_36c||{}; -return this.each(function(){ -var _36e=$.data(this,"layout"); -if(_36e){ -$.extend(_36e.options,_36c); -}else{ -var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_36c); -$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -init(this); -} -_32f(this); -_369(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_32f(this); -}); -},panel:function(jq,_36f){ -return $.data(jq[0],"layout").panels[_36f]; -},collapse:function(jq,_370){ -return jq.each(function(){ -_353(this,_370); -}); -},expand:function(jq,_371){ -return jq.each(function(){ -_361(this,_371); -}); -},add:function(jq,_372){ -return jq.each(function(){ -_341(this,_372); -_32f(this); -if($(this).layout("panel",_372.region).panel("options").collapsed){ -_353(this,_372.region,0); -} -}); -},remove:function(jq,_373){ -return jq.each(function(){ -_34e(this,_373); -_32f(this); -}); -}}; -$.fn.layout.parseOptions=function(_374){ -return $.extend({},$.parser.parseOptions(_374,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_375){ -var t=$(_375); -return $.extend({},$.fn.panel.parseOptions(_375),$.parser.parseOptions(_375,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); -(function($){ -function init(_376){ -$(_376).appendTo("body"); -$(_376).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _377=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_377); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _378=_379($(_376)); -for(var i=0;i<_378.length;i++){ -_37a(_378[i]); -} -function _379(menu){ -var _37b=[]; -menu.addClass("menu"); -_37b.push(menu); -if(!menu.hasClass("menu-content")){ -menu.children("div").each(function(){ -var _37c=$(this).children("div"); -if(_37c.length){ -_37c.insertAfter(_376); -this.submenu=_37c; -var mm=_379(_37c); -_37b=_37b.concat(mm); -} -}); -} -return _37b; -}; -function _37a(menu){ -var _37d=$.parser.parseOptions(menu[0],["width"]).width; -if(menu.hasClass("menu-content")){ -menu[0].originalWidth=_37d||menu._outerWidth(); -}else{ -menu[0].originalWidth=_37d||0; -menu.children("div").each(function(){ -var item=$(this); -if(item.hasClass("menu-sep")){ -}else{ -var _37e=$.extend({},$.parser.parseOptions(this,["name","iconCls","href"]),{disabled:(item.attr("disabled")?true:undefined)}); -item[0].itemName=_37e.name||""; -item[0].itemHref=_37e.href||""; -var text=item.addClass("menu-item").html(); -item.empty().append($("
                                                                                ").html(text)); -if(_37e.iconCls){ -$("
                                                                                ").addClass(_37e.iconCls).appendTo(item); -} -if(_37e.disabled){ -_37f(_376,item[0],true); -} -if(item[0].submenu){ -$("
                                                                                ").appendTo(item); -} -_380(_376,item); -} -}); -$("
                                                                                ").prependTo(menu); -} -_381(_376,menu); -menu.hide(); -_382(_376,menu); -}; -}; -function _381(_383,menu){ -var opts=$.data(_383,"menu").options; -var d=menu.css("display"); -menu.css({display:"block",left:-10000}); -var _384=0; -menu.find("div.menu-text").each(function(){ -if(_384<$(this)._outerWidth()){ -_384=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_384+=65; -menu._outerWidth(Math.max((menu[0].originalWidth||0),_384,opts.minWidth)); -menu.css("display",d); -}; -function _382(_385,menu){ -var _386=$.data(_385,"menu"); -menu.unbind(".menu").bind("mouseenter.menu",function(){ -if(_386.timer){ -clearTimeout(_386.timer); -_386.timer=null; -} -}).bind("mouseleave.menu",function(){ -_386.timer=setTimeout(function(){ -_387(_385); -},100); -}); -}; -function _380(_388,item){ -item.unbind(".menu"); -item.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_387(_388); -var href=$(this).attr("href"); -if(href){ -location.href=href; -} -} -var item=$(_388).menu("getItem",this); -$.data(_388,"menu").options.onClick.call(_388,item); -}).bind("mouseenter.menu",function(e){ -item.siblings().each(function(){ -if(this.submenu){ -_38b(this.submenu); -} -$(this).removeClass("menu-active"); -}); -item.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -item.addClass("menu-active-disabled"); -return; -} -var _389=item[0].submenu; -if(_389){ -$(_388).menu("show",{menu:_389,parent:item}); -} -}).bind("mouseleave.menu",function(e){ -item.removeClass("menu-active menu-active-disabled"); -var _38a=item[0].submenu; -if(_38a){ -if(e.pageX>=parseInt(_38a.css("left"))){ -item.addClass("menu-active"); -}else{ -_38b(_38a); -} -}else{ -item.removeClass("menu-active"); -} -}); -}; -function _387(_38c){ -var _38d=$.data(_38c,"menu"); -if(_38d){ -if($(_38c).is(":visible")){ -_38b($(_38c)); -_38d.options.onHide.call(_38c); -} -} -return false; -}; -function _38e(_38f,_390){ -var left,top; -_390=_390||{}; -var menu=$(_390.menu||_38f); -if(menu.hasClass("menu-top")){ -var opts=$.data(_38f,"menu").options; -$.extend(opts,_390); -left=opts.left; -top=opts.top; -if(opts.alignTo){ -var at=$(opts.alignTo); -left=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; -} -if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top-=menu.outerHeight(); -} -}else{ -var _391=_390.parent; -left=_391.offset().left+_391.outerWidth()-2; -if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -left=_391.offset().left-menu.outerWidth()+2; -} -var top=_391.offset().top-3; -if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight()-5; -} -} -menu.css({left:left,top:top}); -menu.show(0,function(){ -if(!menu[0].shadow){ -menu[0].shadow=$("
                                                                                ").insertAfter(menu); -} -menu[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); -menu.css("z-index",$.fn.menu.defaults.zIndex++); -if(menu.hasClass("menu-top")){ -$.data(menu[0],"menu").options.onShow.call(menu[0]); -} -}); -}; -function _38b(menu){ -if(!menu){ -return; -} -_392(menu); -menu.find("div.menu-item").each(function(){ -if(this.submenu){ -_38b(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _392(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _393(_394,text){ -var _395=null; -var tmp=$("
                                                                                "); -function find(menu){ -menu.children("div.menu-item").each(function(){ -var item=$(_394).menu("getItem",this); -var s=tmp.empty().html(item.text).text(); -if(text==$.trim(s)){ -_395=item; -}else{ -if(this.submenu&&!_395){ -find(this.submenu); -} -} -}); -}; -find($(_394)); -tmp.remove(); -return _395; -}; -function _37f(_396,_397,_398){ -var t=$(_397); -if(_398){ -t.addClass("menu-item-disabled"); -if(_397.onclick){ -_397.onclick1=_397.onclick; -_397.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_397.onclick1){ -_397.onclick=_397.onclick1; -_397.onclick1=null; -} -} -}; -function _399(_39a,_39b){ -var menu=$(_39a); -if(_39b.parent){ -if(!_39b.parent.submenu){ -var _39c=$("
                                                                                ").appendTo("body"); -_39c.hide(); -_39b.parent.submenu=_39c; -$("
                                                                                ").appendTo(_39b.parent); -} -menu=_39b.parent.submenu; -} -var item=$("
                                                                                ").appendTo(menu); -$("
                                                                                ").html(_39b.text).appendTo(item); -if(_39b.iconCls){ -$("
                                                                                ").addClass(_39b.iconCls).appendTo(item); -} -if(_39b.id){ -item.attr("id",_39b.id); -} -if(_39b.name){ -item[0].itemName=_39b.name; -} -if(_39b.href){ -item[0].itemHref=_39b.href; -} -if(_39b.onclick){ -if(typeof _39b.onclick=="string"){ -item.attr("onclick",_39b.onclick); -}else{ -item[0].onclick=eval(_39b.onclick); -} -} -if(_39b.handler){ -item[0].onclick=eval(_39b.handler); -} -_380(_39a,item); -if(_39b.disabled){ -_37f(_39a,item[0],true); -} -_382(_39a,menu); -_381(_39a,menu); -}; -function _39d(_39e,_39f){ -function _3a0(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_3a0(this); -}); -var _3a1=el.submenu[0].shadow; -if(_3a1){ -_3a1.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_3a0(_39f); -}; -function _3a2(_3a3){ -$(_3a3).children("div.menu-item").each(function(){ -_39d(_3a3,this); -}); -if(_3a3.shadow){ -_3a3.shadow.remove(); -} -$(_3a3).remove(); -}; -$.fn.menu=function(_3a4,_3a5){ -if(typeof _3a4=="string"){ -return $.fn.menu.methods[_3a4](this,_3a5); -} -_3a4=_3a4||{}; -return this.each(function(){ -var _3a6=$.data(this,"menu"); -if(_3a6){ -$.extend(_3a6.options,_3a4); -}else{ -_3a6=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_3a4)}); -init(this); -} -$(this).css({left:_3a6.options.left,top:_3a6.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_38e(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_387(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_3a2(this); -}); -},setText:function(jq,_3a7){ -return jq.each(function(){ -$(_3a7.target).children("div.menu-text").html(_3a7.text); -}); -},setIcon:function(jq,_3a8){ -return jq.each(function(){ -var item=$(this).menu("getItem",_3a8.target); -if(item.iconCls){ -$(item.target).children("div.menu-icon").removeClass(item.iconCls).addClass(_3a8.iconCls); -}else{ -$("
                                                                                ").addClass(_3a8.iconCls).appendTo(_3a8.target); -} -}); -},getItem:function(jq,_3a9){ -var t=$(_3a9); -var item={target:_3a9,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_3a9.itemName,href:_3a9.itemHref,onclick:_3a9.onclick}; -var icon=t.children("div.menu-icon"); -if(icon.length){ -var cc=[]; -var aa=icon.attr("class").split(" "); -for(var i=0;i "})); -if(opts.menu){ -$(opts.menu).menu(); -var _3b0=$(opts.menu).menu("options"); -var _3b1=_3b0.onShow; -var _3b2=_3b0.onHide; -$.extend(_3b0,{onShow:function(){ -var _3b3=$(this).menu("options"); -var btn=$(_3b3.alignTo); -var opts=btn.menubutton("options"); -btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); -_3b1.call(this); -},onHide:function(){ -var _3b4=$(this).menu("options"); -var btn=$(_3b4.alignTo); -var opts=btn.menubutton("options"); -btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); -_3b2.call(this); -}}); -} -_3b5(_3af,opts.disabled); -}; -function _3b5(_3b6,_3b7){ -var opts=$.data(_3b6,"menubutton").options; -opts.disabled=_3b7; -var btn=$(_3b6); -var t=btn.find("."+opts.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_3b7){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _3b8=null; -t.bind("click.menubutton",function(){ -_3b9(_3b6); -return false; -}).bind("mouseenter.menubutton",function(){ -_3b8=setTimeout(function(){ -_3b9(_3b6); -},opts.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_3b8){ -clearTimeout(_3b8); -} -}); -} -}; -function _3b9(_3ba){ -var opts=$.data(_3ba,"menubutton").options; -if(opts.disabled||!opts.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_3ba); -var mm=$(opts.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_3bb,_3bc){ -if(typeof _3bb=="string"){ -var _3bd=$.fn.menubutton.methods[_3bb]; -if(_3bd){ -return _3bd(this,_3bc); -}else{ -return this.linkbutton(_3bb,_3bc); -} -} -_3bb=_3bb||{}; -return this.each(function(){ -var _3be=$.data(this,"menubutton"); -if(_3be){ -$.extend(_3be.options,_3bb); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_3bb)}); -$(this).removeAttr("disabled"); -} -init(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _3bf=jq.linkbutton("options"); -var _3c0=$.data(jq[0],"menubutton").options; -_3c0.toggle=_3bf.toggle; -_3c0.selected=_3bf.selected; -return _3c0; -},enable:function(jq){ -return jq.each(function(){ -_3b5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_3b5(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var opts=$(this).menubutton("options"); -if(opts.menu){ -$(opts.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_3c1){ -var t=$(_3c1); -return $.extend({},$.fn.linkbutton.parseOptions(_3c1),$.parser.parseOptions(_3c1,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); -(function($){ -function init(_3c2){ -var opts=$.data(_3c2,"splitbutton").options; -$(_3c2).menubutton(opts); -}; -$.fn.splitbutton=function(_3c3,_3c4){ -if(typeof _3c3=="string"){ -var _3c5=$.fn.splitbutton.methods[_3c3]; -if(_3c5){ -return _3c5(this,_3c4); -}else{ -return this.menubutton(_3c3,_3c4); -} -} -_3c3=_3c3||{}; -return this.each(function(){ -var _3c6=$.data(this,"splitbutton"); -if(_3c6){ -$.extend(_3c6.options,_3c3); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_3c3)}); -$(this).removeAttr("disabled"); -} -init(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _3c7=jq.menubutton("options"); -var _3c8=$.data(jq[0],"splitbutton").options; -$.extend(_3c8,{disabled:_3c7.disabled,toggle:_3c7.toggle,selected:_3c7.selected}); -return _3c8; -}}; -$.fn.splitbutton.parseOptions=function(_3c9){ -var t=$(_3c9); -return $.extend({},$.fn.linkbutton.parseOptions(_3c9),$.parser.parseOptions(_3c9,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); -(function($){ -function init(_3ca){ -$(_3ca).hide(); -var span=$("").insertAfter(_3ca); -var _3cb=$("").appendTo(span); -$("").appendTo(span); -var name=$(_3ca).attr("name"); -if(name){ -_3cb.attr("name",name); -$(_3ca).removeAttr("name").attr("searchboxName",name); -} -return span; -}; -function _3cc(_3cd,_3ce){ -var opts=$.data(_3cd,"searchbox").options; -var sb=$.data(_3cd,"searchbox").searchbox; -if(_3ce){ -opts.width=_3ce; -} -sb.appendTo("body"); -if(isNaN(opts.width)){ -opts.width=sb._outerWidth(); -} -var _3cf=sb.find("span.searchbox-button"); -var menu=sb.find("a.searchbox-menu"); -var _3d0=sb.find("input.searchbox-text"); -sb._outerWidth(opts.width)._outerHeight(opts.height); -_3d0._outerWidth(sb.width()-menu._outerWidth()-_3cf._outerWidth()); -_3d0.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -menu._outerHeight(sb.height()); -_3cf._outerHeight(sb.height()); -var _3d1=menu.find("span.l-btn-left"); -_3d1._outerHeight(sb.height()); -_3d1.find("span.l-btn-text,span.m-btn-downarrow").css({height:_3d1.height()+"px",lineHeight:_3d1.height()+"px"}); -sb.insertAfter(_3cd); -}; -function _3d2(_3d3){ -var _3d4=$.data(_3d3,"searchbox"); -var opts=_3d4.options; -if(opts.menu){ -_3d4.menu=$(opts.menu).menu({onClick:function(item){ -_3d5(item); -}}); -var item=_3d4.menu.children("div.menu-item:first"); -_3d4.menu.children("div.menu-item").each(function(){ -var _3d6=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_3d6.selected){ -item=$(this); -return false; -} -}); -item.triggerHandler("click"); -}else{ -_3d4.searchbox.find("a.searchbox-menu").remove(); -_3d4.menu=null; -} -function _3d5(item){ -_3d4.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(item.text); -mb.prependTo(_3d4.searchbox).menubutton({menu:_3d4.menu,iconCls:item.iconCls}); -_3d4.searchbox.find("input.searchbox-text").attr("name",$(item.target).attr("name")||item.text); -_3cc(_3d3); -}; -}; -function _3d7(_3d8){ -var _3d9=$.data(_3d8,"searchbox"); -var opts=_3d9.options; -var _3da=_3d9.searchbox.find("input.searchbox-text"); -var _3db=_3d9.searchbox.find(".searchbox-button"); -_3da.unbind(".searchbox").bind("blur.searchbox",function(e){ -opts.value=$(this).val(); -if(opts.value==""){ -$(this).val(opts.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=opts.value){ -$(this).val(opts.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -var name=$.fn.prop?_3da.prop("name"):_3da.attr("name"); -opts.value=$(this).val(); -opts.searcher.call(_3d8,opts.value,name); -return false; -} -}); -_3db.unbind(".searchbox").bind("click.searchbox",function(){ -var name=$.fn.prop?_3da.prop("name"):_3da.attr("name"); -opts.searcher.call(_3d8,opts.value,name); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _3dc(_3dd){ -var _3de=$.data(_3dd,"searchbox"); -var opts=_3de.options; -var _3df=_3de.searchbox.find("input.searchbox-text"); -if(opts.value==""){ -_3df.val(opts.prompt); -_3df.addClass("searchbox-prompt"); -}else{ -_3df.val(opts.value); -_3df.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_3e0,_3e1){ -if(typeof _3e0=="string"){ -return $.fn.searchbox.methods[_3e0](this,_3e1); -} -_3e0=_3e0||{}; -return this.each(function(){ -var _3e2=$.data(this,"searchbox"); -if(_3e2){ -$.extend(_3e2.options,_3e0); -}else{ -_3e2=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_3e0),searchbox:init(this)}); -} -_3d2(this); -_3dc(this); -_3d7(this); -_3cc(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_3e3){ -return jq.each(function(){ -$(this).searchbox("options").value=_3e3; -$(this).searchbox("textbox").val(_3e3); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,name){ -return jq.each(function(){ -var menu=$.data(this,"searchbox").menu; -if(menu){ -menu.children("div.menu-item[name=\""+name+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var menu=$(this).searchbox("menu"); -if(menu){ -menu.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_3e4){ -return jq.each(function(){ -_3cc(this,_3e4); -}); -}}; -$.fn.searchbox.parseOptions=function(_3e5){ -var t=$(_3e5); -return $.extend({},$.parser.parseOptions(_3e5,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_3e6,name){ -}}; -})(jQuery); -(function($){ -function init(_3e7){ -$(_3e7).addClass("validatebox-text"); -}; -function _3e8(_3e9){ -var _3ea=$.data(_3e9,"validatebox"); -_3ea.validating=false; -$(_3e9).tooltip("destroy"); -$(_3e9).unbind(); -$(_3e9).remove(); -}; -function _3eb(_3ec){ -var box=$(_3ec); -var _3ed=$.data(_3ec,"validatebox"); -box.unbind(".validatebox"); -if(_3ed.options.novalidate){ -return; -} -box.bind("focus.validatebox",function(){ -_3ed.validating=true; -_3ed.value=undefined; -(function(){ -if(_3ed.validating){ -if(_3ed.value!=box.val()){ -_3ed.value=box.val(); -if(_3ed.timer){ -clearTimeout(_3ed.timer); -} -_3ed.timer=setTimeout(function(){ -$(_3ec).validatebox("validate"); -},_3ed.options.delay); -}else{ -_3f2(_3ec); -} -setTimeout(arguments.callee,200); -} -})(); -}).bind("blur.validatebox",function(){ -if(_3ed.timer){ -clearTimeout(_3ed.timer); -_3ed.timer=undefined; -} -_3ed.validating=false; -_3ee(_3ec); -}).bind("mouseenter.validatebox",function(){ -if(box.hasClass("validatebox-invalid")){ -_3ef(_3ec); -} -}).bind("mouseleave.validatebox",function(){ -if(!_3ed.validating){ -_3ee(_3ec); -} -}); -}; -function _3ef(_3f0){ -var _3f1=$.data(_3f0,"validatebox"); -var opts=_3f1.options; -$(_3f0).tooltip($.extend({},opts.tipOptions,{content:_3f1.message,position:opts.tipPosition,deltaX:opts.deltaX})).tooltip("show"); -_3f1.tip=true; -}; -function _3f2(_3f3){ -var _3f4=$.data(_3f3,"validatebox"); -if(_3f4&&_3f4.tip){ -$(_3f3).tooltip("reposition"); -} -}; -function _3ee(_3f5){ -var _3f6=$.data(_3f5,"validatebox"); -_3f6.tip=false; -$(_3f5).tooltip("hide"); -}; -function _3f7(_3f8){ -var _3f9=$.data(_3f8,"validatebox"); -var opts=_3f9.options; -var box=$(_3f8); -var _3fa=box.val(); -function _3fb(msg){ -_3f9.message=msg; -}; -function _3fc(_3fd){ -var _3fe=/([a-zA-Z_]+)(.*)/.exec(_3fd); -var rule=opts.rules[_3fe[1]]; -if(rule&&_3fa){ -var _3ff=eval(_3fe[2]); -if(!rule["validator"](_3fa,_3ff)){ -box.addClass("validatebox-invalid"); -var _400=rule["message"]; -if(_3ff){ -for(var i=0;i<_3ff.length;i++){ -_400=_400.replace(new RegExp("\\{"+i+"\\}","g"),_3ff[i]); -} -} -_3fb(opts.invalidMessage||_400); -if(_3f9.validating){ -_3ef(_3f8); -} -return false; -} -} -return true; -}; -if(opts.novalidate||box.is(":disabled")){ -return true; -} -if(opts.required){ -if(_3fa==""){ -box.addClass("validatebox-invalid"); -_3fb(opts.missingMessage); -if(_3f9.validating){ -_3ef(_3f8); -} -return false; -} -} -if(opts.validType){ -if(typeof opts.validType=="string"){ -if(!_3fc(opts.validType)){ -return false; -} -}else{ -for(var i=0;i=_40b[0]&&len<=_40b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_40c,_40d){ -var data={}; -data[_40d[1]]=_40c; -var _40e=$.ajax({url:_40d[0],dataType:"json",data:data,async:false,cache:false,type:"post"}).responseText; -return _40e=="true"; -},message:"Please fix this field."}}}; -})(jQuery); -(function($){ -function _40f(_410,_411){ -_411=_411||{}; -var _412={}; -if(_411.onSubmit){ -if(_411.onSubmit.call(_410,_412)==false){ -return; -} -} -var form=$(_410); -if(_411.url){ -form.attr("action",_411.url); -} -var _413="easyui_frame_"+(new Date().getTime()); -var _414=$("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=form.attr("target"),a=form.attr("action"); -form.attr("target",_413); -var _415=$(); -try{ -_414.appendTo("body"); -_414.bind("load",cb); -for(var n in _412){ -var f=$("").val(_412[n]).appendTo(form); -_415=_415.add(f); -} -form[0].submit(); -} -finally{ -form.attr("action",a); -t?form.attr("target",t):form.removeAttr("target"); -_415.remove(); -} -var _416=10; -function cb(){ -_414.unbind(); -var body=$("#"+_413).contents().find("body"); -var data=body.html(); -if(data==""){ -if(--_416){ -setTimeout(cb,100); -return; -} -return; -} -var ta=body.find(">textarea"); -if(ta.length){ -data=ta.val(); -}else{ -var pre=body.find(">pre"); -if(pre.length){ -data=pre.html(); -} -} -if(_411.success){ -_411.success(data); -} -setTimeout(function(){ -_414.unbind(); -_414.remove(); -},100); -}; -}; -function load(_417,data){ -if(!$.data(_417,"form")){ -$.data(_417,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var opts=$.data(_417,"form").options; -if(typeof data=="string"){ -var _418={}; -if(opts.onBeforeLoad.call(_417,_418)==false){ -return; -} -$.ajax({url:data,data:_418,dataType:"json",success:function(data){ -_419(data); -},error:function(){ -opts.onLoadError.apply(_417,arguments); -}}); -}else{ -_419(data); -} -function _419(data){ -var form=$(_417); -for(var name in data){ -var val=data[name]; -var rr=_41a(name,val); -if(!rr.length){ -var f=form.find("input[numberboxName=\""+name+"\"]"); -if(f.length){ -f.numberbox("setValue",val); -}else{ -$("input[name=\""+name+"\"]",form).val(val); -$("textarea[name=\""+name+"\"]",form).val(val); -$("select[name=\""+name+"\"]",form).val(val); -} -} -_41b(name,val); -} -opts.onLoadSuccess.call(_417,data); -_41e(_417); -}; -function _41a(name,val){ -var rr=$(_417).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),val)>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _41b(name,val){ -var form=$(_417); -var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"]; -var c=form.find("[comboName=\""+name+"\"]"); -if(c.length){ -for(var i=0;i").insertAfter(_42e); -var name=$(_42e).attr("name"); -if(name){ -v.attr("name",name); -$(_42e).removeAttr("name").attr("numberboxName",name); -} -return v; -}; -function _42f(_430){ -var opts=$.data(_430,"numberbox").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_431(_430,opts.parser.call(_430,opts.value)); -opts.onChange=fn; -opts.originalValue=_432(_430); -}; -function _432(_433){ -return $.data(_433,"numberbox").field.val(); -}; -function _431(_434,_435){ -var _436=$.data(_434,"numberbox"); -var opts=_436.options; -var _437=_432(_434); -_435=opts.parser.call(_434,_435); -opts.value=_435; -_436.field.val(_435); -$(_434).val(opts.formatter.call(_434,_435)); -if(_437!=_435){ -opts.onChange.call(_434,_435,_437); -} -}; -function _438(_439){ -var opts=$.data(_439,"numberbox").options; -$(_439).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return opts.filter.call(_439,e); -}).bind("blur.numberbox",function(){ -_431(_439,$(this).val()); -$(this).val(opts.formatter.call(_439,_432(_439))); -}).bind("focus.numberbox",function(){ -var vv=_432(_439); -if(vv!=opts.parser.call(_439,$(this).val())){ -$(this).val(opts.formatter.call(_439,vv)); -} -}); -}; -function _43a(_43b){ -if($.fn.validatebox){ -var opts=$.data(_43b,"numberbox").options; -$(_43b).validatebox(opts); -} -}; -function _43c(_43d,_43e){ -var opts=$.data(_43d,"numberbox").options; -if(_43e){ -opts.disabled=true; -$(_43d).attr("disabled",true); -}else{ -opts.disabled=false; -$(_43d).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_43f,_440){ -if(typeof _43f=="string"){ -var _441=$.fn.numberbox.methods[_43f]; -if(_441){ -return _441(this,_440); -}else{ -return this.validatebox(_43f,_440); -} -} -_43f=_43f||{}; -return this.each(function(){ -var _442=$.data(this,"numberbox"); -if(_442){ -$.extend(_442.options,_43f); -}else{ -_442=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_43f),field:init(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_43c(this,_442.options.disabled); -_438(this); -_43a(this); -_42f(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_43c(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_43c(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_431(this,$(this).val()); -}); -},setValue:function(jq,_443){ -return jq.each(function(){ -_431(this,_443); -}); -},getValue:function(jq){ -return _432(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _444=$.data(this,"numberbox"); -_444.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).numberbox("options"); -$(this).numberbox("setValue",opts.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_445){ -var t=$(_445); -return $.extend({},$.fn.validatebox.parseOptions(_445),$.parser.parseOptions(_445,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var opts=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==opts.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==opts.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_446){ -if(!_446){ -return _446; -} -_446=_446+""; -var opts=$(this).numberbox("options"); -var s1=_446,s2=""; -var dpos=_446.indexOf("."); -if(dpos>=0){ -s1=_446.substring(0,dpos); -s2=_446.substring(dpos+1,_446.length); -} -if(opts.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); -} -} -if(s2){ -return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; -}else{ -return opts.prefix+s1+opts.suffix; -} -},parser:function(s){ -s=s+""; -var opts=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(opts.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); -} -if(opts.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); -} -if(opts.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); -} -if(opts.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(opts.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (opts.min)=="number"&&valopts.max){ -val=opts.max.toFixed(opts.precision); -} -} -} -return val; -},onChange:function(_447,_448){ -}}); -})(jQuery); -(function($){ -function _449(_44a){ -var opts=$.data(_44a,"calendar").options; -var t=$(_44a); -opts.fit?$.extend(opts,t._fit()):t._fit(false); -var _44b=t.find(".calendar-header"); -t._outerWidth(opts.width); -t._outerHeight(opts.height); -t.find(".calendar-body")._outerHeight(t.height()-_44b._outerHeight()); -}; -function init(_44c){ -$(_44c).addClass("calendar").html("
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"Aprial 2010"+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+""+""+""+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "); -$(_44c).find(".calendar-title span").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var menu=$(_44c).find(".calendar-menu"); -if(menu.is(":visible")){ -menu.hide(); -}else{ -_453(_44c); -} -}); -$(".calendar-prevmonth,.calendar-nextmonth,.calendar-prevyear,.calendar-nextyear",_44c).hover(function(){ -$(this).addClass("calendar-nav-hover"); -},function(){ -$(this).removeClass("calendar-nav-hover"); -}); -$(_44c).find(".calendar-nextmonth").click(function(){ -_44d(_44c,1); -}); -$(_44c).find(".calendar-prevmonth").click(function(){ -_44d(_44c,-1); -}); -$(_44c).find(".calendar-nextyear").click(function(){ -_450(_44c,1); -}); -$(_44c).find(".calendar-prevyear").click(function(){ -_450(_44c,-1); -}); -$(_44c).bind("_resize",function(){ -var opts=$.data(_44c,"calendar").options; -if(opts.fit==true){ -_449(_44c); -} -return false; -}); -}; -function _44d(_44e,_44f){ -var opts=$.data(_44e,"calendar").options; -opts.month+=_44f; -if(opts.month>12){ -opts.year++; -opts.month=1; -}else{ -if(opts.month<1){ -opts.year--; -opts.month=12; -} -} -show(_44e); -var menu=$(_44e).find(".calendar-menu-month-inner"); -menu.find("td.calendar-selected").removeClass("calendar-selected"); -menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); -}; -function _450(_451,_452){ -var opts=$.data(_451,"calendar").options; -opts.year+=_452; -show(_451); -var menu=$(_451).find(".calendar-menu-year"); -menu.val(opts.year); -}; -function _453(_454){ -var opts=$.data(_454,"calendar").options; -$(_454).find(".calendar-menu").show(); -if($(_454).find(".calendar-menu-month-inner").is(":empty")){ -$(_454).find(".calendar-menu-month-inner").empty(); -var t=$("
                                                                                ").appendTo($(_454).find(".calendar-menu-month-inner")); -var idx=0; -for(var i=0;i<3;i++){ -var tr=$("").appendTo(t); -for(var j=0;j<4;j++){ -$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); -} -} -$(_454).find(".calendar-menu-prev,.calendar-menu-next").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}); -$(_454).find(".calendar-menu-next").click(function(){ -var y=$(_454).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val())+1); -} -}); -$(_454).find(".calendar-menu-prev").click(function(){ -var y=$(_454).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val()-1)); -} -}); -$(_454).find(".calendar-menu-year").keypress(function(e){ -if(e.keyCode==13){ -_455(); -} -}); -$(_454).find(".calendar-menu-month").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var menu=$(_454).find(".calendar-menu"); -menu.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -_455(); -}); -} -function _455(){ -var menu=$(_454).find(".calendar-menu"); -var year=menu.find(".calendar-menu-year").val(); -var _456=menu.find(".calendar-selected").attr("abbr"); -if(!isNaN(year)){ -opts.year=parseInt(year); -opts.month=parseInt(_456); -show(_454); -} -menu.hide(); -}; -var body=$(_454).find(".calendar-body"); -var sele=$(_454).find(".calendar-menu"); -var _457=sele.find(".calendar-menu-year-inner"); -var _458=sele.find(".calendar-menu-month-inner"); -_457.find("input").val(opts.year).focus(); -_458.find("td.calendar-selected").removeClass("calendar-selected"); -_458.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); -sele._outerWidth(body._outerWidth()); -sele._outerHeight(body._outerHeight()); -_458._outerHeight(sele.height()-_457._outerHeight()); -}; -function _459(_45a,year,_45b){ -var opts=$.data(_45a,"calendar").options; -var _45c=[]; -var _45d=new Date(year,_45b,0).getDate(); -for(var i=1;i<=_45d;i++){ -_45c.push([year,_45b,i]); -} -var _45e=[],week=[]; -var _45f=-1; -while(_45c.length>0){ -var date=_45c.shift(); -week.push(date); -var day=new Date(date[0],date[1]-1,date[2]).getDay(); -if(_45f==day){ -day=0; -}else{ -if(day==(opts.firstDay==0?7:opts.firstDay)-1){ -_45e.push(week); -week=[]; -} -} -_45f=day; -} -if(week.length){ -_45e.push(week); -} -var _460=_45e[0]; -if(_460.length<7){ -while(_460.length<7){ -var _461=_460[0]; -var date=new Date(_461[0],_461[1]-1,_461[2]-1); -_460.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -}else{ -var _461=_460[0]; -var week=[]; -for(var i=1;i<=7;i++){ -var date=new Date(_461[0],_461[1]-1,_461[2]-i); -week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -_45e.unshift(week); -} -var _462=_45e[_45e.length-1]; -while(_462.length<7){ -var _463=_462[_462.length-1]; -var date=new Date(_463[0],_463[1]-1,_463[2]+1); -_462.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -if(_45e.length<6){ -var _463=_462[_462.length-1]; -var week=[]; -for(var i=1;i<=7;i++){ -var date=new Date(_463[0],_463[1]-1,_463[2]+i); -week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -_45e.push(week); -} -return _45e; -}; -function show(_464){ -var opts=$.data(_464,"calendar").options; -$(_464).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); -var body=$(_464).find("div.calendar-body"); -body.find(">table").remove(); -var t=$("
                                                                                ").prependTo(body); -var tr=$("").appendTo(t.find("thead")); -for(var i=opts.firstDay;i"+opts.weeks[i]+""); -} -for(var i=0;i"+opts.weeks[i]+""); -} -var _465=_459(_464,opts.year,opts.month); -for(var i=0;i<_465.length;i++){ -var week=_465[i]; -var tr=$("").appendTo(t.find("tbody")); -for(var j=0;j").attr("abbr",day[0]+","+day[1]+","+day[2]).html(day[2]).appendTo(tr); -} -} -t.find("td[abbr^=\""+opts.year+","+opts.month+"\"]").removeClass("calendar-other-month"); -var now=new Date(); -var _466=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); -t.find("td[abbr=\""+_466+"\"]").addClass("calendar-today"); -if(opts.current){ -t.find(".calendar-selected").removeClass("calendar-selected"); -var _467=opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate(); -t.find("td[abbr=\""+_467+"\"]").addClass("calendar-selected"); -} -var _468=6-opts.firstDay; -var _469=_468+1; -if(_468>=7){ -_468-=7; -} -if(_469>=7){ -_469-=7; -} -t.find("tr").find("td:eq("+_468+")").addClass("calendar-saturday"); -t.find("tr").find("td:eq("+_469+")").addClass("calendar-sunday"); -t.find("td").hover(function(){ -$(this).addClass("calendar-hover"); -},function(){ -$(this).removeClass("calendar-hover"); -}).click(function(){ -t.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -var _46a=$(this).attr("abbr").split(","); -opts.current=new Date(_46a[0],parseInt(_46a[1])-1,_46a[2]); -opts.onSelect.call(_464,opts.current); -}); -}; -$.fn.calendar=function(_46b,_46c){ -if(typeof _46b=="string"){ -return $.fn.calendar.methods[_46b](this,_46c); -} -_46b=_46b||{}; -return this.each(function(){ -var _46d=$.data(this,"calendar"); -if(_46d){ -$.extend(_46d.options,_46b); -}else{ -_46d=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_46b)}); -init(this); -} -if(_46d.options.border==false){ -$(this).addClass("calendar-noborder"); -} -_449(this); -show(this); -$(this).find("div.calendar-menu").hide(); -}); -}; -$.fn.calendar.methods={options:function(jq){ -return $.data(jq[0],"calendar").options; -},resize:function(jq){ -return jq.each(function(){ -_449(this); -}); -},moveTo:function(jq,date){ -return jq.each(function(){ -$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); -}); -}}; -$.fn.calendar.parseOptions=function(_46e){ -var t=$(_46e); -return $.extend({},$.parser.parseOptions(_46e,["width","height",{firstDay:"number",fit:"boolean",border:"boolean"}])); -}; -$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date(),onSelect:function(date){ -}}; -})(jQuery); -(function($){ -function init(_46f){ -var _470=$(""+""+""+""+""+"").insertAfter(_46f); -$(_46f).addClass("spinner-text spinner-f").prependTo(_470); -return _470; -}; -function _471(_472,_473){ -var opts=$.data(_472,"spinner").options; -var _474=$.data(_472,"spinner").spinner; -if(_473){ -opts.width=_473; -} -var _475=$("
                                                                                ").insertBefore(_474); -_474.appendTo("body"); -if(isNaN(opts.width)){ -opts.width=$(_472).outerWidth(); -} -var _476=_474.find(".spinner-arrow"); -_474._outerWidth(opts.width)._outerHeight(opts.height); -$(_472)._outerWidth(_474.width()-_476.outerWidth()); -$(_472).css({height:_474.height()+"px",lineHeight:_474.height()+"px"}); -_476._outerHeight(_474.height()); -_476.find("span")._outerHeight(_476.height()/2); -_474.insertAfter(_475); -_475.remove(); -}; -function _477(_478){ -var opts=$.data(_478,"spinner").options; -var _479=$.data(_478,"spinner").spinner; -_479.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!opts.disabled){ -_479.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -opts.spin.call(_478,false); -opts.onSpinUp.call(_478); -$(_478).validatebox("validate"); -}); -_479.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -opts.spin.call(_478,true); -opts.onSpinDown.call(_478); -$(_478).validatebox("validate"); -}); -} -}; -function _47a(_47b,_47c){ -var opts=$.data(_47b,"spinner").options; -if(_47c){ -opts.disabled=true; -$(_47b).attr("disabled",true); -}else{ -opts.disabled=false; -$(_47b).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_47d,_47e){ -if(typeof _47d=="string"){ -var _47f=$.fn.spinner.methods[_47d]; -if(_47f){ -return _47f(this,_47e); -}else{ -return this.validatebox(_47d,_47e); -} -} -_47d=_47d||{}; -return this.each(function(){ -var _480=$.data(this,"spinner"); -if(_480){ -$.extend(_480.options,_47d); -}else{ -_480=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_47d),spinner:init(this)}); -$(this).removeAttr("disabled"); -} -_480.options.originalValue=_480.options.value; -$(this).val(_480.options.value); -$(this).attr("readonly",!_480.options.editable); -_47a(this,_480.options.disabled); -_471(this); -$(this).validatebox(_480.options); -_477(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var opts=$.data(jq[0],"spinner").options; -return $.extend(opts,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _481=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_481.remove(); -}); -},resize:function(jq,_482){ -return jq.each(function(){ -_471(this,_482); -}); -},enable:function(jq){ -return jq.each(function(){ -_47a(this,false); -_477(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_47a(this,true); -_477(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_483){ -return jq.each(function(){ -var opts=$.data(this,"spinner").options; -opts.value=_483; -$(this).val(_483); -}); -},clear:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"spinner").options; -opts.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).spinner("options"); -$(this).spinner("setValue",opts.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_484){ -var t=$(_484); -return $.extend({},$.fn.validatebox.parseOptions(_484),$.parser.parseOptions(_484,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(down){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); -(function($){ -function _485(_486){ -$(_486).addClass("numberspinner-f"); -var opts=$.data(_486,"numberspinner").options; -$(_486).spinner(opts).numberbox(opts); -}; -function _487(_488,down){ -var opts=$.data(_488,"numberspinner").options; -var v=parseFloat($(_488).numberbox("getValue")||opts.value)||0; -if(down==true){ -v-=opts.increment; -}else{ -v+=opts.increment; -} -$(_488).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_489,_48a){ -if(typeof _489=="string"){ -var _48b=$.fn.numberspinner.methods[_489]; -if(_48b){ -return _48b(this,_48a); -}else{ -return this.spinner(_489,_48a); -} -} -_489=_489||{}; -return this.each(function(){ -var _48c=$.data(this,"numberspinner"); -if(_48c){ -$.extend(_48c.options,_489); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_489)}); -} -_485(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var opts=$.data(jq[0],"numberspinner").options; -return $.extend(opts,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_48d){ -return jq.each(function(){ -$(this).numberbox("setValue",_48d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).numberspinner("options"); -$(this).numberspinner("setValue",opts.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_48e){ -return $.extend({},$.fn.spinner.parseOptions(_48e),$.fn.numberbox.parseOptions(_48e),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ -_487(this,down); -}}); -})(jQuery); -(function($){ -function _48f(_490){ -var opts=$.data(_490,"timespinner").options; -$(_490).addClass("timespinner-f"); -$(_490).spinner(opts); -$(_490).unbind(".timespinner"); -$(_490).bind("click.timespinner",function(){ -var _491=0; -if(this.selectionStart!=null){ -_491=this.selectionStart; -}else{ -if(this.createTextRange){ -var _492=_490.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_492); -_491=s.text.length; -} -} -if(_491>=0&&_491<=2){ -opts.highlight=0; -}else{ -if(_491>=3&&_491<=5){ -opts.highlight=1; -}else{ -if(_491>=6&&_491<=8){ -opts.highlight=2; -} -} -} -_494(_490); -}).bind("blur.timespinner",function(){ -_493(_490); -}); -}; -function _494(_495){ -var opts=$.data(_495,"timespinner").options; -var _496=0,end=0; -if(opts.highlight==0){ -_496=0; -end=2; -}else{ -if(opts.highlight==1){ -_496=3; -end=5; -}else{ -if(opts.highlight==2){ -_496=6; -end=8; -} -} -} -if(_495.selectionStart!=null){ -_495.setSelectionRange(_496,end); -}else{ -if(_495.createTextRange){ -var _497=_495.createTextRange(); -_497.collapse(); -_497.moveEnd("character",end); -_497.moveStart("character",_496); -_497.select(); -} -} -$(_495).focus(); -}; -function _498(_499,_49a){ -var opts=$.data(_499,"timespinner").options; -if(!_49a){ -return null; -} -var vv=_49a.split(opts.separator); -for(var i=0;itime){ -time=_49d; -} -if(_49e&&_49e"]; -for(var i=0;i<_4b1.length;i++){ -_4b0.cache[_4b1[i][0]]={width:_4b1[i][1]}; -} -var _4b2=0; -for(var s in _4b0.cache){ -var item=_4b0.cache[s]; -item.index=_4b2++; -ss.push(s+"{width:"+item.width+"}"); -} -ss.push(""); -$(ss.join("\n")).appendTo(cc); -setTimeout(function(){ -cc.children("style:not(:last)").remove(); -},0); -},getRule:function(_4b3){ -var _4b4=cc.children("style:last")[0]; -var _4b5=_4b4.styleSheet?_4b4.styleSheet:(_4b4.sheet||document.styleSheets[document.styleSheets.length-1]); -var _4b6=_4b5.cssRules||_4b5.rules; -return _4b6[_4b3]; -},set:function(_4b7,_4b8){ -var item=_4b0.cache[_4b7]; -if(item){ -item.width=_4b8; -var rule=this.getRule(item.index); -if(rule){ -rule.style["width"]=_4b8; -} -} -},remove:function(_4b9){ -var tmp=[]; -for(var s in _4b0.cache){ -if(s.indexOf(_4b9)==-1){ -tmp.push([s,_4b0.cache[s].width]); -} -} -_4b0.cache={}; -this.add(tmp); -},dirty:function(_4ba){ -if(_4ba){ -_4b0.dirty.push(_4ba); -} -},clean:function(){ -for(var i=0;i<_4b0.dirty.length;i++){ -this.remove(_4b0.dirty[i]); -} -_4b0.dirty=[]; -}}; -}; -function _4bb(_4bc,_4bd){ -var opts=$.data(_4bc,"datagrid").options; -var _4be=$.data(_4bc,"datagrid").panel; -if(_4bd){ -if(_4bd.width){ -opts.width=_4bd.width; -} -if(_4bd.height){ -opts.height=_4bd.height; -} -} -if(opts.fit==true){ -var p=_4be.panel("panel").parent(); -opts.width=p.width(); -opts.height=p.height(); -} -_4be.panel("resize",{width:opts.width,height:opts.height}); -}; -function _4bf(_4c0){ -var opts=$.data(_4c0,"datagrid").options; -var dc=$.data(_4c0,"datagrid").dc; -var wrap=$.data(_4c0,"datagrid").panel; -var _4c1=wrap.width(); -var _4c2=wrap.height(); -var view=dc.view; -var _4c3=dc.view1; -var _4c4=dc.view2; -var _4c5=_4c3.children("div.datagrid-header"); -var _4c6=_4c4.children("div.datagrid-header"); -var _4c7=_4c5.find("table"); -var _4c8=_4c6.find("table"); -view.width(_4c1); -var _4c9=_4c5.children("div.datagrid-header-inner").show(); -_4c3.width(_4c9.find("table").width()); -if(!opts.showHeader){ -_4c9.hide(); -} -_4c4.width(_4c1-_4c3._outerWidth()); -_4c3.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_4c3.width()); -_4c4.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_4c4.width()); -var hh; -_4c5.css("height",""); -_4c6.css("height",""); -_4c7.css("height",""); -_4c8.css("height",""); -hh=Math.max(_4c7.height(),_4c8.height()); -_4c7.height(hh); -_4c8.height(hh); -_4c5.add(_4c6)._outerHeight(hh); -if(opts.height!="auto"){ -var _4ca=_4c2-_4c4.children("div.datagrid-header")._outerHeight()-_4c4.children("div.datagrid-footer")._outerHeight()-wrap.children("div.datagrid-toolbar")._outerHeight(); -wrap.children("div.datagrid-pager").each(function(){ -_4ca-=$(this)._outerHeight(); -}); -dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); -var _4cb=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); -_4c3.add(_4c4).children("div.datagrid-body").css({marginTop:_4cb,height:(_4ca-_4cb)}); -} -view.height(_4c4.height()); -}; -function _4cc(_4cd,_4ce,_4cf){ -var rows=$.data(_4cd,"datagrid").data.rows; -var opts=$.data(_4cd,"datagrid").options; -var dc=$.data(_4cd,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_4cf)){ -if(_4ce!=undefined){ -var tr1=opts.finder.getTr(_4cd,_4ce,"body",1); -var tr2=opts.finder.getTr(_4cd,_4ce,"body",2); -_4d0(tr1,tr2); -}else{ -var tr1=opts.finder.getTr(_4cd,0,"allbody",1); -var tr2=opts.finder.getTr(_4cd,0,"allbody",2); -_4d0(tr1,tr2); -if(opts.showFooter){ -var tr1=opts.finder.getTr(_4cd,0,"allfooter",1); -var tr2=opts.finder.getTr(_4cd,0,"allfooter",2); -_4d0(tr1,tr2); -} -} -} -_4bf(_4cd); -if(opts.height=="auto"){ -var _4d1=dc.body1.parent(); -var _4d2=dc.body2; -var _4d3=_4d4(_4d2); -var _4d5=_4d3.height; -if(_4d3.width>_4d2.width()){ -_4d5+=18; -} -_4d1.height(_4d5); -_4d2.height(_4d5); -dc.view.height(dc.view2.height()); -} -dc.body2.triggerHandler("scroll"); -function _4d0(trs1,trs2){ -for(var i=0;i"); -} -_4dd(true); -_4dd(false); -_4bf(_4da); -function _4dd(_4de){ -var _4df=_4de?1:2; -var tr=opts.finder.getTr(_4da,_4db,"body",_4df); -(_4de?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); -}; -}; -function _4e0(_4e1,_4e2){ -function _4e3(){ -var _4e4=[]; -var _4e5=[]; -$(_4e1).children("thead").each(function(){ -var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); -$(this).find("tr").each(function(){ -var cols=[]; -$(this).find("th").each(function(){ -var th=$(this); -var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number",width:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); -if(th.attr("editor")){ -var s=$.trim(th.attr("editor")); -if(s.substr(0,1)=="{"){ -col.editor=eval("("+s+")"); -}else{ -col.editor=s; -} -} -cols.push(col); -}); -opt.frozen?_4e4.push(cols):_4e5.push(cols); -}); -}); -return [_4e4,_4e5]; -}; -var _4e6=$("
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+""+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+""+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                ").insertAfter(_4e1); -_4e6.panel({doSize:false}); -_4e6.panel("panel").addClass("datagrid").bind("_resize",function(e,_4e7){ -var opts=$.data(_4e1,"datagrid").options; -if(opts.fit==true||_4e7){ -_4bb(_4e1); -setTimeout(function(){ -if($.data(_4e1,"datagrid")){ -_4e8(_4e1); -} -},0); -} -return false; -}); -$(_4e1).hide().appendTo(_4e6.children("div.datagrid-view")); -var cc=_4e3(); -var view=_4e6.children("div.datagrid-view"); -var _4e9=view.children("div.datagrid-view1"); -var _4ea=view.children("div.datagrid-view2"); -var _4eb=_4e6.closest("div.datagrid-view"); -if(!_4eb.length){ -_4eb=view; -} -var ss=_4ae(_4eb); -return {panel:_4e6,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_4e9,view2:_4ea,header1:_4e9.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_4ea.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_4e9.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_4ea.children("div.datagrid-body"),footer1:_4e9.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_4ea.children("div.datagrid-footer").children("div.datagrid-footer-inner")},ss:ss}; -}; -function _4ec(_4ed){ -var _4ee=$.data(_4ed,"datagrid"); -var opts=_4ee.options; -var dc=_4ee.dc; -var _4ef=_4ee.panel; -_4ef.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_4f0,_4f1){ -setTimeout(function(){ -if($.data(_4ed,"datagrid")){ -_4bf(_4ed); -_518(_4ed); -opts.onResize.call(_4ef,_4f0,_4f1); -} -},0); -},onExpand:function(){ -_4cc(_4ed); -opts.onExpand.call(_4ef); -}})); -_4ee.rowIdPrefix="datagrid-row-r"+(++_4a9); -_4ee.cellClassPrefix="datagrid-cell-c"+_4a9; -_4f2(dc.header1,opts.frozenColumns,true); -_4f2(dc.header2,opts.columns,false); -_4f3(); -dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); -dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); -if(opts.toolbar){ -if($.isArray(opts.toolbar)){ -$("div.datagrid-toolbar",_4ef).remove(); -var tb=$("
                                                                                ").prependTo(_4ef); -var tr=tb.find("tr"); -for(var i=0;i
                                                                                ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(btn.handler||function(){ -}); -tool.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_4ef); -$(opts.toolbar).show(); -} -}else{ -$("div.datagrid-toolbar",_4ef).remove(); -} -$("div.datagrid-pager",_4ef).remove(); -if(opts.pagination){ -var _4f4=$("
                                                                                "); -if(opts.pagePosition=="bottom"){ -_4f4.appendTo(_4ef); -}else{ -if(opts.pagePosition=="top"){ -_4f4.addClass("datagrid-pager-top").prependTo(_4ef); -}else{ -var ptop=$("
                                                                                ").prependTo(_4ef); -_4f4.appendTo(_4ef); -_4f4=_4f4.add(ptop); -} -} -_4f4.pagination({total:0,pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_4f5,_4f6){ -opts.pageNumber=_4f5; -opts.pageSize=_4f6; -_4f4.pagination("refresh",{pageNumber:_4f5,pageSize:_4f6}); -_5dc(_4ed); -}}); -opts.pageSize=_4f4.pagination("options").pageSize; -} -function _4f2(_4f7,_4f8,_4f9){ -if(!_4f8){ -return; -} -$(_4f7).show(); -$(_4f7).empty(); -var _4fa=[]; -var _4fb=[]; -if(opts.sortName){ -_4fa=opts.sortName.split(","); -_4fb=opts.sortOrder.split(","); -} -var t=$("
                                                                                ").appendTo(_4f7); -for(var i=0;i<_4f8.length;i++){ -var tr=$("").appendTo($("tbody",t)); -var cols=_4f8[i]; -for(var j=0;j").appendTo(tr); -if(col.checkbox){ -td.attr("field",col.field); -$("
                                                                                ").html("").appendTo(td); -}else{ -if(col.field){ -td.attr("field",col.field); -td.append("
                                                                                "); -$("span",td).html(col.title); -$("span.datagrid-sort-icon",td).html(" "); -var cell=td.find("div.datagrid-cell"); -var pos=_4aa(_4fa,col.field); -if(pos>=0){ -cell.addClass("datagrid-sort-"+_4fb[pos]); -} -if(col.resizable==false){ -cell.attr("resizable","false"); -} -if(col.width){ -cell._outerWidth(col.width); -col.boxWidth=parseInt(cell[0].style.width); -}else{ -col.auto=true; -} -cell.css("text-align",(col.halign||col.align||"")); -col.cellClass=_4ee.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); -}else{ -$("
                                                                                ").html(col.title).appendTo(td); -} -} -if(col.hidden){ -td.hide(); -} -} -} -if(_4f9&&opts.rownumbers){ -var td=$("
                                                                                "); -if($("tr",t).length==0){ -td.wrap("").parent().appendTo($("tbody",t)); -}else{ -td.prependTo($("tr:first",t)); -} -} -}; -function _4f3(){ -var _4fc=[]; -var _4fd=_4fe(_4ed,true).concat(_4fe(_4ed)); -for(var i=0;i<_4fd.length;i++){ -var col=_4ff(_4ed,_4fd[i]); -if(col&&!col.checkbox){ -_4fc.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); -} -} -_4ee.ss.add(_4fc); -_4ee.ss.dirty(_4ee.cellSelectorPrefix); -_4ee.cellSelectorPrefix="."+_4ee.cellClassPrefix; -}; -}; -function _500(_501){ -var _502=$.data(_501,"datagrid"); -var _503=_502.panel; -var opts=_502.options; -var dc=_502.dc; -var _504=dc.header1.add(dc.header2); -_504.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ -if(opts.singleSelect&&opts.selectOnCheck){ -return false; -} -if($(this).is(":checked")){ -_577(_501); -}else{ -_57d(_501); -} -e.stopPropagation(); -}); -var _505=_504.find("div.datagrid-cell"); -_505.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ -if(_502.resizing){ -return; -} -$(this).addClass("datagrid-header-over"); -}).bind("mouseleave.datagrid",function(){ -$(this).removeClass("datagrid-header-over"); -}).bind("contextmenu.datagrid",function(e){ -var _506=$(this).attr("field"); -opts.onHeaderContextMenu.call(_501,e,_506); -}); -_505.unbind(".datagrid").bind("click.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -if(e.pageXp1){ -var _507=$(this).parent().attr("field"); -var col=_4ff(_501,_507); -if(!col.sortable||_502.resizing){ -return; -} -var _508=[]; -var _509=[]; -if(opts.sortName){ -_508=opts.sortName.split(","); -_509=opts.sortOrder.split(","); -} -var pos=_4aa(_508,_507); -var _50a=col.order||"asc"; -if(pos>=0){ -$(this).removeClass("datagrid-sort-asc datagrid-sort-desc"); -var _50b=_509[pos]=="asc"?"desc":"asc"; -if(opts.multiSort&&_50b==_50a){ -_508.splice(pos,1); -_509.splice(pos,1); -}else{ -_509[pos]=_50b; -$(this).addClass("datagrid-sort-"+_50b); -} -}else{ -if(opts.multiSort){ -_508.push(_507); -_509.push(_50a); -}else{ -_508=[_507]; -_509=[_50a]; -_505.removeClass("datagrid-sort-asc datagrid-sort-desc"); -} -$(this).addClass("datagrid-sort-"+_50a); -} -opts.sortName=_508.join(","); -opts.sortOrder=_509.join(","); -if(opts.remoteSort){ -_5dc(_501); -}else{ -var data=$.data(_501,"datagrid").data; -_544(_501,data); -} -opts.onSortColumn.call(_501,opts.sortName,opts.sortOrder); -} -}).bind("dblclick.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); -if(cond){ -var _50c=$(this).parent().attr("field"); -var col=_4ff(_501,_50c); -if(col.resizable==false){ -return; -} -$(_501).datagrid("autoSizeColumn",_50c); -col.auto=false; -} -}); -var _50d=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); -_505.each(function(){ -$(this).resizable({handles:_50d,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ -_502.resizing=true; -_504.css("cursor",$("body").css("cursor")); -if(!_502.proxy){ -_502.proxy=$("
                                                                                ").appendTo(dc.view); -} -_502.proxy.css({left:e.pageX-$(_503).offset().left-1,display:"none"}); -setTimeout(function(){ -if(_502.proxy){ -_502.proxy.show(); -} -},500); -},onResize:function(e){ -_502.proxy.css({left:e.pageX-$(_503).offset().left-1,display:"block"}); -return false; -},onStopResize:function(e){ -_504.css("cursor",""); -$(this).css("height",""); -var _50e=$(this).parent().attr("field"); -var col=_4ff(_501,_50e); -col.width=$(this)._outerWidth(); -col.boxWidth=parseInt(this.style.width); -col.auto=undefined; -_4e8(_501,_50e); -_502.proxy.remove(); -_502.proxy=null; -if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ -_4bf(_501); -} -_518(_501); -opts.onResizeColumn.call(_501,_50e,col.width); -setTimeout(function(){ -_502.resizing=false; -},0); -}}); -}); -dc.body1.add(dc.body2).unbind().bind("mouseover",function(e){ -if(_502.resizing){ -return; -} -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _510=_511(tr); -_55f(_501,_510); -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _512=_511(tr); -opts.finder.getTr(_501,_512).removeClass("datagrid-row-over"); -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _513=_511(tr); -if(tt.parent().hasClass("datagrid-cell-check")){ -if(opts.singleSelect&&opts.selectOnCheck){ -if(!opts.checkOnSelect){ -_57d(_501,true); -} -_56a(_501,_513); -}else{ -if(tt.is(":checked")){ -_56a(_501,_513); -}else{ -_571(_501,_513); -} -} -}else{ -var row=opts.finder.getRow(_501,_513); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _514=td.attr("field"); -opts.onClickCell.call(_501,_513,_514,row[_514]); -} -if(opts.singleSelect==true){ -_563(_501,_513); -}else{ -if(tr.hasClass("datagrid-row-selected")){ -_56b(_501,_513); -}else{ -_563(_501,_513); -} -} -opts.onClickRow.call(_501,_513,row); -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _515=_511(tr); -var row=opts.finder.getRow(_501,_515); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _516=td.attr("field"); -opts.onDblClickCell.call(_501,_515,_516,row[_516]); -} -opts.onDblClickRow.call(_501,_515,row); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _517=_511(tr); -var row=opts.finder.getRow(_501,_517); -opts.onRowContextMenu.call(_501,e,_517,row); -e.stopPropagation(); -}); -dc.body2.bind("scroll",function(){ -var b1=dc.view1.children("div.datagrid-body"); -b1.scrollTop($(this).scrollTop()); -var c1=dc.body1.children(":first"); -var c2=dc.body2.children(":first"); -if(c1.length&&c2.length){ -var top1=c1.offset().top; -var top2=c2.offset().top; -if(top1!=top2){ -b1.scrollTop(b1.scrollTop()+top1-top2); -} -} -dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); -dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); -}); -function _511(tr){ -if(tr.attr("datagrid-row-index")){ -return parseInt(tr.attr("datagrid-row-index")); -}else{ -return tr.attr("node-id"); -} -}; -function _50f(tr){ -return tr.length&&tr.parent().length; -}; -}; -function _518(_519){ -var opts=$.data(_519,"datagrid").options; -var dc=$.data(_519,"datagrid").dc; -dc.body2.css("overflow-x",opts.fitColumns?"hidden":""); -if(!opts.fitColumns){ -return; -} -var _51a=dc.view2.children("div.datagrid-header"); -var _51b=0; -var _51c; -var _51d=_4fe(_519,false); -for(var i=0;i<_51d.length;i++){ -var col=_4ff(_519,_51d[i]); -if(_51e(col)){ -_51b+=col.width; -_51c=col; -} -} -var _51f=_51a.children("div.datagrid-header-inner").show(); -var _520=_51a.width()-_51a.find("table").width()-opts.scrollbarSize; -var rate=_520/_51b; -if(!opts.showHeader){ -_51f.hide(); -} -for(var i=0;i<_51d.length;i++){ -var col=_4ff(_519,_51d[i]); -if(_51e(col)){ -var _521=Math.floor(col.width*rate); -_522(col,_521); -_520-=_521; -} -} -if(_520&&_51c){ -_522(_51c,_520); -} -_4e8(_519); -function _522(col,_523){ -col.width+=_523; -col.boxWidth+=_523; -_51a.find("td[field=\""+col.field+"\"] div.datagrid-cell").width(col.boxWidth); -}; -function _51e(col){ -if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ -return true; -} -}; -}; -function _524(_525,_526){ -var opts=$.data(_525,"datagrid").options; -var dc=$.data(_525,"datagrid").dc; -if(_526){ -_4bb(_526); -if(opts.fitColumns){ -_4bf(_525); -_518(_525); -} -}else{ -var _527=false; -var _528=_4fe(_525,true).concat(_4fe(_525,false)); -for(var i=0;i<_528.length;i++){ -var _526=_528[i]; -var col=_4ff(_525,_526); -if(col.auto){ -_4bb(_526); -_527=true; -} -} -if(_527&&opts.fitColumns){ -_4bf(_525); -_518(_525); -} -} -function _4bb(_529){ -var _52a=dc.view.find("div.datagrid-header td[field=\""+_529+"\"] div.datagrid-cell"); -_52a.css("width",""); -var col=$(_525).datagrid("getColumnOption",_529); -col.width=undefined; -col.boxWidth=undefined; -col.auto=true; -$(_525).datagrid("fixColumnSize",_529); -var _52b=Math.max(_52a._outerWidth(),_52c("allbody"),_52c("allfooter")); -_52a._outerWidth(_52b); -col.width=_52b; -col.boxWidth=parseInt(_52a[0].style.width); -$(_525).datagrid("fixColumnSize",_529); -opts.onResizeColumn.call(_525,_529,col.width); -function _52c(type){ -var _52d=0; -opts.finder.getTr(_525,0,type).find("td[field=\""+_529+"\"] div.datagrid-cell").each(function(){ -var w=$(this)._outerWidth(); -if(_52db?1:-1); -}; -r=_549(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -} -if(opts.view.onBeforeRender){ -opts.view.onBeforeRender.call(opts.view,_545,data.rows); -} -opts.view.render.call(opts.view,_545,dc.body2,false); -opts.view.render.call(opts.view,_545,dc.body1,true); -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,_545,dc.footer2,false); -opts.view.renderFooter.call(opts.view,_545,dc.footer1,true); -} -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,_545); -} -_546.ss.clean(); -opts.onLoadSuccess.call(_545,data); -var _54a=$(_545).datagrid("getPager"); -if(_54a.length){ -var _54b=_54a.pagination("options"); -if(_54b.total!=data.total){ -_54a.pagination("refresh",{total:data.total}); -if(opts.pageNumber!=_54b.pageNumber){ -opts.pageNumber=_54b.pageNumber; -_5dc(_545); -} -} -} -_4cc(_545); -dc.body2.triggerHandler("scroll"); -_54c(); -$(_545).datagrid("autoSizeColumn"); -function _54c(){ -if(opts.idField){ -for(var i=0;i_55d.height()-18){ -_55d.scrollTop(_55d.scrollTop()+top+tr._outerHeight()-_55d.height()+18); -} -} -} -}; -function _55f(_560,_561){ -var _562=$.data(_560,"datagrid"); -var opts=_562.options; -opts.finder.getTr(_560,_562.highlightIndex).removeClass("datagrid-row-over"); -opts.finder.getTr(_560,_561).addClass("datagrid-row-over"); -_562.highlightIndex=_561; -}; -function _563(_564,_565,_566){ -var _567=$.data(_564,"datagrid"); -var dc=_567.dc; -var opts=_567.options; -var _568=_567.selectedRows; -if(opts.singleSelect){ -_569(_564); -_568.splice(0,_568.length); -} -if(!_566&&opts.checkOnSelect){ -_56a(_564,_565,true); -} -var row=opts.finder.getRow(_564,_565); -if(opts.idField){ -_4ad(_568,opts.idField,row); -} -opts.finder.getTr(_564,_565).addClass("datagrid-row-selected"); -opts.onSelect.call(_564,_565,row); -_558(_564,_565); -}; -function _56b(_56c,_56d,_56e){ -var _56f=$.data(_56c,"datagrid"); -var dc=_56f.dc; -var opts=_56f.options; -var _570=$.data(_56c,"datagrid").selectedRows; -if(!_56e&&opts.checkOnSelect){ -_571(_56c,_56d,true); -} -opts.finder.getTr(_56c,_56d).removeClass("datagrid-row-selected"); -var row=opts.finder.getRow(_56c,_56d); -if(opts.idField){ -_4ab(_570,opts.idField,row[opts.idField]); -} -opts.onUnselect.call(_56c,_56d,row); -}; -function _572(_573,_574){ -var _575=$.data(_573,"datagrid"); -var opts=_575.options; -var rows=_575.data.rows; -var _576=$.data(_573,"datagrid").selectedRows; -if(!_574&&opts.checkOnSelect){ -_577(_573,true); -} -opts.finder.getTr(_573,"","allbody").addClass("datagrid-row-selected"); -if(opts.idField){ -for(var _578=0;_578"); -cell.children("table").bind("click dblclick contextmenu",function(e){ -e.stopPropagation(); -}); -$.data(cell[0],"datagrid.editor",{actions:_5ad,target:_5ad.init(cell.find("td"),_5ac),field:_5aa,type:_5ab,oldHtml:_5ae}); -} -} -}); -_4cc(_5a8,_5a9,true); -}; -function _59f(_5b0,_5b1){ -var opts=$.data(_5b0,"datagrid").options; -var tr=opts.finder.getTr(_5b0,_5b1); -tr.children("td").each(function(){ -var cell=$(this).find("div.datagrid-editable"); -if(cell.length){ -var ed=$.data(cell[0],"datagrid.editor"); -if(ed.actions.destroy){ -ed.actions.destroy(ed.target); -} -cell.html(ed.oldHtml); -$.removeData(cell[0],"datagrid.editor"); -cell.removeClass("datagrid-editable"); -cell.css("width",""); -} -}); -}; -function _594(_5b2,_5b3){ -var tr=$.data(_5b2,"datagrid").options.finder.getTr(_5b2,_5b3); -if(!tr.hasClass("datagrid-row-editing")){ -return true; -} -var vbox=tr.find(".validatebox-text"); -vbox.validatebox("validate"); -vbox.trigger("mouseleave"); -var _5b4=tr.find(".validatebox-invalid"); -return _5b4.length==0; -}; -function _5b5(_5b6,_5b7){ -var _5b8=$.data(_5b6,"datagrid").insertedRows; -var _5b9=$.data(_5b6,"datagrid").deletedRows; -var _5ba=$.data(_5b6,"datagrid").updatedRows; -if(!_5b7){ -var rows=[]; -rows=rows.concat(_5b8); -rows=rows.concat(_5b9); -rows=rows.concat(_5ba); -return rows; -}else{ -if(_5b7=="inserted"){ -return _5b8; -}else{ -if(_5b7=="deleted"){ -return _5b9; -}else{ -if(_5b7=="updated"){ -return _5ba; -} -} -} -} -return []; -}; -function _5bb(_5bc,_5bd){ -var _5be=$.data(_5bc,"datagrid"); -var opts=_5be.options; -var data=_5be.data; -var _5bf=_5be.insertedRows; -var _5c0=_5be.deletedRows; -$(_5bc).datagrid("cancelEdit",_5bd); -var row=data.rows[_5bd]; -if(_4aa(_5bf,row)>=0){ -_4ab(_5bf,row); -}else{ -_5c0.push(row); -} -_4ab(_5be.selectedRows,opts.idField,data.rows[_5bd][opts.idField]); -_4ab(_5be.checkedRows,opts.idField,data.rows[_5bd][opts.idField]); -opts.view.deleteRow.call(opts.view,_5bc,_5bd); -if(opts.height=="auto"){ -_4cc(_5bc); -} -$(_5bc).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c1(_5c2,_5c3){ -var data=$.data(_5c2,"datagrid").data; -var view=$.data(_5c2,"datagrid").options.view; -var _5c4=$.data(_5c2,"datagrid").insertedRows; -view.insertRow.call(view,_5c2,_5c3.index,_5c3.row); -_5c4.push(_5c3.row); -$(_5c2).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c5(_5c6,row){ -var data=$.data(_5c6,"datagrid").data; -var view=$.data(_5c6,"datagrid").options.view; -var _5c7=$.data(_5c6,"datagrid").insertedRows; -view.insertRow.call(view,_5c6,null,row); -_5c7.push(row); -$(_5c6).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c8(_5c9){ -var _5ca=$.data(_5c9,"datagrid"); -var data=_5ca.data; -var rows=data.rows; -var _5cb=[]; -for(var i=0;i=0){ -(_5d8=="s"?_563:_56a)(_5cf,_5d9,true); -} -} -}; -for(var i=0;i0){ -_544(this,data); -_5c8(this); -} -} -_4bb(this); -_5dc(this); -_500(this); -}); -}; -var _5ea={text:{init:function(_5eb,_5ec){ -var _5ed=$("").appendTo(_5eb); -return _5ed; -},getValue:function(_5ee){ -return $(_5ee).val(); -},setValue:function(_5ef,_5f0){ -$(_5ef).val(_5f0); -},resize:function(_5f1,_5f2){ -$(_5f1)._outerWidth(_5f2)._outerHeight(22); -}},textarea:{init:function(_5f3,_5f4){ -var _5f5=$("").appendTo(_5f3); -return _5f5; -},getValue:function(_5f6){ -return $(_5f6).val(); -},setValue:function(_5f7,_5f8){ -$(_5f7).val(_5f8); -},resize:function(_5f9,_5fa){ -$(_5f9)._outerWidth(_5fa); -}},checkbox:{init:function(_5fb,_5fc){ -var _5fd=$("").appendTo(_5fb); -_5fd.val(_5fc.on); -_5fd.attr("offval",_5fc.off); -return _5fd; -},getValue:function(_5fe){ -if($(_5fe).is(":checked")){ -return $(_5fe).val(); -}else{ -return $(_5fe).attr("offval"); -} -},setValue:function(_5ff,_600){ -var _601=false; -if($(_5ff).val()==_600){ -_601=true; -} -$(_5ff)._propAttr("checked",_601); -}},numberbox:{init:function(_602,_603){ -var _604=$("").appendTo(_602); -_604.numberbox(_603); -return _604; -},destroy:function(_605){ -$(_605).numberbox("destroy"); -},getValue:function(_606){ -$(_606).blur(); -return $(_606).numberbox("getValue"); -},setValue:function(_607,_608){ -$(_607).numberbox("setValue",_608); -},resize:function(_609,_60a){ -$(_609)._outerWidth(_60a)._outerHeight(22); -}},validatebox:{init:function(_60b,_60c){ -var _60d=$("").appendTo(_60b); -_60d.validatebox(_60c); -return _60d; -},destroy:function(_60e){ -$(_60e).validatebox("destroy"); -},getValue:function(_60f){ -return $(_60f).val(); -},setValue:function(_610,_611){ -$(_610).val(_611); -},resize:function(_612,_613){ -$(_612)._outerWidth(_613)._outerHeight(22); -}},datebox:{init:function(_614,_615){ -var _616=$("").appendTo(_614); -_616.datebox(_615); -return _616; -},destroy:function(_617){ -$(_617).datebox("destroy"); -},getValue:function(_618){ -return $(_618).datebox("getValue"); -},setValue:function(_619,_61a){ -$(_619).datebox("setValue",_61a); -},resize:function(_61b,_61c){ -$(_61b).datebox("resize",_61c); -}},combobox:{init:function(_61d,_61e){ -var _61f=$("").appendTo(_61d); -_61f.combobox(_61e||{}); -return _61f; -},destroy:function(_620){ -$(_620).combobox("destroy"); -},getValue:function(_621){ -var opts=$(_621).combobox("options"); -if(opts.multiple){ -return $(_621).combobox("getValues").join(opts.separator); -}else{ -return $(_621).combobox("getValue"); -} -},setValue:function(_622,_623){ -var opts=$(_622).combobox("options"); -if(opts.multiple){ -if(_623){ -$(_622).combobox("setValues",_623.split(opts.separator)); -}else{ -$(_622).combobox("clear"); -} -}else{ -$(_622).combobox("setValue",_623); -} -},resize:function(_624,_625){ -$(_624).combobox("resize",_625); -}},combotree:{init:function(_626,_627){ -var _628=$("").appendTo(_626); -_628.combotree(_627); -return _628; -},destroy:function(_629){ -$(_629).combotree("destroy"); -},getValue:function(_62a){ -return $(_62a).combotree("getValue"); -},setValue:function(_62b,_62c){ -$(_62b).combotree("setValue",_62c); -},resize:function(_62d,_62e){ -$(_62d).combotree("resize",_62e); -}}}; -$.fn.datagrid.methods={options:function(jq){ -var _62f=$.data(jq[0],"datagrid").options; -var _630=$.data(jq[0],"datagrid").panel.panel("options"); -var opts=$.extend(_62f,{width:_630.width,height:_630.height,closed:_630.closed,collapsed:_630.collapsed,minimized:_630.minimized,maximized:_630.maximized}); -return opts; -},getPanel:function(jq){ -return $.data(jq[0],"datagrid").panel; -},getPager:function(jq){ -return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); -},getColumnFields:function(jq,_631){ -return _4fe(jq[0],_631); -},getColumnOption:function(jq,_632){ -return _4ff(jq[0],_632); -},resize:function(jq,_633){ -return jq.each(function(){ -_4bb(this,_633); -}); -},load:function(jq,_634){ -return jq.each(function(){ -var opts=$(this).datagrid("options"); -opts.pageNumber=1; -var _635=$(this).datagrid("getPager"); -_635.pagination("refresh",{pageNumber:1}); -_5dc(this,_634); -}); -},reload:function(jq,_636){ -return jq.each(function(){ -_5dc(this,_636); -}); -},reloadFooter:function(jq,_637){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -var dc=$.data(this,"datagrid").dc; -if(_637){ -$.data(this,"datagrid").footer=_637; -} -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,this,dc.footer2,false); -opts.view.renderFooter.call(opts.view,this,dc.footer1,true); -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,this); -} -$(this).datagrid("fixRowHeight"); -} -}); -},loading:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -$(this).datagrid("getPager").pagination("loading"); -if(opts.loadMsg){ -var _638=$(this).datagrid("getPanel"); -if(!_638.children("div.datagrid-mask").length){ -$("
                                                                                ").appendTo(_638); -var msg=$("
                                                                                ").html(opts.loadMsg).appendTo(_638); -msg.css("marginLeft",-msg.outerWidth()/2); -} -} -}); -},loaded:function(jq){ -return jq.each(function(){ -$(this).datagrid("getPager").pagination("loaded"); -var _639=$(this).datagrid("getPanel"); -_639.children("div.datagrid-mask-msg").remove(); -_639.children("div.datagrid-mask").remove(); -}); -},fitColumns:function(jq){ -return jq.each(function(){ -_518(this); -}); -},fixColumnSize:function(jq,_63a){ -return jq.each(function(){ -_4e8(this,_63a); -}); -},fixRowHeight:function(jq,_63b){ -return jq.each(function(){ -_4cc(this,_63b); -}); -},freezeRow:function(jq,_63c){ -return jq.each(function(){ -_4d9(this,_63c); -}); -},autoSizeColumn:function(jq,_63d){ -return jq.each(function(){ -_524(this,_63d); -}); -},loadData:function(jq,data){ -return jq.each(function(){ -_544(this,data); -_5c8(this); -}); -},getData:function(jq){ -return $.data(jq[0],"datagrid").data; -},getRows:function(jq){ -return $.data(jq[0],"datagrid").data.rows; -},getFooterRows:function(jq){ -return $.data(jq[0],"datagrid").footer; -},getRowIndex:function(jq,id){ -return _54e(jq[0],id); -},getChecked:function(jq){ -return _555(jq[0]); -},getSelected:function(jq){ -var rows=_551(jq[0]); -return rows.length>0?rows[0]:null; -},getSelections:function(jq){ -return _551(jq[0]); -},clearSelections:function(jq){ -return jq.each(function(){ -var _63e=$.data(this,"datagrid").selectedRows; -_63e.splice(0,_63e.length); -_569(this); -}); -},clearChecked:function(jq){ -return jq.each(function(){ -var _63f=$.data(this,"datagrid").checkedRows; -_63f.splice(0,_63f.length); -_57d(this); -}); -},scrollTo:function(jq,_640){ -return jq.each(function(){ -_558(this,_640); -}); -},highlightRow:function(jq,_641){ -return jq.each(function(){ -_55f(this,_641); -_558(this,_641); -}); -},selectAll:function(jq){ -return jq.each(function(){ -_572(this); -}); -},unselectAll:function(jq){ -return jq.each(function(){ -_569(this); -}); -},selectRow:function(jq,_642){ -return jq.each(function(){ -_563(this,_642); -}); -},selectRecord:function(jq,id){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -if(opts.idField){ -var _643=_54e(this,id); -if(_643>=0){ -$(this).datagrid("selectRow",_643); -} -} -}); -},unselectRow:function(jq,_644){ -return jq.each(function(){ -_56b(this,_644); -}); -},checkRow:function(jq,_645){ -return jq.each(function(){ -_56a(this,_645); -}); -},uncheckRow:function(jq,_646){ -return jq.each(function(){ -_571(this,_646); -}); -},checkAll:function(jq){ -return jq.each(function(){ -_577(this); -}); -},uncheckAll:function(jq){ -return jq.each(function(){ -_57d(this); -}); -},beginEdit:function(jq,_647){ -return jq.each(function(){ -_58f(this,_647); -}); -},endEdit:function(jq,_648){ -return jq.each(function(){ -_595(this,_648,false); -}); -},cancelEdit:function(jq,_649){ -return jq.each(function(){ -_595(this,_649,true); -}); -},getEditors:function(jq,_64a){ -return _5a0(jq[0],_64a); -},getEditor:function(jq,_64b){ -return _5a4(jq[0],_64b); -},refreshRow:function(jq,_64c){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.refreshRow.call(opts.view,this,_64c); -}); -},validateRow:function(jq,_64d){ -return _594(jq[0],_64d); -},updateRow:function(jq,_64e){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.updateRow.call(opts.view,this,_64e.index,_64e.row); -}); -},appendRow:function(jq,row){ -return jq.each(function(){ -_5c5(this,row); -}); -},insertRow:function(jq,_64f){ -return jq.each(function(){ -_5c1(this,_64f); -}); -},deleteRow:function(jq,_650){ -return jq.each(function(){ -_5bb(this,_650); -}); -},getChanges:function(jq,_651){ -return _5b5(jq[0],_651); -},acceptChanges:function(jq){ -return jq.each(function(){ -_5cc(this); -}); -},rejectChanges:function(jq){ -return jq.each(function(){ -_5ce(this); -}); -},mergeCells:function(jq,_652){ -return jq.each(function(){ -_5e2(this,_652); -}); -},showColumn:function(jq,_653){ -return jq.each(function(){ -var _654=$(this).datagrid("getPanel"); -_654.find("td[field=\""+_653+"\"]").show(); -$(this).datagrid("getColumnOption",_653).hidden=false; -$(this).datagrid("fitColumns"); -}); -},hideColumn:function(jq,_655){ -return jq.each(function(){ -var _656=$(this).datagrid("getPanel"); -_656.find("td[field=\""+_655+"\"]").hide(); -$(this).datagrid("getColumnOption",_655).hidden=true; -$(this).datagrid("fitColumns"); -}); -}}; -$.fn.datagrid.parseOptions=function(_657){ -var t=$(_657); -return $.extend({},$.fn.panel.parseOptions(_657),$.parser.parseOptions(_657,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); -}; -$.fn.datagrid.parseData=function(_658){ -var t=$(_658); -var data={total:0,rows:[]}; -var _659=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); -t.find("tbody tr").each(function(){ -data.total++; -var row={}; -$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); -for(var i=0;i<_659.length;i++){ -row[_659[i]]=$(this).find("td:eq("+i+")").html(); -} -data.rows.push(row); -}); -return data; -}; -var _65a={render:function(_65b,_65c,_65d){ -var _65e=$.data(_65b,"datagrid"); -var opts=_65e.options; -var rows=_65e.data.rows; -var _65f=$(_65b).datagrid("getColumnFields",_65d); -if(_65d){ -if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ -return; -} -} -var _660=[""]; -for(var i=0;i"); -_660.push(this.renderRow.call(this,_65b,_65f,_65d,i,rows[i])); -_660.push(""); -} -_660.push("
                                                                                "); -$(_65c).html(_660.join("")); -},renderFooter:function(_665,_666,_667){ -var opts=$.data(_665,"datagrid").options; -var rows=$.data(_665,"datagrid").footer||[]; -var _668=$(_665).datagrid("getColumnFields",_667); -var _669=[""]; -for(var i=0;i"); -_669.push(this.renderRow.call(this,_665,_668,_667,i,rows[i])); -_669.push(""); -} -_669.push("
                                                                                "); -$(_666).html(_669.join("")); -},renderRow:function(_66a,_66b,_66c,_66d,_66e){ -var opts=$.data(_66a,"datagrid").options; -var cc=[]; -if(_66c&&opts.rownumbers){ -var _66f=_66d+1; -if(opts.pagination){ -_66f+=(opts.pageNumber-1)*opts.pageSize; -} -cc.push("
                                                                                "+_66f+"
                                                                                "); -} -for(var i=0;i<_66b.length;i++){ -var _670=_66b[i]; -var col=$(_66a).datagrid("getColumnOption",_670); -if(col){ -var _671=_66e[_670]; -var css=col.styler?(col.styler(_671,_66e,_66d)||""):""; -var _672=""; -var _673=""; -if(typeof css=="string"){ -_673=css; -}else{ -if(cc){ -_672=css["class"]||""; -_673=css["style"]||""; -} -} -var cls=_672?"class=\""+_672+"\"":""; -var _674=col.hidden?"style=\"display:none;"+_673+"\"":(_673?"style=\""+_673+"\"":""); -cc.push(""); -if(col.checkbox){ -var _674=""; -}else{ -var _674=_673; -if(col.align){ -_674+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_674+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_674+=";height:auto;"; -} -} -} -cc.push("
                                                                                "); -if(col.checkbox){ -cc.push(""); -}else{ -if(col.formatter){ -cc.push(col.formatter(_671,_66e,_66d)); -}else{ -cc.push(_671); -} -} -cc.push("
                                                                                "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_675,_676){ -this.updateRow.call(this,_675,_676,{}); -},updateRow:function(_677,_678,row){ -var opts=$.data(_677,"datagrid").options; -var rows=$(_677).datagrid("getRows"); -$.extend(rows[_678],row); -var css=opts.rowStyler?opts.rowStyler.call(_677,_678,rows[_678]):""; -var _679=""; -var _67a=""; -if(typeof css=="string"){ -_67a=css; -}else{ -if(css){ -_679=css["class"]||""; -_67a=css["style"]||""; -} -} -var _679="datagrid-row "+(_678%2&&opts.striped?"datagrid-row-alt ":" ")+_679; -function _67b(_67c){ -var _67d=$(_677).datagrid("getColumnFields",_67c); -var tr=opts.finder.getTr(_677,_678,"body",(_67c?1:2)); -var _67e=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow.call(this,_677,_67d,_67c,_678,rows[_678])); -tr.attr("style",_67a).attr("class",_679); -if(_67e){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_67b.call(this,true); -_67b.call(this,false); -$(_677).datagrid("fixRowHeight",_678); -},insertRow:function(_67f,_680,row){ -var _681=$.data(_67f,"datagrid"); -var opts=_681.options; -var dc=_681.dc; -var data=_681.data; -if(_680==undefined||_680==null){ -_680=data.rows.length; -} -if(_680>data.rows.length){ -_680=data.rows.length; -} -function _682(_683){ -var _684=_683?1:2; -for(var i=data.rows.length-1;i>=_680;i--){ -var tr=opts.finder.getTr(_67f,i,"body",_684); -tr.attr("datagrid-row-index",i+1); -tr.attr("id",_681.rowIdPrefix+"-"+_684+"-"+(i+1)); -if(_683&&opts.rownumbers){ -var _685=i+2; -if(opts.pagination){ -_685+=(opts.pageNumber-1)*opts.pageSize; -} -tr.find("div.datagrid-cell-rownumber").html(_685); -} -if(opts.striped){ -tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); -} -} -}; -function _686(_687){ -var _688=_687?1:2; -var _689=$(_67f).datagrid("getColumnFields",_687); -var _68a=_681.rowIdPrefix+"-"+_688+"-"+_680; -var tr=""; -if(_680>=data.rows.length){ -if(data.rows.length){ -opts.finder.getTr(_67f,"","last",_688).after(tr); -}else{ -var cc=_687?dc.body1:dc.body2; -cc.html(""+tr+"
                                                                                "); -} -}else{ -opts.finder.getTr(_67f,_680+1,"body",_688).before(tr); -} -}; -_682.call(this,true); -_682.call(this,false); -_686.call(this,true); -_686.call(this,false); -data.total+=1; -data.rows.splice(_680,0,row); -this.refreshRow.call(this,_67f,_680); -},deleteRow:function(_68b,_68c){ -var _68d=$.data(_68b,"datagrid"); -var opts=_68d.options; -var data=_68d.data; -function _68e(_68f){ -var _690=_68f?1:2; -for(var i=_68c+1;itable>tbody>tr[datagrid-row-index="+_69b+"]"); -} -return tr; -}else{ -if(type=="footer"){ -return (_69c==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_69b+"]"); -}else{ -if(type=="selected"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); -}else{ -if(type=="highlight"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); -}else{ -if(type=="checked"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row:has(div.datagrid-cell-check input:checked)"); -}else{ -if(type=="last"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); -}else{ -if(type=="allbody"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); -}else{ -if(type=="allfooter"){ -return (_69c==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); -} -} -} -} -} -} -} -} -} -},getRow:function(_69e,p){ -var _69f=(typeof p=="object")?p.attr("datagrid-row-index"):p; -return $.data(_69e,"datagrid").data.rows[parseInt(_69f)]; -}},view:_65a,onBeforeLoad:function(_6a0){ -},onLoadSuccess:function(){ -},onLoadError:function(){ -},onClickRow:function(_6a1,_6a2){ -},onDblClickRow:function(_6a3,_6a4){ -},onClickCell:function(_6a5,_6a6,_6a7){ -},onDblClickCell:function(_6a8,_6a9,_6aa){ -},onSortColumn:function(sort,_6ab){ -},onResizeColumn:function(_6ac,_6ad){ -},onSelect:function(_6ae,_6af){ -},onUnselect:function(_6b0,_6b1){ -},onSelectAll:function(rows){ -},onUnselectAll:function(rows){ -},onCheck:function(_6b2,_6b3){ -},onUncheck:function(_6b4,_6b5){ -},onCheckAll:function(rows){ -},onUncheckAll:function(rows){ -},onBeforeEdit:function(_6b6,_6b7){ -},onAfterEdit:function(_6b8,_6b9,_6ba){ -},onCancelEdit:function(_6bb,_6bc){ -},onHeaderContextMenu:function(e,_6bd){ -},onRowContextMenu:function(e,_6be,_6bf){ -}}); -})(jQuery); -(function($){ -var _6c0; -function _6c1(_6c2){ -var _6c3=$.data(_6c2,"propertygrid"); -var opts=$.data(_6c2,"propertygrid").options; -$(_6c2).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?_6c4:undefined),onClickRow:function(_6c5,row){ -if(_6c0!=this){ -_6c6(_6c0); -_6c0=this; -} -if(opts.editIndex!=_6c5&&row.editor){ -var col=$(this).datagrid("getColumnOption","value"); -col.editor=row.editor; -_6c6(_6c0); -$(this).datagrid("beginEdit",_6c5); -$(this).datagrid("getEditors",_6c5)[0].target.focus(); -opts.editIndex=_6c5; -} -opts.onClickRow.call(_6c2,_6c5,row); -},loadFilter:function(data){ -_6c6(this); -return opts.loadFilter.call(this,data); -},onLoadSuccess:function(data){ -$(_6c2).datagrid("getPanel").find("div.datagrid-group").attr("style",""); -opts.onLoadSuccess.call(_6c2,data); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_6c6(_6c0); -_6c0=undefined; -}); -}; -function _6c6(_6c7){ -var t=$(_6c7); -if(!t.length){ -return; -} -var opts=$.data(_6c7,"propertygrid").options; -var _6c8=opts.editIndex; -if(_6c8==undefined){ -return; -} -var ed=t.datagrid("getEditors",_6c8)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_6c8)){ -t.datagrid("endEdit",_6c8); -}else{ -t.datagrid("cancelEdit",_6c8); -} -} -opts.editIndex=undefined; -}; -$.fn.propertygrid=function(_6c9,_6ca){ -if(typeof _6c9=="string"){ -var _6cb=$.fn.propertygrid.methods[_6c9]; -if(_6cb){ -return _6cb(this,_6ca); -}else{ -return this.datagrid(_6c9,_6ca); -} -} -_6c9=_6c9||{}; -return this.each(function(){ -var _6cc=$.data(this,"propertygrid"); -if(_6cc){ -$.extend(_6cc.options,_6c9); -}else{ -var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_6c9); -opts.frozenColumns=$.extend(true,[],opts.frozenColumns); -opts.columns=$.extend(true,[],opts.columns); -$.data(this,"propertygrid",{options:opts}); -} -_6c1(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_6cd){ -var t=$(_6cd); -return $.extend({},$.fn.datagrid.parseOptions(_6cd),$.parser.parseOptions(_6cd,[{showGroup:"boolean"}])); -}; -var _6c4=$.extend({},$.fn.datagrid.defaults.view,{render:function(_6ce,_6cf,_6d0){ -var _6d1=$.data(_6ce,"datagrid"); -var opts=_6d1.options; -var rows=_6d1.data.rows; -var _6d2=$(_6ce).datagrid("getColumnFields",_6d0); -var _6d3=[]; -var _6d4=0; -var _6d5=this.groups; -for(var i=0;i<_6d5.length;i++){ -var _6d6=_6d5[i]; -_6d3.push("
                                                                                "); -_6d3.push(""); -_6d3.push(""); -_6d3.push(""); -_6d3.push(""); -_6d3.push("
                                                                                "); -if(!_6d0){ -_6d3.push(""); -_6d3.push(opts.groupFormatter.call(_6ce,_6d6.fvalue,_6d6.rows)); -_6d3.push(""); -} -_6d3.push("
                                                                                "); -_6d3.push("
                                                                                "); -_6d3.push(""); -for(var j=0;j<_6d6.rows.length;j++){ -var cls=(_6d4%2&&opts.striped)?"class=\"datagrid-row datagrid-row-alt\"":"class=\"datagrid-row\""; -var _6d7=opts.rowStyler?opts.rowStyler.call(_6ce,_6d4,_6d6.rows[j]):""; -var _6d8=_6d7?"style=\""+_6d7+"\"":""; -var _6d9=_6d1.rowIdPrefix+"-"+(_6d0?1:2)+"-"+_6d4; -_6d3.push(""); -_6d3.push(this.renderRow.call(this,_6ce,_6d2,_6d0,_6d4,_6d6.rows[j])); -_6d3.push(""); -_6d4++; -} -_6d3.push("
                                                                                "); -} -$(_6cf).html(_6d3.join("")); -},onAfterRender:function(_6da){ -var opts=$.data(_6da,"datagrid").options; -var dc=$.data(_6da,"datagrid").dc; -var view=dc.view; -var _6db=dc.view1; -var _6dc=dc.view2; -$.fn.datagrid.defaults.view.onAfterRender.call(this,_6da); -if(opts.rownumbers||opts.frozenColumns.length){ -var _6dd=_6db.find("div.datagrid-group"); -}else{ -var _6dd=_6dc.find("div.datagrid-group"); -} -$(" ").insertBefore(_6dd.find("td")); -view.find("div.datagrid-group").each(function(){ -var _6de=$(this).attr("group-index"); -$(this).find("span.datagrid-row-expander").bind("click",{groupIndex:_6de},function(e){ -if($(this).hasClass("datagrid-row-collapse")){ -$(_6da).datagrid("collapseGroup",e.data.groupIndex); -}else{ -$(_6da).datagrid("expandGroup",e.data.groupIndex); -} -}); -}); -},onBeforeRender:function(_6df,rows){ -var opts=$.data(_6df,"datagrid").options; -var _6e0=[]; -for(var i=0;i"+""+"
                                                                                "+""+"").insertAfter(tr); -}; -}; -function _71c(_71d,_71e,data,_71f){ -var _720=$.data(_71d,"treegrid"); -var opts=_720.options; -var dc=_720.dc; -data=opts.loadFilter.call(_71d,data,_71e); -var node=find(_71d,_71e); -if(node){ -var _721=opts.finder.getTr(_71d,_71e,"body",1); -var _722=opts.finder.getTr(_71d,_71e,"body",2); -var cc1=_721.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_722.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_71f){ -node.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_71f){ -_720.data=[]; -} -} -if(!_71f){ -cc1.empty(); -cc2.empty(); -} -if(opts.view.onBeforeRender){ -opts.view.onBeforeRender.call(opts.view,_71d,_71e,data); -} -opts.view.render.call(opts.view,_71d,cc1,true); -opts.view.render.call(opts.view,_71d,cc2,false); -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,_71d,dc.footer1,true); -opts.view.renderFooter.call(opts.view,_71d,dc.footer2,false); -} -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,_71d); -} -opts.onLoadSuccess.call(_71d,node,data); -if(!_71e&&opts.pagination){ -var _723=$.data(_71d,"treegrid").total; -var _724=$(_71d).datagrid("getPager"); -if(_724.pagination("options").total!=_723){ -_724.pagination({total:_723}); -} -} -_707(_71d); -_70f(_71d); -$(_71d).treegrid("autoSizeColumn"); -}; -function _706(_725,_726,_727,_728,_729){ -var opts=$.data(_725,"treegrid").options; -var body=$(_725).datagrid("getPanel").find("div.datagrid-body"); -if(_727){ -opts.queryParams=_727; -} -var _72a=$.extend({},opts.queryParams); -if(opts.pagination){ -$.extend(_72a,{page:opts.pageNumber,rows:opts.pageSize}); -} -if(opts.sortName){ -$.extend(_72a,{sort:opts.sortName,order:opts.sortOrder}); -} -var row=find(_725,_726); -if(opts.onBeforeLoad.call(_725,row,_72a)==false){ -return; -} -var _72b=body.find("tr[node-id=\""+_726+"\"] span.tree-folder"); -_72b.addClass("tree-loading"); -$(_725).treegrid("loading"); -var _72c=opts.loader.call(_725,_72a,function(data){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -_71c(_725,_726,data,_728); -if(_729){ -_729(); -} -},function(){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -opts.onLoadError.apply(_725,arguments); -if(_729){ -_729(); -} -}); -if(_72c==false){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -} -}; -function _72d(_72e){ -var rows=_72f(_72e); -if(rows.length){ -return rows[0]; -}else{ -return null; -} -}; -function _72f(_730){ -return $.data(_730,"treegrid").data; -}; -function _731(_732,_733){ -var row=find(_732,_733); -if(row._parentId){ -return find(_732,row._parentId); -}else{ -return null; -} -}; -function _70b(_734,_735){ -var opts=$.data(_734,"treegrid").options; -var body=$(_734).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _736=[]; -if(_735){ -_737(_735); -}else{ -var _738=_72f(_734); -for(var i=0;i<_738.length;i++){ -_736.push(_738[i]); -_737(_738[i][opts.idField]); -} -} -function _737(_739){ -var _73a=find(_734,_739); -if(_73a&&_73a.children){ -for(var i=0,len=_73a.children.length;i").insertBefore(_75f); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_71c(_75d,_75e.parent,_75e.data,true); -}; -function _760(_761,_762){ -var ref=_762.before||_762.after; -var opts=$.data(_761,"treegrid").options; -var _763=_731(_761,ref); -_75c(_761,{parent:(_763?_763[opts.idField]:null),data:[_762.data]}); -_764(true); -_764(false); -_70f(_761); -function _764(_765){ -var _766=_765?1:2; -var tr=opts.finder.getTr(_761,_762.data[opts.idField],"body",_766); -var _767=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var dest=opts.finder.getTr(_761,ref,"body",_766); -if(_762.before){ -tr.insertBefore(dest); -}else{ -var sub=dest.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:dest); -} -_767.remove(); -}; -}; -function _768(_769,_76a){ -var opts=$.data(_769,"treegrid").options; -var tr=opts.finder.getTr(_769,_76a); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _76b=del(_76a); -if(_76b){ -if(_76b.children.length==0){ -tr=opts.finder.getTr(_769,_76b[opts.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); -cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -cell.find(".tree-hit").remove(); -$("").prependTo(cell); -} -} -_70f(_769); -function del(id){ -var cc; -var _76c=_731(_769,_76a); -if(_76c){ -cc=_76c.children; -}else{ -cc=$(_769).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_785.length;i++){ -var row=_785[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=opts.rowStyler?opts.rowStyler.call(_77b,row):""; -var _787=""; -var _788=""; -if(typeof css=="string"){ -_788=css; -}else{ -if(css){ -_787=css["class"]||""; -_788=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_780++%2&&opts.striped?"datagrid-row-alt ":" ")+_787+"\""; -var _789=_788?"style=\""+_788+"\"":""; -var _78a=_77f+"-"+(_783?1:2)+"-"+row[opts.idField]; -_786.push(""); -_786=_786.concat(view.renderRow.call(view,_77b,_77e,_783,_784,row)); -_786.push(""); -if(row.children&&row.children.length){ -var tt=_782(_783,_784+1,row.children); -var v=row.state=="closed"?"none":"block"; -_786.push("
                                                                                "); -_786=_786.concat(tt); -_786.push("
                                                                                "); -} -} -_786.push(""); -return _786; -}; -},renderFooter:function(_78b,_78c,_78d){ -var opts=$.data(_78b,"treegrid").options; -var rows=$.data(_78b,"treegrid").footer||[]; -var _78e=$(_78b).datagrid("getColumnFields",_78d); -var _78f=[""]; -for(var i=0;i"); -_78f.push(this.renderRow.call(this,_78b,_78e,_78d,0,row)); -_78f.push(""); -} -_78f.push("
                                                                                "); -$(_78c).html(_78f.join("")); -},renderRow:function(_790,_791,_792,_793,row){ -var opts=$.data(_790,"treegrid").options; -var cc=[]; -if(_792&&opts.rownumbers){ -cc.push("
                                                                                0
                                                                                "); -} -for(var i=0;i<_791.length;i++){ -var _794=_791[i]; -var col=$(_790).datagrid("getColumnOption",_794); -if(col){ -var css=col.styler?(col.styler(row[_794],row)||""):""; -var _795=""; -var _796=""; -if(typeof css=="string"){ -_796=css; -}else{ -if(cc){ -_795=css["class"]||""; -_796=css["style"]||""; -} -} -var cls=_795?"class=\""+_795+"\"":""; -var _797=col.hidden?"style=\"display:none;"+_796+"\"":(_796?"style=\""+_796+"\"":""); -cc.push(""); -if(col.checkbox){ -var _797=""; -}else{ -var _797=_796; -if(col.align){ -_797+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_797+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_797+=";height:auto;"; -} -} -} -cc.push("
                                                                                "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_794],row); -}else{ -val=row[_794]; -} -if(_794==opts.treeField){ -for(var j=0;j<_793;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                                                                "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_798,id){ -this.updateRow.call(this,_798,id,{}); -},updateRow:function(_799,id,row){ -var opts=$.data(_799,"treegrid").options; -var _79a=$(_799).treegrid("find",id); -$.extend(_79a,row); -var _79b=$(_799).treegrid("getLevel",id)-1; -var _79c=opts.rowStyler?opts.rowStyler.call(_799,_79a):""; -function _79d(_79e){ -var _79f=$(_799).treegrid("getColumnFields",_79e); -var tr=opts.finder.getTr(_799,id,"body",(_79e?1:2)); -var _7a0=tr.find("div.datagrid-cell-rownumber").html(); -var _7a1=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_799,_79f,_79e,_79b,_79a)); -tr.attr("style",_79c||""); -tr.find("div.datagrid-cell-rownumber").html(_7a0); -if(_7a1){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_79d.call(this,true); -_79d.call(this,false); -$(_799).treegrid("fixRowHeight",id); -},onBeforeRender:function(_7a2,_7a3,data){ -if($.isArray(_7a3)){ -data={total:_7a3.length,rows:_7a3}; -_7a3=null; -} -if(!data){ -return false; -} -var _7a4=$.data(_7a2,"treegrid"); -var opts=_7a4.options; -if(data.length==undefined){ -if(data.footer){ -_7a4.footer=data.footer; -} -if(data.total){ -_7a4.total=data.total; -} -data=this.transfer(_7a2,_7a3,data.rows); -}else{ -function _7a5(_7a6,_7a7){ -for(var i=0;i<_7a6.length;i++){ -var row=_7a6[i]; -row._parentId=_7a7; -if(row.children&&row.children.length){ -_7a5(row.children,row[opts.idField]); -} -} -}; -_7a5(data,_7a3); -} -var node=find(_7a2,_7a3); -if(node){ -if(node.children){ -node.children=node.children.concat(data); -}else{ -node.children=data; -} -}else{ -_7a4.data=_7a4.data.concat(data); -} -this.sort(_7a2,data); -this.treeNodes=data; -this.treeLevel=$(_7a2).treegrid("getLevel",_7a3); -},sort:function(_7a8,data){ -var opts=$.data(_7a8,"treegrid").options; -if(!opts.remoteSort&&opts.sortName){ -var _7a9=opts.sortName.split(","); -var _7aa=opts.sortOrder.split(","); -_7ab(data); -} -function _7ab(rows){ -rows.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_7a9.length;i++){ -var sn=_7a9[i]; -var so=_7aa[i]; -var col=$(_7a8).treegrid("getColumnOption",sn); -var _7ac=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_7ac(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i"+""+""+""+"").insertAfter(_7c5); -var _7c6=$("
                                                                                ").appendTo("body"); -_7c6.panel({doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ -$(this).panel("resize"); -},onClose:function(){ -var _7c7=$.data(_7c5,"combo"); -if(_7c7){ -_7c7.options.onHidePanel.call(_7c5); -} -}}); -var name=$(_7c5).attr("name"); -if(name){ -span.find("input.combo-value").attr("name",name); -$(_7c5).removeAttr("name").attr("comboName",name); -} -return {combo:span,panel:_7c6}; -}; -function _7c8(_7c9){ -var _7ca=$.data(_7c9,"combo"); -var opts=_7ca.options; -var _7cb=_7ca.combo; -if(opts.hasDownArrow){ -_7cb.find(".combo-arrow").show(); -}else{ -_7cb.find(".combo-arrow").hide(); -} -_7cc(_7c9,opts.disabled); -_7cd(_7c9,opts.readonly); -}; -function _7ce(_7cf){ -var _7d0=$.data(_7cf,"combo"); -var _7d1=_7d0.combo.find("input.combo-text"); -_7d1.validatebox("destroy"); -_7d0.panel.panel("destroy"); -_7d0.combo.remove(); -$(_7cf).remove(); -}; -function _7d2(_7d3){ -var _7d4=$.data(_7d3,"combo"); -var opts=_7d4.options; -var _7d5=_7d4.panel; -var _7d6=_7d4.combo; -var _7d7=_7d6.find(".combo-text"); -var _7d8=_7d6.find(".combo-arrow"); -$(document).unbind(".combo").bind("mousedown.combo",function(e){ -var p=$(e.target).closest("span.combo,div.combo-panel"); -if(p.length){ -return; -} -$("body>div.combo-p>div.combo-panel:visible").panel("close"); -}); -_7d7.unbind(".combo"); -_7d8.unbind(".combo"); -if(!opts.disabled&&!opts.readonly){ -_7d7.bind("mousedown.combo",function(e){ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel").not(_7d5).not(p).panel("close"); -e.stopPropagation(); -}).bind("keydown.combo",function(e){ -switch(e.keyCode){ -case 38: -opts.keyHandler.up.call(_7d3); -break; -case 40: -opts.keyHandler.down.call(_7d3); -break; -case 37: -opts.keyHandler.left.call(_7d3); -break; -case 39: -opts.keyHandler.right.call(_7d3); -break; -case 13: -e.preventDefault(); -opts.keyHandler.enter.call(_7d3); -return false; -case 9: -case 27: -_7df(_7d3); -break; -default: -if(opts.editable){ -if(_7d4.timer){ -clearTimeout(_7d4.timer); -} -_7d4.timer=setTimeout(function(){ -var q=_7d7.val(); -if(_7d4.previousValue!=q){ -_7d4.previousValue=q; -$(_7d3).combo("showPanel"); -opts.keyHandler.query.call(_7d3,_7d7.val()); -$(_7d3).combo("validate"); -} -},opts.delay); -} -} -}); -_7d8.bind("click.combo",function(){ -if(_7d5.is(":visible")){ -_7df(_7d3); -}else{ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel:visible").not(p).panel("close"); -$(_7d3).combo("showPanel"); -} -_7d7.focus(); -}).bind("mouseenter.combo",function(){ -$(this).addClass("combo-arrow-hover"); -}).bind("mouseleave.combo",function(){ -$(this).removeClass("combo-arrow-hover"); -}); -} -}; -function _7d9(_7da){ -var opts=$.data(_7da,"combo").options; -var _7db=$.data(_7da,"combo").combo; -var _7dc=$.data(_7da,"combo").panel; -if($.fn.window){ -_7dc.panel("panel").css("z-index",$.fn.window.defaults.zIndex++); -} -_7dc.panel("move",{left:_7db.offset().left,top:_7dd()}); -if(_7dc.panel("options").closed){ -_7dc.panel("open"); -opts.onShowPanel.call(_7da); -} -(function(){ -if(_7dc.is(":visible")){ -_7dc.panel("move",{left:_7de(),top:_7dd()}); -setTimeout(arguments.callee,200); -} -})(); -function _7de(){ -var left=_7db.offset().left; -if(left+_7dc._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ -left=$(window)._outerWidth()+$(document).scrollLeft()-_7dc._outerWidth(); -} -if(left<0){ -left=0; -} -return left; -}; -function _7dd(){ -var top=_7db.offset().top+_7db._outerHeight(); -if(top+_7dc._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=_7db.offset().top-_7dc._outerHeight(); -} -if(top<$(document).scrollTop()){ -top=_7db.offset().top+_7db._outerHeight(); -} -return top; -}; -}; -function _7df(_7e0){ -var _7e1=$.data(_7e0,"combo").panel; -_7e1.panel("close"); -}; -function _7e2(_7e3){ -var opts=$.data(_7e3,"combo").options; -var _7e4=$(_7e3).combo("textbox"); -_7e4.validatebox($.extend({},opts,{deltaX:(opts.hasDownArrow?opts.deltaX:(opts.deltaX>0?1:-1))})); -}; -function _7cc(_7e5,_7e6){ -var _7e7=$.data(_7e5,"combo"); -var opts=_7e7.options; -var _7e8=_7e7.combo; -if(_7e6){ -opts.disabled=true; -$(_7e5).attr("disabled",true); -_7e8.find(".combo-value").attr("disabled",true); -_7e8.find(".combo-text").attr("disabled",true); -}else{ -opts.disabled=false; -$(_7e5).removeAttr("disabled"); -_7e8.find(".combo-value").removeAttr("disabled"); -_7e8.find(".combo-text").removeAttr("disabled"); -} -}; -function _7cd(_7e9,mode){ -var _7ea=$.data(_7e9,"combo"); -var opts=_7ea.options; -opts.readonly=mode==undefined?true:mode; -_7ea.combo.find(".combo-text").attr("readonly",opts.readonly?true:(!opts.editable)); -}; -function _7eb(_7ec){ -var _7ed=$.data(_7ec,"combo"); -var opts=_7ed.options; -var _7ee=_7ed.combo; -if(opts.multiple){ -_7ee.find("input.combo-value").remove(); -}else{ -_7ee.find("input.combo-value").val(""); -} -_7ee.find("input.combo-text").val(""); -}; -function _7ef(_7f0){ -var _7f1=$.data(_7f0,"combo").combo; -return _7f1.find("input.combo-text").val(); -}; -function _7f2(_7f3,text){ -var _7f4=$.data(_7f3,"combo"); -var _7f5=_7f4.combo.find("input.combo-text"); -if(_7f5.val()!=text){ -_7f5.val(text); -$(_7f3).combo("validate"); -_7f4.previousValue=text; -} -}; -function _7f6(_7f7){ -var _7f8=[]; -var _7f9=$.data(_7f7,"combo").combo; -_7f9.find("input.combo-value").each(function(){ -_7f8.push($(this).val()); -}); -return _7f8; -}; -function _7fa(_7fb,_7fc){ -var opts=$.data(_7fb,"combo").options; -var _7fd=_7f6(_7fb); -var _7fe=$.data(_7fb,"combo").combo; -_7fe.find("input.combo-value").remove(); -var name=$(_7fb).attr("comboName"); -for(var i=0;i<_7fc.length;i++){ -var _7ff=$("").appendTo(_7fe); -if(name){ -_7ff.attr("name",name); -} -_7ff.val(_7fc[i]); -} -var tmp=[]; -for(var i=0;i<_7fd.length;i++){ -tmp[i]=_7fd[i]; -} -var aa=[]; -for(var i=0;i<_7fc.length;i++){ -for(var j=0;j_818.height()){ -var h=_818.scrollTop()+item.position().top+item.outerHeight()-_818.height(); -_818.scrollTop(h); -} -} -} -}; -function nav(_819,dir){ -var opts=$(_819).combobox("options"); -var _81a=$(_819).combobox("panel"); -var item=_81a.children("div.combobox-item-hover"); -if(!item.length){ -item=_81a.children("div.combobox-item-selected"); -} -item.removeClass("combobox-item-hover"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:"+(dir=="next"?"first":"last")); -}else{ -if(dir=="next"){ -item=item.nextAll("div.combobox-item:visible:first"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:first"); -} -}else{ -item=item.prevAll("div.combobox-item:visible:first"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:last"); -} -} -} -if(item.length){ -item.addClass("combobox-item-hover"); -_815(_819,item.attr("value")); -if(opts.selectOnNavigation){ -_81b(_819,item.attr("value")); -} -} -}; -function _81b(_81c,_81d){ -var opts=$.data(_81c,"combobox").options; -var data=$.data(_81c,"combobox").data; -if(opts.multiple){ -var _81e=$(_81c).combo("getValues"); -for(var i=0;i<_81e.length;i++){ -if(_81e[i]==_81d){ -return; -} -} -_81e.push(_81d); -_81f(_81c,_81e); -}else{ -_81f(_81c,[_81d]); -} -var item=_813(data,opts.valueField,_81d); -if(item){ -opts.onSelect.call(_81c,item); -} -}; -function _820(_821,_822){ -var _823=$.data(_821,"combobox"); -var opts=_823.options; -var _824=$(_821).combo("getValues"); -var _825=$.inArray(_822+"",_824); -if(_825>=0){ -_824.splice(_825,1); -_81f(_821,_824); -} -var item=_813(_823.data,opts.valueField,_822); -if(item){ -opts.onUnselect.call(_821,item); -} -}; -function _81f(_826,_827,_828){ -var opts=$.data(_826,"combobox").options; -var data=$.data(_826,"combobox").data; -var _829=$(_826).combo("panel"); -_829.find("div.combobox-item-selected").removeClass("combobox-item-selected"); -var vv=[],ss=[]; -for(var i=0;i<_827.length;i++){ -var v=_827[i]; -var s=v; -var item=_813(data,opts.valueField,v); -if(item){ -s=item[opts.textField]; -} -vv.push(v); -ss.push(s); -_829.find("div.combobox-item[value=\""+v+"\"]").addClass("combobox-item-selected"); -} -$(_826).combo("setValues",vv); -if(!_828){ -$(_826).combo("setText",ss.join(opts.separator)); -} -}; -function _82a(_82b,data,_82c){ -var _82d=$.data(_82b,"combobox"); -var opts=_82d.options; -_82d.data=opts.loadFilter.call(_82b,data); -data=_82d.data; -var _82e=$(_82b).combobox("getValues"); -var dd=[]; -var _82f=undefined; -for(var i=0;i"); -dd.push(opts.groupFormatter?opts.groupFormatter.call(_82b,g):g); -dd.push("
                                                                                "); -} -}else{ -_82f=undefined; -} -dd.push("
                                                                                "); -dd.push(opts.formatter?opts.formatter.call(_82b,item):s); -dd.push("
                                                                                "); -if(item["selected"]){ -(function(){ -for(var i=0;i<_82e.length;i++){ -if(v==_82e[i]){ -return; -} -} -_82e.push(v); -})(); -} -} -$(_82b).combo("panel").html(dd.join("")); -if(opts.multiple){ -_81f(_82b,_82e,_82c); -}else{ -if(_82e.length){ -_81f(_82b,[_82e[_82e.length-1]],_82c); -}else{ -_81f(_82b,[],_82c); -} -} -opts.onLoadSuccess.call(_82b,data); -}; -function _830(_831,url,_832,_833){ -var opts=$.data(_831,"combobox").options; -if(url){ -opts.url=url; -} -_832=_832||{}; -if(opts.onBeforeLoad.call(_831,_832)==false){ -return; -} -opts.loader.call(_831,_832,function(data){ -_82a(_831,data,_833); -},function(){ -opts.onLoadError.apply(this,arguments); -}); -}; -function _834(_835,q){ -var _836=$.data(_835,"combobox"); -var opts=_836.options; -if(opts.multiple&&!q){ -_81f(_835,[],true); -}else{ -_81f(_835,[q],true); -} -if(opts.mode=="remote"){ -_830(_835,null,{q:q},true); -}else{ -var _837=$(_835).combo("panel"); -_837.find("div.combobox-item,div.combobox-group").hide(); -var data=_836.data; -var _838=undefined; -for(var i=0;i").appendTo(_858); -$.data(_857,"combotree").tree=tree; -} -tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ -var _859=$(_857).combotree("getValues"); -if(opts.multiple){ -var _85a=tree.tree("getChecked"); -for(var i=0;i<_85a.length;i++){ -var id=_85a[i].id; -(function(){ -for(var i=0;i<_859.length;i++){ -if(id==_859[i]){ -return; -} -} -_859.push(id); -})(); -} -} -$(_857).combotree("setValues",_859); -opts.onLoadSuccess.call(this,node,data); -},onClick:function(node){ -_85c(_857); -$(_857).combo("hidePanel"); -opts.onClick.call(this,node); -},onCheck:function(node,_85b){ -_85c(_857); -opts.onCheck.call(this,node,_85b); -}})); -}; -function _85c(_85d){ -var opts=$.data(_85d,"combotree").options; -var tree=$.data(_85d,"combotree").tree; -var vv=[],ss=[]; -if(opts.multiple){ -var _85e=tree.tree("getChecked"); -for(var i=0;i<_85e.length;i++){ -vv.push(_85e[i].id); -ss.push(_85e[i].text); -} -}else{ -var node=tree.tree("getSelected"); -if(node){ -vv.push(node.id); -ss.push(node.text); -} -} -$(_85d).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -function _85f(_860,_861){ -var opts=$.data(_860,"combotree").options; -var tree=$.data(_860,"combotree").tree; -tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); -var vv=[],ss=[]; -for(var i=0;i<_861.length;i++){ -var v=_861[i]; -var s=v; -var node=tree.tree("find",v); -if(node){ -s=node.text; -tree.tree("check",node.target); -tree.tree("select",node.target); -} -vv.push(v); -ss.push(s); -} -$(_860).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -$.fn.combotree=function(_862,_863){ -if(typeof _862=="string"){ -var _864=$.fn.combotree.methods[_862]; -if(_864){ -return _864(this,_863); -}else{ -return this.combo(_862,_863); -} -} -_862=_862||{}; -return this.each(function(){ -var _865=$.data(this,"combotree"); -if(_865){ -$.extend(_865.options,_862); -}else{ -$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_862)}); -} -_856(this); -}); -}; -$.fn.combotree.methods={options:function(jq){ -var _866=jq.combo("options"); -return $.extend($.data(jq[0],"combotree").options,{originalValue:_866.originalValue,disabled:_866.disabled,readonly:_866.readonly}); -},tree:function(jq){ -return $.data(jq[0],"combotree").tree; -},loadData:function(jq,data){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -opts.data=data; -var tree=$.data(this,"combotree").tree; -tree.tree("loadData",data); -}); -},reload:function(jq,url){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -var tree=$.data(this,"combotree").tree; -if(url){ -opts.url=url; -} -tree.tree({url:opts.url}); -}); -},setValues:function(jq,_867){ -return jq.each(function(){ -_85f(this,_867); -}); -},setValue:function(jq,_868){ -return jq.each(function(){ -_85f(this,[_868]); -}); -},clear:function(jq){ -return jq.each(function(){ -var tree=$.data(this,"combotree").tree; -tree.find("div.tree-node-selected").removeClass("tree-node-selected"); -var cc=tree.tree("getChecked"); -for(var i=0;i").appendTo(_86d); -_86c.grid=grid; -} -grid.datagrid($.extend({},opts,{border:false,fit:true,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ -var _86e=$(_86b).combo("getValues"); -var _86f=opts.onSelect; -opts.onSelect=function(){ -}; -_879(_86b,_86e,_86c.remainText); -opts.onSelect=_86f; -opts.onLoadSuccess.apply(_86b,arguments); -},onClickRow:_870,onSelect:function(_871,row){ -_872(); -opts.onSelect.call(this,_871,row); -},onUnselect:function(_873,row){ -_872(); -opts.onUnselect.call(this,_873,row); -},onSelectAll:function(rows){ -_872(); -opts.onSelectAll.call(this,rows); -},onUnselectAll:function(rows){ -if(opts.multiple){ -_872(); -} -opts.onUnselectAll.call(this,rows); -}})); -function _870(_874,row){ -_86c.remainText=false; -_872(); -if(!opts.multiple){ -$(_86b).combo("hidePanel"); -} -opts.onClickRow.call(this,_874,row); -}; -function _872(){ -var rows=grid.datagrid("getSelections"); -var vv=[],ss=[]; -for(var i=0;i=_877){ -_878=0; -} -} -grid.datagrid("highlightRow",_878); -if(opts.selectOnNavigation){ -_876.remainText=false; -grid.datagrid("selectRow",_878); -} -}; -function _879(_87a,_87b,_87c){ -var _87d=$.data(_87a,"combogrid"); -var opts=_87d.options; -var grid=_87d.grid; -var rows=grid.datagrid("getRows"); -var ss=[]; -var _87e=$(_87a).combo("getValues"); -var _87f=$(_87a).combo("options"); -var _880=_87f.onChange; -_87f.onChange=function(){ -}; -grid.datagrid("clearSelections"); -for(var i=0;i<_87b.length;i++){ -var _881=grid.datagrid("getRowIndex",_87b[i]); -if(_881>=0){ -grid.datagrid("selectRow",_881); -ss.push(rows[_881][opts.textField]); -}else{ -ss.push(_87b[i]); -} -} -$(_87a).combo("setValues",_87e); -_87f.onChange=_880; -$(_87a).combo("setValues",_87b); -if(!_87c){ -var s=ss.join(opts.separator); -if($(_87a).combo("getText")!=s){ -$(_87a).combo("setText",s); -} -} -}; -function _882(_883,q){ -var _884=$.data(_883,"combogrid"); -var opts=_884.options; -var grid=_884.grid; -_884.remainText=true; -if(opts.multiple&&!q){ -_879(_883,[],true); -}else{ -_879(_883,[q],true); -} -if(opts.mode=="remote"){ -grid.datagrid("clearSelections"); -grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); -}else{ -if(!q){ -return; -} -var rows=grid.datagrid("getRows"); -for(var i=0;i
                                                                                ").appendTo(_896).wrap("
                                                                                "); -_893.calendar.calendar({fit:true,border:false,onSelect:function(date){ -var _897=opts.formatter(date); -_89f(_892,_897); -$(_892).combo("hidePanel"); -opts.onSelect.call(_892,date); -}}); -_89f(_892,opts.value); -var _898=$("
                                                                                ").appendTo(_896); -var _899=$("").html(opts.currentText).appendTo(_898); -var _89a=$("").html(opts.closeText).appendTo(_898); -_899.click(function(){ -_893.calendar.calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -}); -_89a.click(function(){ -$(_892).combo("hidePanel"); -}); -}; -function _894(){ -if(opts.panelHeight!="auto"){ -var _89b=$(_892).combo("panel"); -var ci=_89b.children("div.datebox-calendar-inner"); -var _89c=_89b.height(); -_89b.children().not(ci).each(function(){ -_89c-=$(this).outerHeight(); -}); -ci._outerHeight(_89c); -} -_893.calendar.calendar("resize"); -}; -}; -function _89d(_89e,q){ -_89f(_89e,q); -}; -function _8a0(_8a1){ -var _8a2=$.data(_8a1,"datebox"); -var opts=_8a2.options; -var c=_8a2.calendar; -var _8a3=opts.formatter(c.calendar("options").current); -_89f(_8a1,_8a3); -$(_8a1).combo("hidePanel"); -}; -function _89f(_8a4,_8a5){ -var _8a6=$.data(_8a4,"datebox"); -var opts=_8a6.options; -$(_8a4).combo("setValue",_8a5).combo("setText",_8a5); -_8a6.calendar.calendar("moveTo",opts.parser(_8a5)); -}; -$.fn.datebox=function(_8a7,_8a8){ -if(typeof _8a7=="string"){ -var _8a9=$.fn.datebox.methods[_8a7]; -if(_8a9){ -return _8a9(this,_8a8); -}else{ -return this.combo(_8a7,_8a8); -} -} -_8a7=_8a7||{}; -return this.each(function(){ -var _8aa=$.data(this,"datebox"); -if(_8aa){ -$.extend(_8aa.options,_8a7); -}else{ -$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_8a7)}); -} -_891(this); -}); -}; -$.fn.datebox.methods={options:function(jq){ -var _8ab=jq.combo("options"); -return $.extend($.data(jq[0],"datebox").options,{originalValue:_8ab.originalValue,disabled:_8ab.disabled,readonly:_8ab.readonly}); -},calendar:function(jq){ -return $.data(jq[0],"datebox").calendar; -},setValue:function(jq,_8ac){ -return jq.each(function(){ -_89f(this,_8ac); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datebox("options"); -$(this).datebox("setValue",opts.originalValue); -}); -}}; -$.fn.datebox.parseOptions=function(_8ad){ -var t=$(_8ad); -return $.extend({},$.fn.combo.parseOptions(_8ad),{}); -}; -$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",keyHandler:{up:function(){ -},down:function(){ -},enter:function(){ -_8a0(this); -},query:function(q){ -_89d(this,q); -}},currentText:"Today",closeText:"Close",okText:"Ok",formatter:function(date){ -var y=date.getFullYear(); -var m=date.getMonth()+1; -var d=date.getDate(); -return m+"/"+d+"/"+y; -},parser:function(s){ -var t=Date.parse(s); -if(!isNaN(t)){ -return new Date(t); -}else{ -return new Date(); -} -},onSelect:function(date){ -}}); -})(jQuery); -(function($){ -function _8ae(_8af){ -var _8b0=$.data(_8af,"datetimebox"); -var opts=_8b0.options; -$(_8af).datebox($.extend({},opts,{onShowPanel:function(){ -var _8b1=$(_8af).datetimebox("getValue"); -_8b4(_8af,_8b1,true); -opts.onShowPanel.call(_8af); -},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); -$(_8af).removeClass("datebox-f").addClass("datetimebox-f"); -$(_8af).datebox("calendar").calendar({onSelect:function(date){ -opts.onSelect.call(_8af,date); -}}); -var _8b2=$(_8af).datebox("panel"); -if(!_8b0.spinner){ -var p=$("
                                                                                ").insertAfter(_8b2.children("div.datebox-calendar-inner")); -_8b0.spinner=p.children("input"); -var _8b3=_8b2.children("div.datebox-button"); -var ok=$("").html(opts.okText).appendTo(_8b3); -ok.click(function(){ -_8b9(_8af); -}); -} -_8b0.spinner.timespinner({showSeconds:opts.showSeconds,separator:opts.timeSeparator}).unbind(".datetimebox").bind("mousedown.datetimebox",function(e){ -e.stopPropagation(); -}); -_8b4(_8af,opts.value); -}; -function _8b5(_8b6){ -var c=$(_8b6).datetimebox("calendar"); -var t=$(_8b6).datetimebox("spinner"); -var date=c.calendar("options").current; -return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); -}; -function _8b7(_8b8,q){ -_8b4(_8b8,q,true); -}; -function _8b9(_8ba){ -var opts=$.data(_8ba,"datetimebox").options; -var date=_8b5(_8ba); -_8b4(_8ba,opts.formatter.call(_8ba,date)); -$(_8ba).combo("hidePanel"); -}; -function _8b4(_8bb,_8bc,_8bd){ -var opts=$.data(_8bb,"datetimebox").options; -$(_8bb).combo("setValue",_8bc); -if(!_8bd){ -if(_8bc){ -var date=opts.parser.call(_8bb,_8bc); -$(_8bb).combo("setValue",opts.formatter.call(_8bb,date)); -$(_8bb).combo("setText",opts.formatter.call(_8bb,date)); -}else{ -$(_8bb).combo("setText",_8bc); -} -} -var date=opts.parser.call(_8bb,_8bc); -$(_8bb).datetimebox("calendar").calendar("moveTo",date); -$(_8bb).datetimebox("spinner").timespinner("setValue",_8be(date)); -function _8be(date){ -function _8bf(_8c0){ -return (_8c0<10?"0":"")+_8c0; -}; -var tt=[_8bf(date.getHours()),_8bf(date.getMinutes())]; -if(opts.showSeconds){ -tt.push(_8bf(date.getSeconds())); -} -return tt.join($(_8bb).datetimebox("spinner").timespinner("options").separator); -}; -}; -$.fn.datetimebox=function(_8c1,_8c2){ -if(typeof _8c1=="string"){ -var _8c3=$.fn.datetimebox.methods[_8c1]; -if(_8c3){ -return _8c3(this,_8c2); -}else{ -return this.datebox(_8c1,_8c2); -} -} -_8c1=_8c1||{}; -return this.each(function(){ -var _8c4=$.data(this,"datetimebox"); -if(_8c4){ -$.extend(_8c4.options,_8c1); -}else{ -$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_8c1)}); -} -_8ae(this); -}); -}; -$.fn.datetimebox.methods={options:function(jq){ -var _8c5=jq.datebox("options"); -return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_8c5.originalValue,disabled:_8c5.disabled,readonly:_8c5.readonly}); -},spinner:function(jq){ -return $.data(jq[0],"datetimebox").spinner; -},setValue:function(jq,_8c6){ -return jq.each(function(){ -_8b4(this,_8c6); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datetimebox("options"); -$(this).datetimebox("setValue",opts.originalValue); -}); -}}; -$.fn.datetimebox.parseOptions=function(_8c7){ -var t=$(_8c7); -return $.extend({},$.fn.datebox.parseOptions(_8c7),$.parser.parseOptions(_8c7,["timeSeparator",{showSeconds:"boolean"}])); -}; -$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{showSeconds:true,timeSeparator:":",keyHandler:{up:function(){ -},down:function(){ -},enter:function(){ -_8b9(this); -},query:function(q){ -_8b7(this,q); -}},formatter:function(date){ -var h=date.getHours(); -var M=date.getMinutes(); -var s=date.getSeconds(); -function _8c8(_8c9){ -return (_8c9<10?"0":"")+_8c9; -}; -var _8ca=$(this).datetimebox("spinner").timespinner("options").separator; -var r=$.fn.datebox.defaults.formatter(date)+" "+_8c8(h)+_8ca+_8c8(M); -if($(this).datetimebox("options").showSeconds){ -r+=_8ca+_8c8(s); -} -return r; -},parser:function(s){ -if($.trim(s)==""){ -return new Date(); -} -var dt=s.split(" "); -var d=$.fn.datebox.defaults.parser(dt[0]); -if(dt.length<2){ -return d; -} -var _8cb=$(this).datetimebox("spinner").timespinner("options").separator; -var tt=dt[1].split(_8cb); -var hour=parseInt(tt[0],10)||0; -var _8cc=parseInt(tt[1],10)||0; -var _8cd=parseInt(tt[2],10)||0; -return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_8cc,_8cd); -}}); -})(jQuery); -(function($){ -function init(_8ce){ -var _8cf=$("
                                                                                "+"
                                                                                "+""+""+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+""+"
                                                                                ").insertAfter(_8ce); -var name=$(_8ce).hide().attr("name"); -if(name){ -_8cf.find("input.slider-value").attr("name",name); -$(_8ce).removeAttr("name").attr("sliderName",name); -} -return _8cf; -}; -function _8d0(_8d1,_8d2){ -var _8d3=$.data(_8d1,"slider"); -var opts=_8d3.options; -var _8d4=_8d3.slider; -if(_8d2){ -if(_8d2.width){ -opts.width=_8d2.width; -} -if(_8d2.height){ -opts.height=_8d2.height; -} -} -if(opts.mode=="h"){ -_8d4.css("height",""); -_8d4.children("div").css("height",""); -if(!isNaN(opts.width)){ -_8d4.width(opts.width); -} -}else{ -_8d4.css("width",""); -_8d4.children("div").css("width",""); -if(!isNaN(opts.height)){ -_8d4.height(opts.height); -_8d4.find("div.slider-rule").height(opts.height); -_8d4.find("div.slider-rulelabel").height(opts.height); -_8d4.find("div.slider-inner")._outerHeight(opts.height); -} -} -_8d5(_8d1); -}; -function _8d6(_8d7){ -var _8d8=$.data(_8d7,"slider"); -var opts=_8d8.options; -var _8d9=_8d8.slider; -var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); -if(opts.reversed){ -aa=aa.slice(0).reverse(); -} -_8da(aa); -function _8da(aa){ -var rule=_8d9.find("div.slider-rule"); -var _8db=_8d9.find("div.slider-rulelabel"); -rule.empty(); -_8db.empty(); -for(var i=0;i").appendTo(rule); -span.css((opts.mode=="h"?"left":"top"),_8dc); -if(aa[i]!="|"){ -span=$("").appendTo(_8db); -span.html(aa[i]); -if(opts.mode=="h"){ -span.css({left:_8dc,marginLeft:-Math.round(span.outerWidth()/2)}); -}else{ -span.css({top:_8dc,marginTop:-Math.round(span.outerHeight()/2)}); -} -} -} -}; -}; -function _8dd(_8de){ -var _8df=$.data(_8de,"slider"); -var opts=_8df.options; -var _8e0=_8df.slider; -_8e0.removeClass("slider-h slider-v slider-disabled"); -_8e0.addClass(opts.mode=="h"?"slider-h":"slider-v"); -_8e0.addClass(opts.disabled?"slider-disabled":""); -_8e0.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ -var left=e.data.left; -var _8e1=_8e0.width(); -if(opts.mode!="h"){ -left=e.data.top; -_8e1=_8e0.height(); -} -if(left<0||left>_8e1){ -return false; -}else{ -var _8e2=_8f4(_8de,left); -_8e3(_8e2); -return false; -} -},onBeforeDrag:function(){ -_8df.isDragging=true; -},onStartDrag:function(){ -opts.onSlideStart.call(_8de,opts.value); -},onStopDrag:function(e){ -var _8e4=_8f4(_8de,(opts.mode=="h"?e.data.left:e.data.top)); -_8e3(_8e4); -opts.onSlideEnd.call(_8de,opts.value); -opts.onComplete.call(_8de,opts.value); -_8df.isDragging=false; -}}); -_8e0.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_8df.isDragging){ -return; -} -var pos=$(this).offset(); -var _8e5=_8f4(_8de,(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_8e3(_8e5); -opts.onComplete.call(_8de,opts.value); -}); -function _8e3(_8e6){ -var s=Math.abs(_8e6%opts.step); -if(sopts.max){ -_8e9=opts.max; -} -opts.value=_8e9; -$(_8e8).val(_8e9); -_8eb.find("input.slider-value").val(_8e9); -var pos=_8ed(_8e8,_8e9); -var tip=_8eb.find(".slider-tip"); -if(opts.showTip){ -tip.show(); -tip.html(opts.tipFormatter.call(_8e8,opts.value)); -}else{ -tip.hide(); -} -if(opts.mode=="h"){ -var _8ee="left:"+pos+"px;"; -_8eb.find(".slider-handle").attr("style",_8ee); -tip.attr("style",_8ee+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _8ee="top:"+pos+"px;"; -_8eb.find(".slider-handle").attr("style",_8ee); -tip.attr("style",_8ee+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_8ec!=_8e9){ -opts.onChange.call(_8e8,_8e9,_8ec); -} -}; -function _8d5(_8ef){ -var opts=$.data(_8ef,"slider").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_8e7(_8ef,opts.value); -opts.onChange=fn; -}; -function _8ed(_8f0,_8f1){ -var _8f2=$.data(_8f0,"slider"); -var opts=_8f2.options; -var _8f3=_8f2.slider; -if(opts.mode=="h"){ -var pos=(_8f1-opts.min)/(opts.max-opts.min)*_8f3.width(); -if(opts.reversed){ -pos=_8f3.width()-pos; -} -}else{ -var pos=_8f3.height()-(_8f1-opts.min)/(opts.max-opts.min)*_8f3.height(); -if(opts.reversed){ -pos=_8f3.height()-pos; -} -} -return pos.toFixed(0); -}; -function _8f4(_8f5,pos){ -var _8f6=$.data(_8f5,"slider"); -var opts=_8f6.options; -var _8f7=_8f6.slider; -if(opts.mode=="h"){ -var _8f8=opts.min+(opts.max-opts.min)*(pos/_8f7.width()); -}else{ -var _8f8=opts.min+(opts.max-opts.min)*((_8f7.height()-pos)/_8f7.height()); -} -return opts.reversed?opts.max-_8f8.toFixed(0):_8f8.toFixed(0); -}; -$.fn.slider=function(_8f9,_8fa){ -if(typeof _8f9=="string"){ -return $.fn.slider.methods[_8f9](this,_8fa); -} -_8f9=_8f9||{}; -return this.each(function(){ -var _8fb=$.data(this,"slider"); -if(_8fb){ -$.extend(_8fb.options,_8f9); -}else{ -_8fb=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_8f9),slider:init(this)}); -$(this).removeAttr("disabled"); -} -var opts=_8fb.options; -opts.min=parseFloat(opts.min); -opts.max=parseFloat(opts.max); -opts.value=parseFloat(opts.value); -opts.step=parseFloat(opts.step); -_8dd(this); -_8d6(this); -_8d0(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_8fc){ -return jq.each(function(){ -_8d0(this,_8fc); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_8fd){ -return jq.each(function(){ -_8e7(this,_8fd); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_8dd(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_8dd(this); -}); -}}; -$.fn.slider.parseOptions=function(_8fe){ -var t=$(_8fe); -return $.extend({},$.parser.parseOptions(_8fe,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_8ff){ -return _8ff; -},onChange:function(_900,_901){ -},onSlideStart:function(_902){ -},onSlideEnd:function(_903){ -},onComplete:function(_904){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/jquery.min.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/jquery.min.js deleted file mode 100644 index ab28a24..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
                                                                                ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; -if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
                                                                                a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
                                                                                ","
                                                                                "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                                                                "],tr:[2,"","
                                                                                "],col:[2,"","
                                                                                "],td:[3,"","
                                                                                "],_default:k.htmlSerialize?[0,"",""]:[1,"X
                                                                                ","
                                                                                "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=_5.attr("target"),a=_5.attr("action"); -_5.attr("target",_6); -var _8=$(); -try{ -_7.appendTo("body"); -_7.bind("load",cb); -for(var n in _4){ -var f=$("").val(_4[n]).appendTo(_5); -_8=_8.add(f); -} -_5[0].submit(); -} -finally{ -_5.attr("action",a); -t?_5.attr("target",t):_5.removeAttr("target"); -_8.remove(); -} -var _9=10; -function cb(){ -_7.unbind(); -var _a=$("#"+_6).contents().find("body"); -var _b=_a.html(); -if(_b==""){ -if(--_9){ -setTimeout(cb,100); -return; -} -return; -} -var ta=_a.find(">textarea"); -if(ta.length){ -_b=ta.val(); -}else{ -var _c=_a.find(">pre"); -if(_c.length){ -_b=_c.html(); -} -} -if(_3.success){ -_3.success(_b); -} -setTimeout(function(){ -_7.unbind(); -_7.remove(); -},100); -}; -}; -function _d(_e,_f){ -if(!$.data(_e,"form")){ -$.data(_e,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var _10=$.data(_e,"form").options; -if(typeof _f=="string"){ -var _11={}; -if(_10.onBeforeLoad.call(_e,_11)==false){ -return; -} -$.ajax({url:_f,data:_11,dataType:"json",success:function(_12){ -_13(_12); -},error:function(){ -_10.onLoadError.apply(_e,arguments); -}}); -}else{ -_13(_f); -} -function _13(_14){ -var _15=$(_e); -for(var _16 in _14){ -var val=_14[_16]; -var rr=_17(_16,val); -if(!rr.length){ -var f=_15.find("input[numberboxName=\""+_16+"\"]"); -if(f.length){ -f.numberbox("setValue",val); -}else{ -$("input[name=\""+_16+"\"]",_15).val(val); -$("textarea[name=\""+_16+"\"]",_15).val(val); -$("select[name=\""+_16+"\"]",_15).val(val); -} -} -_18(_16,val); -} -_10.onLoadSuccess.call(_e,_14); -_20(_e); -}; -function _17(_19,val){ -var rr=$(_e).find("input[name=\""+_19+"\"][type=radio], input[name=\""+_19+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),val)>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _18(_1a,val){ -var _1b=$(_e); -var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"]; -var c=_1b.find("[comboName=\""+_1a+"\"]"); -if(c.length){ -for(var i=0;i=0){ -_1b(_16,_18,this); -} -}); -}; -cc.children("form").length?_17(cc.children("form")):_17(cc); -cc.append("
                                                                                "); -cc.bind("_resize",function(e,_19){ -var _1a=$.data(_16,"layout").options; -if(_1a.fit==true||_19){ -_2(_16); -} -return false; -}); -}; -function _1b(_1c,_1d,el){ -_1d.region=_1d.region||"center"; -var _1e=$.data(_1c,"layout").panels; -var cc=$(_1c); -var dir=_1d.region; -if(_1e[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
                                                                                ").appendTo(cc); -} -var _1f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var _20=$(this).panel("header").children("div.panel-tool"); -_20.children("a.panel-tool-collapse").hide(); -var _21={north:"up",south:"down",east:"right",west:"left"}; -if(!_21[dir]){ -return; -} -var _22="layout-button-"+_21[dir]; -var t=_20.children("a."+_22); -if(!t.length){ -t=$("").addClass(_22).appendTo(_20); -t.bind("click",{dir:dir},function(e){ -_2f(_1c,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_1d); -pp.panel(_1f); -_1e[dir]=pp; -if(pp.panel("options").split){ -var _23=pp.panel("panel"); -_23.addClass("layout-split-"+dir); -var _24=""; -if(dir=="north"){ -_24="s"; -} -if(dir=="south"){ -_24="n"; -} -if(dir=="east"){ -_24="w"; -} -if(dir=="west"){ -_24="e"; -} -_23.resizable($.extend({},{handles:_24,onStartResize:function(e){ -_1=true; -if(dir=="north"||dir=="south"){ -var _25=$(">div.layout-split-proxy-v",_1c); -}else{ -var _25=$(">div.layout-split-proxy-h",_1c); -} -var top=0,_26=0,_27=0,_28=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_23.css("top"))+_23.outerHeight()-_25.height(); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_23.css("top")); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=parseInt(_23.css("left"))||0; -pos.width=_25.width(); -pos.height=_23.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=_23.outerWidth()-_25.width(); -pos.width=_25.width(); -pos.height=_23.outerHeight(); -} -} -} -} -_25.css(pos); -$("
                                                                                ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _29=$(">div.layout-split-proxy-v",_1c); -_29.css("top",e.pageY-$(_1c).offset().top-_29.height()/2); -}else{ -var _29=$(">div.layout-split-proxy-h",_1c); -_29.css("left",e.pageX-$(_1c).offset().left-_29.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_2(_1c); -_1=false; -cc.find(">div.layout-mask").remove(); -}},_1d)); -} -}; -function _2a(_2b,_2c){ -var _2d=$.data(_2b,"layout").panels; -if(_2d[_2c].length){ -_2d[_2c].panel("destroy"); -_2d[_2c]=$(); -var _2e="expand"+_2c.substring(0,1).toUpperCase()+_2c.substring(1); -if(_2d[_2e]){ -_2d[_2e].panel("destroy"); -_2d[_2e]=undefined; -} -} -}; -function _2f(_30,_31,_32){ -if(_32==undefined){ -_32="normal"; -} -var _33=$.data(_30,"layout").panels; -var p=_33[_31]; -if(p.panel("options").onBeforeCollapse.call(p)==false){ -return; -} -var _34="expand"+_31.substring(0,1).toUpperCase()+_31.substring(1); -if(!_33[_34]){ -_33[_34]=_35(_31); -_33[_34].panel("panel").bind("click",function(){ -var _36=_37(); -p.panel("expand",false).panel("open").panel("resize",_36.collapse); -p.panel("panel").animate(_36.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_31},function(e){ -if(_1==true){ -return; -} -_2f(_30,e.data.region); -}); -}); -return false; -}); -} -var _38=_37(); -if(!_14(_33[_34])){ -_33.center.panel("resize",_38.resizeC); -} -p.panel("panel").animate(_38.collapse,_32,function(){ -p.panel("collapse",false).panel("close"); -_33[_34].panel("open").panel("resize",_38.expandP); -$(this).unbind(".layout"); -}); -function _35(dir){ -var _39; -if(dir=="east"){ -_39="layout-button-left"; -}else{ -if(dir=="west"){ -_39="layout-button-right"; -}else{ -if(dir=="north"){ -_39="layout-button-down"; -}else{ -if(dir=="south"){ -_39="layout-button-up"; -} -} -} -} -var _3a=$.extend({},$.fn.layout.paneldefaults,{cls:"layout-expand",title:" ",closed:true,doSize:false,tools:[{iconCls:_39,handler:function(){ -_3e(_30,_31); -return false; -}}]}); -var p=$("
                                                                                ").appendTo(_30).panel(_3a); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _37(){ -var cc=$(_30); -var _3b=_33.center.panel("options"); -if(_31=="east"){ -var _3c=_33["east"].panel("options"); -return {resizeC:{width:_3b.width+_3c.width-28},expand:{left:cc.width()-_3c.width},expandP:{top:_3b.top,left:cc.width()-28,width:28,height:_3b.height},collapse:{left:cc.width(),top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="west"){ -var _3d=_33["west"].panel("options"); -return {resizeC:{width:_3b.width+_3d.width-28,left:28},expand:{left:0},expandP:{left:0,top:_3b.top,width:28,height:_3b.height},collapse:{left:-_3d.width,top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="north"){ -var hh=cc.height()-28; -if(_14(_33.expandSouth)){ -hh-=_33.expandSouth.panel("options").height; -}else{ -if(_14(_33.south)){ -hh-=_33.south.panel("options").height; -} -} -_33.east.panel("resize",{top:28,height:hh}); -_33.west.panel("resize",{top:28,height:hh}); -if(_14(_33.expandEast)){ -_33.expandEast.panel("resize",{top:28,height:hh}); -} -if(_14(_33.expandWest)){ -_33.expandWest.panel("resize",{top:28,height:hh}); -} -return {resizeC:{top:28,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_33["north"].panel("options").height,width:cc.width()}}; -}else{ -if(_31=="south"){ -var hh=cc.height()-28; -if(_14(_33.expandNorth)){ -hh-=_33.expandNorth.panel("options").height; -}else{ -if(_14(_33.north)){ -hh-=_33.north.panel("options").height; -} -} -_33.east.panel("resize",{height:hh}); -_33.west.panel("resize",{height:hh}); -if(_14(_33.expandEast)){ -_33.expandEast.panel("resize",{height:hh}); -} -if(_14(_33.expandWest)){ -_33.expandWest.panel("resize",{height:hh}); -} -return {resizeC:{height:hh},expand:{top:cc.height()-_33["south"].panel("options").height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _3e(_3f,_40){ -var _41=$.data(_3f,"layout").panels; -var _42=_43(); -var p=_41[_40]; -if(p.panel("options").onBeforeExpand.call(p)==false){ -return; -} -var _44="expand"+_40.substring(0,1).toUpperCase()+_40.substring(1); -_41[_44].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_42.collapse); -p.panel("panel").animate(_42.expand,function(){ -_2(_3f); -}); -function _43(){ -var cc=$(_3f); -var _45=_41.center.panel("options"); -if(_40=="east"&&_41.expandEast){ -return {collapse:{left:cc.width(),top:_45.top,height:_45.height},expand:{left:cc.width()-_41["east"].panel("options").width}}; -}else{ -if(_40=="west"&&_41.expandWest){ -return {collapse:{left:-_41["west"].panel("options").width,top:_45.top,height:_45.height},expand:{left:0}}; -}else{ -if(_40=="north"&&_41.expandNorth){ -return {collapse:{top:-_41["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_40=="south"&&_41.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_41["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _14(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _46(_47){ -var _48=$.data(_47,"layout").panels; -if(_48.east.length&&_48.east.panel("options").collapsed){ -_2f(_47,"east",0); -} -if(_48.west.length&&_48.west.panel("options").collapsed){ -_2f(_47,"west",0); -} -if(_48.north.length&&_48.north.panel("options").collapsed){ -_2f(_47,"north",0); -} -if(_48.south.length&&_48.south.panel("options").collapsed){ -_2f(_47,"south",0); -} -}; -$.fn.layout=function(_49,_4a){ -if(typeof _49=="string"){ -return $.fn.layout.methods[_49](this,_4a); -} -_49=_49||{}; -return this.each(function(){ -var _4b=$.data(this,"layout"); -if(_4b){ -$.extend(_4b.options,_49); -}else{ -var _4c=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_49); -$.data(this,"layout",{options:_4c,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -_15(this); -} -_2(this); -_46(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_2(this); -}); -},panel:function(jq,_4d){ -return $.data(jq[0],"layout").panels[_4d]; -},collapse:function(jq,_4e){ -return jq.each(function(){ -_2f(this,_4e); -}); -},expand:function(jq,_4f){ -return jq.each(function(){ -_3e(this,_4f); -}); -},add:function(jq,_50){ -return jq.each(function(){ -_1b(this,_50); -_2(this); -if($(this).layout("panel",_50.region).panel("options").collapsed){ -_2f(this,_50.region,0); -} -}); -},remove:function(jq,_51){ -return jq.each(function(){ -_2a(this,_51); -_2(this); -}); -}}; -$.fn.layout.parseOptions=function(_52){ -return $.extend({},$.parser.parseOptions(_52,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_53){ -var t=$(_53); -return $.extend({},$.fn.panel.parseOptions(_53),$.parser.parseOptions(_53,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.linkbutton.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.linkbutton.js deleted file mode 100644 index 676dc05..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.linkbutton.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"linkbutton").options; -var t=$(_2); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_3.plain){ -t.addClass("l-btn-plain"); -} -if(_3.selected){ -t.addClass(_3.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_3.group||""); -t.attr("id",_3.id||""); -t.html(""+""+""); -if(_3.text){ -t.find(".l-btn-text").html(_3.text); -if(_3.iconCls){ -t.find(".l-btn-text").addClass(_3.iconCls).addClass(_3.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_3.iconCls){ -t.find(".l-btn-empty").addClass(_3.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_3.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_3.toggle&&!_3.disabled){ -t.bind("click.linkbutton",function(){ -if(_3.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_4(_2,_3.selected); -_5(_2,_3.disabled); -}; -function _4(_6,_7){ -var _8=$.data(_6,"linkbutton").options; -if(_7){ -if(_8.group){ -$("a.l-btn[group=\""+_8.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_6).addClass(_8.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_8.selected=true; -}else{ -if(!_8.group){ -$(_6).removeClass("l-btn-selected l-btn-plain-selected"); -_8.selected=false; -} -} -}; -function _5(_9,_a){ -var _b=$.data(_9,"linkbutton"); -var _c=_b.options; -$(_9).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_a){ -_c.disabled=true; -var _d=$(_9).attr("href"); -if(_d){ -_b.href=_d; -$(_9).attr("href","javascript:void(0)"); -} -if(_9.onclick){ -_b.onclick=_9.onclick; -_9.onclick=null; -} -_c.plain?$(_9).addClass("l-btn-disabled l-btn-plain-disabled"):$(_9).addClass("l-btn-disabled"); -}else{ -_c.disabled=false; -if(_b.href){ -$(_9).attr("href",_b.href); -} -if(_b.onclick){ -_9.onclick=_b.onclick; -} -} -}; -$.fn.linkbutton=function(_e,_f){ -if(typeof _e=="string"){ -return $.fn.linkbutton.methods[_e](this,_f); -} -_e=_e||{}; -return this.each(function(){ -var _10=$.data(this,"linkbutton"); -if(_10){ -$.extend(_10.options,_e); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_e)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_5(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_4(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_4(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_11){ -var t=$(_11); -return $.extend({},$.parser.parseOptions(_11,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.menu.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.menu.js deleted file mode 100644 index 12b0014..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.menu.js +++ /dev/null @@ -1,412 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).appendTo("body"); -$(_2).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _3=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_3); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _4=_5($(_2)); -for(var i=0;i<_4.length;i++){ -_6(_4[i]); -} -function _5(_7){ -var _8=[]; -_7.addClass("menu"); -_8.push(_7); -if(!_7.hasClass("menu-content")){ -_7.children("div").each(function(){ -var _9=$(this).children("div"); -if(_9.length){ -_9.insertAfter(_2); -this.submenu=_9; -var mm=_5(_9); -_8=_8.concat(mm); -} -}); -} -return _8; -}; -function _6(_a){ -var _b=$.parser.parseOptions(_a[0],["width"]).width; -if(_a.hasClass("menu-content")){ -_a[0].originalWidth=_b||_a._outerWidth(); -}else{ -_a[0].originalWidth=_b||0; -_a.children("div").each(function(){ -var _c=$(this); -if(_c.hasClass("menu-sep")){ -}else{ -var _d=$.extend({},$.parser.parseOptions(this,["name","iconCls","href"]),{disabled:(_c.attr("disabled")?true:undefined)}); -_c[0].itemName=_d.name||""; -_c[0].itemHref=_d.href||""; -var _e=_c.addClass("menu-item").html(); -_c.empty().append($("
                                                                                ").html(_e)); -if(_d.iconCls){ -$("
                                                                                ").addClass(_d.iconCls).appendTo(_c); -} -if(_d.disabled){ -_f(_2,_c[0],true); -} -if(_c[0].submenu){ -$("
                                                                                ").appendTo(_c); -} -_10(_2,_c); -} -}); -$("
                                                                                ").prependTo(_a); -} -_11(_2,_a); -_a.hide(); -_12(_2,_a); -}; -}; -function _11(_13,_14){ -var _15=$.data(_13,"menu").options; -var d=_14.css("display"); -_14.css({display:"block",left:-10000}); -var _16=0; -_14.find("div.menu-text").each(function(){ -if(_16<$(this)._outerWidth()){ -_16=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_16+=65; -_14._outerWidth(Math.max((_14[0].originalWidth||0),_16,_15.minWidth)); -_14.css("display",d); -}; -function _12(_17,_18){ -var _19=$.data(_17,"menu"); -_18.unbind(".menu").bind("mouseenter.menu",function(){ -if(_19.timer){ -clearTimeout(_19.timer); -_19.timer=null; -} -}).bind("mouseleave.menu",function(){ -_19.timer=setTimeout(function(){ -_1a(_17); -},100); -}); -}; -function _10(_1b,_1c){ -_1c.unbind(".menu"); -_1c.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_1a(_1b); -var _1d=$(this).attr("href"); -if(_1d){ -location.href=_1d; -} -} -var _1e=$(_1b).menu("getItem",this); -$.data(_1b,"menu").options.onClick.call(_1b,_1e); -}).bind("mouseenter.menu",function(e){ -_1c.siblings().each(function(){ -if(this.submenu){ -_21(this.submenu); -} -$(this).removeClass("menu-active"); -}); -_1c.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -_1c.addClass("menu-active-disabled"); -return; -} -var _1f=_1c[0].submenu; -if(_1f){ -$(_1b).menu("show",{menu:_1f,parent:_1c}); -} -}).bind("mouseleave.menu",function(e){ -_1c.removeClass("menu-active menu-active-disabled"); -var _20=_1c[0].submenu; -if(_20){ -if(e.pageX>=parseInt(_20.css("left"))){ -_1c.addClass("menu-active"); -}else{ -_21(_20); -} -}else{ -_1c.removeClass("menu-active"); -} -}); -}; -function _1a(_22){ -var _23=$.data(_22,"menu"); -if(_23){ -if($(_22).is(":visible")){ -_21($(_22)); -_23.options.onHide.call(_22); -} -} -return false; -}; -function _24(_25,_26){ -var _27,top; -_26=_26||{}; -var _28=$(_26.menu||_25); -if(_28.hasClass("menu-top")){ -var _29=$.data(_25,"menu").options; -$.extend(_29,_26); -_27=_29.left; -top=_29.top; -if(_29.alignTo){ -var at=$(_29.alignTo); -_27=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(_27+_28.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -_27=$(window)._outerWidth()+$(document).scrollLeft()-_28.outerWidth()-5; -} -if(top+_28.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top-=_28.outerHeight(); -} -}else{ -var _2a=_26.parent; -_27=_2a.offset().left+_2a.outerWidth()-2; -if(_27+_28.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -_27=_2a.offset().left-_28.outerWidth()+2; -} -var top=_2a.offset().top-3; -if(top+_28.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-_28.outerHeight()-5; -} -} -_28.css({left:_27,top:top}); -_28.show(0,function(){ -if(!_28[0].shadow){ -_28[0].shadow=$("
                                                                                ").insertAfter(_28); -} -_28[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:_28.css("left"),top:_28.css("top"),width:_28.outerWidth(),height:_28.outerHeight()}); -_28.css("z-index",$.fn.menu.defaults.zIndex++); -if(_28.hasClass("menu-top")){ -$.data(_28[0],"menu").options.onShow.call(_28[0]); -} -}); -}; -function _21(_2b){ -if(!_2b){ -return; -} -_2c(_2b); -_2b.find("div.menu-item").each(function(){ -if(this.submenu){ -_21(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _2c(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _2d(_2e,_2f){ -var _30=null; -var tmp=$("
                                                                                "); -function _31(_32){ -_32.children("div.menu-item").each(function(){ -var _33=$(_2e).menu("getItem",this); -var s=tmp.empty().html(_33.text).text(); -if(_2f==$.trim(s)){ -_30=_33; -}else{ -if(this.submenu&&!_30){ -_31(this.submenu); -} -} -}); -}; -_31($(_2e)); -tmp.remove(); -return _30; -}; -function _f(_34,_35,_36){ -var t=$(_35); -if(_36){ -t.addClass("menu-item-disabled"); -if(_35.onclick){ -_35.onclick1=_35.onclick; -_35.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_35.onclick1){ -_35.onclick=_35.onclick1; -_35.onclick1=null; -} -} -}; -function _37(_38,_39){ -var _3a=$(_38); -if(_39.parent){ -if(!_39.parent.submenu){ -var _3b=$("
                                                                                ").appendTo("body"); -_3b.hide(); -_39.parent.submenu=_3b; -$("
                                                                                ").appendTo(_39.parent); -} -_3a=_39.parent.submenu; -} -var _3c=$("
                                                                                ").appendTo(_3a); -$("
                                                                                ").html(_39.text).appendTo(_3c); -if(_39.iconCls){ -$("
                                                                                ").addClass(_39.iconCls).appendTo(_3c); -} -if(_39.id){ -_3c.attr("id",_39.id); -} -if(_39.name){ -_3c[0].itemName=_39.name; -} -if(_39.href){ -_3c[0].itemHref=_39.href; -} -if(_39.onclick){ -if(typeof _39.onclick=="string"){ -_3c.attr("onclick",_39.onclick); -}else{ -_3c[0].onclick=eval(_39.onclick); -} -} -if(_39.handler){ -_3c[0].onclick=eval(_39.handler); -} -_10(_38,_3c); -if(_39.disabled){ -_f(_38,_3c[0],true); -} -_12(_38,_3a); -_11(_38,_3a); -}; -function _3d(_3e,_3f){ -function _40(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_40(this); -}); -var _41=el.submenu[0].shadow; -if(_41){ -_41.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_40(_3f); -}; -function _42(_43){ -$(_43).children("div.menu-item").each(function(){ -_3d(_43,this); -}); -if(_43.shadow){ -_43.shadow.remove(); -} -$(_43).remove(); -}; -$.fn.menu=function(_44,_45){ -if(typeof _44=="string"){ -return $.fn.menu.methods[_44](this,_45); -} -_44=_44||{}; -return this.each(function(){ -var _46=$.data(this,"menu"); -if(_46){ -$.extend(_46.options,_44); -}else{ -_46=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_44)}); -_1(this); -} -$(this).css({left:_46.options.left,top:_46.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_24(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_1a(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_42(this); -}); -},setText:function(jq,_47){ -return jq.each(function(){ -$(_47.target).children("div.menu-text").html(_47.text); -}); -},setIcon:function(jq,_48){ -return jq.each(function(){ -var _49=$(this).menu("getItem",_48.target); -if(_49.iconCls){ -$(_49.target).children("div.menu-icon").removeClass(_49.iconCls).addClass(_48.iconCls); -}else{ -$("
                                                                                ").addClass(_48.iconCls).appendTo(_48.target); -} -}); -},getItem:function(jq,_4a){ -var t=$(_4a); -var _4b={target:_4a,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_4a.itemName,href:_4a.itemHref,onclick:_4a.onclick}; -var _4c=t.children("div.menu-icon"); -if(_4c.length){ -var cc=[]; -var aa=_4c.attr("class").split(" "); -for(var i=0;i "})); -if(_3.menu){ -$(_3.menu).menu(); -var _5=$(_3.menu).menu("options"); -var _6=_5.onShow; -var _7=_5.onHide; -$.extend(_5,{onShow:function(){ -var _8=$(this).menu("options"); -var _9=$(_8.alignTo); -var _a=_9.menubutton("options"); -_9.addClass((_a.plain==true)?_a.cls.btn2:_a.cls.btn1); -_6.call(this); -},onHide:function(){ -var _b=$(this).menu("options"); -var _c=$(_b.alignTo); -var _d=_c.menubutton("options"); -_c.removeClass((_d.plain==true)?_d.cls.btn2:_d.cls.btn1); -_7.call(this); -}}); -} -_e(_2,_3.disabled); -}; -function _e(_f,_10){ -var _11=$.data(_f,"menubutton").options; -_11.disabled=_10; -var btn=$(_f); -var t=btn.find("."+_11.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_10){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _12=null; -t.bind("click.menubutton",function(){ -_13(_f); -return false; -}).bind("mouseenter.menubutton",function(){ -_12=setTimeout(function(){ -_13(_f); -},_11.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_12){ -clearTimeout(_12); -} -}); -} -}; -function _13(_14){ -var _15=$.data(_14,"menubutton").options; -if(_15.disabled||!_15.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_14); -var mm=$(_15.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_16,_17){ -if(typeof _16=="string"){ -var _18=$.fn.menubutton.methods[_16]; -if(_18){ -return _18(this,_17); -}else{ -return this.linkbutton(_16,_17); -} -} -_16=_16||{}; -return this.each(function(){ -var _19=$.data(this,"menubutton"); -if(_19){ -$.extend(_19.options,_16); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_16)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _1a=jq.linkbutton("options"); -var _1b=$.data(jq[0],"menubutton").options; -_1b.toggle=_1a.toggle; -_1b.selected=_1a.selected; -return _1b; -},enable:function(jq){ -return jq.each(function(){ -_e(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_e(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var _1c=$(this).menubutton("options"); -if(_1c.menu){ -$(_1c.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_1d){ -var t=$(_1d); -return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.messager.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.messager.js deleted file mode 100644 index ef6fad1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.messager.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(el,_2,_3,_4){ -var _5=$(el).window("window"); -if(!_5){ -return; -} -switch(_2){ -case null: -_5.show(); -break; -case "slide": -_5.slideDown(_3); -break; -case "fade": -_5.fadeIn(_3); -break; -case "show": -_5.show(_3); -break; -} -var _6=null; -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -_5.hover(function(){ -if(_6){ -clearTimeout(_6); -} -},function(){ -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -}); -}; -function _7(el,_8,_9){ -if(el.locked==true){ -return; -} -el.locked=true; -var _a=$(el).window("window"); -if(!_a){ -return; -} -switch(_8){ -case null: -_a.hide(); -break; -case "slide": -_a.slideUp(_9); -break; -case "fade": -_a.fadeOut(_9); -break; -case "show": -_a.hide(_9); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_9); -}; -function _b(_c){ -var _d=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -_1(this,_d.showType,_d.showSpeed,_d.timeout); -return false; -},onBeforeClose:function(){ -_7(this,_d.showType,_d.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_c); -_d.style.zIndex=$.fn.window.defaults.zIndex++; -var _e=$("
                                                                                ").html(_d.msg).appendTo("body"); -_e.window(_d); -_e.window("window").css(_d.style); -_e.window("open"); -return _e; -}; -function _f(_10,_11,_12){ -var win=$("
                                                                                ").appendTo("body"); -win.append(_11); -if(_12){ -var tb=$("
                                                                                ").appendTo(win); -for(var _13 in _12){ -$("").attr("href","javascript:void(0)").text(_13).css("margin-left",10).bind("click",eval(_12[_13])).appendTo(tb).linkbutton(); -} -} -win.window({title:_10,noheader:(_10?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_14){ -return _b(_14); -},alert:function(_15,msg,_16,fn){ -var _17="
                                                                                "+msg+"
                                                                                "; -switch(_16){ -case "error": -_17="
                                                                                "+_17; -break; -case "info": -_17="
                                                                                "+_17; -break; -case "question": -_17="
                                                                                "+_17; -break; -case "warning": -_17="
                                                                                "+_17; -break; -} -_17+="
                                                                                "; -var _18={}; -_18[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_15,_17,_18); -return win; -},confirm:function(_19,msg,fn){ -var _1a="
                                                                                "+"
                                                                                "+msg+"
                                                                                "+"
                                                                                "; -var _1b={}; -_1b[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_1b[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_f(_19,_1a,_1b); -return win; -},prompt:function(_1c,msg,fn){ -var _1d="
                                                                                "+"
                                                                                "+msg+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "; -var _1e={}; -_1e[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_1e[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_1c,_1d,_1e); -win.children("input.messager-input").focus(); -return win; -},progress:function(_1f){ -var _20={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _1f=="string"){ -var _21=_20[_1f]; -return _21(); -} -var _22=$.extend({title:"",msg:"",text:undefined,interval:300},_1f||{}); -var _23="
                                                                                "; -var win=_f(_22.title,_23,null); -win.find("div.messager-p-msg").html(_22.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:_22.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(_22.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},_22.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.numberbox.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.numberbox.js deleted file mode 100644 index d8dd192..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.numberbox.js +++ /dev/null @@ -1,224 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberbox-f"); -var v=$("").insertAfter(_2); -var _3=$(_2).attr("name"); -if(_3){ -v.attr("name",_3); -$(_2).removeAttr("name").attr("numberboxName",_3); -} -return v; -}; -function _4(_5){ -var _6=$.data(_5,"numberbox").options; -var fn=_6.onChange; -_6.onChange=function(){ -}; -_7(_5,_6.parser.call(_5,_6.value)); -_6.onChange=fn; -_6.originalValue=_8(_5); -}; -function _8(_9){ -return $.data(_9,"numberbox").field.val(); -}; -function _7(_a,_b){ -var _c=$.data(_a,"numberbox"); -var _d=_c.options; -var _e=_8(_a); -_b=_d.parser.call(_a,_b); -_d.value=_b; -_c.field.val(_b); -$(_a).val(_d.formatter.call(_a,_b)); -if(_e!=_b){ -_d.onChange.call(_a,_b,_e); -} -}; -function _f(_10){ -var _11=$.data(_10,"numberbox").options; -$(_10).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return _11.filter.call(_10,e); -}).bind("blur.numberbox",function(){ -_7(_10,$(this).val()); -$(this).val(_11.formatter.call(_10,_8(_10))); -}).bind("focus.numberbox",function(){ -var vv=_8(_10); -if(vv!=_11.parser.call(_10,$(this).val())){ -$(this).val(_11.formatter.call(_10,vv)); -} -}); -}; -function _12(_13){ -if($.fn.validatebox){ -var _14=$.data(_13,"numberbox").options; -$(_13).validatebox(_14); -} -}; -function _15(_16,_17){ -var _18=$.data(_16,"numberbox").options; -if(_17){ -_18.disabled=true; -$(_16).attr("disabled",true); -}else{ -_18.disabled=false; -$(_16).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_19,_1a){ -if(typeof _19=="string"){ -var _1b=$.fn.numberbox.methods[_19]; -if(_1b){ -return _1b(this,_1a); -}else{ -return this.validatebox(_19,_1a); -} -} -_19=_19||{}; -return this.each(function(){ -var _1c=$.data(this,"numberbox"); -if(_1c){ -$.extend(_1c.options,_19); -}else{ -_1c=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_19),field:_1(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_15(this,_1c.options.disabled); -_f(this); -_12(this); -_4(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_15(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_15(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_7(this,$(this).val()); -}); -},setValue:function(jq,_1d){ -return jq.each(function(){ -_7(this,_1d); -}); -},getValue:function(jq){ -return _8(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _1e=$.data(this,"numberbox"); -_1e.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1f=$(this).numberbox("options"); -$(this).numberbox("setValue",_1f.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_20){ -var t=$(_20); -return $.extend({},$.fn.validatebox.parseOptions(_20),$.parser.parseOptions(_20,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var _21=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==_21.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==_21.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_22){ -if(!_22){ -return _22; -} -_22=_22+""; -var _23=$(this).numberbox("options"); -var s1=_22,s2=""; -var _24=_22.indexOf("."); -if(_24>=0){ -s1=_22.substring(0,_24); -s2=_22.substring(_24+1,_22.length); -} -if(_23.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+_23.groupSeparator+"$2"); -} -} -if(s2){ -return _23.prefix+s1+_23.decimalSeparator+s2+_23.suffix; -}else{ -return _23.prefix+s1+_23.suffix; -} -},parser:function(s){ -s=s+""; -var _25=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(_25.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.prefix),"g"),"")); -} -if(_25.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.suffix),"g"),"")); -} -if(_25.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.groupSeparator,"g"),"")); -} -if(_25.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(_25.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (_25.min)=="number"&&val<_25.min){ -val=_25.min.toFixed(_25.precision); -}else{ -if(typeof (_25.max)=="number"&&val>_25.max){ -val=_25.max.toFixed(_25.precision); -} -} -} -return val; -},onChange:function(_26,_27){ -}}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.numberspinner.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.numberspinner.js deleted file mode 100644 index 8674f97..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.numberspinner.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberspinner-f"); -var _3=$.data(_2,"numberspinner").options; -$(_2).spinner(_3).numberbox(_3); -}; -function _4(_5,_6){ -var _7=$.data(_5,"numberspinner").options; -var v=parseFloat($(_5).numberbox("getValue")||_7.value)||0; -if(_6==true){ -v-=_7.increment; -}else{ -v+=_7.increment; -} -$(_5).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.numberspinner.methods[_8]; -if(_a){ -return _a(this,_9); -}else{ -return this.spinner(_8,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"numberspinner"); -if(_b){ -$.extend(_b.options,_8); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_8)}); -} -_1(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var _c=$.data(jq[0],"numberspinner").options; -return $.extend(_c,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_d){ -return jq.each(function(){ -$(this).numberbox("setValue",_d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var _e=$(this).numberspinner("options"); -$(this).numberspinner("setValue",_e.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_f){ -return $.extend({},$.fn.spinner.parseOptions(_f),$.fn.numberbox.parseOptions(_f),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(_10){ -_4(this,_10); -}}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.pagination.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.pagination.js deleted file mode 100644 index 22f43b3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.pagination.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"pagination"); -var _4=_3.options; -var bb=_3.bb={}; -var _5=$(_2).addClass("pagination").html("
                                                                                "); -var tr=_5.find("tr"); -function _6(_7){ -var _8=_4.nav[_7]; -var a=$("").appendTo(tr); -a.wrap(""); -a.linkbutton({iconCls:_8.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -_8.handler.call(_2); -}); -return a; -}; -if(_4.showPageList){ -var ps=$(""); -ps.bind("change",function(){ -_4.pageSize=parseInt($(this).val()); -_4.onChangePageSize.call(_2,_4.pageSize); -_b(_2,_4.pageNumber); -}); -for(var i=0;i<_4.pageList.length;i++){ -$("").text(_4.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -$("
                                                                                ").appendTo(tr); -} -bb.first=_6("first"); -bb.prev=_6("prev"); -$("
                                                                                ").appendTo(tr); -$("").html(_4.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _9=parseInt($(this).val())||1; -_b(_2,_9); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -$("
                                                                                ").appendTo(tr); -bb.next=_6("next"); -bb.last=_6("last"); -if(_4.showRefresh){ -$("
                                                                                ").appendTo(tr); -bb.refresh=_6("refresh"); -} -if(_4.buttons){ -$("
                                                                                ").appendTo(tr); -if($.isArray(_4.buttons)){ -for(var i=0;i<_4.buttons.length;i++){ -var _a=_4.buttons[i]; -if(_a=="-"){ -$("
                                                                                ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(_a.handler||function(){ -}); -a.linkbutton($.extend({},_a,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_4.buttons).appendTo(td).show(); -} -} -$("
                                                                                ").appendTo(_5); -$("
                                                                                ").appendTo(_5); -}; -function _b(_c,_d){ -var _e=$.data(_c,"pagination").options; -_f(_c,{pageNumber:_d}); -_e.onSelectPage.call(_c,_e.pageNumber,_e.pageSize); -}; -function _f(_10,_11){ -var _12=$.data(_10,"pagination"); -var _13=_12.options; -var bb=_12.bb; -$.extend(_13,_11||{}); -var ps=$(_10).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_13.pageSize+""); -_13.pageSize=parseInt(ps.val()); -} -var _14=Math.ceil(_13.total/_13.pageSize)||1; -if(_13.pageNumber<1){ -_13.pageNumber=1; -} -if(_13.pageNumber>_14){ -_13.pageNumber=_14; -} -bb.num.val(_13.pageNumber); -bb.after.html(_13.afterPageText.replace(/{pages}/,_14)); -var _15=_13.displayMsg; -_15=_15.replace(/{from}/,_13.total==0?0:_13.pageSize*(_13.pageNumber-1)+1); -_15=_15.replace(/{to}/,Math.min(_13.pageSize*(_13.pageNumber),_13.total)); -_15=_15.replace(/{total}/,_13.total); -$(_10).find("div.pagination-info").html(_15); -bb.first.add(bb.prev).linkbutton({disabled:(_13.pageNumber==1)}); -bb.next.add(bb.last).linkbutton({disabled:(_13.pageNumber==_14)}); -_16(_10,_13.loading); -}; -function _16(_17,_18){ -var _19=$.data(_17,"pagination"); -var _1a=_19.options; -var bb=_19.bb; -_1a.loading=_18; -if(_1a.showRefresh){ -_19.bb.refresh.linkbutton({iconCls:(_1a.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_1b,_1c){ -if(typeof _1b=="string"){ -return $.fn.pagination.methods[_1b](this,_1c); -} -_1b=_1b||{}; -return this.each(function(){ -var _1d; -var _1e=$.data(this,"pagination"); -if(_1e){ -_1d=$.extend(_1e.options,_1b); -}else{ -_1d=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_1b); -$.data(this,"pagination",{options:_1d}); -} -_1(this); -_f(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_16(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_16(this,false); -}); -},refresh:function(jq,_1f){ -return jq.each(function(){ -_f(this,_1f); -}); -},select:function(jq,_20){ -return jq.each(function(){ -_b(this,_20); -}); -}}; -$.fn.pagination.parseOptions=function(_21){ -var t=$(_21); -return $.extend({},$.parser.parseOptions(_21,[{total:"number",pageSize:"number",pageNumber:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,onSelectPage:function(_22,_23){ -},onBeforeRefresh:function(_24,_25){ -},onRefresh:function(_26,_27){ -},onChangePageSize:function(_28){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _29=$(this).pagination("options"); -if(_29.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _2a=$(this).pagination("options"); -if(_2a.pageNumber>1){ -$(this).pagination("select",_2a.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _2b=$(this).pagination("options"); -var _2c=Math.ceil(_2b.total/_2b.pageSize); -if(_2b.pageNumber<_2c){ -$(this).pagination("select",_2b.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _2d=$(this).pagination("options"); -var _2e=Math.ceil(_2d.total/_2d.pageSize); -if(_2d.pageNumber<_2e){ -$(this).pagination("select",_2e); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _2f=$(this).pagination("options"); -if(_2f.onBeforeRefresh.call(this,_2f.pageNumber,_2f.pageSize)!=false){ -$(this).pagination("select",_2f.pageNumber); -_2f.onRefresh.call(this,_2f.pageNumber,_2f.pageSize); -} -}}}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.panel.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.panel.js deleted file mode 100644 index bf5b872..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.panel.js +++ /dev/null @@ -1,529 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1(_2){ -_2._remove(); -}; -function _3(_4,_5){ -var _6=$.data(_4,"panel").options; -var _7=$.data(_4,"panel").panel; -var _8=_7.children("div.panel-header"); -var _9=_7.children("div.panel-body"); -if(_5){ -if(_5.width){ -_6.width=_5.width; -} -if(_5.height){ -_6.height=_5.height; -} -if(_5.left!=null){ -_6.left=_5.left; -} -if(_5.top!=null){ -_6.top=_5.top; -} -} -_6.fit?$.extend(_6,_7._fit()):_7._fit(false); -_7.css({left:_6.left,top:_6.top}); -if(!isNaN(_6.width)){ -_7._outerWidth(_6.width); -}else{ -_7.width("auto"); -} -_8.add(_9)._outerWidth(_7.width()); -if(!isNaN(_6.height)){ -_7._outerHeight(_6.height); -_9._outerHeight(_7.height()-_8._outerHeight()); -}else{ -_9.height("auto"); -} -_7.css("height",""); -_6.onResize.apply(_4,[_6.width,_6.height]); -_7.find(">div.panel-body>div").triggerHandler("_resize"); -}; -function _a(_b,_c){ -var _d=$.data(_b,"panel").options; -var _e=$.data(_b,"panel").panel; -if(_c){ -if(_c.left!=null){ -_d.left=_c.left; -} -if(_c.top!=null){ -_d.top=_c.top; -} -} -_e.css({left:_d.left,top:_d.top}); -_d.onMove.apply(_b,[_d.left,_d.top]); -}; -function _f(_10){ -$(_10).addClass("panel-body"); -var _11=$("
                                                                                ").insertBefore(_10); -_11[0].appendChild(_10); -_11.bind("_resize",function(){ -var _12=$.data(_10,"panel").options; -if(_12.fit==true){ -_3(_10); -} -return false; -}); -return _11; -}; -function _13(_14){ -var _15=$.data(_14,"panel").options; -var _16=$.data(_14,"panel").panel; -if(_15.tools&&typeof _15.tools=="string"){ -_16.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(_15.tools); -} -_1(_16.children("div.panel-header")); -if(_15.title&&!_15.noheader){ -var _17=$("
                                                                                "+_15.title+"
                                                                                ").prependTo(_16); -if(_15.iconCls){ -_17.find(".panel-title").addClass("panel-with-icon"); -$("
                                                                                ").addClass(_15.iconCls).appendTo(_17); -} -var _18=$("
                                                                                ").appendTo(_17); -_18.bind("click",function(e){ -e.stopPropagation(); -}); -if(_15.tools){ -if(typeof _15.tools=="string"){ -$(_15.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_18); -}); -}else{ -for(var i=0;i<_15.tools.length;i++){ -var t=$("").addClass(_15.tools[i].iconCls).appendTo(_18); -if(_15.tools[i].handler){ -t.bind("click",eval(_15.tools[i].handler)); -} -} -} -} -if(_15.collapsible){ -$("").appendTo(_18).bind("click",function(){ -if(_15.collapsed==true){ -_3c(_14,true); -}else{ -_2c(_14,true); -} -return false; -}); -} -if(_15.minimizable){ -$("").appendTo(_18).bind("click",function(){ -_47(_14); -return false; -}); -} -if(_15.maximizable){ -$("").appendTo(_18).bind("click",function(){ -if(_15.maximized==true){ -_4b(_14); -}else{ -_2b(_14); -} -return false; -}); -} -if(_15.closable){ -$("").appendTo(_18).bind("click",function(){ -_19(_14); -return false; -}); -} -_16.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_16.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1a(_1b){ -var _1c=$.data(_1b,"panel"); -var _1d=_1c.options; -if(_1d.href){ -if(!_1c.isLoaded||!_1d.cache){ -if(_1d.onBeforeLoad.call(_1b)==false){ -return; -} -_1c.isLoaded=false; -_1e(_1b); -if(_1d.loadingMessage){ -$(_1b).html($("
                                                                                ").html(_1d.loadingMessage)); -} -$.ajax({url:_1d.href,cache:false,dataType:"html",success:function(_1f){ -_20(_1d.extractor.call(_1b,_1f)); -_1d.onLoad.apply(_1b,arguments); -_1c.isLoaded=true; -}}); -} -}else{ -if(_1d.content){ -if(!_1c.isLoaded){ -_1e(_1b); -_20(_1d.content); -_1c.isLoaded=true; -} -} -} -function _20(_21){ -$(_1b).html(_21); -if($.parser){ -$.parser.parse($(_1b)); -} -}; -}; -function _1e(_22){ -var t=$(_22); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").tooltip("destroy"); -}; -function _23(_24){ -$(_24).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _25(_26,_27){ -var _28=$.data(_26,"panel").options; -var _29=$.data(_26,"panel").panel; -if(_27!=true){ -if(_28.onBeforeOpen.call(_26)==false){ -return; -} -} -_29.show(); -_28.closed=false; -_28.minimized=false; -var _2a=_29.children("div.panel-header").find("a.panel-tool-restore"); -if(_2a.length){ -_28.maximized=true; -} -_28.onOpen.call(_26); -if(_28.maximized==true){ -_28.maximized=false; -_2b(_26); -} -if(_28.collapsed==true){ -_28.collapsed=false; -_2c(_26); -} -if(!_28.collapsed){ -_1a(_26); -_23(_26); -} -}; -function _19(_2d,_2e){ -var _2f=$.data(_2d,"panel").options; -var _30=$.data(_2d,"panel").panel; -if(_2e!=true){ -if(_2f.onBeforeClose.call(_2d)==false){ -return; -} -} -_30._fit(false); -_30.hide(); -_2f.closed=true; -_2f.onClose.call(_2d); -}; -function _31(_32,_33){ -var _34=$.data(_32,"panel").options; -var _35=$.data(_32,"panel").panel; -if(_33!=true){ -if(_34.onBeforeDestroy.call(_32)==false){ -return; -} -} -_1e(_32); -_1(_35); -_34.onDestroy.call(_32); -}; -function _2c(_36,_37){ -var _38=$.data(_36,"panel").options; -var _39=$.data(_36,"panel").panel; -var _3a=_39.children("div.panel-body"); -var _3b=_39.children("div.panel-header").find("a.panel-tool-collapse"); -if(_38.collapsed==true){ -return; -} -_3a.stop(true,true); -if(_38.onBeforeCollapse.call(_36)==false){ -return; -} -_3b.addClass("panel-tool-expand"); -if(_37==true){ -_3a.slideUp("normal",function(){ -_38.collapsed=true; -_38.onCollapse.call(_36); -}); -}else{ -_3a.hide(); -_38.collapsed=true; -_38.onCollapse.call(_36); -} -}; -function _3c(_3d,_3e){ -var _3f=$.data(_3d,"panel").options; -var _40=$.data(_3d,"panel").panel; -var _41=_40.children("div.panel-body"); -var _42=_40.children("div.panel-header").find("a.panel-tool-collapse"); -if(_3f.collapsed==false){ -return; -} -_41.stop(true,true); -if(_3f.onBeforeExpand.call(_3d)==false){ -return; -} -_42.removeClass("panel-tool-expand"); -if(_3e==true){ -_41.slideDown("normal",function(){ -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -}); -}else{ -_41.show(); -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -} -}; -function _2b(_43){ -var _44=$.data(_43,"panel").options; -var _45=$.data(_43,"panel").panel; -var _46=_45.children("div.panel-header").find("a.panel-tool-max"); -if(_44.maximized==true){ -return; -} -_46.addClass("panel-tool-restore"); -if(!$.data(_43,"panel").original){ -$.data(_43,"panel").original={width:_44.width,height:_44.height,left:_44.left,top:_44.top,fit:_44.fit}; -} -_44.left=0; -_44.top=0; -_44.fit=true; -_3(_43); -_44.minimized=false; -_44.maximized=true; -_44.onMaximize.call(_43); -}; -function _47(_48){ -var _49=$.data(_48,"panel").options; -var _4a=$.data(_48,"panel").panel; -_4a._fit(false); -_4a.hide(); -_49.minimized=true; -_49.maximized=false; -_49.onMinimize.call(_48); -}; -function _4b(_4c){ -var _4d=$.data(_4c,"panel").options; -var _4e=$.data(_4c,"panel").panel; -var _4f=_4e.children("div.panel-header").find("a.panel-tool-max"); -if(_4d.maximized==false){ -return; -} -_4e.show(); -_4f.removeClass("panel-tool-restore"); -$.extend(_4d,$.data(_4c,"panel").original); -_3(_4c); -_4d.minimized=false; -_4d.maximized=false; -$.data(_4c,"panel").original=null; -_4d.onRestore.call(_4c); -}; -function _50(_51){ -var _52=$.data(_51,"panel").options; -var _53=$.data(_51,"panel").panel; -var _54=$(_51).panel("header"); -var _55=$(_51).panel("body"); -_53.css(_52.style); -_53.addClass(_52.cls); -if(_52.border){ -_54.removeClass("panel-header-noborder"); -_55.removeClass("panel-body-noborder"); -}else{ -_54.addClass("panel-header-noborder"); -_55.addClass("panel-body-noborder"); -} -_54.addClass(_52.headerCls); -_55.addClass(_52.bodyCls); -if(_52.id){ -$(_51).attr("id",_52.id); -}else{ -$(_51).attr("id",""); -} -}; -function _56(_57,_58){ -$.data(_57,"panel").options.title=_58; -$(_57).panel("header").find("div.panel-title").html(_58); -}; -var TO=false; -var _59=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_59){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_59=false; -var _5a=$("body.layout"); -if(_5a.length){ -_5a.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_59=true; -TO=false; -},200); -}); -$.fn.panel=function(_5b,_5c){ -if(typeof _5b=="string"){ -return $.fn.panel.methods[_5b](this,_5c); -} -_5b=_5b||{}; -return this.each(function(){ -var _5d=$.data(this,"panel"); -var _5e; -if(_5d){ -_5e=$.extend(_5d.options,_5b); -_5d.isLoaded=false; -}else{ -_5e=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_5b); -$(this).attr("title",""); -_5d=$.data(this,"panel",{options:_5e,panel:_f(this),isLoaded:false}); -} -_13(this); -_50(this); -if(_5e.doSize==true){ -_5d.panel.css("display","block"); -_3(this); -} -if(_5e.closed==true||_5e.minimized==true){ -_5d.panel.hide(); -}else{ -_25(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_5f){ -return jq.each(function(){ -_56(this,_5f); -}); -},open:function(jq,_60){ -return jq.each(function(){ -_25(this,_60); -}); -},close:function(jq,_61){ -return jq.each(function(){ -_19(this,_61); -}); -},destroy:function(jq,_62){ -return jq.each(function(){ -_31(this,_62); -}); -},refresh:function(jq,_63){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(_63){ -$.data(this,"panel").options.href=_63; -} -_1a(this); -}); -},resize:function(jq,_64){ -return jq.each(function(){ -_3(this,_64); -}); -},move:function(jq,_65){ -return jq.each(function(){ -_a(this,_65); -}); -},maximize:function(jq){ -return jq.each(function(){ -_2b(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_47(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_4b(this); -}); -},collapse:function(jq,_66){ -return jq.each(function(){ -_2c(this,_66); -}); -},expand:function(jq,_67){ -return jq.each(function(){ -_3c(this,_67); -}); -}}; -$.fn.panel.parseOptions=function(_68){ -var t=$(_68); -return $.extend({},$.parser.parseOptions(_68,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(_69){ -var _6a=/]*>((.|[\n\r])*)<\/body>/im; -var _6b=_6a.exec(_69); -if(_6b){ -return _6b[1]; -}else{ -return _69; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_6c,_6d){ -},onMove:function(_6e,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.parser.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.parser.js deleted file mode 100644 index 78f61ac..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.parser.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.parser={auto:true,onComplete:function(_1){ -},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","combobox","combotree","combogrid","numberbox","validatebox","searchbox","numberspinner","timespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","tabs","accordion","window","dialog"],parse:function(_2){ -var aa=[]; -for(var i=0;i<$.parser.plugins.length;i++){ -var _3=$.parser.plugins[i]; -var r=$(".easyui-"+_3,_2); -if(r.length){ -if(r[_3]){ -r[_3](); -}else{ -aa.push({name:_3,jq:r}); -} -} -} -if(aa.length&&window.easyloader){ -var _4=[]; -for(var i=0;i
                                                                                ").appendTo("body"); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.progressbar.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.progressbar.js deleted file mode 100644 index 0693d53..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.progressbar.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("progressbar"); -$(_2).html("
                                                                                "); -return $(_2); -}; -function _3(_4,_5){ -var _6=$.data(_4,"progressbar").options; -var _7=$.data(_4,"progressbar").bar; -if(_5){ -_6.width=_5; -} -_7._outerWidth(_6.width)._outerHeight(_6.height); -_7.find("div.progressbar-text").width(_7.width()); -_7.find("div.progressbar-text,div.progressbar-value").css({height:_7.height()+"px",lineHeight:_7.height()+"px"}); -}; -$.fn.progressbar=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.progressbar.methods[_8]; -if(_a){ -return _a(this,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"progressbar"); -if(_b){ -$.extend(_b.options,_8); -}else{ -_b=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_8),bar:_1(this)}); -} -$(this).progressbar("setValue",_b.options.value); -_3(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_c){ -return jq.each(function(){ -_3(this,_c); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_d){ -if(_d<0){ -_d=0; -} -if(_d>100){ -_d=100; -} -return jq.each(function(){ -var _e=$.data(this,"progressbar").options; -var _f=_e.text.replace(/{value}/,_d); -var _10=_e.value; -_e.value=_d; -$(this).find("div.progressbar-value").width(_d+"%"); -$(this).find("div.progressbar-text").html(_f); -if(_10!=_d){ -_e.onChange.call(this,_d,_10); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_11){ -return $.extend({},$.parser.parseOptions(_11,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_12,_13){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.propertygrid.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.propertygrid.js deleted file mode 100644 index 2df4863..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.propertygrid.js +++ /dev/null @@ -1,225 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -var _1; -function _2(_3){ -var _4=$.data(_3,"propertygrid"); -var _5=$.data(_3,"propertygrid").options; -$(_3).datagrid($.extend({},_5,{cls:"propertygrid",view:(_5.showGroup?_6:undefined),onClickRow:function(_7,_8){ -if(_1!=this){ -_c(_1); -_1=this; -} -if(_5.editIndex!=_7&&_8.editor){ -var _9=$(this).datagrid("getColumnOption","value"); -_9.editor=_8.editor; -_c(_1); -$(this).datagrid("beginEdit",_7); -$(this).datagrid("getEditors",_7)[0].target.focus(); -_5.editIndex=_7; -} -_5.onClickRow.call(_3,_7,_8); -},loadFilter:function(_a){ -_c(this); -return _5.loadFilter.call(this,_a); -},onLoadSuccess:function(_b){ -$(_3).datagrid("getPanel").find("div.datagrid-group").attr("style",""); -_5.onLoadSuccess.call(_3,_b); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_c(_1); -_1=undefined; -}); -}; -function _c(_d){ -var t=$(_d); -if(!t.length){ -return; -} -var _e=$.data(_d,"propertygrid").options; -var _f=_e.editIndex; -if(_f==undefined){ -return; -} -var ed=t.datagrid("getEditors",_f)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_f)){ -t.datagrid("endEdit",_f); -}else{ -t.datagrid("cancelEdit",_f); -} -} -_e.editIndex=undefined; -}; -$.fn.propertygrid=function(_10,_11){ -if(typeof _10=="string"){ -var _12=$.fn.propertygrid.methods[_10]; -if(_12){ -return _12(this,_11); -}else{ -return this.datagrid(_10,_11); -} -} -_10=_10||{}; -return this.each(function(){ -var _13=$.data(this,"propertygrid"); -if(_13){ -$.extend(_13.options,_10); -}else{ -var _14=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_10); -_14.frozenColumns=$.extend(true,[],_14.frozenColumns); -_14.columns=$.extend(true,[],_14.columns); -$.data(this,"propertygrid",{options:_14}); -} -_2(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_15){ -var t=$(_15); -return $.extend({},$.fn.datagrid.parseOptions(_15),$.parser.parseOptions(_15,[{showGroup:"boolean"}])); -}; -var _6=$.extend({},$.fn.datagrid.defaults.view,{render:function(_16,_17,_18){ -var _19=$.data(_16,"datagrid"); -var _1a=_19.options; -var _1b=_19.data.rows; -var _1c=$(_16).datagrid("getColumnFields",_18); -var _1d=[]; -var _1e=0; -var _1f=this.groups; -for(var i=0;i<_1f.length;i++){ -var _20=_1f[i]; -_1d.push("
                                                                                "); -_1d.push(""); -_1d.push(""); -_1d.push(""); -_1d.push(""); -_1d.push("
                                                                                "); -if(!_18){ -_1d.push(""); -_1d.push(_1a.groupFormatter.call(_16,_20.fvalue,_20.rows)); -_1d.push(""); -} -_1d.push("
                                                                                "); -_1d.push("
                                                                                "); -_1d.push(""); -for(var j=0;j<_20.rows.length;j++){ -var cls=(_1e%2&&_1a.striped)?"class=\"datagrid-row datagrid-row-alt\"":"class=\"datagrid-row\""; -var _21=_1a.rowStyler?_1a.rowStyler.call(_16,_1e,_20.rows[j]):""; -var _22=_21?"style=\""+_21+"\"":""; -var _23=_19.rowIdPrefix+"-"+(_18?1:2)+"-"+_1e; -_1d.push(""); -_1d.push(this.renderRow.call(this,_16,_1c,_18,_1e,_20.rows[j])); -_1d.push(""); -_1e++; -} -_1d.push("
                                                                                "); -} -$(_17).html(_1d.join("")); -},onAfterRender:function(_24){ -var _25=$.data(_24,"datagrid").options; -var dc=$.data(_24,"datagrid").dc; -var _26=dc.view; -var _27=dc.view1; -var _28=dc.view2; -$.fn.datagrid.defaults.view.onAfterRender.call(this,_24); -if(_25.rownumbers||_25.frozenColumns.length){ -var _29=_27.find("div.datagrid-group"); -}else{ -var _29=_28.find("div.datagrid-group"); -} -$(" ").insertBefore(_29.find("td")); -_26.find("div.datagrid-group").each(function(){ -var _2a=$(this).attr("group-index"); -$(this).find("span.datagrid-row-expander").bind("click",{groupIndex:_2a},function(e){ -if($(this).hasClass("datagrid-row-collapse")){ -$(_24).datagrid("collapseGroup",e.data.groupIndex); -}else{ -$(_24).datagrid("expandGroup",e.data.groupIndex); -} -}); -}); -},onBeforeRender:function(_2b,_2c){ -var _2d=$.data(_2b,"datagrid").options; -var _2e=[]; -for(var i=0;i<_2c.length;i++){ -var row=_2c[i]; -var _2f=_30(row[_2d.groupField]); -if(!_2f){ -_2f={fvalue:row[_2d.groupField],rows:[row],startRow:i}; -_2e.push(_2f); -}else{ -_2f.rows.push(row); -} -} -function _30(_31){ -for(var i=0;i<_2e.length;i++){ -var _32=_2e[i]; -if(_32.fvalue==_31){ -return _32; -} -} -return null; -}; -this.groups=_2e; -var _33=[]; -for(var i=0;i<_2e.length;i++){ -var _2f=_2e[i]; -for(var j=0;j<_2f.rows.length;j++){ -_33.push(_2f.rows[j]); -} -} -$.data(_2b,"datagrid").data.rows=_33; -}}); -$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_34){ -return jq.each(function(){ -var _35=$.data(this,"datagrid").dc.view; -if(_34!=undefined){ -var _36=_35.find("div.datagrid-group[group-index=\""+_34+"\"]"); -}else{ -var _36=_35.find("div.datagrid-group"); -} -var _37=_36.find("span.datagrid-row-expander"); -if(_37.hasClass("datagrid-row-expand")){ -_37.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); -_36.next("table").show(); -} -$(this).datagrid("fixRowHeight"); -}); -},collapseGroup:function(jq,_38){ -return jq.each(function(){ -var _39=$.data(this,"datagrid").dc.view; -if(_38!=undefined){ -var _3a=_39.find("div.datagrid-group[group-index=\""+_38+"\"]"); -}else{ -var _3a=_39.find("div.datagrid-group"); -} -var _3b=_3a.find("span.datagrid-row-expander"); -if(_3b.hasClass("datagrid-row-collapse")){ -_3b.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); -_3a.next("table").hide(); -} -$(this).datagrid("fixRowHeight"); -}); -}}); -$.fn.propertygrid.defaults=$.extend({},$.fn.datagrid.defaults,{singleSelect:true,remoteSort:false,fitColumns:true,loadMsg:"",frozenColumns:[[{field:"f",width:16,resizable:false}]],columns:[[{field:"name",title:"Name",width:100,sortable:true},{field:"value",title:"Value",width:100,resizable:false}]],showGroup:false,groupField:"group",groupFormatter:function(_3c,_3d){ -return _3c; -}}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.resizable.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.resizable.js deleted file mode 100644 index e5b820d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.resizable.js +++ /dev/null @@ -1,172 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn.resizable=function(_1,_2){ -if(typeof _1=="string"){ -return $.fn.resizable.methods[_1](this,_2); -} -function _3(e){ -var _4=e.data; -var _5=$.data(_4.target,"resizable").options; -if(_4.dir.indexOf("e")!=-1){ -var _6=_4.startWidth+e.pageX-_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -} -if(_4.dir.indexOf("s")!=-1){ -var _7=_4.startHeight+e.pageY-_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -} -if(_4.dir.indexOf("w")!=-1){ -var _6=_4.startWidth-e.pageX+_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -_4.left=_4.startLeft+_4.startWidth-_4.width; -} -if(_4.dir.indexOf("n")!=-1){ -var _7=_4.startHeight-e.pageY+_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -_4.top=_4.startTop+_4.startHeight-_4.height; -} -}; -function _8(e){ -var _9=e.data; -var t=$(_9.target); -t.css({left:_9.left,top:_9.top}); -if(t.outerWidth()!=_9.width){ -t._outerWidth(_9.width); -} -if(t.outerHeight()!=_9.height){ -t._outerHeight(_9.height); -} -}; -function _a(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _b(e){ -_3(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_8(e); -} -return false; -}; -function _c(e){ -$.fn.resizable.isResizing=false; -_3(e,true); -_8(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _d=null; -var _e=$.data(this,"resizable"); -if(_e){ -$(this).unbind(".resizable"); -_d=$.extend(_e.options,_1||{}); -}else{ -_d=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_1||{}); -$.data(this,"resizable",{options:_d}); -} -if(_d.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var _f=_10(e); -if(_f==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",_f+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_10(e); -if(dir==""){ -return; -} -function _11(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _12={target:e.data.target,dir:dir,startLeft:_11("left"),startTop:_11("top"),left:_11("left"),top:_11("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_12,_a); -$(document).bind("mousemove.resizable",_12,_b); -$(document).bind("mouseup.resizable",_12,_c); -$("body").css("cursor",dir+"-resize"); -}); -function _10(e){ -var tt=$(e.data.target); -var dir=""; -var _13=tt.offset(); -var _14=tt.outerWidth(); -var _15=tt.outerHeight(); -var _16=_d.edge; -if(e.pageY>_13.top&&e.pageY<_13.top+_16){ -dir+="n"; -}else{ -if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){ -dir+="s"; -} -} -if(e.pageX>_13.left&&e.pageX<_13.left+_16){ -dir+="w"; -}else{ -if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){ -dir+="e"; -} -} -var _17=_d.handles.split(","); -for(var i=0;i<_17.length;i++){ -var _18=_17[i].replace(/(^\s*)|(\s*$)/g,""); -if(_18=="all"||_18==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_19){ -var t=$(_19); -return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.searchbox.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.searchbox.js deleted file mode 100644 index d2d6091..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.searchbox.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).hide(); -var _3=$("").insertAfter(_2); -var _4=$("").appendTo(_3); -$("").appendTo(_3); -var _5=$(_2).attr("name"); -if(_5){ -_4.attr("name",_5); -$(_2).removeAttr("name").attr("searchboxName",_5); -} -return _3; -}; -function _6(_7,_8){ -var _9=$.data(_7,"searchbox").options; -var sb=$.data(_7,"searchbox").searchbox; -if(_8){ -_9.width=_8; -} -sb.appendTo("body"); -if(isNaN(_9.width)){ -_9.width=sb._outerWidth(); -} -var _a=sb.find("span.searchbox-button"); -var _b=sb.find("a.searchbox-menu"); -var _c=sb.find("input.searchbox-text"); -sb._outerWidth(_9.width)._outerHeight(_9.height); -_c._outerWidth(sb.width()-_b._outerWidth()-_a._outerWidth()); -_c.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -_b._outerHeight(sb.height()); -_a._outerHeight(sb.height()); -var _d=_b.find("span.l-btn-left"); -_d._outerHeight(sb.height()); -_d.find("span.l-btn-text,span.m-btn-downarrow").css({height:_d.height()+"px",lineHeight:_d.height()+"px"}); -sb.insertAfter(_7); -}; -function _e(_f){ -var _10=$.data(_f,"searchbox"); -var _11=_10.options; -if(_11.menu){ -_10.menu=$(_11.menu).menu({onClick:function(_12){ -_13(_12); -}}); -var _14=_10.menu.children("div.menu-item:first"); -_10.menu.children("div.menu-item").each(function(){ -var _15=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_15.selected){ -_14=$(this); -return false; -} -}); -_14.triggerHandler("click"); -}else{ -_10.searchbox.find("a.searchbox-menu").remove(); -_10.menu=null; -} -function _13(_16){ -_10.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(_16.text); -mb.prependTo(_10.searchbox).menubutton({menu:_10.menu,iconCls:_16.iconCls}); -_10.searchbox.find("input.searchbox-text").attr("name",$(_16.target).attr("name")||_16.text); -_6(_f); -}; -}; -function _17(_18){ -var _19=$.data(_18,"searchbox"); -var _1a=_19.options; -var _1b=_19.searchbox.find("input.searchbox-text"); -var _1c=_19.searchbox.find(".searchbox-button"); -_1b.unbind(".searchbox").bind("blur.searchbox",function(e){ -_1a.value=$(this).val(); -if(_1a.value==""){ -$(this).val(_1a.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=_1a.value){ -$(this).val(_1a.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -var _1d=$.fn.prop?_1b.prop("name"):_1b.attr("name"); -_1a.value=$(this).val(); -_1a.searcher.call(_18,_1a.value,_1d); -return false; -} -}); -_1c.unbind(".searchbox").bind("click.searchbox",function(){ -var _1e=$.fn.prop?_1b.prop("name"):_1b.attr("name"); -_1a.searcher.call(_18,_1a.value,_1e); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _1f(_20){ -var _21=$.data(_20,"searchbox"); -var _22=_21.options; -var _23=_21.searchbox.find("input.searchbox-text"); -if(_22.value==""){ -_23.val(_22.prompt); -_23.addClass("searchbox-prompt"); -}else{ -_23.val(_22.value); -_23.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_24,_25){ -if(typeof _24=="string"){ -return $.fn.searchbox.methods[_24](this,_25); -} -_24=_24||{}; -return this.each(function(){ -var _26=$.data(this,"searchbox"); -if(_26){ -$.extend(_26.options,_24); -}else{ -_26=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_24),searchbox:_1(this)}); -} -_e(this); -_1f(this); -_17(this); -_6(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_27){ -return jq.each(function(){ -$(this).searchbox("options").value=_27; -$(this).searchbox("textbox").val(_27); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,_28){ -return jq.each(function(){ -var _29=$.data(this,"searchbox").menu; -if(_29){ -_29.children("div.menu-item[name=\""+_28+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var _2a=$(this).searchbox("menu"); -if(_2a){ -_2a.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_2b){ -return jq.each(function(){ -_6(this,_2b); -}); -}}; -$.fn.searchbox.parseOptions=function(_2c){ -var t=$(_2c); -return $.extend({},$.parser.parseOptions(_2c,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_2d,_2e){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.slider.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.slider.js deleted file mode 100644 index 1f7941a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.slider.js +++ /dev/null @@ -1,267 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$("
                                                                                "+"
                                                                                "+""+""+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+""+"
                                                                                ").insertAfter(_2); -var _4=$(_2).hide().attr("name"); -if(_4){ -_3.find("input.slider-value").attr("name",_4); -$(_2).removeAttr("name").attr("sliderName",_4); -} -return _3; -}; -function _5(_6,_7){ -var _8=$.data(_6,"slider"); -var _9=_8.options; -var _a=_8.slider; -if(_7){ -if(_7.width){ -_9.width=_7.width; -} -if(_7.height){ -_9.height=_7.height; -} -} -if(_9.mode=="h"){ -_a.css("height",""); -_a.children("div").css("height",""); -if(!isNaN(_9.width)){ -_a.width(_9.width); -} -}else{ -_a.css("width",""); -_a.children("div").css("width",""); -if(!isNaN(_9.height)){ -_a.height(_9.height); -_a.find("div.slider-rule").height(_9.height); -_a.find("div.slider-rulelabel").height(_9.height); -_a.find("div.slider-inner")._outerHeight(_9.height); -} -} -_b(_6); -}; -function _c(_d){ -var _e=$.data(_d,"slider"); -var _f=_e.options; -var _10=_e.slider; -var aa=_f.mode=="h"?_f.rule:_f.rule.slice(0).reverse(); -if(_f.reversed){ -aa=aa.slice(0).reverse(); -} -_11(aa); -function _11(aa){ -var _12=_10.find("div.slider-rule"); -var _13=_10.find("div.slider-rulelabel"); -_12.empty(); -_13.empty(); -for(var i=0;i").appendTo(_12); -_15.css((_f.mode=="h"?"left":"top"),_14); -if(aa[i]!="|"){ -_15=$("").appendTo(_13); -_15.html(aa[i]); -if(_f.mode=="h"){ -_15.css({left:_14,marginLeft:-Math.round(_15.outerWidth()/2)}); -}else{ -_15.css({top:_14,marginTop:-Math.round(_15.outerHeight()/2)}); -} -} -} -}; -}; -function _16(_17){ -var _18=$.data(_17,"slider"); -var _19=_18.options; -var _1a=_18.slider; -_1a.removeClass("slider-h slider-v slider-disabled"); -_1a.addClass(_19.mode=="h"?"slider-h":"slider-v"); -_1a.addClass(_19.disabled?"slider-disabled":""); -_1a.find("a.slider-handle").draggable({axis:_19.mode,cursor:"pointer",disabled:_19.disabled,onDrag:function(e){ -var _1b=e.data.left; -var _1c=_1a.width(); -if(_19.mode!="h"){ -_1b=e.data.top; -_1c=_1a.height(); -} -if(_1b<0||_1b>_1c){ -return false; -}else{ -var _1d=_32(_17,_1b); -_1e(_1d); -return false; -} -},onBeforeDrag:function(){ -_18.isDragging=true; -},onStartDrag:function(){ -_19.onSlideStart.call(_17,_19.value); -},onStopDrag:function(e){ -var _1f=_32(_17,(_19.mode=="h"?e.data.left:e.data.top)); -_1e(_1f); -_19.onSlideEnd.call(_17,_19.value); -_19.onComplete.call(_17,_19.value); -_18.isDragging=false; -}}); -_1a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_18.isDragging){ -return; -} -var pos=$(this).offset(); -var _20=_32(_17,(_19.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_1e(_20); -_19.onComplete.call(_17,_19.value); -}); -function _1e(_21){ -var s=Math.abs(_21%_19.step); -if(s<_19.step/2){ -_21-=s; -}else{ -_21=_21-s+_19.step; -} -_22(_17,_21); -}; -}; -function _22(_23,_24){ -var _25=$.data(_23,"slider"); -var _26=_25.options; -var _27=_25.slider; -var _28=_26.value; -if(_24<_26.min){ -_24=_26.min; -} -if(_24>_26.max){ -_24=_26.max; -} -_26.value=_24; -$(_23).val(_24); -_27.find("input.slider-value").val(_24); -var pos=_29(_23,_24); -var tip=_27.find(".slider-tip"); -if(_26.showTip){ -tip.show(); -tip.html(_26.tipFormatter.call(_23,_26.value)); -}else{ -tip.hide(); -} -if(_26.mode=="h"){ -var _2a="left:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _2a="top:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_28!=_24){ -_26.onChange.call(_23,_24,_28); -} -}; -function _b(_2b){ -var _2c=$.data(_2b,"slider").options; -var fn=_2c.onChange; -_2c.onChange=function(){ -}; -_22(_2b,_2c.value); -_2c.onChange=fn; -}; -function _29(_2d,_2e){ -var _2f=$.data(_2d,"slider"); -var _30=_2f.options; -var _31=_2f.slider; -if(_30.mode=="h"){ -var pos=(_2e-_30.min)/(_30.max-_30.min)*_31.width(); -if(_30.reversed){ -pos=_31.width()-pos; -} -}else{ -var pos=_31.height()-(_2e-_30.min)/(_30.max-_30.min)*_31.height(); -if(_30.reversed){ -pos=_31.height()-pos; -} -} -return pos.toFixed(0); -}; -function _32(_33,pos){ -var _34=$.data(_33,"slider"); -var _35=_34.options; -var _36=_34.slider; -if(_35.mode=="h"){ -var _37=_35.min+(_35.max-_35.min)*(pos/_36.width()); -}else{ -var _37=_35.min+(_35.max-_35.min)*((_36.height()-pos)/_36.height()); -} -return _35.reversed?_35.max-_37.toFixed(0):_37.toFixed(0); -}; -$.fn.slider=function(_38,_39){ -if(typeof _38=="string"){ -return $.fn.slider.methods[_38](this,_39); -} -_38=_38||{}; -return this.each(function(){ -var _3a=$.data(this,"slider"); -if(_3a){ -$.extend(_3a.options,_38); -}else{ -_3a=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_38),slider:_1(this)}); -$(this).removeAttr("disabled"); -} -var _3b=_3a.options; -_3b.min=parseFloat(_3b.min); -_3b.max=parseFloat(_3b.max); -_3b.value=parseFloat(_3b.value); -_3b.step=parseFloat(_3b.step); -_16(this); -_c(this); -_5(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_3c){ -return jq.each(function(){ -_5(this,_3c); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_3d){ -return jq.each(function(){ -_22(this,_3d); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_16(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_16(this); -}); -}}; -$.fn.slider.parseOptions=function(_3e){ -var t=$(_3e); -return $.extend({},$.parser.parseOptions(_3e,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_3f){ -return _3f; -},onChange:function(_40,_41){ -},onSlideStart:function(_42){ -},onSlideEnd:function(_43){ -},onComplete:function(_44){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.spinner.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.spinner.js deleted file mode 100644 index 3885be3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.spinner.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(""+""+""+""+""+"").insertAfter(_2); -$(_2).addClass("spinner-text spinner-f").prependTo(_3); -return _3; -}; -function _4(_5,_6){ -var _7=$.data(_5,"spinner").options; -var _8=$.data(_5,"spinner").spinner; -if(_6){ -_7.width=_6; -} -var _9=$("
                                                                                ").insertBefore(_8); -_8.appendTo("body"); -if(isNaN(_7.width)){ -_7.width=$(_5).outerWidth(); -} -var _a=_8.find(".spinner-arrow"); -_8._outerWidth(_7.width)._outerHeight(_7.height); -$(_5)._outerWidth(_8.width()-_a.outerWidth()); -$(_5).css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); -_a._outerHeight(_8.height()); -_a.find("span")._outerHeight(_a.height()/2); -_8.insertAfter(_9); -_9.remove(); -}; -function _b(_c){ -var _d=$.data(_c,"spinner").options; -var _e=$.data(_c,"spinner").spinner; -_e.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!_d.disabled){ -_e.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,false); -_d.onSpinUp.call(_c); -$(_c).validatebox("validate"); -}); -_e.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,true); -_d.onSpinDown.call(_c); -$(_c).validatebox("validate"); -}); -} -}; -function _f(_10,_11){ -var _12=$.data(_10,"spinner").options; -if(_11){ -_12.disabled=true; -$(_10).attr("disabled",true); -}else{ -_12.disabled=false; -$(_10).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_13,_14){ -if(typeof _13=="string"){ -var _15=$.fn.spinner.methods[_13]; -if(_15){ -return _15(this,_14); -}else{ -return this.validatebox(_13,_14); -} -} -_13=_13||{}; -return this.each(function(){ -var _16=$.data(this,"spinner"); -if(_16){ -$.extend(_16.options,_13); -}else{ -_16=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_13),spinner:_1(this)}); -$(this).removeAttr("disabled"); -} -_16.options.originalValue=_16.options.value; -$(this).val(_16.options.value); -$(this).attr("readonly",!_16.options.editable); -_f(this,_16.options.disabled); -_4(this); -$(this).validatebox(_16.options); -_b(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var _17=$.data(jq[0],"spinner").options; -return $.extend(_17,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _18=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_18.remove(); -}); -},resize:function(jq,_19){ -return jq.each(function(){ -_4(this,_19); -}); -},enable:function(jq){ -return jq.each(function(){ -_f(this,false); -_b(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_f(this,true); -_b(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_1a){ -return jq.each(function(){ -var _1b=$.data(this,"spinner").options; -_1b.value=_1a; -$(this).val(_1a); -}); -},clear:function(jq){ -return jq.each(function(){ -var _1c=$.data(this,"spinner").options; -_1c.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1d=$(this).spinner("options"); -$(this).spinner("setValue",_1d.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_1e){ -var t=$(_1e); -return $.extend({},$.fn.validatebox.parseOptions(_1e),$.parser.parseOptions(_1e,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(_1f){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.splitbutton.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.splitbutton.js deleted file mode 100644 index f668698..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.splitbutton.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"splitbutton").options; -$(_2).menubutton(_3); -}; -$.fn.splitbutton=function(_4,_5){ -if(typeof _4=="string"){ -var _6=$.fn.splitbutton.methods[_4]; -if(_6){ -return _6(this,_5); -}else{ -return this.menubutton(_4,_5); -} -} -_4=_4||{}; -return this.each(function(){ -var _7=$.data(this,"splitbutton"); -if(_7){ -$.extend(_7.options,_4); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _8=jq.menubutton("options"); -var _9=$.data(jq[0],"splitbutton").options; -$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); -return _9; -}}; -$.fn.splitbutton.parseOptions=function(_a){ -var t=$(_a); -return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.tabs.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.tabs.js deleted file mode 100644 index a0c1ca3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.tabs.js +++ /dev/null @@ -1,550 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"tabs").options; -if(_3.tabPosition=="left"||_3.tabPosition=="right"){ -return; -} -var _4=$(_2).children("div.tabs-header"); -var _5=_4.children("div.tabs-tool"); -var _6=_4.children("div.tabs-scroller-left"); -var _7=_4.children("div.tabs-scroller-right"); -var _8=_4.children("div.tabs-wrap"); -var _9=_4.outerHeight(); -if(_3.plain){ -_9-=_9-_4.height(); -} -_5._outerHeight(_9); -var _a=0; -$("ul.tabs li",_4).each(function(){ -_a+=$(this).outerWidth(true); -}); -var _b=_4.width()-_5._outerWidth(); -if(_a>_b){ -_6.add(_7).show()._outerHeight(_9); -if(_3.toolPosition=="left"){ -_5.css({left:_6.outerWidth(),right:""}); -_8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -}else{ -_5.css({left:"",right:_7.outerWidth()}); -_8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -} -}else{ -_6.add(_7).hide(); -if(_3.toolPosition=="left"){ -_5.css({left:0,right:""}); -_8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b}); -}else{ -_5.css({left:"",right:0}); -_8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b}); -} -} -}; -function _c(_d){ -var _e=$.data(_d,"tabs").options; -var _f=$(_d).children("div.tabs-header"); -if(_e.tools){ -if(typeof _e.tools=="string"){ -$(_e.tools).addClass("tabs-tool").appendTo(_f); -$(_e.tools).show(); -}else{ -_f.children("div.tabs-tool").remove(); -var _10=$("
                                                                                ").appendTo(_f); -var tr=_10.find("tr"); -for(var i=0;i<_e.tools.length;i++){ -var td=$("").appendTo(tr); -var _11=$("").appendTo(td); -_11[0].onclick=eval(_e.tools[i].handler||function(){ -}); -_11.linkbutton($.extend({},_e.tools[i],{plain:true})); -} -} -}else{ -_f.children("div.tabs-tool").remove(); -} -}; -function _12(_13){ -var _14=$.data(_13,"tabs"); -var _15=_14.options; -var cc=$(_13); -_15.fit?$.extend(_15,cc._fit()):cc._fit(false); -cc.width(_15.width).height(_15.height); -var _16=$(_13).children("div.tabs-header"); -var _17=$(_13).children("div.tabs-panels"); -var _18=_16.find("div.tabs-wrap"); -var ul=_18.find(".tabs"); -for(var i=0;i<_14.tabs.length;i++){ -var _19=_14.tabs[i].panel("options"); -var p_t=_19.tab.find("a.tabs-inner"); -var _1a=parseInt(_19.tabWidth||_15.tabWidth)||undefined; -if(_1a){ -p_t._outerWidth(_1a); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(_15.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(_15.tabPosition=="left"||_15.tabPosition=="right"){ -_16._outerWidth(_15.headerWidth); -_17._outerWidth(cc.width()-_15.headerWidth); -_16.add(_17)._outerHeight(_15.height); -_18._outerWidth(_16.width()); -ul._outerWidth(_18.width()).css("height",""); -}else{ -_16._outerWidth(_15.width).css("height",""); -ul._outerHeight(_15.tabHeight).css("width",""); -_1(_13); -var _1b=_15.height; -if(!isNaN(_1b)){ -_17._outerHeight(_1b-_16.outerHeight()); -}else{ -_17.height("auto"); -} -var _1a=_15.width; -if(!isNaN(_1a)){ -_17._outerWidth(_1a); -}else{ -_17.width("auto"); -} -} -}; -function _1c(_1d){ -var _1e=$.data(_1d,"tabs").options; -var tab=_1f(_1d); -if(tab){ -var _20=$(_1d).children("div.tabs-panels"); -var _21=_1e.width=="auto"?"auto":_20.width(); -var _22=_1e.height=="auto"?"auto":_20.height(); -tab.panel("resize",{width:_21,height:_22}); -} -}; -function _23(_24){ -var _25=$.data(_24,"tabs").tabs; -var cc=$(_24); -cc.addClass("tabs-container"); -var pp=$("
                                                                                ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                "+"
                                                                                  "+"
                                                                                  "+"
                                                                                  ").prependTo(_24); -cc.children("div.tabs-panels").children("div").each(function(i){ -var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_25.push(pp); -_33(_24,pp,_26); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_27){ -var _28=$.data(_24,"tabs").options; -if(_28.fit==true||_27){ -_12(_24); -_1c(_24); -} -return false; -}); -}; -function _29(_2a){ -var _2b=$.data(_2a,"tabs").options; -$(_2a).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2a).tabs("scrollBy",-_2b.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2a).tabs("scrollBy",_2b.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_49(_2a,_2c(li)); -}else{ -if(li.length){ -_3e(_2a,_2c(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -_2b.onContextMenu.call(_2a,e,li.find("span.tabs-title").html(),_2c(li)); -} -}); -function _2c(li){ -var _2d=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2d=i; -return false; -} -}); -return _2d; -}; -}; -function _2e(_2f){ -var _30=$.data(_2f,"tabs").options; -var _31=$(_2f).children("div.tabs-header"); -var _32=$(_2f).children("div.tabs-panels"); -_31.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_32.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(_30.tabPosition=="top"){ -_31.insertBefore(_32); -}else{ -if(_30.tabPosition=="bottom"){ -_31.insertAfter(_32); -_31.addClass("tabs-header-bottom"); -_32.addClass("tabs-panels-top"); -}else{ -if(_30.tabPosition=="left"){ -_31.addClass("tabs-header-left"); -_32.addClass("tabs-panels-right"); -}else{ -if(_30.tabPosition=="right"){ -_31.addClass("tabs-header-right"); -_32.addClass("tabs-panels-left"); -} -} -} -} -if(_30.plain==true){ -_31.addClass("tabs-header-plain"); -}else{ -_31.removeClass("tabs-header-plain"); -} -if(_30.border==true){ -_31.removeClass("tabs-header-noborder"); -_32.removeClass("tabs-panels-noborder"); -}else{ -_31.addClass("tabs-header-noborder"); -_32.addClass("tabs-panels-noborder"); -} -}; -function _33(_34,pp,_35){ -var _36=$.data(_34,"tabs"); -_35=_35||{}; -pp.panel($.extend({},_35,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_35.icon?_35.icon:undefined),onLoad:function(){ -if(_35.onLoad){ -_35.onLoad.call(this,arguments); -} -_36.options.onLoad.call(_34,$(this)); -}})); -var _37=pp.panel("options"); -var _38=$(_34).children("div.tabs-header").find("ul.tabs"); -_37.tab=$("
                                                                                • ").appendTo(_38); -_37.tab.append(""+""+""+""); -$(_34).tabs("update",{tab:pp,options:_37}); -}; -function _39(_3a,_3b){ -var _3c=$.data(_3a,"tabs").options; -var _3d=$.data(_3a,"tabs").tabs; -if(_3b.selected==undefined){ -_3b.selected=true; -} -var pp=$("
                                                                                  ").appendTo($(_3a).children("div.tabs-panels")); -_3d.push(pp); -_33(_3a,pp,_3b); -_3c.onAdd.call(_3a,_3b.title,_3d.length-1); -_12(_3a); -if(_3b.selected){ -_3e(_3a,_3d.length-1); -} -}; -function _3f(_40,_41){ -var _42=$.data(_40,"tabs").selectHis; -var pp=_41.tab; -var _43=pp.panel("options").title; -pp.panel($.extend({},_41.options,{iconCls:(_41.options.icon?_41.options.icon:undefined)})); -var _44=pp.panel("options"); -var tab=_44.tab; -var _45=tab.find("span.tabs-title"); -var _46=tab.find("span.tabs-icon"); -_45.html(_44.title); -_46.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(_44.closable){ -_45.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_45.removeClass("tabs-closable"); -} -if(_44.iconCls){ -_45.addClass("tabs-with-icon"); -_46.addClass(_44.iconCls); -}else{ -_45.removeClass("tabs-with-icon"); -} -if(_43!=_44.title){ -for(var i=0;i<_42.length;i++){ -if(_42[i]==_43){ -_42[i]=_44.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(_44.tools){ -var _47=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(_44.tools)){ -for(var i=0;i<_44.tools.length;i++){ -var t=$("").appendTo(_47); -t.addClass(_44.tools[i].iconCls); -if(_44.tools[i].handler){ -t.bind("click",{handler:_44.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(_44.tools).children().appendTo(_47); -} -var pr=_47.children().length*12; -if(_44.closable){ -pr+=8; -}else{ -pr-=3; -_47.css("right","5px"); -} -_45.css("padding-right",pr+"px"); -} -_12(_40); -$.data(_40,"tabs").options.onUpdate.call(_40,_44.title,_48(_40,pp)); -}; -function _49(_4a,_4b){ -var _4c=$.data(_4a,"tabs").options; -var _4d=$.data(_4a,"tabs").tabs; -var _4e=$.data(_4a,"tabs").selectHis; -if(!_4f(_4a,_4b)){ -return; -} -var tab=_50(_4a,_4b); -var _51=tab.panel("options").title; -var _52=_48(_4a,tab); -if(_4c.onBeforeClose.call(_4a,_51,_52)==false){ -return; -} -var tab=_50(_4a,_4b,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -_4c.onClose.call(_4a,_51,_52); -_12(_4a); -for(var i=0;i<_4e.length;i++){ -if(_4e[i]==_51){ -_4e.splice(i,1); -i--; -} -} -var _53=_4e.pop(); -if(_53){ -_3e(_4a,_53); -}else{ -if(_4d.length){ -_3e(_4a,0); -} -} -}; -function _50(_54,_55,_56){ -var _57=$.data(_54,"tabs").tabs; -if(typeof _55=="number"){ -if(_55<0||_55>=_57.length){ -return null; -}else{ -var tab=_57[_55]; -if(_56){ -_57.splice(_55,1); -} -return tab; -} -} -for(var i=0;i<_57.length;i++){ -var tab=_57[i]; -if(tab.panel("options").title==_55){ -if(_56){ -_57.splice(i,1); -} -return tab; -} -} -return null; -}; -function _48(_58,tab){ -var _59=$.data(_58,"tabs").tabs; -for(var i=0;i<_59.length;i++){ -if(_59[i][0]==$(tab)[0]){ -return i; -} -} -return -1; -}; -function _1f(_5a){ -var _5b=$.data(_5a,"tabs").tabs; -for(var i=0;i<_5b.length;i++){ -var tab=_5b[i]; -if(tab.panel("options").closed==false){ -return tab; -} -} -return null; -}; -function _5c(_5d){ -var _5e=$.data(_5d,"tabs").tabs; -for(var i=0;i<_5e.length;i++){ -if(_5e[i].panel("options").selected){ -_3e(_5d,i); -return; -} -} -if(_5e.length){ -_3e(_5d,0); -} -}; -function _3e(_5f,_60){ -var _61=$.data(_5f,"tabs").options; -var _62=$.data(_5f,"tabs").tabs; -var _63=$.data(_5f,"tabs").selectHis; -if(_62.length==0){ -return; -} -var _64=_50(_5f,_60); -if(!_64){ -return; -} -var _65=_1f(_5f); -if(_65){ -_65.panel("close"); -_65.panel("options").tab.removeClass("tabs-selected"); -} -_64.panel("open"); -var _66=_64.panel("options").title; -_63.push(_66); -var tab=_64.panel("options").tab; -tab.addClass("tabs-selected"); -var _67=$(_5f).find(">div.tabs-header>div.tabs-wrap"); -var _68=tab.position().left; -var _69=_68+tab.outerWidth(); -if(_68<0||_69>_67.width()){ -var _6a=_68-(_67.width()-tab.width())/2; -$(_5f).tabs("scrollBy",_6a); -}else{ -$(_5f).tabs("scrollBy",0); -} -_1c(_5f); -_61.onSelect.call(_5f,_66,_48(_5f,_64)); -}; -function _4f(_6b,_6c){ -return _50(_6b,_6c)!=null; -}; -$.fn.tabs=function(_6d,_6e){ -if(typeof _6d=="string"){ -return $.fn.tabs.methods[_6d](this,_6e); -} -_6d=_6d||{}; -return this.each(function(){ -var _6f=$.data(this,"tabs"); -var _70; -if(_6f){ -_70=$.extend(_6f.options,_6d); -_6f.options=_70; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_6d),tabs:[],selectHis:[]}); -_23(this); -} -_c(this); -_2e(this); -_12(this); -_29(this); -_5c(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_12(this); -_1c(this); -}); -},add:function(jq,_71){ -return jq.each(function(){ -_39(this,_71); -}); -},close:function(jq,_72){ -return jq.each(function(){ -_49(this,_72); -}); -},getTab:function(jq,_73){ -return _50(jq[0],_73); -},getTabIndex:function(jq,tab){ -return _48(jq[0],tab); -},getSelected:function(jq){ -return _1f(jq[0]); -},select:function(jq,_74){ -return jq.each(function(){ -_3e(this,_74); -}); -},exists:function(jq,_75){ -return _4f(jq[0],_75); -},update:function(jq,_76){ -return jq.each(function(){ -_3f(this,_76); -}); -},enableTab:function(jq,_77){ -return jq.each(function(){ -$(this).tabs("getTab",_77).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_78){ -return jq.each(function(){ -$(this).tabs("getTab",_78).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_79){ -return jq.each(function(){ -var _7a=$(this).tabs("options"); -var _7b=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(_7b._scrollLeft()+_79,_7c()); -_7b.animate({scrollLeft:pos},_7a.scrollDuration); -function _7c(){ -var w=0; -var ul=_7b.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-_7b.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_7d){ -return $.extend({},$.parser.parseOptions(_7d,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_7e){ -},onSelect:function(_7f,_80){ -},onBeforeClose:function(_81,_82){ -},onClose:function(_83,_84){ -},onAdd:function(_85,_86){ -},onUpdate:function(_87,_88){ -},onContextMenu:function(e,_89,_8a){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.timespinner.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.timespinner.js deleted file mode 100644 index f78a389..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.timespinner.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"timespinner").options; -$(_2).addClass("timespinner-f"); -$(_2).spinner(_3); -$(_2).unbind(".timespinner"); -$(_2).bind("click.timespinner",function(){ -var _4=0; -if(this.selectionStart!=null){ -_4=this.selectionStart; -}else{ -if(this.createTextRange){ -var _5=_2.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_5); -_4=s.text.length; -} -} -if(_4>=0&&_4<=2){ -_3.highlight=0; -}else{ -if(_4>=3&&_4<=5){ -_3.highlight=1; -}else{ -if(_4>=6&&_4<=8){ -_3.highlight=2; -} -} -} -_7(_2); -}).bind("blur.timespinner",function(){ -_6(_2); -}); -}; -function _7(_8){ -var _9=$.data(_8,"timespinner").options; -var _a=0,_b=0; -if(_9.highlight==0){ -_a=0; -_b=2; -}else{ -if(_9.highlight==1){ -_a=3; -_b=5; -}else{ -if(_9.highlight==2){ -_a=6; -_b=8; -} -} -} -if(_8.selectionStart!=null){ -_8.setSelectionRange(_a,_b); -}else{ -if(_8.createTextRange){ -var _c=_8.createTextRange(); -_c.collapse(); -_c.moveEnd("character",_b); -_c.moveStart("character",_a); -_c.select(); -} -} -$(_8).focus(); -}; -function _d(_e,_f){ -var _10=$.data(_e,"timespinner").options; -if(!_f){ -return null; -} -var vv=_f.split(_10.separator); -for(var i=0;i_14){ -_14=_15; -} -if(_16&&_16<_14){ -_14=_16; -} -var tt=[_17(_14.getHours()),_17(_14.getMinutes())]; -if(_12.showSeconds){ -tt.push(_17(_14.getSeconds())); -} -var val=tt.join(_12.separator); -_12.value=val; -$(_11).val(val); -function _17(_18){ -return (_18<10?"0":"")+_18; -}; -}; -function _19(_1a,_1b){ -var _1c=$.data(_1a,"timespinner").options; -var val=$(_1a).val(); -if(val==""){ -val=[0,0,0].join(_1c.separator); -} -var vv=val.split(_1c.separator); -for(var i=0;i"+"
                                                                                  "+"
                                                                                  "+"
                                                                                  "+"").appendTo("body"); -_12.tip=tip; -_14(_11); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_13.position); -_7(_11); -_12.showTimer=setTimeout(function(){ -_6(_11); -tip.show(); -_13.onShow.call(_11,e); -var _15=tip.children(".tooltip-arrow-outer"); -var _16=tip.children(".tooltip-arrow"); -var bc="border-"+_13.position+"-color"; -_15.add(_16).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_15.css(bc,tip.css(bc)); -_16.css(bc,tip.css("backgroundColor")); -},_13.showDelay); -}; -function _17(_18,e){ -var _19=$.data(_18,"tooltip"); -if(_19&&_19.tip){ -_7(_18); -_19.hideTimer=setTimeout(function(){ -_19.tip.hide(); -_19.options.onHide.call(_18,e); -},_19.options.hideDelay); -} -}; -function _14(_1a,_1b){ -var _1c=$.data(_1a,"tooltip"); -var _1d=_1c.options; -if(_1b){ -_1d.content=_1b; -} -if(!_1c.tip){ -return; -} -var cc=typeof _1d.content=="function"?_1d.content.call(_1a):_1d.content; -_1c.tip.children(".tooltip-content").html(cc); -_1d.onUpdate.call(_1a,cc); -}; -function _1e(_1f){ -var _20=$.data(_1f,"tooltip"); -if(_20){ -_7(_1f); -var _21=_20.options; -if(_20.tip){ -_20.tip.remove(); -} -if(_21._title){ -$(_1f).attr("title",_21._title); -} -$.removeData(_1f,"tooltip"); -$(_1f).unbind(".tooltip").removeClass("tooltip-f"); -_21.onDestroy.call(_1f); -} -}; -$.fn.tooltip=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.tooltip.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24=$.data(this,"tooltip"); -if(_24){ -$.extend(_24.options,_22); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_22)}); -_1(this); -} -_3(this); -_14(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_10(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_17(this,e); -}); -},update:function(jq,_25){ -return jq.each(function(){ -_14(this,_25); -}); -},reposition:function(jq){ -return jq.each(function(){ -_6(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1e(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_26){ -var t=$(_26); -var _27=$.extend({},$.parser.parseOptions(_26,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!_27.content){ -_27.content=_27._title; -} -return _27; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_28){ -},onPosition:function(_29,top){ -},onDestroy:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.tree.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.tree.js deleted file mode 100644 index c33f22f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.tree.js +++ /dev/null @@ -1,1148 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(_2); -_3.addClass("tree"); -return _3; -}; -function _4(_5){ -var _6=[]; -_7(_6,$(_5)); -function _7(aa,_8){ -_8.children("li").each(function(){ -var _9=$(this); -var _a=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_9.attr("checked")?true:undefined)}); -_a.text=_9.children("span").html(); -if(!_a.text){ -_a.text=_9.html(); -} -var _b=_9.children("ul"); -if(_b.length){ -_a.children=[]; -_7(_a.children,_b); -} -aa.push(_a); -}); -}; -return _6; -}; -function _c(_d){ -var _e=$.data(_d,"tree").options; -$(_d).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _f=tt.closest("div.tree-node"); -if(!_f.length){ -return; -} -_f.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _10=tt.closest("div.tree-node"); -if(!_10.length){ -return; -} -_10.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _11=tt.closest("div.tree-node"); -if(!_11.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_86(_d,_11[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_39(_d,_11[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_d8(_d,_11[0]); -_e.onClick.call(_d,_14(_d,_11[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _12=$(e.target).closest("div.tree-node"); -if(!_12.length){ -return; -} -_d8(_d,_12[0]); -_e.onDblClick.call(_d,_14(_d,_12[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _13=$(e.target).closest("div.tree-node"); -if(!_13.length){ -return; -} -_e.onContextMenu.call(_d,e,_14(_d,_13[0])); -e.stopPropagation(); -}); -}; -function _15(_16){ -var _17=$(_16).find("div.tree-node"); -_17.draggable("disable"); -_17.css("cursor","pointer"); -}; -function _18(_19){ -var _1a=$.data(_19,"tree"); -var _1b=_1a.options; -var _1c=_1a.tree; -_1a.disabledNodes=[]; -_1c.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_1d){ -var p=$("
                                                                                  ").appendTo("body"); -p.html(" "+$(_1d).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_1b.onBeforeDrag.call(_19,_14(_19,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _1e=$(this).find("span.tree-indent"); -if(_1e.length){ -e.data.offsetWidth-=_1e.length*_1e.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_1b.onStartDrag.call(_19,_14(_19,this)); -var _1f=_14(_19,this); -if(_1f.id==undefined){ -_1f.id="easyui_tree_node_id_temp"; -_cb(_19,_1f); -} -_1a.draggingNodeId=_1f.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_1a.disabledNodes.length;i++){ -$(_1a.disabledNodes[i]).droppable("enable"); -} -_1a.disabledNodes=[]; -var _20=_d5(_19,_1a.draggingNodeId); -if(_20&&_20.id=="easyui_tree_node_id_temp"){ -_20.id=""; -_cb(_19,_20); -} -_1b.onStopDrag.call(_19,_20); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_21){ -if(_1b.onDragEnter.call(_19,this,_14(_19,_21))==false){ -_22(_21,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragOver:function(e,_23){ -if($(this).droppable("options").disabled){ -return; -} -var _24=_23.pageY; -var top=$(this).offset().top; -var _25=top+$(this).outerHeight(); -_22(_23,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_24>top+(_25-top)/2){ -if(_25-_24<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_24-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_1b.onDragOver.call(_19,this,_14(_19,_23))==false){ -_22(_23,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragLeave:function(e,_26){ -_22(_26,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_1b.onDragLeave.call(_19,this,_14(_19,_26)); -},onDrop:function(e,_27){ -var _28=this; -var _29,_2a; -if($(this).hasClass("tree-node-append")){ -_29=_2b; -_2a="append"; -}else{ -_29=_2c; -_2a=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_1b.onBeforeDrop.call(_19,_28,_c4(_19,_27),_2a)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_29(_27,_28,_2a); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _22(_2d,_2e){ -var _2f=$(_2d).draggable("proxy").find("span.tree-dnd-icon"); -_2f.removeClass("tree-dnd-yes tree-dnd-no").addClass(_2e?"tree-dnd-yes":"tree-dnd-no"); -}; -function _2b(_30,_31){ -if(_14(_19,_31).state=="closed"){ -_7a(_19,_31,function(){ -_32(); -}); -}else{ -_32(); -} -function _32(){ -var _33=$(_19).tree("pop",_30); -$(_19).tree("append",{parent:_31,data:[_33]}); -_1b.onDrop.call(_19,_31,_33,"append"); -}; -}; -function _2c(_34,_35,_36){ -var _37={}; -if(_36=="top"){ -_37.before=_35; -}else{ -_37.after=_35; -} -var _38=$(_19).tree("pop",_34); -_37.data=_38; -$(_19).tree("insert",_37); -_1b.onDrop.call(_19,_35,_38,_36); -}; -}; -function _39(_3a,_3b,_3c){ -var _3d=$.data(_3a,"tree").options; -if(!_3d.checkbox){ -return; -} -var _3e=_14(_3a,_3b); -if(_3d.onBeforeCheck.call(_3a,_3e,_3c)==false){ -return; -} -var _3f=$(_3b); -var ck=_3f.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_3c){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_3d.cascadeCheck){ -_40(_3f); -_41(_3f); -} -_3d.onCheck.call(_3a,_3e,_3c); -function _41(_42){ -var _43=_42.next().find(".tree-checkbox"); -_43.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_42.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_43.addClass("tree-checkbox1"); -}else{ -_43.addClass("tree-checkbox0"); -} -}; -function _40(_44){ -var _45=_91(_3a,_44[0]); -if(_45){ -var ck=$(_45.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_46(_44)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_47(_44)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_40($(_45.target)); -} -function _46(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _47(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _48(_49,_4a){ -var _4b=$.data(_49,"tree").options; -var _4c=$(_4a); -if(_4d(_49,_4a)){ -var ck=_4c.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -_39(_49,_4a,false); -} -}else{ -if(_4b.onlyLeafCheck){ -$("").insertBefore(_4c.find(".tree-title")); -} -} -}else{ -var ck=_4c.find(".tree-checkbox"); -if(_4b.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _4e=true; -var _4f=true; -var _50=_51(_49,_4a); -for(var i=0;i<_50.length;i++){ -if(_50[i].checked){ -_4f=false; -}else{ -_4e=false; -} -} -if(_4e){ -_39(_49,_4a,true); -} -if(_4f){ -_39(_49,_4a,false); -} -} -} -} -} -}; -function _52(_53,ul,_54,_55){ -var _56=$.data(_53,"tree").options; -_54=_56.loadFilter.call(_53,_54,$(ul).prev("div.tree-node")[0]); -if(!_55){ -$(ul).empty(); -} -var _57=[]; -var _58=[]; -var _59=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_5a(ul,_54,_59); -if(_56.dnd){ -_18(_53); -}else{ -_15(_53); -} -if(_57.length){ -_39(_53,_57[0],false); -} -for(var i=0;i<_58.length;i++){ -_39(_53,_58[i],true); -} -setTimeout(function(){ -_62(_53,_53); -},0); -var _5b=null; -if(_53!=ul){ -var _5c=$(ul).prev(); -_5b=_14(_53,_5c[0]); -} -_56.onLoadSuccess.call(_53,_5b,_54); -function _5a(ul,_5d,_5e){ -for(var i=0;i<_5d.length;i++){ -var li=$("
                                                                                • ").appendTo(ul); -var _5f=_5d[i]; -if(_5f.state!="open"&&_5f.state!="closed"){ -_5f.state="open"; -} -var _60=$("
                                                                                  ").appendTo(li); -_60.attr("node-id",_5f.id); -$.data(_60[0],"tree-node",{id:_5f.id,text:_5f.text,iconCls:_5f.iconCls,attributes:_5f.attributes}); -$("").html(_56.formatter.call(_53,_5f)).appendTo(_60); -if(_56.checkbox){ -if(_56.onlyLeafCheck){ -if(_5f.state=="open"&&(!_5f.children||!_5f.children.length)){ -if(_5f.checked){ -$("").prependTo(_60); -}else{ -$("").prependTo(_60); -} -} -}else{ -if(_5f.checked){ -$("").prependTo(_60); -_58.push(_60[0]); -}else{ -$("").prependTo(_60); -if(_5d==_54){ -_57.push(_60[0]); -} -} -} -} -if(_5f.children&&_5f.children.length){ -var _61=$("
                                                                                    ").appendTo(li); -if(_5f.state=="open"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -_61.css("display","none"); -} -_5a(_61,_5f.children,_5e+1); -}else{ -if(_5f.state=="closed"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -} -} -for(var j=0;j<_5e;j++){ -$("").prependTo(_60); -} -} -}; -}; -function _62(_63,ul,_64){ -var _65=$.data(_63,"tree").options; -if(!_65.lines){ -return; -} -if(!_64){ -_64=true; -$(_63).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_63).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _66=$(_63).tree("getRoots"); -if(_66.length>1){ -$(_66[0].target).addClass("tree-root-first"); -}else{ -if(_66.length==1){ -$(_66[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var _67=$(this).children("div.tree-node"); -var ul=_67.next("ul"); -if(ul.length){ -if($(this).next().length){ -_68(_67); -} -_62(_63,ul,_64); -}else{ -_69(_67); -} -}); -var _6a=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_6a.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _69(_6b,_6c){ -var _6d=_6b.find("span.tree-icon"); -_6d.prev("span.tree-indent").addClass("tree-join"); -}; -function _68(_6e){ -var _6f=_6e.find("span.tree-indent, span.tree-hit").length; -_6e.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_6f-1)+")").addClass("tree-line"); -}); -}; -}; -function _70(_71,ul,_72,_73){ -var _74=$.data(_71,"tree").options; -_72=_72||{}; -var _75=null; -if(_71!=ul){ -var _76=$(ul).prev(); -_75=_14(_71,_76[0]); -} -if(_74.onBeforeLoad.call(_71,_75,_72)==false){ -return; -} -var _77=$(ul).prev().children("span.tree-folder"); -_77.addClass("tree-loading"); -var _78=_74.loader.call(_71,_72,function(_79){ -_77.removeClass("tree-loading"); -_52(_71,ul,_79); -if(_73){ -_73(); -} -},function(){ -_77.removeClass("tree-loading"); -_74.onLoadError.apply(_71,arguments); -if(_73){ -_73(); -} -}); -if(_78==false){ -_77.removeClass("tree-loading"); -} -}; -function _7a(_7b,_7c,_7d){ -var _7e=$.data(_7b,"tree").options; -var hit=$(_7c).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var _7f=_14(_7b,_7c); -if(_7e.onBeforeExpand.call(_7b,_7f)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_7c).next(); -if(ul.length){ -if(_7e.animate){ -ul.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -ul.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}else{ -var _80=$("
                                                                                      ").insertAfter(_7c); -_70(_7b,_80[0],{id:_7f.id},function(){ -if(_80.is(":empty")){ -_80.remove(); -} -if(_7e.animate){ -_80.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -_80.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}); -} -}; -function _81(_82,_83){ -var _84=$.data(_82,"tree").options; -var hit=$(_83).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var _85=_14(_82,_83); -if(_84.onBeforeCollapse.call(_82,_85)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_83).next(); -if(_84.animate){ -ul.slideUp("normal",function(){ -_84.onCollapse.call(_82,_85); -}); -}else{ -ul.css("display","none"); -_84.onCollapse.call(_82,_85); -} -}; -function _86(_87,_88){ -var hit=$(_88).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_81(_87,_88); -}else{ -_7a(_87,_88); -} -}; -function _89(_8a,_8b){ -var _8c=_51(_8a,_8b); -if(_8b){ -_8c.unshift(_14(_8a,_8b)); -} -for(var i=0;i<_8c.length;i++){ -_7a(_8a,_8c[i].target); -} -}; -function _8d(_8e,_8f){ -var _90=[]; -var p=_91(_8e,_8f); -while(p){ -_90.unshift(p); -p=_91(_8e,p.target); -} -for(var i=0;i<_90.length;i++){ -_7a(_8e,_90[i].target); -} -}; -function _92(_93,_94){ -var c=$(_93).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_94); -var _95=n.offset().top; -if(c[0].tagName!="BODY"){ -var _96=c.offset().top; -if(_95<_96){ -c.scrollTop(c.scrollTop()+_95-_96); -}else{ -if(_95+n.outerHeight()>_96+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+_95+n.outerHeight()-_96-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(_95); -} -}; -function _97(_98,_99){ -var _9a=_51(_98,_99); -if(_99){ -_9a.unshift(_14(_98,_99)); -} -for(var i=0;i<_9a.length;i++){ -_81(_98,_9a[i].target); -} -}; -function _9b(_9c){ -var _9d=_9e(_9c); -if(_9d.length){ -return _9d[0]; -}else{ -return null; -} -}; -function _9e(_9f){ -var _a0=[]; -$(_9f).children("li").each(function(){ -var _a1=$(this).children("div.tree-node"); -_a0.push(_14(_9f,_a1[0])); -}); -return _a0; -}; -function _51(_a2,_a3){ -var _a4=[]; -if(_a3){ -_a5($(_a3)); -}else{ -var _a6=_9e(_a2); -for(var i=0;i<_a6.length;i++){ -_a4.push(_a6[i]); -_a5($(_a6[i].target)); -} -} -function _a5(_a7){ -_a7.next().find("div.tree-node").each(function(){ -_a4.push(_14(_a2,this)); -}); -}; -return _a4; -}; -function _91(_a8,_a9){ -var ul=$(_a9).parent().parent(); -if(ul[0]==_a8){ -return null; -}else{ -return _14(_a8,ul.prev()[0]); -} -}; -function _aa(_ab,_ac){ -_ac=_ac||"checked"; -if(!$.isArray(_ac)){ -_ac=[_ac]; -} -var _ad=[]; -for(var i=0;i<_ac.length;i++){ -var s=_ac[i]; -if(s=="checked"){ -_ad.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_ad.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_ad.push("span.tree-checkbox2"); -} -} -} -} -var _ae=[]; -$(_ab).find(_ad.join(",")).each(function(){ -var _af=$(this).parent(); -_ae.push(_14(_ab,_af[0])); -}); -return _ae; -}; -function _b0(_b1){ -var _b2=$(_b1).find("div.tree-node-selected"); -if(_b2.length){ -return _14(_b1,_b2[0]); -}else{ -return null; -} -}; -function _b3(_b4,_b5){ -var _b6=$(_b5.parent); -var _b7=_b5.data; -if(!_b7){ -return; -} -_b7=$.isArray(_b7)?_b7:[_b7]; -if(!_b7.length){ -return; -} -var ul; -if(_b6.length==0){ -ul=$(_b4); -}else{ -if(_4d(_b4,_b6[0])){ -var _b8=_b6.find("span.tree-icon"); -_b8.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_b8); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=_b6.next(); -if(!ul.length){ -ul=$("
                                                                                        ").insertAfter(_b6); -} -} -_52(_b4,ul[0],_b7,true); -_48(_b4,ul.prev()); -}; -function _b9(_ba,_bb){ -var ref=_bb.before||_bb.after; -var _bc=_91(_ba,ref); -var _bd=_bb.data; -if(!_bd){ -return; -} -_bd=$.isArray(_bd)?_bd:[_bd]; -if(!_bd.length){ -return; -} -_b3(_ba,{parent:(_bc?_bc.target:null),data:_bd}); -var li=$(); -var _be=_bc?$(_bc.target).next().children("li:last"):$(_ba).children("li:last"); -for(var i=0;i<_bd.length;i++){ -li=_be.add(li); -_be=_be.prev(); -} -if(_bb.before){ -li.insertBefore($(ref).parent()); -}else{ -li.insertAfter($(ref).parent()); -} -}; -function _bf(_c0,_c1){ -var _c2=_91(_c0,_c1); -var _c3=$(_c1); -var li=_c3.parent(); -var ul=li.parent(); -li.remove(); -if(ul.children("li").length==0){ -var _c3=ul.prev(); -_c3.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_c3.find(".tree-hit").remove(); -$("").prependTo(_c3); -if(ul[0]!=_c0){ -ul.remove(); -} -} -if(_c2){ -_48(_c0,_c2.target); -} -_62(_c0,_c0); -}; -function _c4(_c5,_c6){ -function _c7(aa,ul){ -ul.children("li").each(function(){ -var _c8=$(this).children("div.tree-node"); -var _c9=_14(_c5,_c8[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_c9.children=[]; -_c7(_c9.children,sub); -} -aa.push(_c9); -}); -}; -if(_c6){ -var _ca=_14(_c5,_c6); -_ca.children=[]; -_c7(_ca.children,$(_c6).next()); -return _ca; -}else{ -return null; -} -}; -function _cb(_cc,_cd){ -var _ce=$.data(_cc,"tree").options; -var _cf=$(_cd.target); -var _d0=_14(_cc,_cd.target); -if(_d0.iconCls){ -_cf.find(".tree-icon").removeClass(_d0.iconCls); -} -var _d1=$.extend({},_d0,_cd); -$.data(_cd.target,"tree-node",_d1); -_cf.attr("node-id",_d1.id); -_cf.find(".tree-title").html(_ce.formatter.call(_cc,_d1)); -if(_d1.iconCls){ -_cf.find(".tree-icon").addClass(_d1.iconCls); -} -if(_d0.checked!=_d1.checked){ -_39(_cc,_cd.target,_d1.checked); -} -}; -function _14(_d2,_d3){ -var _d4=$.extend({},$.data(_d3,"tree-node"),{target:_d3,checked:$(_d3).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_4d(_d2,_d3)){ -_d4.state=$(_d3).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return _d4; -}; -function _d5(_d6,id){ -var _d7=$(_d6).find("div.tree-node[node-id=\""+id+"\"]"); -if(_d7.length){ -return _14(_d6,_d7[0]); -}else{ -return null; -} -}; -function _d8(_d9,_da){ -var _db=$.data(_d9,"tree").options; -var _dc=_14(_d9,_da); -if(_db.onBeforeSelect.call(_d9,_dc)==false){ -return; -} -$("div.tree-node-selected",_d9).removeClass("tree-node-selected"); -$(_da).addClass("tree-node-selected"); -_db.onSelect.call(_d9,_dc); -}; -function _4d(_dd,_de){ -var _df=$(_de); -var hit=_df.children("span.tree-hit"); -return hit.length==0; -}; -function _e0(_e1,_e2){ -var _e3=$.data(_e1,"tree").options; -var _e4=_14(_e1,_e2); -if(_e3.onBeforeEdit.call(_e1,_e4)==false){ -return; -} -$(_e2).css("position","relative"); -var nt=$(_e2).find(".tree-title"); -var _e5=nt.outerWidth(); -nt.empty(); -var _e6=$("").appendTo(nt); -_e6.val(_e4.text).focus(); -_e6.width(_e5+20); -_e6.height(document.compatMode=="CSS1Compat"?(18-(_e6.outerHeight()-_e6.height())):18); -_e6.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_e7(_e1,_e2); -return false; -}else{ -if(e.keyCode==27){ -_ed(_e1,_e2); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_e7(_e1,_e2); -}); -}; -function _e7(_e8,_e9){ -var _ea=$.data(_e8,"tree").options; -$(_e9).css("position",""); -var _eb=$(_e9).find("input.tree-editor"); -var val=_eb.val(); -_eb.remove(); -var _ec=_14(_e8,_e9); -_ec.text=val; -_cb(_e8,_ec); -_ea.onAfterEdit.call(_e8,_ec); -}; -function _ed(_ee,_ef){ -var _f0=$.data(_ee,"tree").options; -$(_ef).css("position",""); -$(_ef).find("input.tree-editor").remove(); -var _f1=_14(_ee,_ef); -_cb(_ee,_f1); -_f0.onCancelEdit.call(_ee,_f1); -}; -$.fn.tree=function(_f2,_f3){ -if(typeof _f2=="string"){ -return $.fn.tree.methods[_f2](this,_f3); -} -var _f2=_f2||{}; -return this.each(function(){ -var _f4=$.data(this,"tree"); -var _f5; -if(_f4){ -_f5=$.extend(_f4.options,_f2); -_f4.options=_f5; -}else{ -_f5=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f2); -$.data(this,"tree",{options:_f5,tree:_1(this)}); -var _f6=_4(this); -if(_f6.length&&!_f5.data){ -_f5.data=_f6; -} -} -_c(this); -if(_f5.lines){ -$(this).addClass("tree-lines"); -} -if(_f5.data){ -_52(this,this,_f5.data); -}else{ -if(_f5.dnd){ -_18(this); -}else{ -_15(this); -} -} -_70(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,_f7){ -return jq.each(function(){ -_52(this,this,_f7); -}); -},getNode:function(jq,_f8){ -return _14(jq[0],_f8); -},getData:function(jq,_f9){ -return _c4(jq[0],_f9); -},reload:function(jq,_fa){ -return jq.each(function(){ -if(_fa){ -var _fb=$(_fa); -var hit=_fb.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -_fb.next().remove(); -_7a(this,_fa); -}else{ -$(this).empty(); -_70(this,this); -} -}); -},getRoot:function(jq){ -return _9b(jq[0]); -},getRoots:function(jq){ -return _9e(jq[0]); -},getParent:function(jq,_fc){ -return _91(jq[0],_fc); -},getChildren:function(jq,_fd){ -return _51(jq[0],_fd); -},getChecked:function(jq,_fe){ -return _aa(jq[0],_fe); -},getSelected:function(jq){ -return _b0(jq[0]); -},isLeaf:function(jq,_ff){ -return _4d(jq[0],_ff); -},find:function(jq,id){ -return _d5(jq[0],id); -},select:function(jq,_100){ -return jq.each(function(){ -_d8(this,_100); -}); -},check:function(jq,_101){ -return jq.each(function(){ -_39(this,_101,true); -}); -},uncheck:function(jq,_102){ -return jq.each(function(){ -_39(this,_102,false); -}); -},collapse:function(jq,_103){ -return jq.each(function(){ -_81(this,_103); -}); -},expand:function(jq,_104){ -return jq.each(function(){ -_7a(this,_104); -}); -},collapseAll:function(jq,_105){ -return jq.each(function(){ -_97(this,_105); -}); -},expandAll:function(jq,_106){ -return jq.each(function(){ -_89(this,_106); -}); -},expandTo:function(jq,_107){ -return jq.each(function(){ -_8d(this,_107); -}); -},scrollTo:function(jq,_108){ -return jq.each(function(){ -_92(this,_108); -}); -},toggle:function(jq,_109){ -return jq.each(function(){ -_86(this,_109); -}); -},append:function(jq,_10a){ -return jq.each(function(){ -_b3(this,_10a); -}); -},insert:function(jq,_10b){ -return jq.each(function(){ -_b9(this,_10b); -}); -},remove:function(jq,_10c){ -return jq.each(function(){ -_bf(this,_10c); -}); -},pop:function(jq,_10d){ -var node=jq.tree("getData",_10d); -jq.tree("remove",_10d); -return node; -},update:function(jq,_10e){ -return jq.each(function(){ -_cb(this,_10e); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_18(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_15(this); -}); -},beginEdit:function(jq,_10f){ -return jq.each(function(){ -_e0(this,_10f); -}); -},endEdit:function(jq,_110){ -return jq.each(function(){ -_e7(this,_110); -}); -},cancelEdit:function(jq,_111){ -return jq.each(function(){ -_ed(this,_111); -}); -}}; -$.fn.tree.parseOptions=function(_112){ -var t=$(_112); -return $.extend({},$.parser.parseOptions(_112,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_113,_114,_115){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_113,dataType:"json",success:function(data){ -_114(data); -},error:function(){ -_115.apply(this,arguments); -}}); -},loadFilter:function(data,_116){ -return data; -},onBeforeLoad:function(node,_117){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_118){ -},onCheck:function(node,_119){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_11a,_11b){ -},onDragOver:function(_11c,_11d){ -},onDragLeave:function(_11e,_11f){ -},onBeforeDrop:function(_120,_121,_122){ -},onDrop:function(_123,_124,_125){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.treegrid.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.treegrid.js deleted file mode 100644 index 9aee2c6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.treegrid.js +++ /dev/null @@ -1,1100 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"treegrid"); -var _4=_3.options; -$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ -return false; -},onBeforeLoad:function(){ -return false; -},onLoadSuccess:function(){ -},onResizeColumn:function(_5,_6){ -_20(_2); -_4.onResizeColumn.call(_2,_5,_6); -},onSortColumn:function(_7,_8){ -_4.sortName=_7; -_4.sortOrder=_8; -if(_4.remoteSort){ -_1f(_2); -}else{ -var _9=$(_2).treegrid("getData"); -_39(_2,0,_9); -} -_4.onSortColumn.call(_2,_7,_8); -},onBeforeEdit:function(_a,_b){ -if(_4.onBeforeEdit.call(_2,_b)==false){ -return false; -} -},onAfterEdit:function(_c,_d,_e){ -_4.onAfterEdit.call(_2,_d,_e); -},onCancelEdit:function(_f,row){ -_4.onCancelEdit.call(_2,row); -},onSelect:function(_10){ -_4.onSelect.call(_2,_41(_2,_10)); -},onUnselect:function(_11){ -_4.onUnselect.call(_2,_41(_2,_11)); -},onSelectAll:function(){ -_4.onSelectAll.call(_2,$.data(_2,"treegrid").data); -},onUnselectAll:function(){ -_4.onUnselectAll.call(_2,$.data(_2,"treegrid").data); -},onCheck:function(_12){ -_4.onCheck.call(_2,_41(_2,_12)); -},onUncheck:function(_13){ -_4.onUncheck.call(_2,_41(_2,_13)); -},onCheckAll:function(){ -_4.onCheckAll.call(_2,$.data(_2,"treegrid").data); -},onUncheckAll:function(){ -_4.onUncheckAll.call(_2,$.data(_2,"treegrid").data); -},onClickRow:function(_14){ -_4.onClickRow.call(_2,_41(_2,_14)); -},onDblClickRow:function(_15){ -_4.onDblClickRow.call(_2,_41(_2,_15)); -},onClickCell:function(_16,_17){ -_4.onClickCell.call(_2,_17,_41(_2,_16)); -},onDblClickCell:function(_18,_19){ -_4.onDblClickCell.call(_2,_19,_41(_2,_18)); -},onRowContextMenu:function(e,_1a){ -_4.onContextMenu.call(_2,e,_41(_2,_1a)); -}})); -if(!_4.columns){ -var _1b=$.data(_2,"datagrid").options; -_4.columns=_1b.columns; -_4.frozenColumns=_1b.frozenColumns; -} -_3.dc=$.data(_2,"datagrid").dc; -if(_4.pagination){ -var _1c=$(_2).datagrid("getPager"); -_1c.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_1d,_1e){ -_4.pageNumber=_1d; -_4.pageSize=_1e; -_1f(_2); -}}); -_4.pageSize=_1c.pagination("options").pageSize; -} -}; -function _20(_21,_22){ -var _23=$.data(_21,"datagrid").options; -var dc=$.data(_21,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!_23.nowrap||_23.autoRowHeight)){ -if(_22!=undefined){ -var _24=_25(_21,_22); -for(var i=0;i<_24.length;i++){ -_26(_24[i][_23.idField]); -} -} -} -$(_21).datagrid("fixRowHeight",_22); -function _26(_27){ -var tr1=_23.finder.getTr(_21,_27,"body",1); -var tr2=_23.finder.getTr(_21,_27,"body",2); -tr1.css("height",""); -tr2.css("height",""); -var _28=Math.max(tr1.height(),tr2.height()); -tr1.css("height",_28); -tr2.css("height",_28); -}; -}; -function _29(_2a){ -var dc=$.data(_2a,"datagrid").dc; -var _2b=$.data(_2a,"treegrid").options; -if(!_2b.rownumbers){ -return; -} -dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ -$(this).html(i+1); -}); -}; -function _2c(_2d){ -var dc=$.data(_2d,"datagrid").dc; -var _2e=dc.body1.add(dc.body2); -var _2f=($.data(_2e[0],"events")||$._data(_2e[0],"events")).click[0].handler; -dc.body1.add(dc.body2).bind("mouseover",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.addClass("tree-expanded-hover"):tt.addClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.removeClass("tree-expanded-hover"):tt.removeClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).unbind("click").bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_30(_2d,tr.attr("node-id")); -}else{ -_2f(e); -} -e.stopPropagation(); -}); -}; -function _31(_32,_33){ -var _34=$.data(_32,"treegrid").options; -var tr1=_34.finder.getTr(_32,_33,"body",1); -var tr2=_34.finder.getTr(_32,_33,"body",2); -var _35=$(_32).datagrid("getColumnFields",true).length+(_34.rownumbers?1:0); -var _36=$(_32).datagrid("getColumnFields",false).length; -_37(tr1,_35); -_37(tr2,_36); -function _37(tr,_38){ -$(""+""+"
                                                                                        "+""+"").insertAfter(tr); -}; -}; -function _39(_3a,_3b,_3c,_3d){ -var _3e=$.data(_3a,"treegrid"); -var _3f=_3e.options; -var dc=_3e.dc; -_3c=_3f.loadFilter.call(_3a,_3c,_3b); -var _40=_41(_3a,_3b); -if(_40){ -var _42=_3f.finder.getTr(_3a,_3b,"body",1); -var _43=_3f.finder.getTr(_3a,_3b,"body",2); -var cc1=_42.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_43.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_3d){ -_40.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_3d){ -_3e.data=[]; -} -} -if(!_3d){ -cc1.empty(); -cc2.empty(); -} -if(_3f.view.onBeforeRender){ -_3f.view.onBeforeRender.call(_3f.view,_3a,_3b,_3c); -} -_3f.view.render.call(_3f.view,_3a,cc1,true); -_3f.view.render.call(_3f.view,_3a,cc2,false); -if(_3f.showFooter){ -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer1,true); -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer2,false); -} -if(_3f.view.onAfterRender){ -_3f.view.onAfterRender.call(_3f.view,_3a); -} -_3f.onLoadSuccess.call(_3a,_40,_3c); -if(!_3b&&_3f.pagination){ -var _44=$.data(_3a,"treegrid").total; -var _45=$(_3a).datagrid("getPager"); -if(_45.pagination("options").total!=_44){ -_45.pagination({total:_44}); -} -} -_20(_3a); -_29(_3a); -$(_3a).treegrid("autoSizeColumn"); -}; -function _1f(_46,_47,_48,_49,_4a){ -var _4b=$.data(_46,"treegrid").options; -var _4c=$(_46).datagrid("getPanel").find("div.datagrid-body"); -if(_48){ -_4b.queryParams=_48; -} -var _4d=$.extend({},_4b.queryParams); -if(_4b.pagination){ -$.extend(_4d,{page:_4b.pageNumber,rows:_4b.pageSize}); -} -if(_4b.sortName){ -$.extend(_4d,{sort:_4b.sortName,order:_4b.sortOrder}); -} -var row=_41(_46,_47); -if(_4b.onBeforeLoad.call(_46,row,_4d)==false){ -return; -} -var _4e=_4c.find("tr[node-id=\""+_47+"\"] span.tree-folder"); -_4e.addClass("tree-loading"); -$(_46).treegrid("loading"); -var _4f=_4b.loader.call(_46,_4d,function(_50){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_39(_46,_47,_50,_49); -if(_4a){ -_4a(); -} -},function(){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_4b.onLoadError.apply(_46,arguments); -if(_4a){ -_4a(); -} -}); -if(_4f==false){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -} -}; -function _51(_52){ -var _53=_54(_52); -if(_53.length){ -return _53[0]; -}else{ -return null; -} -}; -function _54(_55){ -return $.data(_55,"treegrid").data; -}; -function _56(_57,_58){ -var row=_41(_57,_58); -if(row._parentId){ -return _41(_57,row._parentId); -}else{ -return null; -} -}; -function _25(_59,_5a){ -var _5b=$.data(_59,"treegrid").options; -var _5c=$(_59).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _5d=[]; -if(_5a){ -_5e(_5a); -}else{ -var _5f=_54(_59); -for(var i=0;i<_5f.length;i++){ -_5d.push(_5f[i]); -_5e(_5f[i][_5b.idField]); -} -} -function _5e(_60){ -var _61=_41(_59,_60); -if(_61&&_61.children){ -for(var i=0,len=_61.children.length;i").insertBefore(_96); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_39(_92,_93.parent,_93.data,true); -}; -function _97(_98,_99){ -var ref=_99.before||_99.after; -var _9a=$.data(_98,"treegrid").options; -var _9b=_56(_98,ref); -_91(_98,{parent:(_9b?_9b[_9a.idField]:null),data:[_99.data]}); -_9c(true); -_9c(false); -_29(_98); -function _9c(_9d){ -var _9e=_9d?1:2; -var tr=_9a.finder.getTr(_98,_99.data[_9a.idField],"body",_9e); -var _9f=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var _a0=_9a.finder.getTr(_98,ref,"body",_9e); -if(_99.before){ -tr.insertBefore(_a0); -}else{ -var sub=_a0.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:_a0); -} -_9f.remove(); -}; -}; -function _a1(_a2,_a3){ -var _a4=$.data(_a2,"treegrid").options; -var tr=_a4.finder.getTr(_a2,_a3); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _a5=del(_a3); -if(_a5){ -if(_a5.children.length==0){ -tr=_a4.finder.getTr(_a2,_a5[_a4.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var _a6=tr.children("td[field=\""+_a4.treeField+"\"]").children("div.datagrid-cell"); -_a6.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_a6.find(".tree-hit").remove(); -$("").prependTo(_a6); -} -} -_29(_a2); -function del(id){ -var cc; -var _a7=_56(_a2,_a3); -if(_a7){ -cc=_a7.children; -}else{ -cc=$(_a2).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_c9.length;i++){ -var row=_c9[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=_c0.rowStyler?_c0.rowStyler.call(_bd,row):""; -var _cb=""; -var _cc=""; -if(typeof css=="string"){ -_cc=css; -}else{ -if(css){ -_cb=css["class"]||""; -_cc=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_c3++%2&&_c0.striped?"datagrid-row-alt ":" ")+_cb+"\""; -var _cd=_cc?"style=\""+_cc+"\"":""; -var _ce=_c2+"-"+(_c7?1:2)+"-"+row[_c0.idField]; -_ca.push(""); -_ca=_ca.concat(_c4.renderRow.call(_c4,_bd,_c1,_c7,_c8,row)); -_ca.push(""); -if(row.children&&row.children.length){ -var tt=_c6(_c7,_c8+1,row.children); -var v=row.state=="closed"?"none":"block"; -_ca.push("
                                                                                        "); -_ca=_ca.concat(tt); -_ca.push("
                                                                                        "); -} -} -_ca.push(""); -return _ca; -}; -},renderFooter:function(_cf,_d0,_d1){ -var _d2=$.data(_cf,"treegrid").options; -var _d3=$.data(_cf,"treegrid").footer||[]; -var _d4=$(_cf).datagrid("getColumnFields",_d1); -var _d5=[""]; -for(var i=0;i<_d3.length;i++){ -var row=_d3[i]; -row[_d2.idField]=row[_d2.idField]||("foot-row-id"+i); -_d5.push(""); -_d5.push(this.renderRow.call(this,_cf,_d4,_d1,0,row)); -_d5.push(""); -} -_d5.push("
                                                                                        "); -$(_d0).html(_d5.join("")); -},renderRow:function(_d6,_d7,_d8,_d9,row){ -var _da=$.data(_d6,"treegrid").options; -var cc=[]; -if(_d8&&_da.rownumbers){ -cc.push("
                                                                                        0
                                                                                        "); -} -for(var i=0;i<_d7.length;i++){ -var _db=_d7[i]; -var col=$(_d6).datagrid("getColumnOption",_db); -if(col){ -var css=col.styler?(col.styler(row[_db],row)||""):""; -var _dc=""; -var _dd=""; -if(typeof css=="string"){ -_dd=css; -}else{ -if(cc){ -_dc=css["class"]||""; -_dd=css["style"]||""; -} -} -var cls=_dc?"class=\""+_dc+"\"":""; -var _de=col.hidden?"style=\"display:none;"+_dd+"\"":(_dd?"style=\""+_dd+"\"":""); -cc.push(""); -if(col.checkbox){ -var _de=""; -}else{ -var _de=_dd; -if(col.align){ -_de+=";text-align:"+col.align+";"; -} -if(!_da.nowrap){ -_de+=";white-space:normal;height:auto;"; -}else{ -if(_da.autoRowHeight){ -_de+=";height:auto;"; -} -} -} -cc.push("
                                                                                        "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_db],row); -}else{ -val=row[_db]; -} -if(_db==_da.treeField){ -for(var j=0;j<_d9;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                                                                        "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_df,id){ -this.updateRow.call(this,_df,id,{}); -},updateRow:function(_e0,id,row){ -var _e1=$.data(_e0,"treegrid").options; -var _e2=$(_e0).treegrid("find",id); -$.extend(_e2,row); -var _e3=$(_e0).treegrid("getLevel",id)-1; -var _e4=_e1.rowStyler?_e1.rowStyler.call(_e0,_e2):""; -function _e5(_e6){ -var _e7=$(_e0).treegrid("getColumnFields",_e6); -var tr=_e1.finder.getTr(_e0,id,"body",(_e6?1:2)); -var _e8=tr.find("div.datagrid-cell-rownumber").html(); -var _e9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_e0,_e7,_e6,_e3,_e2)); -tr.attr("style",_e4||""); -tr.find("div.datagrid-cell-rownumber").html(_e8); -if(_e9){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_e5.call(this,true); -_e5.call(this,false); -$(_e0).treegrid("fixRowHeight",id); -},onBeforeRender:function(_ea,_eb,_ec){ -if($.isArray(_eb)){ -_ec={total:_eb.length,rows:_eb}; -_eb=null; -} -if(!_ec){ -return false; -} -var _ed=$.data(_ea,"treegrid"); -var _ee=_ed.options; -if(_ec.length==undefined){ -if(_ec.footer){ -_ed.footer=_ec.footer; -} -if(_ec.total){ -_ed.total=_ec.total; -} -_ec=this.transfer(_ea,_eb,_ec.rows); -}else{ -function _ef(_f0,_f1){ -for(var i=0;i<_f0.length;i++){ -var row=_f0[i]; -row._parentId=_f1; -if(row.children&&row.children.length){ -_ef(row.children,row[_ee.idField]); -} -} -}; -_ef(_ec,_eb); -} -var _f2=_41(_ea,_eb); -if(_f2){ -if(_f2.children){ -_f2.children=_f2.children.concat(_ec); -}else{ -_f2.children=_ec; -} -}else{ -_ed.data=_ed.data.concat(_ec); -} -this.sort(_ea,_ec); -this.treeNodes=_ec; -this.treeLevel=$(_ea).treegrid("getLevel",_eb); -},sort:function(_f3,_f4){ -var _f5=$.data(_f3,"treegrid").options; -if(!_f5.remoteSort&&_f5.sortName){ -var _f6=_f5.sortName.split(","); -var _f7=_f5.sortOrder.split(","); -_f8(_f4); -} -function _f8(_f9){ -_f9.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_f6.length;i++){ -var sn=_f6[i]; -var so=_f7[i]; -var col=$(_f3).treegrid("getColumnOption",sn); -var _fa=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_fa(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i<_f9.length;i++){ -var _fb=_f9[i].children; -if(_fb&&_fb.length){ -_f8(_fb); -} -} -}; -},transfer:function(_fc,_fd,_fe){ -var _ff=$.data(_fc,"treegrid").options; -var rows=[]; -for(var i=0;i<_fe.length;i++){ -rows.push(_fe[i]); -} -var _100=[]; -for(var i=0;i=_2b[0]&&len<=_2b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_2c,_2d){ -var _2e={}; -_2e[_2d[1]]=_2c; -var _2f=$.ajax({url:_2d[0],dataType:"json",data:_2e,async:false,cache:false,type:"post"}).responseText; -return _2f=="true"; -},message:"Please fix this field."}}}; -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.window.js b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.window.js deleted file mode 100644 index 38d05d1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/plugins/jquery.window.js +++ /dev/null @@ -1,288 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -var _4=$.data(_2,"window").options; -if(_3){ -if(_3.width){ -_4.width=_3.width; -} -if(_3.height){ -_4.height=_3.height; -} -if(_3.left!=null){ -_4.left=_3.left; -} -if(_3.top!=null){ -_4.top=_3.top; -} -} -$(_2).panel("resize",_4); -}; -function _5(_6,_7){ -var _8=$.data(_6,"window"); -if(_7){ -if(_7.left!=null){ -_8.options.left=_7.left; -} -if(_7.top!=null){ -_8.options.top=_7.top; -} -} -$(_6).panel("move",_8.options); -if(_8.shadow){ -_8.shadow.css({left:_8.options.left,top:_8.options.top}); -} -}; -function _9(_a,_b){ -var _c=$.data(_a,"window"); -var _d=_c.options; -var _e=_d.width; -if(isNaN(_e)){ -_e=_c.window._outerWidth(); -} -if(_d.inline){ -var _f=_c.window.parent(); -_d.left=(_f.width()-_e)/2+_f.scrollLeft(); -}else{ -_d.left=($(window)._outerWidth()-_e)/2+$(document).scrollLeft(); -} -if(_b){ -_5(_a); -} -}; -function _10(_11,_12){ -var _13=$.data(_11,"window"); -var _14=_13.options; -var _15=_14.height; -if(isNaN(_15)){ -_15=_13.window._outerHeight(); -} -if(_14.inline){ -var _16=_13.window.parent(); -_14.top=(_16.height()-_15)/2+_16.scrollTop(); -}else{ -_14.top=($(window)._outerHeight()-_15)/2+$(document).scrollTop(); -} -if(_12){ -_5(_11); -} -}; -function _17(_18){ -var _19=$.data(_18,"window"); -var win=$(_18).panel($.extend({},_19.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_19.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_19.options.onBeforeDestroy.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.mask){ -_19.mask.remove(); -} -},onClose:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onClose.call(_18); -},onOpen:function(){ -if(_19.mask){ -_19.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_19.shadow){ -_19.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.window.css("z-index",$.fn.window.defaults.zIndex++); -_19.options.onOpen.call(_18); -},onResize:function(_1a,_1b){ -var _1c=$(this).panel("options"); -$.extend(_19.options,{width:_1c.width,height:_1c.height,left:_1c.left,top:_1c.top}); -if(_19.shadow){ -_19.shadow.css({left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.options.onResize.call(_18,_1a,_1b); -},onMinimize:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onMinimize.call(_18); -},onBeforeCollapse:function(){ -if(_19.options.onBeforeCollapse.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.hide(); -} -},onExpand:function(){ -if(_19.shadow){ -_19.shadow.show(); -} -_19.options.onExpand.call(_18); -}})); -_19.window=win.panel("panel"); -if(_19.mask){ -_19.mask.remove(); -} -if(_19.options.modal==true){ -_19.mask=$("
                                                                                        ").insertAfter(_19.window); -_19.mask.css({width:(_19.options.inline?_19.mask.parent().width():_1d().width),height:(_19.options.inline?_19.mask.parent().height():_1d().height),display:"none"}); -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.options.shadow==true){ -_19.shadow=$("
                                                                                        ").insertAfter(_19.window); -_19.shadow.css({display:"none"}); -} -if(_19.options.left==null){ -_9(_18); -} -if(_19.options.top==null){ -_10(_18); -} -_5(_18); -if(_19.options.closed==false){ -win.window("open"); -} -}; -function _1e(_1f){ -var _20=$.data(_1f,"window"); -_20.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_20.options.draggable==false,onStartDrag:function(e){ -if(_20.mask){ -_20.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_20.shadow){ -_20.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_20.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_20.proxy){ -_20.proxy=$("
                                                                                        ").insertAfter(_20.window); -} -_20.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(_20.window._outerWidth()); -_20.proxy._outerHeight(_20.window._outerHeight()); -setTimeout(function(){ -if(_20.proxy){ -_20.proxy.show(); -} -},500); -},onDrag:function(e){ -_20.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_20.options.left=e.data.left; -_20.options.top=e.data.top; -$(_1f).window("move"); -_20.proxy.remove(); -_20.proxy=null; -}}); -_20.window.resizable({disabled:_20.options.resizable==false,onStartResize:function(e){ -_20.pmask=$("
                                                                                        ").insertAfter(_20.window); -_20.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_20.window._outerWidth(),height:_20.window._outerHeight()}); -if(!_20.proxy){ -_20.proxy=$("
                                                                                        ").insertAfter(_20.window); -} -_20.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_20.proxy.css({left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_20.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_1(_1f); -_20.pmask.remove(); -_20.pmask=null; -_20.proxy.remove(); -_20.proxy=null; -}}); -}; -function _1d(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_1d().width,height:_1d().height}); -},50); -}); -$.fn.window=function(_21,_22){ -if(typeof _21=="string"){ -var _23=$.fn.window.methods[_21]; -if(_23){ -return _23(this,_22); -}else{ -return this.panel(_21,_22); -} -} -_21=_21||{}; -return this.each(function(){ -var _24=$.data(this,"window"); -if(_24){ -$.extend(_24.options,_21); -}else{ -_24=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_21)}); -if(!_24.options.inline){ -document.body.appendChild(this); -} -} -_17(this); -_1e(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _25=jq.panel("options"); -var _26=$.data(jq[0],"window").options; -return $.extend(_26,{closed:_25.closed,collapsed:_25.collapsed,minimized:_25.minimized,maximized:_25.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_27){ -return jq.each(function(){ -_1(this,_27); -}); -},move:function(jq,_28){ -return jq.each(function(){ -_5(this,_28); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_9(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_10(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_9(this); -_10(this); -_5(this); -}); -}}; -$.fn.window.parseOptions=function(_29){ -return $.extend({},$.fn.panel.parseOptions(_29),$.parser.parseOptions(_29,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); - diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/accordion.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/accordion.css deleted file mode 100644 index a0f6ddc..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/calendar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/calendar.css deleted file mode 100644 index 514f3e3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/combo.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/combo.css deleted file mode 100644 index d0af3b7..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/combobox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/combobox.css deleted file mode 100644 index 9c55f28..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/datagrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/datagrid.css deleted file mode 100644 index 2a616fb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/datebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/datebox.css deleted file mode 100644 index e368f64..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/dialog.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/dialog.css deleted file mode 100644 index 4ee224a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/easyui.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/easyui.css deleted file mode 100644 index 8e20555..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/easyui.css +++ /dev/null @@ -1,2292 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/Thumbs.db b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/accordion_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/accordion_arrows.png deleted file mode 100644 index 45fd44a..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/blank.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/calendar_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/combo_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/combo_arrow.png deleted file mode 100644 index ac58921..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/datagrid_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/datagrid_icons.png deleted file mode 100644 index bdf87e3..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/datebox_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/layout_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/layout_arrows.png deleted file mode 100644 index 19c611f..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/linkbutton_bg.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/loading.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/menu_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/menu_arrows.png deleted file mode 100644 index 2a98494..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/messager_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/pagination_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/pagination_icons.png deleted file mode 100644 index b3315fa..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/panel_tools.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/panel_tools.png deleted file mode 100644 index f97761e..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/searchbox_button.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/slider_handle.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/spinner_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/spinner_arrows.png deleted file mode 100644 index 25ee848..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/tabs_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/tabs_icons.png deleted file mode 100644 index 732b123..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/tree_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/tree_icons.png deleted file mode 100644 index 2b4fd20..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/validatebox_warning.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/layout.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/layout.css deleted file mode 100644 index 31190da..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/linkbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/linkbutton.css deleted file mode 100644 index 69de8e2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/menu.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/menu.css deleted file mode 100644 index 9e89ea5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/menubutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/menubutton.css deleted file mode 100644 index b936c02..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/messager.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/messager.css deleted file mode 100644 index f378f2a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/pagination.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/pagination.css deleted file mode 100644 index 92fa015..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/panel.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/panel.css deleted file mode 100644 index 0197324..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/progressbar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/progressbar.css deleted file mode 100644 index 79fcf62..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/propertygrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/propertygrid.css deleted file mode 100644 index d71ce7c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/searchbox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/searchbox.css deleted file mode 100644 index a502652..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/slider.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/slider.css deleted file mode 100644 index da31fd6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/spinner.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/spinner.css deleted file mode 100644 index 18ea2a9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/splitbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/splitbutton.css deleted file mode 100644 index 3391b9c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tabs.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tabs.css deleted file mode 100644 index 40ba8f1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tooltip.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tooltip.css deleted file mode 100644 index 8dfbfed..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tree.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tree.css deleted file mode 100644 index ea955cb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/validatebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/window.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/window.css deleted file mode 100644 index 1277273..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/black/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/accordion.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/accordion.css deleted file mode 100644 index 26db0fa..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D4D4D4; -} -.accordion .accordion-header { - background: #F2F2F2; - filter: none; -} -.accordion .accordion-header-selected { - background: #0081c2; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/calendar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/calendar.css deleted file mode 100644 index 147d4e9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #808080; -} -.calendar-day { - color: #333; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D4D4D4; -} -.calendar { - border-color: #D4D4D4; -} -.calendar-header { - background: #F2F2F2; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F5F5F5; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e6e6e6; - color: #00438a; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #0081c2; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/combo.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/combo.css deleted file mode 100644 index 9ad6756..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D4D4D4; - background-color: #ffffff; -} -.combo-arrow { - background-color: #F2F2F2; -} -.combo-arrow-hover { - background-color: #e6e6e6; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/combobox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/combobox.css deleted file mode 100644 index ae07713..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e6e6e6; - color: #00438a; -} -.combobox-item-selected { - background-color: #0081c2; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/datagrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/datagrid.css deleted file mode 100644 index 73ddac9..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.datagrid-cell-rownumber { - color: #333; -} -.datagrid-resize-proxy { - background: #bbb; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D4D4D4; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F5F5F5; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #e6e6e6; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #333; -} -.datagrid-row-alt { - background: #F5F5F5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e6e6e6; - color: #00438a; - cursor: default; -} -.datagrid-row-selected { - background: #0081c2; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D4D4D4; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/datebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/datebox.css deleted file mode 100644 index b9d2bcb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F5F5F5; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/dialog.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/dialog.css deleted file mode 100644 index 304044e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F5F5F5; -} -.dialog-toolbar { - border-bottom: 1px solid #e6e6e6; -} -.dialog-button { - border-top: 1px solid #e6e6e6; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/easyui.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/easyui.css deleted file mode 100644 index b3837ce..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/easyui.css +++ /dev/null @@ -1,2311 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e6e6e6; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D4D4D4; -} -.panel-header { - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #333; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D4D4D4; -} -.accordion .accordion-header { - background: #F2F2F2; - filter: none; -} -.accordion .accordion-header-selected { - background: #0081c2; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D4D4D4; -} -.window { - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.window-proxy { - border: 1px dashed #D4D4D4; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F5F5F5; -} -.dialog-toolbar { - border-bottom: 1px solid #e6e6e6; -} -.dialog-button { - border-top: 1px solid #e6e6e6; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D4D4D4; - background-color: #ffffff; -} -.combo-arrow { - background-color: #F2F2F2; -} -.combo-arrow-hover { - background-color: #e6e6e6; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e6e6e6; - color: #00438a; -} -.combobox-item-selected { - background-color: #0081c2; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bbb; -} -.layout-split-north { - border-bottom: 5px solid #eee; -} -.layout-split-south { - border-top: 5px solid #eee; -} -.layout-split-east { - border-left: 5px solid #eee; -} -.layout-split-west { - border-right: 5px solid #eee; -} -.layout-expand { - background-color: #F2F2F2; -} -.layout-expand-over { - background-color: #F2F2F2; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e6e6e6; - color: #00438a; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: linear-gradient(to right,#ffffff 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: linear-gradient(to right,#ffffff 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); -} -.tabs li a.tabs-inner { - color: #777; - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #F2F2F2; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D4D4D4; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e6e6e6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #f5f5f5; - background-repeat: repeat-x; - border: 1px solid #bbb; - background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #e6e6e6; - color: #00438a; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e6e6e6; - color: #00438a; - border: 1px solid #ddd; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); - background: #f5f5f5; - color: #444; - background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.datagrid-cell-rownumber { - color: #333; -} -.datagrid-resize-proxy { - background: #bbb; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D4D4D4; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F5F5F5; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #e6e6e6; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #333; -} -.datagrid-row-alt { - background: #F5F5F5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e6e6e6; - color: #00438a; - cursor: default; -} -.datagrid-row-selected { - background: #0081c2; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D4D4D4; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #e6e6e6; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #F2F2F2; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #e6e6e6; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #F2F2F2; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D4D4D4; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #808080; -} -.calendar-day { - color: #333; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D4D4D4; -} -.calendar { - border-color: #D4D4D4; -} -.calendar-header { - background: #F2F2F2; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F5F5F5; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e6e6e6; - color: #00438a; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #0081c2; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F5F5F5; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D4D4D4; -} -.spinner-arrow { - background-color: #F2F2F2; -} -.spinner-arrow-hover { - background-color: #e6e6e6; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D4D4D4; -} -.progressbar-text { - color: #333; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0081c2; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D4D4D4; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #F2F2F2; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D4D4D4; - background: #F2F2F2; -} -.slider-rule span { - border-color: #D4D4D4; -} -.slider-rulelabel span { - color: #333; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fff; - border-color: #e6e6e6; - color: #333; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fff; -} -.menu-active { - border-color: #ddd; - color: #00438a; - background: #e6e6e6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #333; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #e6e6e6; - color: #00438a; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bbb; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #e6e6e6; - color: #00438a; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D4D4D4; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #333; - border-color: #D4D4D4; -} -.tree-node-hover { - background: #e6e6e6; - color: #00438a; -} -.tree-node-selected { - background: #0081c2; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D4D4D4; - color: #333; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D4D4D4; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D4D4D4; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D4D4D4; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D4D4D4; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} -.tabs-panels { - border-color: transparent; -} -.tabs li a.tabs-inner { - border-color: transparent; - background: transparent; - filter: none; - color: #0088CC; -} -.menu-active { - background-color: #0081C2; - border-color: #0081C2; - color: #fff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #333; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/Thumbs.db b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/accordion_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/blank.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/calendar_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/combo_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/datagrid_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/datebox_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/layout_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/linkbutton_bg.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/loading.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/menu_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/messager_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/pagination_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/panel_tools.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/panel_tools.png deleted file mode 100644 index fe682ef..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/searchbox_button.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/slider_handle.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/spinner_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/tabs_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/tree_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/validatebox_warning.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/layout.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/layout.css deleted file mode 100644 index 33e172d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bbb; -} -.layout-split-north { - border-bottom: 5px solid #eee; -} -.layout-split-south { - border-top: 5px solid #eee; -} -.layout-split-east { - border-left: 5px solid #eee; -} -.layout-split-west { - border-right: 5px solid #eee; -} -.layout-expand { - background-color: #F2F2F2; -} -.layout-expand-over { - background-color: #F2F2F2; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/linkbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/linkbutton.css deleted file mode 100644 index 85f31c4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #f5f5f5; - background-repeat: repeat-x; - border: 1px solid #bbb; - background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #e6e6e6; - color: #00438a; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e6e6e6; - color: #00438a; - border: 1px solid #ddd; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); - background: #f5f5f5; - color: #444; - background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); - background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/menu.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/menu.css deleted file mode 100644 index 5595968..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fff; - border-color: #e6e6e6; - color: #333; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fff; -} -.menu-active { - border-color: #ddd; - color: #00438a; - background: #e6e6e6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #333; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/menubutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/menubutton.css deleted file mode 100644 index ea98469..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #e6e6e6; - color: #00438a; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/messager.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/messager.css deleted file mode 100644 index 503d51f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D4D4D4; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/pagination.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/pagination.css deleted file mode 100644 index c1e98bc..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D4D4D4; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/panel.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/panel.css deleted file mode 100644 index 044bd37..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e6e6e6; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D4D4D4; -} -.panel-header { - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #333; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/progressbar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/progressbar.css deleted file mode 100644 index c660f0e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D4D4D4; -} -.progressbar-text { - color: #333; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0081c2; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/propertygrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/propertygrid.css deleted file mode 100644 index abf87d6..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #e6e6e6; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #F2F2F2; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #e6e6e6; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #F2F2F2; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/searchbox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/searchbox.css deleted file mode 100644 index a650cc3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D4D4D4; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #F2F2F2; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/slider.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/slider.css deleted file mode 100644 index 6470990..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D4D4D4; - background: #F2F2F2; -} -.slider-rule span { - border-color: #D4D4D4; -} -.slider-rulelabel span { - color: #333; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/spinner.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/spinner.css deleted file mode 100644 index 97369b0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D4D4D4; -} -.spinner-arrow { - background-color: #F2F2F2; -} -.spinner-arrow-hover { - background-color: #e6e6e6; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/splitbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/splitbutton.css deleted file mode 100644 index 347155f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bbb; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #e6e6e6; - color: #00438a; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tabs.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tabs.css deleted file mode 100644 index 8c051a1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e6e6e6; - color: #00438a; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: linear-gradient(to right,#ffffff 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); - background: linear-gradient(to right,#ffffff 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); -} -.tabs li a.tabs-inner { - color: #777; - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #F2F2F2; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D4D4D4; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e6e6e6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tooltip.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tooltip.css deleted file mode 100644 index fa06fc3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D4D4D4; - color: #333; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D4D4D4; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D4D4D4; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D4D4D4; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D4D4D4; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tree.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tree.css deleted file mode 100644 index 017832b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #333; - border-color: #D4D4D4; -} -.tree-node-hover { - background: #e6e6e6; - color: #00438a; -} -.tree-node-selected { - background: #0081c2; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/validatebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/window.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/window.css deleted file mode 100644 index ad58087..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/bootstrap/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D4D4D4; -} -.window { - background-color: #F2F2F2; - background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); - background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); - background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); - background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); -} -.window-proxy { - border: 1px dashed #D4D4D4; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/accordion.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/accordion.css deleted file mode 100644 index 6b80dc2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/calendar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/calendar.css deleted file mode 100644 index 83458b2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/combo.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/combo.css deleted file mode 100644 index 42b913a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/combobox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/combobox.css deleted file mode 100644 index 0ad3cb7..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/datagrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/datagrid.css deleted file mode 100644 index 7826541..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/datebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/datebox.css deleted file mode 100644 index 6225a0d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/dialog.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/dialog.css deleted file mode 100644 index 77552bb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/easyui.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/easyui.css deleted file mode 100644 index ea7ef8f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/easyui.css +++ /dev/null @@ -1,2265 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; - border: none; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/Thumbs.db b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/accordion_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/blank.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/calendar_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/combo_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/datagrid_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/datebox_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/layout_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/linkbutton_bg.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/loading.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/menu_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/messager_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/pagination_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/panel_tools.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/panel_tools.png deleted file mode 100644 index 19ecc94..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/searchbox_button.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/slider_handle.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/spinner_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/tabs_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/tree_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/validatebox_warning.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/layout.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/layout.css deleted file mode 100644 index 0292cf5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/linkbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/linkbutton.css deleted file mode 100644 index 6a79c55..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/menu.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/menu.css deleted file mode 100644 index c6089d5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/menubutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/menubutton.css deleted file mode 100644 index 9246499..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/messager.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/messager.css deleted file mode 100644 index 3ed98c7..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/pagination.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/pagination.css deleted file mode 100644 index 3df2050..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/panel.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/panel.css deleted file mode 100644 index 2600688..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/progressbar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/progressbar.css deleted file mode 100644 index db80e3a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/propertygrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/propertygrid.css deleted file mode 100644 index 5f5fbb3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/searchbox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/searchbox.css deleted file mode 100644 index b13708d..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/slider.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/slider.css deleted file mode 100644 index a4db046..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/spinner.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/spinner.css deleted file mode 100644 index 1a28f8a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/splitbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/splitbutton.css deleted file mode 100644 index 61635c3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tabs.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tabs.css deleted file mode 100644 index 2978394..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tooltip.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tooltip.css deleted file mode 100644 index 2881b70..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tree.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tree.css deleted file mode 100644 index af7e273..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/validatebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/window.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/window.css deleted file mode 100644 index b22024a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/default/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/accordion.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/accordion.css deleted file mode 100644 index 3cb451b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/calendar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/calendar.css deleted file mode 100644 index d087f25..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/combo.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/combo.css deleted file mode 100644 index 1fdf982..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/combobox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/combobox.css deleted file mode 100644 index 71b9470..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/datagrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/datagrid.css deleted file mode 100644 index 2bad00a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/datebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/datebox.css deleted file mode 100644 index 8c41350..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/dialog.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/dialog.css deleted file mode 100644 index fcd00ad..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/easyui.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/easyui.css deleted file mode 100644 index 89660cb..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/easyui.css +++ /dev/null @@ -1,2264 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/Thumbs.db b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/accordion_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/accordion_arrows.png deleted file mode 100644 index a0b8769..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/blank.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/calendar_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/combo_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/combo_arrow.png deleted file mode 100644 index 04f4ba0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/datagrid_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/datagrid_icons.png deleted file mode 100644 index 73c4e88..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/datebox_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/layout_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/layout_arrows.png deleted file mode 100644 index bf7929f..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/linkbutton_bg.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/loading.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/menu_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/messager_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/pagination_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/pagination_icons.png deleted file mode 100644 index e0f1b07..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/panel_tools.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/panel_tools.png deleted file mode 100644 index f33f8c9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/searchbox_button.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/slider_handle.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/spinner_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/spinner_arrows.png deleted file mode 100644 index dba62bb..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/tabs_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/tabs_icons.png deleted file mode 100644 index dfa10f7..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/tree_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/validatebox_warning.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/layout.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/layout.css deleted file mode 100644 index d26772e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/linkbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/linkbutton.css deleted file mode 100644 index fd725e1..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/menu.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/menu.css deleted file mode 100644 index 51c2cff..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/menubutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/menubutton.css deleted file mode 100644 index dc61b34..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/messager.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/messager.css deleted file mode 100644 index 9b3aed2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/pagination.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/pagination.css deleted file mode 100644 index 2fc3d1f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/panel.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/panel.css deleted file mode 100644 index f38009a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/progressbar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/progressbar.css deleted file mode 100644 index 93818e3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/propertygrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/propertygrid.css deleted file mode 100644 index 90e4520..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/searchbox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/searchbox.css deleted file mode 100644 index a98939a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/slider.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/slider.css deleted file mode 100644 index 38e4e5b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/spinner.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/spinner.css deleted file mode 100644 index 0d9f2b0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/splitbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/splitbutton.css deleted file mode 100644 index f2bbb87..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tabs.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tabs.css deleted file mode 100644 index 7a48b33..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tooltip.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tooltip.css deleted file mode 100644 index 51c5b83..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tree.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tree.css deleted file mode 100644 index c705f39..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/validatebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/window.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/window.css deleted file mode 100644 index b06cfc0..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/gray/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icon.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icon.css deleted file mode 100644 index 11e0642..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icon.css +++ /dev/null @@ -1,64 +0,0 @@ -.icon-blank{ - background:url('icons/blank.gif') no-repeat center center; -} -.icon-add{ - background:url('icons/edit_add.png') no-repeat center center; -} -.icon-edit{ - background:url('icons/pencil.png') no-repeat center center; -} -.icon-remove{ - background:url('icons/edit_remove.png') no-repeat center center; -} -.icon-save{ - background:url('icons/filesave.png') no-repeat center center; -} -.icon-cut{ - background:url('icons/cut.png') no-repeat center center; -} -.icon-ok{ - background:url('icons/ok.png') no-repeat center center; -} -.icon-no{ - background:url('icons/no.png') no-repeat center center; -} -.icon-cancel{ - background:url('icons/cancel.png') no-repeat center center; -} -.icon-reload{ - background:url('icons/reload.png') no-repeat center center; -} -.icon-search{ - background:url('icons/search.png') no-repeat center center; -} -.icon-print{ - background:url('icons/print.png') no-repeat center center; -} -.icon-help{ - background:url('icons/help.png') no-repeat center center; -} -.icon-undo{ - background:url('icons/undo.png') no-repeat center center; -} -.icon-redo{ - background:url('icons/redo.png') no-repeat center center; -} -.icon-back{ - background:url('icons/back.png') no-repeat center center; -} -.icon-sum{ - background:url('icons/sum.png') no-repeat center center; -} -.icon-tip{ - background:url('icons/tip.png') no-repeat center center; -} - -.icon-mini-add{ - background:url('icons/mini_add.png') no-repeat center center; -} -.icon-mini-edit{ - background:url('icons/mini_edit.png') no-repeat center center; -} -.icon-mini-refresh{ - background:url('icons/mini_refresh.png') no-repeat center center; -} \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/back.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/back.png deleted file mode 100644 index 3fe8b17..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/back.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/blank.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/cancel.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/cancel.png deleted file mode 100644 index a432b49..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/cancel.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/cut.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/cut.png deleted file mode 100644 index 21fdb4d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/cut.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/edit_add.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/edit_add.png deleted file mode 100644 index e948508..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/edit_add.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/edit_remove.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/edit_remove.png deleted file mode 100644 index d555d92..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/edit_remove.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/filesave.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/filesave.png deleted file mode 100644 index fd0048d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/filesave.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/help.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/help.png deleted file mode 100644 index 28a0f9e..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/help.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_add.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_add.png deleted file mode 100644 index fd82b92..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_add.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_edit.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_edit.png deleted file mode 100644 index db9221a..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_edit.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_refresh.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_refresh.png deleted file mode 100644 index 6cdd016..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/mini_refresh.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/no.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/no.png deleted file mode 100644 index 37a7c74..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/no.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/ok.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/ok.png deleted file mode 100644 index 5b0f6a6..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/ok.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/pencil.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/pencil.png deleted file mode 100644 index 5b8cc89..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/pencil.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/print.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/print.png deleted file mode 100644 index fdf67a1..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/print.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/redo.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/redo.png deleted file mode 100644 index f1e45cf..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/redo.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/reload.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/reload.png deleted file mode 100644 index f51cab8..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/reload.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/search.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/search.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/search.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/sum.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/sum.png deleted file mode 100644 index fd7b32e..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/sum.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/tip.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/tip.png deleted file mode 100644 index 845e110..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/tip.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/undo.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/undo.png deleted file mode 100644 index 6129fa0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/icons/undo.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/accordion.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/accordion.css deleted file mode 100644 index 31d6079..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/calendar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/calendar.css deleted file mode 100644 index 798ed97..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/combo.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/combo.css deleted file mode 100644 index 8922f8e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/combobox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/combobox.css deleted file mode 100644 index 97205d3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/datagrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/datagrid.css deleted file mode 100644 index 7d0445a..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/datagrid.css +++ /dev/null @@ -1,252 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/datebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/datebox.css deleted file mode 100644 index b0f71e2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/dialog.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/dialog.css deleted file mode 100644 index 316cdc4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/easyui.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/easyui.css deleted file mode 100644 index 6403e3f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/easyui.css +++ /dev/null @@ -1,2238 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/Thumbs.db b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/accordion_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/blank.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/calendar_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/combo_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/datagrid_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/datebox_arrow.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/layout_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/linkbutton_bg.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/loading.gif b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/menu_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/messager_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/pagination_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/panel_tools.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/panel_tools.png deleted file mode 100644 index fe682ef..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/searchbox_button.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/slider_handle.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/spinner_arrows.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/tabs_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/tree_icons.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/validatebox_warning.png b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/layout.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/layout.css deleted file mode 100644 index 7057fb2..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/linkbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/linkbutton.css deleted file mode 100644 index 9bf5dc5..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/menu.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/menu.css deleted file mode 100644 index 5012a50..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/menubutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/menubutton.css deleted file mode 100644 index 53d830e..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/messager.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/messager.css deleted file mode 100644 index 3b9ac40..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/pagination.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/pagination.css deleted file mode 100644 index cf3268f..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/panel.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/panel.css deleted file mode 100644 index f71d5e8..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/panel.css +++ /dev/null @@ -1,119 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/progressbar.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/progressbar.css deleted file mode 100644 index 7721f1b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/propertygrid.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/propertygrid.css deleted file mode 100644 index f5ae0c4..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/searchbox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/searchbox.css deleted file mode 100644 index 4e01696..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/slider.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/slider.css deleted file mode 100644 index a0907f3..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/spinner.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/spinner.css deleted file mode 100644 index 8676724..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/splitbutton.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/splitbutton.css deleted file mode 100644 index d98239b..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tabs.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tabs.css deleted file mode 100644 index 7c95798..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tabs.css +++ /dev/null @@ -1,320 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tooltip.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tooltip.css deleted file mode 100644 index 8382539..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tree.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tree.css deleted file mode 100644 index a2ec693..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/validatebox.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/window.css b/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/window.css deleted file mode 100644 index 6d2f911..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/easyui/themes/metro/window.css +++ /dev/null @@ -1,81 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} diff --git a/J6/src/examples/com.plugin.helloworld/cir/js/export.js b/J6/src/examples/com.plugin.helloworld/cir/js/export.js deleted file mode 100644 index 706dc37..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/js/export.js +++ /dev/null @@ -1,74 +0,0 @@ - -// -// =========================== -// 导出及查询页面通用Js -// =========================== -// 此脚本依赖于:json4html.js - -// -// 配置: -// expr.portal = '这里为导出项的类名'; -// -// expr.checkParams = function (data) { -// //这里校验参数的准确性,data为Json格式 -// return true; -// }; -// -// -// - - -if (!window.$JS) { alert('请加载json4html.js文件!'); } - -var expr = { - ele: '', - appPath: '/', - hanlderPrefix: '/cir.sh.aspx/Export_', - portal: '', - _getParams: function () { - return encodeURIComponent($JS.json.toString(this.ele)); - }, - - checkParams: function (data) { - return true; - }, - getDataUrl: function () { - if (this.checkParams()) { - var _appPath = window.appPath || this.appPath; - return (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'GetExportData?portal=' + this.portal - + '¶ms=' + this._getParams(); - } - return null; - }, - showExportDialog: function (title, width, height) { - if (!expr.checkParams()) return; - var _appPath = window.appPath || this.appPath; - var url = (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'Setup?portal=' + expr.portal - + '¶ms=' + expr._getParams(); - - var dia = $JS.dialog(title || '导出数据'); - dia.open(url, width || 400, height || 300); - }, - search: function (id) { - $('#' + id).datagrid({ url: expr.getDataUrl() }); - }, - reload: function (id) { - $('#' + id).datagrid('reload'); - }, - bindTotalView: function (id) { - if (!expr.checkParams()) return; - var _appPath = window.appPath || this.appPath; - var url = (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'Export/GetTotalView?portal=' + expr.portal - + '¶ms=' + expr._getParams(); - - $JS.xhr.post(url, {}, function (json) { - $JS.json.bind(id || 'totalView', json); - }); - } -}; diff --git a/J6/src/examples/com.plugin.helloworld/cir/plugin.config b/J6/src/examples/com.plugin.helloworld/cir/plugin.config deleted file mode 100644 index baf7f8c..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/plugin.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - 640 - - 480 - - 0.5 - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/cir/query/CaseGallery.config b/J6/src/examples/com.plugin.helloworld/cir/query/CaseGallery.config deleted file mode 100644 index 55c2a22..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/query/CaseGallery.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/com.plugin.helloworld/cir/query/CaseList.config b/J6/src/examples/com.plugin.helloworld/cir/query/CaseList.config deleted file mode 100644 index 6f6b744..0000000 --- a/J6/src/examples/com.plugin.helloworld/cir/query/CaseList.config +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/com.plugin.helloworld/cir/watermark.png b/J6/src/examples/com.plugin.helloworld/cir/watermark.png deleted file mode 100644 index 76db517..0000000 Binary files a/J6/src/examples/com.plugin.helloworld/cir/watermark.png and /dev/null differ diff --git a/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.csproj b/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.csproj deleted file mode 100644 index 1336574..0000000 --- a/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.csproj +++ /dev/null @@ -1,676 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {F7F4DF05-B2AE-4A25-80F7-A14B9CD4419A} - Library - Properties - Com.Plugin - com.plugin.helloworld - v4.0 - 512 - False - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\dll\Newtonsoft.Json.dll - - - ..\..\..\dll\NPOI.dll - - - ..\..\..\dll\SharpCompress.3.5.dll - - - ..\..\..\dll\StructureMap.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - Always - - - - - - - - Always - - - - - - Always - - - Always - - - Always - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - - - {1d053644-937a-4d8e-9740-43823183a39a} - AtNet.DevFw.Data - - - {cad14dcc-112c-4b28-98eb-1ce143d09033} - AtNet.DevFw.PluginKernel - - - {275cae3e-a9e0-4de0-8031-e9137bbdd693} - AtNet.DevFw.Template - - - {8a5b5504-8d72-4f30-a50e-5856be419dea} - AtNet.DevFw.Toolkit.Data - - - {4f756ead-0c41-499c-ae91-660892b444ac} - AtNet.DevFw.Web - - - - - copy $(TargetPath) $(SolutionDir)../web/bin/$(TargetName).so -move $(TargetPath) $(SolutionDir)$(OutDir)$(TargetName).so - - - \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.sln b/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.sln deleted file mode 100644 index 1b4dafe..0000000 --- a/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.sln +++ /dev/null @@ -1,22 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.plugin.helloworld", "com.plugin.helloworld.csproj", "{F7F4DF05-B2AE-4A25-80F7-A14B9CD4419A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F7F4DF05-B2AE-4A25-80F7-A14B9CD4419A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7F4DF05-B2AE-4A25-80F7-A14B9CD4419A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F7F4DF05-B2AE-4A25-80F7-A14B9CD4419A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7F4DF05-B2AE-4A25-80F7-A14B9CD4419A}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/J6/src/examples/devfw.web/$tools/boot.bat b/J6/src/examples/devfw.web/$tools/boot.bat deleted file mode 100644 index ebf4c83..0000000 --- a/J6/src/examples/devfw.web/$tools/boot.bat +++ /dev/null @@ -1,12 +0,0 @@ -::˿ -set port=80 - -::(Ҫ趨) -set host=localhost - -::ַ -set proxy=http://www.ops.cc - - -cd ../ -start /b $tools\server-proxy.exe -host %host% -port %port% -proxy %proxy% \ No newline at end of file diff --git a/J6/src/examples/devfw.web/$tools/server-proxy.exe b/J6/src/examples/devfw.web/$tools/server-proxy.exe deleted file mode 100644 index ce0df0a..0000000 Binary files a/J6/src/examples/devfw.web/$tools/server-proxy.exe and /dev/null differ diff --git a/J6/src/examples/devfw.web/$tools/server.bat b/J6/src/examples/devfw.web/$tools/server.bat deleted file mode 100644 index 5a3e840..0000000 --- a/J6/src/examples/devfw.web/$tools/server.bat +++ /dev/null @@ -1,20 +0,0 @@ -@echo off -echo .NETй(.NET 4.0) -echo. -echo µַ, -echo serverb.vbs̨ -echo. - -::˿ -set port=80 - -::(Ҫ趨) -set host=localhost - -::˿ -set port2=8000 - - -cd ../ -start /b $tools\server-proxy.exe -host %host% -port %port% -proxy http://localhost:%port2% -start /b $tools\server_console.exe /a:./ /pm:Specific /port:%port2%" \ No newline at end of file diff --git a/J6/src/examples/devfw.web/$tools/server_console.exe b/J6/src/examples/devfw.web/$tools/server_console.exe deleted file mode 100644 index 96b7597..0000000 Binary files a/J6/src/examples/devfw.web/$tools/server_console.exe and /dev/null differ diff --git a/J6/src/examples/devfw.web/$tools/serverb.vbs b/J6/src/examples/devfw.web/$tools/serverb.vbs deleted file mode 100644 index eddff42..0000000 --- a/J6/src/examples/devfw.web/$tools/serverb.vbs +++ /dev/null @@ -1,2 +0,0 @@ -set ws=wscript.createobject("wscript.shell") -ws.run "server.bat /start",0 \ No newline at end of file diff --git a/J6/src/examples/devfw.web/AtNet.DevFw.Web.Example.csproj.user b/J6/src/examples/devfw.web/AtNet.DevFw.Web.Example.csproj.user deleted file mode 100644 index 99a85c3..0000000 --- a/J6/src/examples/devfw.web/AtNet.DevFw.Web.Example.csproj.user +++ /dev/null @@ -1,31 +0,0 @@ - - - - ShowAllFiles - - - - - - - - CurrentPage - True - False - False - False - - - - - - - - - True - True - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/Code/Application.cs b/J6/src/examples/devfw.web/Code/Application.cs deleted file mode 100644 index 70f8991..0000000 --- a/J6/src/examples/devfw.web/Code/Application.cs +++ /dev/null @@ -1,98 +0,0 @@ - -/* - * 由SharpDevelop创建。 - * 用户: Administrator - * 日期: 2013/12/10 - * 时间: 13:57 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; -using System.Web; -using System.Web.Mvc; -using System.Web.Routing; -using J6.DevFw.Framework.IO; -using J6.DevFw.PluginKernel; - -namespace J6.DevFw.Web.Example.Code -{ - /// - /// Description of HttpApplicaiton. - /// - public partial class Application : HttpApplication - { - static Application() - { - //解决依赖 - FwCtx.ResolveAssemblies(); - } - - - /// - /// 初始化 - /// - public static void ApplicationInit() - { - //设置可写权限 - IoUtil.SetDirCanWrite(FwCtx.Variables.AssetsPath); - IoUtil.SetDirCanWrite("templates/"); - IoUtil.SetDirCanWrite(PluginConfig.PLUGIN_DIRECTORY); - IoUtil.SetDirCanWrite(FwCtx.Variables.TempPath); - IoUtil.SetDirCanWrite(FwCtx.Variables.TempPath + "update"); - IoUtil.SetDirHidden("config"); - IoUtil.SetDirHidden("bin"); - - //加载插件 - WebCtx.Plugin.Connect(); - } - - protected virtual void RegisterRoutes(RouteCollection routes) - { - - // ------------------------------------------------ - // 注册首页路由,可以自由修改首页位置 - // routes.MapRoute("HomeIndex", "" - // , new { controller = "Cms", action = "Index" }); - // ------------------------------------------------ - - - // ------------------------------------------------ - // 自定义路由放在这里 - // ----------------------------------------------- - - routes.MapRoute("HomeIndex", "", - new { controller = "Home", action = "Index" }); - - routes.MapRoute("Default_Router", - "{controller}/{action}/{id}", - new { controller = "Home", action = "Index" }); - } - - protected virtual void Application_Start() - { - //初始化 - ApplicationInit(); - - //注册路由; - RouteCollection routes = RouteTable.Routes; - routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); - - //注册自定义路由 - RegisterRoutes(routes); - } - - protected virtual void Application_BeginRequest(object o, EventArgs e) - { - //mono 下编码可能会有问题 - if (FwCtx.Mono()) - { - Response.Charset = "utf-8"; - } - } - - protected virtual void Application_Error(object o, EventArgs e) - { - } - } -} diff --git a/J6/src/examples/devfw.web/Code/Controllers/HomeController.cs b/J6/src/examples/devfw.web/Code/Controllers/HomeController.cs deleted file mode 100644 index 46888ad..0000000 --- a/J6/src/examples/devfw.web/Code/Controllers/HomeController.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.Mvc; - -namespace J6.DevFw.Web.Example.Code.Controllers -{ - public class HomeController:Controller - { - public string Index() - { - return "hello,devfw!"; - } - } -} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/Code/Handler/KingEditor.cs b/J6/src/examples/devfw.web/Code/Handler/KingEditor.cs deleted file mode 100644 index 0903a19..0000000 --- a/J6/src/examples/devfw.web/Code/Handler/KingEditor.cs +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2013/12/14 - * Time: 10:33 - * - * KindEditor ASP.NET - * - * 本ASP.NET程序是演示程序,建议不要直接在实际项目中使用。 - * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - * - */ - - -using System; -using System.Collections; -using System.Web; -using System.IO; -using System.Globalization; -using System.Text.RegularExpressions; -using System.Collections.Generic; - -namespace Ops.Cms -{ - - public class EditorUploadHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState - { - private HttpContext context; - - public void ProcessRequest(HttpContext context) - { - String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1); - - string siteID=Logic.CurrentSite.SiteId.ToString(); - //文件保存目录路径 - String savePath =String.Format("/{0}s{1}/",CmsVariables.RESOURCE_PATH, siteID); - - //文件保存目录URL - string appPath=Cms.Context.ApplicationPath; - String saveUrl = String.Format("{0}/{1}s{2}/", - appPath=="/"?"":appPath, - CmsVariables.RESOURCE_PATH, - siteID); - - //定义允许上传的文件扩展名 - 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,htm,html,txt,zip,rar,gz,bz2,7z"); - - //最大文件大小 - int maxSize = 1000000; - this.context = context; - - HttpPostedFile imgFile = context.Request.Files["imgFile"]; - if (imgFile == null) - { - showError("请选择文件。"); - } - - String dirPath = AppDomain.CurrentDomain.BaseDirectory+savePath; - - checkDir: - bool isCreate = false; - if (!Directory.Exists(dirPath)) - { - Directory.CreateDirectory(dirPath).Create(); - if (!isCreate) - { - isCreate = true; - goto checkDir; - } - - 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).Create(); - } - String ymd = DateTime.Now.ToString("yyyyMM", 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(JsonAnalyzer.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(JsonAnalyzer.ToJson(hash)); - context.Response.End(); - } - - public bool IsReusable - { - get - { - return true; - } - } - } - - public class EditorFileManager : IHttpHandler,System.Web.SessionState.IRequiresSessionState - { - public void ProcessRequest(HttpContext context) - { - String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1); - - string siteId = Logic.CurrentSite.SiteId.ToString(); - - //根目录路径,相对路径 - String rootPath = String.Format("{0}s{1}/", CmsVariables.RESOURCE_PATH,siteId); - //根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ - string appPath=Cms.Context.ApplicationPath; - String rootUrl =String.Format("{0}/{1}s{2}/",appPath=="/"?"":appPath, - CmsVariables.RESOURCE_PATH, - siteId); - - //图片扩展名 - String fileTypes = "gif,jpg,jpeg,png,bmp"; - - String currentPath = ""; - String currentUrl = ""; - String currentDirPath = ""; - String moveupDirPath = ""; - - String dirPath = AppDomain.CurrentDomain.BaseDirectory+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).Create(); - } - } - - //根据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(); - 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); - } - - string files = String.Empty; - int j=0; - foreach (Hashtable h in dirFileList) - { - files += JsonAnalyzer.ToJson(h); - if (++j< dirFileList.Count) - { - files += ","; - } - } - result["file_list"] = "["+files+"]"; - context.Response.AddHeader("Content-Type", "application/json; charset=UTF-8"); - context.Response.Write(JsonAnalyzer.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/J6/src/examples/devfw.web/Global.asax b/J6/src/examples/devfw.web/Global.asax deleted file mode 100644 index aaf6e19..0000000 --- a/J6/src/examples/devfw.web/Global.asax +++ /dev/null @@ -1 +0,0 @@ -<%@ Application Language="C#" Inherits="J6.DevFw.Web.Example.Code.Application" %> diff --git a/J6/src/examples/devfw.web/Properties/AssemblyInfo.cs b/J6/src/examples/devfw.web/Properties/AssemblyInfo.cs deleted file mode 100644 index 903ea01..0000000 --- a/J6/src/examples/devfw.web/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Security; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[Assembly:AllowPartiallyTrustedCallers] -[assembly: AssemblyTitle("Ops.Cms.WebUI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Ops.Cms.WebUI")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("1a674a8f-f6ce-4dce-a019-8ac96a963cb8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/J6/src/examples/devfw.web/Web.Debug.config b/J6/src/examples/devfw.web/Web.Debug.config deleted file mode 100644 index 2e302f9..0000000 --- a/J6/src/examples/devfw.web/Web.Debug.config +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/Web.Release.config b/J6/src/examples/devfw.web/Web.Release.config deleted file mode 100644 index c358444..0000000 --- a/J6/src/examples/devfw.web/Web.Release.config +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/Web.config b/J6/src/examples/devfw.web/Web.config deleted file mode 100644 index 557ab09..0000000 --- a/J6/src/examples/devfw.web/Web.config +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/admin/default.htm b/J6/src/examples/devfw.web/admin/default.htm deleted file mode 100644 index 3452168..0000000 --- a/J6/src/examples/devfw.web/admin/default.htm +++ /dev/null @@ -1,112 +0,0 @@ - - - - - 请稍后 - - - -
                                                                                        -
                                                                                        -
                                                                                        -
                                                                                        欢迎您: - 【退出】 -
                                                                                        -
                                                                                        - -
                                                                                          针对IE7优化
                                                                                          - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/admin/ui.js b/J6/src/examples/devfw.web/admin/ui.js deleted file mode 100644 index cc6d0af..0000000 --- a/J6/src/examples/devfw.web/admin/ui.js +++ /dev/null @@ -1,11 +0,0 @@ -eval(function(p, a, c, k, e, r) { - e = function(c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; - if (!''.replace(/^/, String)) { - while (c--) r[e(c)] = k[c] || e(c); - k = [function(e) { return r[e] }]; - e = function() { return '\\w+' }; - c = 1 - }; - while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); - return p -}('4(!9.17){9.17=\'2T\'}9.2U=[];9.2V=s;4(9.28==1K){12.1L.29(9.17+\'?1q=1r&1s=2W\',6(x){3 a,2X,2a,2b;2Y(x);9.28=2a;$v.2Z.30(y,{31:2b})})}4(9.2c==1K){9.2c=s}3 2d={18:s,13:[],2e:6(a){z 7.18.D?7.18.D(a):y.D(a,7.18)},32:6(h,j){7.18=y.D(\'Y-1f-33\')[0];3 k=h;4(j&&j 34 35){3 l=j(h);4(l!=1K&&l!=s){k=l}}3 m=7.18;m.Z=\'\';3 n,K,1M,19;F(3 o=0;o0){K+=\'<1t U="G-Q" G="\'+k[o].1u+\'" r="2f:2g" Q="点击展开操作菜单">\'+k[o].P[p].1N+\'\';K+=\'<1t U="1a V"><2h 1u="36\'+p+\'">\';F(3 q=0;q\'+1M+\'\'}K+=\'\'}}m.Z+=K}7.13=7.2e(\'G-Q\');3 t=7;$v.W(7.13,6(i,e){3 f=e.L(\'G\');$v.1b.1v(e,\'2k\',(6(a,b){z 6(){a.1c(b)}})(t,e));$v.W(e.10.A(\'R\'),6(d,e){$v.1b.1v(e,\'2k\',(6(b,c,g){z 6(){c.1g(f,b);3 a=b.2l[0];4(a.19!=\'\'){1h.1c(a.Z,a.L(\'19\'))}}})(e,t,f))})})},3a:6(a){3 b=7.13;3 c=a;4(!c){4(b.u==0){z}S{c=b[0].L(\'G\')}}3 d=1i;3 f=s;3 g=s;3 h=[];3 k;$v.W(b,6(i,e){4(e.L(\'G\')!=c){e.8=\'G-Q V\';e.10.8=\'1a V\'}S{h.3b(e);e.8=\'G-Q\';4(g==s){g=e.10}}});F(3 i=0;i\')}1V(3j){l=y.1z(\'1l\')}l.1m=c;k.1W(l);7.N.1W(k);3 m=(6(t){z 6(){t.2t.3k(t)}})(7);l.2u=\'0\';l.1A(\'2u\',\'0\',0);l.1A(\'1T\',h);l.1A(\'1u\',\'3l\'+h);$v.1b.1v(l,\'1X\',m);j=y.1z(\'R\');j.3m=(6(t){z 6(){4(t.8!=\'E\')t.8=\'\'}})(j);j.3n=(6(t){z 6(){4(t.8!=\'E\')t.8=\'3o\'}})(j);j.1A(\'1T\',h);j.Z=\'\'+b+\'\'+(d==O?\'\':\'x\')+\'\';7.I.1W(j)}7.1g(j,1i)},1g:6(t,b){4(!b){7.1y()}3 c=t.1Y!=\'R\'?t.B.B:t;3 d=7.N.A(\'1k\');3 e=7.I.A(\'R\');12.W(e,6(i,a){4(a==c){a.8=\'E\';d[i].8=\'E\';d[i].r.T=\'1C%\'}S{a.8=\'\';d[i].8=\'\';d[i].r.T=\'1D\'}})},1B:6(t){3 a=-1;3 b=O;3 c=s;4(t){4(t.1Y==\'3r\'){3 d=$v.D(7.I,\'1n-1B\');3 e=7.I.A(\'R\').u-d.u;F(3 i=0;i]+>/g,\'\')){a=i;c=d[i].B.B;14}}}}S{3 f=7.I.A(\'R\');F(3 i=0;i0){3 f=7.I.A(\'R\');3 g=7.N.A(\'1k\');3 h=g[a].2l[0];4(h.1Y==\'1l\'){h.1m=\'\';h=s}7.I.2y(f[a]);7.N.2y(g[a]);4(b){7.1y();4(a>=f.u){a=f.u-1}f[a].8=\'E\';4(g[a]){g[a].8=\'E\';g[a].r.T=\'1C%\'}}}},3s:6(t){4(2w(t)==\'2x\'){3 a=-1;3 b=$v.D(7.I,\'1n-Q\');F(3 i=0;i]+>/g,\'\')){a=i;14}}4(a==-1)z s;3 c=7.N.A(\'1k\');4(a>=c.u)z s;3 d=c[a].A(\'1l\');4(d.u==0)z s;z d[0].3t}z s}};6 3u(){3 a;J.W(y.A(\'3v\'),6(i,e){4(e.Z==\'3w\'){a=e.B.A(\'1k\')[0]}});4(a){a.1u=\'3x-3y\';J.1X(a,9.17+\'?1q=3z&1s=3A&1r=1\')}}9.M={3B:6(a,b,c,d,e,f,g){3C(a,b,c,d,e,f,g)},2z:6(a,b){12.2A.1c(a,O,1C,2B,\'2C\');4(b){2D(b,2E)}},1F:6(a,b){12.2A.1c(a.K,O,1C,a.1Z?2B:-1,\'2C\');4(b){2D(b,2E)}},3D:6(a,b){7.1F({K:a,1Z:1i},b)},3E:6(){2F()},3F:6(t){9.M.1F({K:\'清除中....\'});12.1L.3G(9.17,\'1q=1r&1s=3H\',6(x){9.M.1F({K:\'缓存清除完成!\',1Z:1i});12.1L.29(\'/\')},6(x){})},2G:6(){3 a=3I.3J;3 b=y.Q;1U{9.3K.2G(a,b)}1V(e){1U{9.3L.3M(b,a,"")}1V(e){2z("浏览器不支持,请手动添加!")}}},20:6(a){4(!$(1d).B.r||$(1d).B.r.21!=\'2H\'){$(1G).r.T=\'1D\';$(1d).r.1j=\'1D\';$(2I).r.T=\'1D\';$(1G).r.2J=\'V\';$(1d).B.r.3N+=\'21:2H\'}S{$(1G).r.2J=\'\';$(1G).r.T=(9.M.22.3O-5)+\'C\';$(1d).r.1j=(9.M.22.3P-1)+\'C\';$(2I).r.T=(9.M.22.3Q-1)+\'C\';$(1d).B.r.21=\'\'}9.3R()}};3 1o=y.D(\'Y-1H\')[0];6 11(a,b){3 e=b||1o;z(e.D?e.D(a):y.D(a,e))[0]}3 23=11(\'Y-1H-1f\');3 24=11(\'Y-1H-3S\');3 25=11(\'Y-N\');3 1e=11(\'Y-1H-3T\');3 1I=11(\'Y-3U-3V\');3 1p=11(\'1O-2K\',y.2L);3 2M=11(\'Y-3W\',y.2L);6 1J(){3 a=y.2N.3X;3 b=y.2N.3Y;1o.r.T=(a-1o.1S)+\'C\';25.r.T=(1o.1w-25.1S)+\'C\';24.r.1j=(b-23.16-1e.16+1)+\'C\';1p.8=\'1O-2K\';3 c=1x.1R((b-1p.16-2M.16)/2);1p.r.1f=(1p<2O?2O:c)+\'C\'}$v.1b.1v(9,\'2P\',1J);9.3Z=6(){y.40=6(a){3 e=9.1b||a;4(e.41&&e.26==2Q){9.M.20();e.27=O;z O}S 4(e.26==2Q){9.M.20();e.27=O;z O}S 4(!e.42&&e.26==43){3 b=s;3 c=y.A(\'1l\');F(3 i=0;ig&&b]+>/g,\'\')==b){$v.1X(e.10,9.17+\'?1q=4g&1s=4h&F=4i&4j=&1r=1&4k=\'+1x.4l()+\'#4m\',6(a){});14}}}}', 62, 271, '|||var|if||function|this|className|window||||||||||||||||||style|null||length|JS|||document|return|getElementsByTagName|parentNode|px|getElementsByClassName|current|for|group|span|tabs||html|getAttribute||frames|false|childs|title|LI|else|height|class|hidden|each|loadEle|page|innerHTML|nextSibling|getDivByCls|cms|menuTitles|break|maskEle|offsetWidth|_path|ele|url|panel|event|show|e_SD|splitDiv|left|set|FwTab|true|width|DIV|IFRAME|src|tab|mainDiv|iconCtrlDiv|module|ajax|action|div|id|add|offsetHeight|Math|hiddenLoadBar|createElement|setAttribute|close|100|0px|replace|msgtip|e_HD|main|frameShadowDiv|_resizeWin|undefined|xhr|linktext|text|icon|mask|loading|floor|offsetTop|indent|try|catch|appendChild|load|nodeName|autoClose|setFullScreen|display|epix|leftDiv|rightDiv|frameDiv|keyCode|returnvalue|menuData|get|md|username|menuHandler|FwMenu|getByCls|cursor|pointer|ul|li|_|click|childNodes|initialize|fy|screen|fy1|offset|pageBeforeLoad|showLoadBar|pageLoad|frameBorder|onclick|typeof|string|removeChild|alert|tipbox|2000|up|setTimeout|1000|_loadCategoryTree|addFavorite|none|e_FT|overflow|ctrl|body|userDiv|documentElement|180|resize|122|getSelection|preventDefault|admin|sites|groupname|appinit|address|eval|json|bind|userName|init|menu|instanceof|Function|fns_|uri|fn|icon_|change|push|pageframes|pagetabs|UL|50|offsetLeft|top|frameborder|ex|apply|ifr_|onmouseout|onmouseover|hover|txt|rgt|SPAN|getWindow|contentWindow|loadApps|H2|APPS|ribbon|apps|plugin|miniapps|dialog|newDialog|tip|loadCatTree|clearCache|post|clearcache|location|href|external|sidebar|addPanel|cssText|topHeight|leftWidth|footHeight|onresize|right|split|frame|shadow|user|clientHeight|clientWidth|onload|onkeydown|altKey|ctrlKey|116|new|drag|custom|removeAllRanges|selection|empty|clientX|marginRight|marginLeft|min|max|content|category|tree|archives|siteid|rd|random|noload'.split('|'), 0, {})); \ No newline at end of file diff --git a/J6/src/examples/devfw.web/admin/welcome.htm b/J6/src/examples/devfw.web/admin/welcome.htm deleted file mode 100644 index 6683149..0000000 --- a/J6/src/examples/devfw.web/admin/welcome.htm +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -

                                                                                          欢迎使用

                                                                                          - - diff --git a/J6/src/examples/devfw.web/config/cache.pid b/J6/src/examples/devfw.web/config/cache.pid deleted file mode 100644 index 03525b0..0000000 --- a/J6/src/examples/devfw.web/config/cache.pid +++ /dev/null @@ -1 +0,0 @@ -4695 \ No newline at end of file diff --git a/J6/src/examples/devfw.web/data/clear/#db.mysql.sql b/J6/src/examples/devfw.web/data/clear/#db.mysql.sql deleted file mode 100644 index 77e145d..0000000 --- a/J6/src/examples/devfw.web/data/clear/#db.mysql.sql +++ /dev/null @@ -1,397 +0,0 @@ -CREATE DATABASE IF NOT EXISTS `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; -USE `db1`; --- MySQL dump 10.13 Distrib 5.1.61, for redhat-linux-gnu (i386) --- --- Host: localhost Database: db1 --- ------------------------------------------------------ --- Server version 5.1.61 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TImE_ZONE=@@TImE_ZONE */; -/*!40103 SET TImE_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `O_operation` --- - -DROP TABLE IF EXISTS `O_operation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_operation` ( - `ID` bigint(20) NOT NULL AUTO_INCREMENT, - `Name` varchar(255) DEFAULT NULL, - `Path` varchar(255) DEFAULT NULL, - `available` tinyint(1) DEFAULT '0', - PRImARY KEY (`ID`) -) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_operation` --- - -LOCK TABLES `O_operation` WRITE; -/*!40000 ALTER TABLE `O_operation` DISABLE KEYS */; -INSERT INTO `O_operation` VALUES (1,'友情链接','link?view=list&type=friendlink',1),(2,'分类->分类列表','catalog?view=list',1),(3,'系统->网站设置','config?id=1',1),(4,'系统->网站基本资料修改','config?id=2',1),(5,'系统->网站优化设置','config?id=3',1),(6,'错误日志','system?view=errorlog',1),(7,'内容->页面管理','archive?view=list&type=1',1),(8,'内容->添加页面','archive?view=create&type=1',1),(9,'内容->信息列表','archive?view=list&type=2',1),(10,'内容->发布信息','archive?view=create&type=2',1),(11,'分类->删除分类','app.axd?do=catalog:delete',1),(12,'分类->修改分类','app.axd?do=catalog:update',1),(13,'会员>会员列表','user?view=member',1),(14,'会员>删除会员','app.axd?do=member:delete',1),(15,'系统用户管理','user?view=user',1),(16,'删除评论','app.axd?do=archive:deletecomment',1),(17,'头部导航链接','link?view=list&type=headerlink',1),(18,'网站导航链接','link?view=list&type=navigation',1),(19,'添加新链接','link?view=create',1),(20,'修改链接','link?view=edit',1),(21,'删除链接','app.axd?do=link:delete',1),(22,'更新页面','archive?view=update&typeid=1',1),(23,'更新信息','archive?view=update&typeid=2',1),(24,'更新图文信息','archive?view=update&typeid=3',1),(25,'更新画廊信息','archive?view=update&typeid=4',1),(26,'更新视频信息','archive?view=update&typeid=5',1),(27,'更新专题信息','archive?view=update&typeid=6',1),(28,'图文信息列表','archive?view=list&typeid=3',1),(29,'画廊息列表','archive?view=list&typeid=4',1),(30,'视频信息列表','archive?view=list&typeid=5',1),(31,'专题列表','archive?view=list&typeid=6',1),(32,'发布图文信息','archive?view=create&typeid=3',1),(33,'发布画廊信息','archive?view=create&typeid=4',1),(34,'发布视频信息','archive?view=create&typeid=5',1),(35,'创建新专题','archive?view=create&typeid=6',1),(36,'清除缓存','system?view=clearcache',1),(37,'操作列表','operation?view=list',1),(38,'用户组操作权限设置','operation?view=set',1),(39,'清除错误日志','/app.axd?log:clearErrorLog',1),(40,'删除文档','archive:delete',1),(41,'刷新文档创建时间','archive:refresh',1),(42,'内容采集','/plugin/collection.ashx',1); -/*!40000 ALTER TABLE `O_operation` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_modules` --- - -DROP TABLE IF EXISTS `O_modules`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_modules` ( - `id` int(11) NOT NULL, - `name` varchar(50) NOT NULL, - `viewtemplate` varchar(50) DEFAULT NULL, - `islock` tinyint(1) DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_modules` --- - -LOCK TABLES `O_modules` WRITE; -/*!40000 ALTER TABLE `O_modules` DISABLE KEYS */; -INSERT INTO `O_modules` VALUES (1,'µ¥Ò³','${content}',1),(2,'ÐÂÎÅ×ÊѶ','${content}',1),(3,'ͼÎÄÐÅÏ¢','${content}',1),(4,'»­ÀÈÐÅÏ¢','${content}',NULL),(5,'ÊÓƵ','${content}',NULL),(6,'רÌâ','${content}',NULL); -/*!40000 ALTER TABLE `O_modules` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_members` --- - -DROP TABLE IF EXISTS `O_members`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_members` ( - `id` int(11) NOT NULL, - `username` varchar(20) DEFAULT NULL, - `password` varchar(40) DEFAULT NULL, - `avatar` varchar(255) DEFAULT NULL, - `sex` varchar(7) DEFAULT NULL, - `nickname` varchar(15) DEFAULT NULL, - `email` varchar(50) DEFAULT NULL, - `telphone` varchar(20) DEFAULT NULL, - `note` varchar(255) DEFAULT NULL, - `usergroupid` int(11) DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_members` --- - -LOCK TABLES `O_members` WRITE; -/*!40000 ALTER TABLE `O_members` DISABLE KEYS */; -/*!40000 ALTER TABLE `O_members` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_memberdetails` --- - -DROP TABLE IF EXISTS `O_memberdetails`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_memberdetails` ( - `uid` int(11) NOT NULL, - `status` varchar(10) DEFAULT NULL, - `regip` varchar(15) DEFAULT NULL, - `regtime` datetime DEFAULT NULL, - `lastlogintime` datetime DEFAULT NULL, - `token` varchar(100) DEFAULT NULL, - PRImARY KEY (`uid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_memberdetails` --- - -LOCK TABLES `O_memberdetails` WRITE; -/*!40000 ALTER TABLE `O_memberdetails` DISABLE KEYS */; -/*!40000 ALTER TABLE `O_memberdetails` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_categories` --- - -DROP TABLE IF EXISTS `O_categories`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_categories` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `pid` int(11) NOT NULL, - `moduleid` int(11) NOT NULL, - `tag` varchar(50) DEFAULT NULL, - `name` varchar(50) DEFAULT NULL, - `keywords` varchar(100) DEFAULT NULL, - `description` varchar(200) DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_categories` --- - -LOCK TABLES `O_categories` WRITE; -/*!40000 ALTER TABLE `O_categories` DISABLE KEYS */; -INSERT INTO `O_categories` VALUES (1,0,1,'page','页面',' ',' '),(2,0,2,'news','新闻','',''); -/*!40000 ALTER TABLE `O_categories` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_users` --- - -DROP TABLE IF EXISTS `O_users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_users` ( - `username` varchar(50) CHARACTER SET utf8 NOT NULL, - `password` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `name` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `groupid` int(11) DEFAULT NULL, - `available` tinyint(4) DEFAULT NULL, - `createdate` datetime DEFAULT NULL, - `lastlogindate` datetime DEFAULT NULL, - PRImARY KEY (`username`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_users` --- - -LOCK TABLES `O_users` WRITE; -/*!40000 ALTER TABLE `O_users` DISABLE KEYS */; -INSERT INTO `O_users` VALUES ('admin','285c96f7702357c07f9b5daee2660e79','系统管理员',1,1,'2011-05-20 11:44:38','2012-05-25 15:14:21'); -/*!40000 ALTER TABLE `O_users` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_comment` --- - -DROP TABLE IF EXISTS `O_comment`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_comment` ( - `id` int(16) NOT NULL, - `archiveid` varchar(16) DEFAULT NULL, - `memberid` int(11) DEFAULT NULL, - `ip` varchar(20) DEFAULT NULL, - `content` text, - `recycle` tinyint(1) DEFAULT NULL, - `createdate` datetime DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_comment` --- - -LOCK TABLES `O_comment` WRITE; -/*!40000 ALTER TABLE `O_comment` DISABLE KEYS */; -/*!40000 ALTER TABLE `O_comment` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_review` --- - -DROP TABLE IF EXISTS `O_review`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_review` ( - `id` varchar(255) NOT NULL, - `members` text NOT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_review` --- - -LOCK TABLES `O_review` WRITE; -/*!40000 ALTER TABLE `O_review` DISABLE KEYS */; -/*!40000 ALTER TABLE `O_review` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_message` --- - -DROP TABLE IF EXISTS `O_message`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_message` ( - `id` int(16) NOT NULL, - `senduid` int(11) DEFAULT NULL, - `receiveuid` int(11) DEFAULT NULL, - `subject` varchar(50) DEFAULT NULL, - `content` varchar(255) DEFAULT NULL, - `hasread` tinyint(1) DEFAULT NULL, - `recycle` tinyint(1) DEFAULT NULL, - `senddate` datetime DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_message` --- - -LOCK TABLES `O_message` WRITE; -/*!40000 ALTER TABLE `O_message` DISABLE KEYS */; -/*!40000 ALTER TABLE `O_message` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_logs` --- - -DROP TABLE IF EXISTS `O_logs`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_logs` ( - `id` varchar(30) NOT NULL, - `typeid` int(11) DEFAULT NULL, - `description` varchar(255) DEFAULT NULL, - `content` text, - `helplink` varchar(255) DEFAULT NULL, - `recorddate` datetime DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_logs` --- - -LOCK TABLES `O_logs` WRITE; -/*!40000 ALTER TABLE `O_logs` DISABLE KEYS */; -/*!40000 ALTER TABLE `O_logs` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_links` --- - -DROP TABLE IF EXISTS `O_links`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_links` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `type` int(11) NOT NULL, - `text` varchar(50) NOT NULL, - `uri` varchar(255) NOT NULL, - `target` varchar(50) DEFAULT NULL, - `index` int(5) DEFAULT NULL, - `visible` tinyint(1) NOT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_links` --- - -LOCK TABLES `O_links` WRITE; -/*!40000 ALTER TABLE `O_links` DISABLE KEYS */; -INSERT INTO `O_links` VALUES (1,3,'建站软件','http://www.ops.cc/soft/opsite.html','_blank',2,1),(2,3,'奥博网络','http://www.ops.cc','_blank',1,1); -/*!40000 ALTER TABLE `O_links` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_archives` --- - -DROP TABLE IF EXISTS `O_archives`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_archives` ( - `id` varchar(16) NOT NULL, - `alias` varchar(50) DEFAULT NULL, - `cid` int(11) NOT NULL, - `author` varchar(50) DEFAULT NULL, - `title` varchar(100) DEFAULT NULL, - `source` varchar(50) DEFAULT NULL, - `tags` varchar(100) DEFAULT NULL, - `outline` varchar(255) DEFAULT NULL, - `content` text, - `viewcount` varchar(50) DEFAULT NULL, - `agree` int(11) DEFAULT NULL, - `disagree` int(11) DEFAULT NULL, - `isspecial` tinyint(1) DEFAULT NULL, - `issystem` tinyint(1) DEFAULT NULL, - `visible` tinyint(1) DEFAULT NULL, - `createdate` datetime DEFAULT NULL, - `lastmodifydate` datetime DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_archives` --- - -LOCK TABLES `O_archives` WRITE; -/*!40000 ALTER TABLE `O_archives` DISABLE KEYS */; -INSERT INTO `O_archives` VALUES ('mjmpe','siteinfo',1,'admin','网站介绍','','','','网站介绍
                                                                                          ','0',0,0,0,0,1,'2012-05-25 14:32:07',NULL),('6oi94','aboutus',1,'admin','关于我们','','','','

                                                                                          关天我们



                                                                                          ','7',0,0,1,1,1,'2012-05-25 14:11:25',NULL); -/*!40000 ALTER TABLE `O_archives` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `O_usergroup` --- - -DROP TABLE IF EXISTS `O_usergroup`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `O_usergroup` ( - `id` int(11) NOT NULL, - `name` varchar(50) DEFAULT NULL, - `permissions` varchar(255) DEFAULT NULL, - PRImARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `O_usergroup` --- - -LOCK TABLES `O_usergroup` WRITE; -/*!40000 ALTER TABLE `O_usergroup` DISABLE KEYS */; -INSERT INTO `O_usergroup` VALUES (1,'超级管理员','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42'),(2,'管理员','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,40,41,42'),(3,'编辑','1,2,3,4,5,6,10,11,12,13,14,15'),(4,'会员','1,2,3,4,5,6'),(5,'游客','3,4'),(0,'',NULL); -/*!40000 ALTER TABLE `O_usergroup` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TImE_ZONE=@OLD_TImE_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2012-05-25 19:06:46 diff --git a/J6/src/examples/devfw.web/data/clear/#db_clear.db3 b/J6/src/examples/devfw.web/data/clear/#db_clear.db3 deleted file mode 100644 index 23690c0..0000000 Binary files a/J6/src/examples/devfw.web/data/clear/#db_clear.db3 and /dev/null differ diff --git a/J6/src/examples/devfw.web/data/clear/#db_clear.mdb b/J6/src/examples/devfw.web/data/clear/#db_clear.mdb deleted file mode 100644 index 1090a1f..0000000 Binary files a/J6/src/examples/devfw.web/data/clear/#db_clear.mdb and /dev/null differ diff --git a/J6/src/examples/devfw.web/data/db.db b/J6/src/examples/devfw.web/data/db.db deleted file mode 100644 index 2471b53..0000000 Binary files a/J6/src/examples/devfw.web/data/db.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/IronPython.Modules.dll b/J6/src/examples/devfw.web/framework/assemblies/IronPython.Modules.dll deleted file mode 100644 index 6277cbf..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/IronPython.Modules.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/IronPython.dll b/J6/src/examples/devfw.web/framework/assemblies/IronPython.dll deleted file mode 100644 index 35a05a8..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/IronPython.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Dynamic.dll b/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Dynamic.dll deleted file mode 100644 index f6bb268..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Dynamic.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Scripting.Metadata.dll b/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Scripting.Metadata.dll deleted file mode 100644 index d0d9ad0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Scripting.Metadata.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Scripting.dll b/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Scripting.dll deleted file mode 100644 index 89909ef..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/Microsoft.Scripting.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/Mono.Data.Sqlite.dll b/J6/src/examples/devfw.web/framework/assemblies/Mono.Data.Sqlite.dll deleted file mode 100644 index 71549f1..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/Mono.Data.Sqlite.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/MySql.Data.dll b/J6/src/examples/devfw.web/framework/assemblies/MySql.Data.dll deleted file mode 100644 index 088ef1c..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/MySql.Data.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/NetPay.dll b/J6/src/examples/devfw.web/framework/assemblies/NetPay.dll deleted file mode 100644 index 95d04fc..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/NetPay.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/Newtonsoft.Json.dll b/J6/src/examples/devfw.web/framework/assemblies/Newtonsoft.Json.dll deleted file mode 100644 index a7dfbe0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/Newtonsoft.Json.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/RouteDebug.dll b/J6/src/examples/devfw.web/framework/assemblies/RouteDebug.dll deleted file mode 100644 index 52ab77f..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/RouteDebug.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/SharpCompress.3.5.dll b/J6/src/examples/devfw.web/framework/assemblies/SharpCompress.3.5.dll deleted file mode 100644 index 0438fd5..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/SharpCompress.3.5.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/System.Web.Mvc.dll b/J6/src/examples/devfw.web/framework/assemblies/System.Web.Mvc.dll deleted file mode 100644 index 775ac88..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/System.Web.Mvc.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/System.Web.Routing.dll b/J6/src/examples/devfw.web/framework/assemblies/System.Web.Routing.dll deleted file mode 100644 index 222866e..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/System.Web.Routing.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/com.NetCrawl.dll b/J6/src/examples/devfw.web/framework/assemblies/com.NetCrawl.dll deleted file mode 100644 index aae064f..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/com.NetCrawl.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/leveldb-sharp.dll b/J6/src/examples/devfw.web/framework/assemblies/leveldb-sharp.dll deleted file mode 100644 index 4819a03..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/leveldb-sharp.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/leveldb.dll b/J6/src/examples/devfw.web/framework/assemblies/leveldb.dll deleted file mode 100644 index 6a72573..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/leveldb.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assemblies/ops.region.dll b/J6/src/examples/devfw.web/framework/assemblies/ops.region.dll deleted file mode 100644 index 8db78a5..0000000 Binary files a/J6/src/examples/devfw.web/framework/assemblies/ops.region.dll and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/api.js b/J6/src/examples/devfw.web/framework/assets/api.js deleted file mode 100644 index f9f3c75..0000000 --- a/J6/src/examples/devfw.web/framework/assets/api.js +++ /dev/null @@ -1,28 +0,0 @@ -/* 此文件由系统自动生成! */ -// -//文件:Cms Javascript WebApi -//版本: 0.0.1 -//时间:2014-06-21 -// -if (!window.$JS) alert('未加载core.js!'); -$JS.extend({ - api: { - path:'', - request: function (apiName, params, call, errCall) { - var uri = this.path+'/webapi?key=11857832134&name=' + apiName; - for (var key in params) { - uri += '&' + key + '=' + params[key]; - } - $JS.xhr.request({ uri: uri, params: {}, method: 'GET', data: 'json' }, { - success: call, - error:errCall}); - }, - getRLink: function (contentId,callback,error) { - this.request('rlink', - { contentId: contentId }, - callback, - error - ); - } - } -}); \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/coder/cdr.css b/J6/src/examples/devfw.web/framework/assets/coder/cdr.css deleted file mode 100644 index c4c5f2e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/cdr.css +++ /dev/null @@ -1,246 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 500px; -} -.CodeMirror-scroll { - /* Set scrolling behaviour here */ - overflow: auto; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; -} - -/* CURSOR */ - -.CodeMirror div.CodeMirror-cursor { - border-left: 1px solid black; - z-index: 3; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; - z-index: 1; -} -/* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {} - -.cm-tab { display: inline-block; } - -/* DEFAULT THEME */ - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable {color: black;} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-property {color: black;} -.cm-s-default .cm-operator {color: black;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-error {color: #f00;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} - -.cm-invalidchar {color: #f00;} - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - line-height: 1; - position: relative; - overflow: hidden; - background: white; - color: black; -} - -.CodeMirror-scroll { - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; padding-right: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; -} -.CodeMirror-sizer { - position: relative; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actuall scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; - z-index: 6; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - height: 100%; - padding-bottom: 30px; - z-index: 3; -} -.CodeMirror-gutter { - height: 100%; - padding-bottom: 30px; - margin-bottom: -32px; - display: inline-block; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-lines { - cursor: text; -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget { - display: inline-block; -} - -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; height: 0px; - overflow: hidden; - visibility: hidden; -} -.CodeMirror-measure pre { position: static; } - -.CodeMirror div.CodeMirror-cursor { - position: absolute; - visibility: hidden; - border-right: none; - width: 0; -} -.CodeMirror-focused div.CodeMirror-cursor { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursor { - visibility: hidden; - } -} diff --git a/J6/src/examples/devfw.web/framework/assets/coder/cdr.js b/J6/src/examples/devfw.web/framework/assets/coder/cdr.js deleted file mode 100644 index 31bfa8e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/cdr.js +++ /dev/null @@ -1 +0,0 @@ -eval(function (p, a, c, k, e, r) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] } ]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p } ('3e.1r=(1a(){"dV gV";14 z=/gW\\/\\d/i.1I(2P.3l);14 A=/gX \\d/.1I(2P.3l);14 B=A&&(1R.8B==1d||1R.8B<8);14 C=A&&(1R.8B==1d||1R.8B<9);14 D=/gY\\//.1I(2P.3l);14 E=D&&/gZ\\/\\d+\\.\\d+/.1I(2P.3l);14 F=/h0\\//.1I(2P.3l);14 G=/ar\\//.1I(2P.3l);14 H=/h1 h2/.1I(2P.h3);14 I=/h4\\//.1I(2P.3l);14 J=/as dW X 1\\d\\D([7-9]|\\d\\d)\\D/.1I(2P.3l);14 K=/as dW X 1\\d\\D([8-9]|\\d\\d)\\D/.1I(2P.3l);14 L=/h5/.1I(2P.3l);14 M=/h6/.1I(2P.3l)&&/h7\\/\\w+/.1I(2P.3l);14 N=M||/h8|h9|ha|ar hb|ar hc|hd/i.1I(2P.3l);14 O=M||/as/.1I(2P.dX);14 P=/he/i.1I(2P.dX);14 Q=G&&2P.3l.5e(/dY\\/(\\d*\\.\\d*)/);if(Q)Q=dZ(Q[1]);14 R=O&&(E||G&&(Q==1d||Q<12.11));14 S=z||(A&&!C);14 T=1q,5Y=1q;1a 1r(b,c){if(!(1b 6X 1r))1c 2d 1r(b,c);1b.1t=c=c||{};1l(14 d in bc)if(!c.3w(d)&&bc.3w(d))c[d]=bc[d];8C(c);14 f=2o c.2W=="2h"?0:c.2W.1w;14 g=1b.1f=e0(b,f);g.1T.1r=1b;au(1b);if(c.5Z&&!N)3x(1b);1b.1F={8D:[],6Y:[],61:0,62:1q,2I:1q,6Z:1q,70:1q,5f:1q,e1:2d 8E()};av(1b);if(c.3p)1b.1f.1T.2p+=" 1r-2z";14 h=c.2W;if(2o h=="2h")h=2d bn(c.2W,c.2i);1S(1b,aw)(1b,h);if(A)2A(3H(4q,1b,1m),20);e2(1b);14 j;3q{j=(1R.63==g.1U)}4r(e){}if(j||(c.5Z&&!N))2A(3H(4O,1b),20);1k 8F(1b);1S(1b,1a(){1l(14 a in bb)if(bb.hf(a))bb[a](1b,c[a],bd);1l(14 i=0;id.4R){d.4R=b;d.4g=a}})}1a 8C(a){14 b=1q;1l(14 i=0;id.1A.2B;14 f=c>d.1A.2t;if(f){d.2R.1s.1f="7g";d.2R.1s.2l=e?7h(d.24)+"1O":"0";d.2R.2T.1s.1v=(c-d.1A.2t+d.2R.2t)+"1O"}1k d.2R.1s.1f="";if(e){d.2Q.1s.1f="7g";d.2Q.1s.2q=f?7h(d.24)+"1O":"0";d.2Q.2T.1s.2e=(d.1A.5m-d.1A.2B+d.2Q.2B)+"1O"}1k d.2Q.1s.1f="";if(e&&f){d.5h.1s.1f="7g";d.5h.1s.1v=d.5h.1s.2e=7h(d.24)+"1O"}1k d.5h.1s.1f="";if(J&&7h(d.24)===0)d.2R.1s.76=d.2Q.1s.eb=K?"e5":"hz"}1a 8U(a,b,c){14 d=a.1A.1H,1v=a.1T.2t;if(2o c=="5n")d=c;1k if(c){d=c.1x;1v=c.2l-c.1x}d=1z.aM(d-7i(a));14 e=1z.8S(d+1v);1c{1h:7j(b,d),1e:7j(b,e)}}1a aN(b){14 c=b.1f;if(!c.aD&&(!c.2j.2T||!b.1t.6f))1c;14 d=8V(c)-c.1A.1M+b.1i.1M;14 e=c.2j.2F,l=d+"1O";1l(14 n=c.3r.2T;n;n=n.4h)if(n.5o){1l(14 i=0,a=n.5o;i=a.1f.2S&&e.1e<=a.1f.2M)1W;b=[]}1c 6g}1a eh(c,d,f){14 g=c.1f,1i=c.1i;if(!g.1T.2B){g.2S=g.2M=1i.1w;g.4s=0;1c}if(d.1g==0&&f.1h>g.2S&&f.1em&&g.2M-m<20)m=1z.2f(k,g.2M);if(5Y){l=3h(5p(1i,1G(1i,l)));1P(m=n[0].1e)n=[];1k n=ej(n,d);if(5Y)1l(14 i=0;io.1h)o.1e=p;1k{n.2x(i--,1);1W}}}14 q=0;1l(14 i=0;im)o.1e=m;if(o.1h>=o.1e)n.2x(i--,1);1k q+=o.1e-o.1h}if(q==m-l&&l==g.2S&&m==g.2M){aP(c);1c}n.hB(1a(a,b){1c a.1h-b.1h});3q{14 r=1R.63}4r(e){}if(q<(m-l)*.7)g.3r.1s.1f="3y";ek(c,l,m,n,j);g.3r.1s.1f="";if(r&&1R.63!=r&&r.2Z)r.6i();14 s=l!=g.2S||m!=g.2M||g.aC!=g.1T.2t;if(s)g.aC=g.1T.2t;g.2S=l;g.2M=m;7b(c,3I);14 t=g.3r.8Y;1l(14 u=g.3r.2T,1v;u;u=u.4h)if(u.4u){if(B){14 v=u.8Y+u.2Z;1v=v-t;t=v}1k{14 w=2G(u);1v=w.2l-w.1x}14 x=u.4u.1v-1v;if(1v<2)1v=6b(g);if(x>.el||x<-.el){3U(u.4u,1v);14 y=u.4u.2u;if(y)1l(14 i=0;i=d.1e){6j.1B(d)}1k{if(c.1h>d.1h)6j.1B({1h:d.1h,1e:c.1h});if(c.1e4T){1P(1C.4u!=a)1C=8Z(1C);if(3K&&l<=4T&&1C.aV)aW(1C.aV,8W(f.1t,4T));1C=1C.4h}1k{if(a.2u)1l(14 j=0,3M=1C,7o;3M&&j<20;++j,3M=3M.4h)if(3M.4u==a&&/1J/i.1I(3M.er)){7o=3M;1W}14 e=es(f,a,4T,m,7o);if(e!=7o){o.5r(e,1C)}1k{1P(1C!=7o)1C=8Z(1C);1C=1C.4h}e.4u=a}++4T});1P(1C)1C=8Z(1C)}1a es(a,b,c,d,e){14 f=95(a,b);14 g=b.3X,1f=a.1f,2z;if(!a.1t.3K&&!g&&!b.4v&&!b.4w&&!b.2u)1c f;if(e){e.5o=1d;14 h=1m,aX=0;1l(14 n=e.2T,3N;n;n=3N){3N=n.4h;if(!/\\aY-aU\\b/.1I(n.2p)){e.7n(n)}1k{1l(14 i=0,1w=1m;i3){4j(1u,d.1x,1d,d.2l);1u=6k;if(d.2l<3C.1x)4j(1u,d.2l,1d,3C.1x)}if(h==1d&&b==k)2q=o;if(g==1d&&a==0)1u=6k;7r=i?1z.2f(3C.1x,7r):1z.29(3C.2l,7r);if(1u<6k+1)1u=6k;4j(1u,3C.1x,2q-1u,3C.2l)});1c 7r}if(1p.1h.1j==1p.1e.1j){7q(1p.1h.1j,1p.1h.ch,1p.1e.ch)}1k{14 p=1G(1i,1p.1h.1j);14 q=p,3V,5t=[1p.1h.1j,1p.1h.ch],b5;1P(3V=6d(q)){14 r=3V.2Y();5t.1B(r.1h.ch,r.1e.1j,r.1e.ch);if(r.1e.1j==1p.1e.1j){5t.1B(1p.1e.ch);b5=1m;1W}q=1G(1i,r.1e.1j)}if(b5){1l(14 i=0;i<5t.1g;i+=3)7q(5t[i],5t[i+1],5t[i+2])}1k{14 s,7s,b6=1G(1i,1p.1e.1j);if(1p.1h.ch)s=7q(1p.1h.1j,1p.1h.ch,1d,1q);1k s=5q(l,p)-m.4s;if(!1p.1e.ch)7s=5q(l,b6)-m.4s;1k 7s=7q(1p.1e.1j,7f(b6)?1d:0,1p.1e.ch,1m);if(s<7s)4j(6k,s,1d,7s)}}41(m.72,n);m.72.1s.1f=""}1a 7t(a){if(!a.1F.2I)1c;14 b=a.1f;eA(b.b7);14 c=1m;b.2J.1s.97=b.4e.1s.97="";b.b7=hF(1a(){b.2J.1s.97=b.4e.1s.97=(c=!c)?"":"ay"},a.1t.eB)}1a 7b(a,b){if(a.1i.2i.4y&&a.1i.3g=d.1f.2M)1c;14 f=+2d 98+d.1t.eD;14 g=4k(e.2i,6l(d,e.3g));14 h=[],7v;e.2E(e.3g,1z.2f(e.1w+e.1Y,d.1f.2M+b8),1a(a){if(e.3g>=d.1f.2S){14 b=a.3J;a.3J=b9(d,a,g);14 c=!b||b.1g!=a.3J.1g;1l(14 i=0;!c&&if){7b(d,d.1t.eE);1c 1m}});if(h.1g)1S(d,1a(){1l(14 i=0;ieG;--c){if(c<=1i.1w)1c 1i.1w;14 d=1G(1i,c-1);if(d.3S)1c c;14 e=4V(d.1o,1d,a.1t.4l);if(99==1d||b>e){99=c-1;b=e}}1c 99}1a 6l(c,n){14 d=c.1i,1f=c.1f;if(!d.2i.4y)1c 1m;14 e=eF(c,n),1F=e>d.1w&&1G(d,e-1).3S;if(!1F)1F=4y(d.2i);1k 1F=4k(d.2i,1F);d.2E(e,n,1a(a){bF(c,a,1F);14 b=e==n-1||e%5==0||e>=1f.2S&&e<1f.2M;a.3S=b?4k(d.2i,1F):1d;++e});1c 1F}1a 7i(a){1c a.4f.8Y}1a aL(a){1c a.73.2Z-a.4f.2Z}1a b2(a){14 e=41(a.24,1E("31",1d,1d,"1o-hG: 1u")).23(1E("42","x"));1c e.aQ}1a 9a(a,b,c,d){14 e=-1;d=d||9b(a,b);1l(14 f=c;1m;f+=e){14 r=d[f];if(r)1W;if(e<0&&f==0)e=1}1c{1u:fc?r.1u:r.2q,1x:r.1x,2l:r.2l}}1a bG(a,b){14 c=a.1f.8O;1l(14 i=0;i3I){14 e=1R.b4();14 f=10,n=d.9c.1g;1l(14 i=0,eJ=1z.8S(n/f);i3P||6n=3P||m<=o&&3P>=6n||1z.2f(3P,6n)-1z.29(m,o)>=(3P-m)>>1){k[j]=1z.2f(m,o);k[j+1]=1z.29(3P,6n);1W}}if(j==k.1g)k.1B(m,3P);14 p=l.2q;if(1C.bI)p=2G(1C.bI).1u;6m[i]={1u:l.1u-h.1u,2q:p-h.1u,1x:j}}1l(14 i=0,1C;i<6m.1g;++i)if(1C=6m[i]){14 q=1C.1x;1C.1x=k[q];1C.2l=k[q+1]}1c 6m}1a eM(a,b){14 c=1q;if(b.21)1l(14 i=0;ich)1c 4X(ch,3Z);14 l=3Z?k.1e:k.1h,2q=3Z?k.1h:k.1e;if(l==ch){if(i&&k.28<(n=h[i-1]).28)4A=4X(n.28%2?n.1h:n.1e-1,1m);1k 4A=4X(3Z&&k.1h!=k.1e?ch-1:ch);if(3Z==9d)j=4A;1k 3B=4A}1k if(2q==ch){14 n=i4i)1c 7y(b.1w+b.1Y-1,1G(b,4i).1o.1g,1m);if(x<0)x=0;1P(1m){14 d=1G(b,c);14 e=eR(a,d,c,x,y);14 f=6d(d);14 g=f&&f.2Y();if(f&&e.ch>=g.1h.ch)c=g.1e.1j;1k 1c e}}1a eR(c,d,e,x,y){14 f=y-5q(c,d);14 g=1q,bL=2*c.1f.1T.2B;14 h=9b(c,d);1a 9e(a){14 b=3O(c,1D(e,a),"1j",d,h);g=1m;if(f>b.2l)1c b.1u-bL;1k if(f7B)1c 7y(e,1e,9g);1P(1m){if(j?1e==k||1e==9h(d,k,1):1e-k<=1){14 m=x-l<7B-x,ch=m?k:1e;1P(bv.1I(d.1o.2C(ch)))++ch;14 n=7y(e,ch,m?bM:9g);n.eS=m;1c n}14 o=1z.8S(9f/2),4Y=k+o;if(j){4Y=k;1l(14 i=0;ix){1e=4Y;7B=p;if(9g=g)7B+=9i;9f=o}1k{k=4Y;l=p;bM=g;9f-=o}}}14 U;1a 6b(a){if(a.68!=1d)1c a.68;if(U==1d){U=1E("31");1l(14 i=0;i<49;++i){U.23(1R.5w("x"));U.23(1E("br"))}U.23(1R.5w("x"))}41(a.24,U);14 b=U.2Z/50;if(b>3)a.68=b;7c(a.24);1c b||1}1a aJ(a){if(a.67!=1d)1c a.67;14 b=1E("42","x");14 c=1E("31",[b]);41(a.24,c);14 d=b.2F;if(d>2)a.67=d;1c d||10}14 V=0;1a 5x(a){a.1Z={2V:[],7C:1d,9j:1d,6p:1d,7D:1q,6q:1q,5y:1q,3D:1q,id:++V};if(!7E++)bq=[]}1a 5z(a){14 b=a.1Z,1i=a.1i,1f=a.1f;a.1Z=1d;if(b.5y)8R(a);if(1f.5i&&!a.1t.3p&&1f.4g){14 c=eM(a,1f.4g);1f.2X.1s.76=1z.29(0,c+3+br)+"1O";1f.5i=1q;14 d=1z.29(0,1f.2X.aQ+1f.2X.2F-1f.1A.2B);if(d<1i.1M&&!b.3D)5A(a,1z.2f(1f.1A.1M,d),1m)}14 e,6g;if(b.3D){e=b.3D}1k if(b.7D&&1f.1A.2t){14 f=3O(a,1i.1p.1Q);e=7F(a,f.1u,f.1x,f.1u,f.2l)}if(b.2V.1g||e&&e.1H!=1d){6g=7l(a,b.2V,e&&e.1H);if(a.1f.1A.2Z)a.1i.1H=a.1f.1A.1H}if(!6g&&b.7D)8X(a);if(b.3D){1f.1A.1H=1f.2R.1H=1i.1H=e.1H;1f.1A.1M=1f.2Q.1M=1i.1M=e.1M;aN(a);if(b.9k)bN(a,1L(a.1i,b.9k),b.eT)}1k if(e){eU(a)}if(b.7D)7t(a);if(a.1F.2I&&b.7C)4q(a,b.9j);14 g=b.7G,7H=b.bO;if(g)1l(14 i=0;i9i||c.3b("\\n")>-1)b.2W=a.1f.3f="";1k a.1f.3f=c;if(d)5z(a);a.1F.70=1q;1c 1m}1a 4q(a,b){14 c,96,1i=a.1i;if(!2m(1i.1p.1h,1i.1p.1e)){a.1f.3f="";c=bC&&(1i.1p.1e.1j-1i.1p.1h.1j>3I||(96=a.6w()).1g>9i);14 d=c?"-":96||a.6w();a.1f.1U.2W=d;if(a.1F.2I)bQ(a.1f.1U);if(A&&!C)a.1f.9n=d}1k if(b){a.1f.3f=a.1f.1U.2W="";if(A&&!C)a.1f.9n=1d}a.1f.8P=c}1a 3x(a){if(a.1t.4Z!="bR"&&(!N||1R.63!=a.1f.1U))a.1f.1U.6i()}1a 6u(a){1c a.1t.4Z||a.1i.6x}1a e2(c){14 d=c.1f;1N(d.1A,"bS",1S(c,eW));if(A)1N(d.1A,"eX",1S(c,1a(e){14 a=5C(c,e);if(!a||bT(c,e)||51(c.1f,e))1c;2K(e);14 b=9p(1G(c.1i,a.1j).1o,a);2s(c.1i,b.1h,b.1e)}));1k 1N(d.1A,"eX",2K);1N(d.4f,"hJ",1a(e){if(!51(d,e))2K(e)});if(!S)1N(d.1A,"hK",1a(e){bU(c,e)});1N(d.1A,"2w",1a(){if(d.1A.2t){6y(c,d.1A.1H);5A(c,d.1A.1M,1m);3j(c,"2w",c)}});1N(d.2R,"2w",1a(){if(d.1A.2t)6y(c,d.2R.1H)});1N(d.2Q,"2w",1a(){if(d.1A.2t)5A(c,d.2Q.1M)});1N(d.1A,"hL",1a(e){bV(c,e)});1N(d.1A,"hM",1a(e){bV(c,e)});1a bW(){if(c.1F.2I)2A(3H(3x,c),0)}1N(d.2Q,"bS",bW);1N(d.2R,"bS",bW);1N(d.1T,"2w",1a(){d.1T.1H=d.1T.1M=0});1a bX(){d.67=d.68=1d;5k(c);bP(c,3H(2N,c))}1N(3e,"eY",bX);1a bY(){1l(14 p=d.1T.3A;p&&p!=1R.5u;p=p.3A){}if(p)2A(bY,eZ);1k 3m(3e,"eY",bX)}2A(bY,eZ);1N(d.1U,"hN",1S(c,1a(e){if(c.1t.5D&&c.1t.5D(c,6z(e)))1c;if(e.4C==16)c.1i.1p.3i=1q}));1N(d.1U,"1U",3H(6t,c));1N(d.1U,"hO",1S(c,bZ));1N(d.1U,"hP",1S(c,f0));1N(d.1U,"6i",3H(4O,c));1N(d.1U,"9q",3H(8F,c));1a c0(e){if(c.1t.7K&&c.1t.7K(c,6z(e)))1c;5E(e)}if(c.1t.6A){1N(d.1A,"hQ",1a(e){f1(c,e)});1N(d.1A,"hR",c0);1N(d.1A,"hS",c0);1N(d.1A,"c1",1S(c,f2))}1N(d.1A,"6v",1a(e){if(51(d,e))1c;3x(c);6t(c)});1N(d.1U,"6v",1a(){c.1F.70=1m;6t(c)});1a c2(){if(d.8P){d.3f="";d.8P=1q;d.1U.2W=c.6w();bQ(d.1U)}}1N(d.1U,"hT",c2);1N(d.1U,"6B",c2);if(I)1N(d.2X,"5F",1a(){if(1R.63==d.1U)d.1U.9q();3x(c)})}1a 51(a,e){1l(14 n=9r(e);n!=a.1T;n=n.3A){if(!n)1c 1m;if(/\\aY-(?:1j)?c3\\b/.1I(n.2p)||n.3A==a.2X&&n!=a.73)1c 1m}}1a 5C(a,e,b){14 c=a.1f;if(!b){14 d=9r(e);if(d==c.2Q||d==c.2Q.2T||d==c.2R||d==c.2R.2T||d==c.5h)1c 1d}14 x,y,c4=2G(c.4f);3q{x=e.7L;y=e.5G}4r(e){1c 1d}1c 5v(a,x-c4.1u,y-c4.1x)}14 W,7M;1a eW(e){14 f=1b,1f=f.1f,1i=f.1i,1p=1i.1p;1p.3i=e.9s;if(51(1f,e)){if(!D){1f.1A.64=1q;2A(1a(){1f.1A.64=1m},3I)}1c}if(bT(f,e))1c;14 g=5C(f,e);hU(c5(e)){f3 3:if(S)bU.52(f,f,e);1c;f3 2:if(g)2s(f.1i,g);2A(3H(3x,f),20);2K(e);1c}if(!g){if(9r(e)==1f.1A)2K(e);1c}if(!f.1F.2I)4O(f);14 h=+2d 98,3t="9t";if(7M&&7M.9u>h-c6&&2m(7M.1y,g)){3t="f4";2K(e);2A(3H(3x,f),20);f5(f,g.1j)}1k if(W&&W.9u>h-c6&&2m(W.1y,g)){3t="f6";7M={9u:h,1y:g};2K(e);14 i=9p(1G(1i,g.1j).1o,g);2s(f.1i,i.1h,i.1e)}1k{W={9u:h,1y:g}}14 j=g;if(f.1t.6A&&bw&&!6u(f)&&!2m(1p.1h,1p.1e)&&!2v(g,1p.1h)&&!2v(1p.1e,g)&&3t=="9t"){14 k=1S(f,1a(a){if(D)1f.1A.64=1q;f.1F.5f=1q;3m(1R,"5F",k);3m(1f.1A,"c1",k);if(1z.6C(e.7L-a.7L)+1z.6C(e.5G-a.5G)<10){2K(a);2s(f.1i,g);3x(f)}});if(D)1f.1A.64=1m;f.1F.5f=k;if(1f.1A.6A)1f.1A.6A();1N(1R,"5F",k);1N(1f.1A,"c1",k);1c}2K(e);if(3t=="9t")2s(f.1i,1L(1i,g));14 l=1p.1h,7N=1p.1e,c7=g;1a c8(a){if(2m(c7,a))1c;c7=a;if(3t=="9t"){2s(f.1i,1L(1i,g),a);1c}l=1L(1i,l);7N=1L(1i,7N);if(3t=="f6"){14 b=9p(1G(1i,a.1j).1o,a);if(2v(a,l))2s(f.1i,b.1h,7N);1k 2s(f.1i,l,b.1e)}1k if(3t=="f4"){if(2v(a,l))2s(f.1i,7N,1L(1i,1D(a.1j,0)));1k 2s(f.1i,l,1L(1i,1D(a.1j+1,0)))}}14 m=2G(1f.1T);14 n=0;1a 4D(e){14 a=++n;14 b=5C(f,e,1m);if(!b)1c;if(!2m(b,j)){if(!f.1F.2I)4O(f);j=b;c8(b);14 c=8U(1f,1i);if(b.1j>=c.1e||b.1jm.2l?20:0;if(d)2A(1S(f,1a(){if(n!=a)1c;1f.1A.1H+=d;4D(e)}),50)}}1a 2D(e){n=6h;14 a=5C(f,e);if(a)c8(a);2K(e);3x(f);3m(1R,"f8",o);3m(1R,"5F",p)}14 o=1S(f,1a(e){if(!A&&!c5(e))2D(e);1k 4D(e)});14 p=1S(f,2D);1N(1R,"f8",o);1N(1R,"5F",p)}1a f2(e){14 c=1b;if(51(c.1f,e)||(c.1t.7K&&c.1t.7K(c,6z(e))))1c;2K(e);14 d=5C(c,e,1m),6D=e.7O.6D;if(!d||6u(c))1c;if(6D&&6D.1g&&3e.f9&&3e.hV){14 n=6D.1g,g=6E(n),fa=0;14 f=1a(a,i){14 b=2d f9;b.hW=1a(){g[i]=b.3a;if(++fa==n){d=1L(c.1i,d);5B(c.1i,{1h:d,1e:d,1o:bA(g.c9("\\n")),2y:"6v"},"ca")}};b.hX(a)};1l(14 i=0;i=1z.aM(2G(b.2j).2q))1c 1q;2K(e);if(!5H(a,"fd"))1c 1m;14 d=2G(b.3r);if(9v>d.2l)1c 1m;9v-=d.1x-b.4s;1l(14 i=0;i=c){14 f=7j(a.1i,9v);14 h=a.1t.2j[i];3W(a,"fd",a,f,h,e);1W}}1c 1m}1a f1(a,e){if(A&&!a.1F.5f){5E(e);1c}if(51(a.1f,e))1c;14 b=a.6w();e.7O.hZ("fb",b);if(e.7O.fe){14 c=1E("i0",1d,1d,"2L: ff; 1u: 0; 1x: 0;");if(G){c.2e=c.1v=1;a.1f.1T.23(c);c.i1=c.8Y}if(H){if(a.1f.cb){c=a.1f.cb}1k{a.1f.cb=c;c.i2="6m:i3/i4;i5,i6==";a.1f.1T.23(c)}}e.7O.fe(c,0,0);if(G)c.3A.7n(c)}}1a 6y(a,b){if(1z.6C(a.1i.1H-b)<2)1c;a.1i.1H=b;if(!z)7l(a,[],b);if(a.1f.1A.1H!=b)a.1f.1A.1H=b;if(a.1f.2R.1H!=b)a.1f.2R.1H=b;if(z)7l(a,[])}1a 5A(a,b,c){if(c?b==a.1i.1M:1z.6C(a.1i.1M-b)<2)1c;b=1z.2f(b,a.1f.1A.5m-a.1f.1A.2B);a.1i.1M=b;aN(a);if(a.1f.1A.1M!=b)a.1f.1A.1M=b;if(a.1f.2Q.1M!=b)a.1f.2Q.1M=b}14 X=0,3Q=1d;if(A)3Q=-.53;1k if(z)3Q=15;1k if(F)3Q=-.7;1k if(H)3Q=-1/3;1a bV(d,e){14 f=e.i7,dy=e.i8;if(f==1d&&e.9w&&e.fg==e.i9)f=e.9w;if(dy==1d&&e.9w&&e.fg==e.ia)dy=e.9w;1k if(dy==1d)dy=e.ib;14 g=d.1f,2w=g.1A;if(!(f&&2w.5m>2w.2B||dy&&2w.6e>2w.2t))1c;if(dy&&O&&D){1l(14 h=e.fh;h!=2w;h=h.3A){if(h.4u){d.1f.aT=h;1W}}}if(f&&!z&&!G&&3Q!=1d){if(dy)6y(d,1z.29(0,1z.2f(2w.1H+dy*3Q,2w.6e-2w.2t)));5A(d,1z.29(0,1z.2f(2w.1M+f*3Q,2w.5m-2w.2B)));2K(e);g.5j=1d;1c}if(dy&&3Q!=1d){14 i=dy*3Q;14 j=d.1i.1H,3P=j+g.1T.2t;if(i<0)j=1z.29(0,j+i-50);1k 3P=1z.2f(d.1i.1v,3P+i+50);7l(d,[],{1x:j,2l:3P})}if(X<20){if(g.5j==1d){g.5j=2w.1M;g.8Q=2w.1H;g.78=f;g.79=dy;2A(1a(){if(g.5j==1d)1c;14 a=2w.1M-g.5j;14 b=2w.1H-g.8Q;14 c=(b&&g.79&&b/g.79)||(a&&g.78&&a/g.78);g.5j=g.8Q=1d;if(!c)1c;3Q=(3Q*X+c)/(X+1);++X},fi)}1k{g.78+=f;g.79+=dy}}}1a 7P(a,b,c){if(2o b=="2h"){b=bh[b];if(!b)1c 1q}if(a.1f.66&&9m(a))a.1f.66=1q;14 d=a.1i,fj=d.1p.3i,2D=1q;3q{if(6u(a))a.1F.6Z=1m;if(c)d.1p.3i=1q;2D=b(a)!=bs}7I{d.1p.3i=fj;a.1F.6Z=1q}1c 2D}1a cc(a){14 b=a.1F.8D.2a(0);if(a.1t.cd)b.1B(a.1t.cd);b.1B(a.1t.5l);1c b}14 Y;1a ce(a,e){14 c=9x(a.1t.5l),3N=c.ic;cf(Y);if(3N&&!9y(e))Y=2A(1a(){if(9x(a.1t.5l)==c)a.1t.5l=(3N.52?3N.52(1d,a):3N)},50);14 d=9z(e,1m),5I=1q;if(!d)1c 1q;14 f=cc(a);if(e.9s){5I=5J("3E-"+d,f,1a(b){1c 7P(a,b,1m)})||5J(d,f,1a(b){if(2o b=="2h"&&/^go[A-Z]/.1I(b))1c 7P(a,b)})}1k{5I=5J(d,f,1a(b){1c 7P(a,b)})}if(5I=="7Q")5I=1q;if(5I){2K(e);7t(a);if(C){e.ie=e.4C;e.4C=0}}1c 5I}1a fk(a,e,c){14 d=5J("\'"+c+"\'",cc(a),1a(b){1c 7P(a,b,1m)});if(d){2K(e);7t(a)}1c d}14 Z=1d;1a bZ(e){14 a=1b;if(!a.1F.2I)4O(a);if(A&&e.4C==27){e.fl=1q}if(a.1t.5D&&a.1t.5D(a,6z(e)))1c;14 b=e.4C;a.1i.1p.3i=b==16||e.9s;14 c=ce(a,e);if(G){Z=c?b:1d;if(!c&&b==88&&!bC&&(O?e.cg:e.9A))a.6F("")}}1a f0(e){14 a=1b;if(a.1t.5D&&a.1t.5D(a,6z(e)))1c;14 b=e.4C,9B=e.9B;if(G&&b==Z){Z=1d;2K(e);1c}if(((G&&(!e.ci||e.ci<10))||I)&&ce(a,e))1c;14 c=7k.fm(9B==1d?b:9B);if(1b.1t.9C&&1b.1i.2i.9C&&1b.1t.cj&&!6u(1b)&&1b.1i.2i.9C.3b(c)>-1)2A(1S(a,1a(){5K(a,a.1i.1p.1e.1j,"7R")}),75);if(fk(a,e,c))1c;if(A&&!C)a.1f.9n=1d;6t(a)}1a 4O(a){if(a.1t.4Z=="bR")1c;if(!a.1F.2I){3j(a,"6i",a);a.1F.2I=1m;if(a.1f.1T.2p.3M(/\\aY-2I\\b/)==-1)a.1f.1T.2p+=" 1r-2I";4q(a,1m)}7J(a);7t(a)}1a 8F(a){if(a.1F.2I){3j(a,"9q",a);a.1F.2I=1q;a.1f.1T.2p=a.1f.1T.2p.3T(" 1r-2I","")}eA(a.1f.b7);2A(1a(){if(!a.1F.2I)a.1i.1p.3i=1q},f7)}14 ba;1a bU(c,e){14 d=c.1f,1p=c.1i.1p;if(51(d,e))1c;14 f=5C(c,e),fn=d.1A.1H;if(!f||G)1c;if(2m(1p.1h,1p.1e)||2v(f,1p.1h)||!2v(f,1p.1e))1S(c,43)(c.1i,f,f);14 g=d.1U.1s.9D;d.4c.1s.2L="5g";d.1U.1s.9D="2L: ff; 2e: fo; 1v: fo; 1x: "+(e.5G-5)+"1O; 1u: "+(e.7L-5)+"1O; z-8K: 9i; ck: ig; 8J: 3y;"+"e3-2e: 0; 8J: 3y; ax: ay; cl: .fp; -ih-cl: .fp; ii: ij(cl=5);";3x(c);4q(c,1m);if(2m(1p.1h,1p.1e))d.1U.2W=d.3f=" ";1a cn(){d.4c.1s.2L="4d";d.1U.1s.9D=g;if(C)d.2R.1H=d.1A.1H=fn;7J(c);if(d.1U.7S!=1d&&(!A||C)){cf(ba);14 a=d.1U.2W=" "+(2m(1p.1h,1p.1e)?"":d.1U.2W),i=0;d.3f=" ";d.1U.7S=1;d.1U.cp=a.1g;14 b=1a(){if(d.3f==" "&&d.1U.7S==0)1S(c,bh.9E)(c);1k if(i++<10)ba=2A(b,b8);1k 4q(c)};ba=2A(b,fi)}}if(S){5E(e);14 h=1a(){3m(3e,"5F",h);2A(cn,20)};1N(3e,"5F",h)}1k{2A(cn,50)}}1a 9F(a){if(!a.1o)1c a.1e;1c 1D(a.1h.1j+a.1o.1g-1,3n(a.1o).1g+(a.1o.1g==1?a.1h.ch:0))}1a cq(a,b,c){if(!2v(b.1h,c))1c 1L(a,c);14 d=(b.1o.1g-1)-(b.1e.1j-b.1h.1j);if(c.1j>b.1e.1j+d){14 e=c.1j-d,3k=a.1w+a.1Y-1;if(e>3k)1c 1D(3k,1G(a,3k).1o.1g);1c 7T(c,1G(a,e).1o.1g)}if(c.1j==b.1e.1j+d)1c 7T(c,3n(b.1o).1g+(b.1o.1g==1?b.1h.ch:0)+1G(a,b.1e.1j).1o.1g-b.1e.ch);14 f=c.1j-b.1h.1j;1c 7T(c,b.1o[f].1g+(f?0:b.1h.ch))}1a 9G(c,d,e){if(e&&2o e=="8H")1c{2b:cq(c,d,e.2b),1Q:cq(c,d,e.1Q)};if(e=="2H")1c{2b:d.1h,1Q:d.1h};14 f=9F(d);if(e=="ca")1c{2b:d.1h,1Q:f};if(e=="2U")1c{2b:f,1Q:f};14 g=1a(a){if(2v(a,d.1h))1c a;if(!2v(d.1e,a))1c f;14 b=a.1j+d.1o.1g-(d.1e.1j-d.1h.1j)-1,ch=a.ch;if(a.1j==d.1e.1j)ch+=f.ch-d.1e.ch;1c 1D(b,ch)};1c{2b:g(c.1p.2b),1Q:g(c.1p.1Q)}}1a fq(e,f){14 g={cr:1q,1h:f.1h,1e:f.1e,1o:f.1o,2y:f.2y,4t:1a(a,b,c,d){if(a)1b.1h=1L(e,a);if(b)1b.1e=1L(e,b);if(c)1b.1o=c;if(d!==cs)1b.2y=d},ik:1a(){1b.cr=1m}};3j(e,"9H",e,g);if(e.cm)3j(e.cm,"9H",e.cm,g);if(g.cr)1c 1d;1c{1h:g.1h,1e:g.1e,1o:g.1o,2y:g.2y}}1a 5B(a,b,c,d){if(a.cm){if(!a.cm.1Z)1c 1S(a.cm,5B)(a,b,c,d);if(a.cm.1F.6Z)1c}if(5H(a,"9H")||a.cm&&5H(a.cm,"9H")){b=fq(a,b);if(!b)1c}14 e=T&&!d&&fr(a,b.1h,b.1e);if(e){1l(14 i=e.1g-1;i>=1;--i)9I(a,{1h:e[i].1h,1e:e[i].1e,1o:[""]});if(e.1g)9I(a,{1h:e[0].1h,1e:e[0].1e,1o:b.1o},c)}1k{9I(a,b,c)}}1a 9I(c,d,e){14 f=9G(c,d,e);9J(c,d,f,c.cm?c.cm.1Z.id:ct);6G(c,d,f,9K(c,d));14 g=[];5L(c,1a(a,b){if(!b&&3b(g,a.2c)==-1){cu(a.2c,d);g.1B(a.2c)}6G(a,d,1d,9K(a,d))})}1a cv(c,d){if(c.cm&&c.cm.1F.6Z)1c;14 e=c.2c;14 f=(d=="4n"?e.2D:e.3F).il();if(!f)1c;e.5M+=d=="4n"?-1:1;14 g={2V:[],4E:f.4F,4G:f.54,4F:f.4E,54:f.4G};(d=="4n"?e.3F:e.2D).1B(g);1l(14 i=f.2V.1g-1;i>=0;--i){14 h=f.2V[i];h.2y=d;g.2V.1B(9L(c,h));14 j=i?9G(c,h,1d):{2b:f.4E,1Q:f.4G};6G(c,h,j,cw(c,h));14 k=[];5L(c,1a(a,b){if(!b&&3b(k,a.2c)==-1){cu(a.2c,h);k.1B(a.2c)}6G(a,h,1d,cw(a,h))})}}1a cx(b,c){1a 7U(a){1c 1D(a.1j+c,a.ch)}b.1w+=c;if(b.cm)2N(b.cm,b.1w,b.1w,c);b.1p.1Q=7U(b.1p.1Q);b.1p.2b=7U(b.1p.2b);b.1p.1h=7U(b.1p.1h);b.1p.1e=7U(b.1p.1e)}1a 6G(a,b,c,d){if(a.cm&&!a.cm.1Z)1c 1S(a.cm,6G)(a,b,c,d);if(b.1e.1ja.3k())1c;if(b.1h.1jf){b={1h:b.1h,1e:1D(f,1G(a,f).1o.1g),1o:[b.1o[0]],2y:b.2y}}b.cy=9M(a,b.1h,b.1e);if(!c)c=9G(a,b,1d);if(a.cm)fs(a.cm,b,d,c);1k 9N(a,b,d,c)}1a fs(c,d,e,f){14 g=c.1i,1f=c.1f,1h=d.1h,1e=d.1e;14 h=1q,9O=1h.1j;if(!c.1t.3p){9O=3h(5p(g,1G(g,1h.1j)));g.2E(9O,1e.1j+1,1a(a){if(a==1f.4g){h=1m;1c 1m}})}if(!2v(g.1p.1Q,d.1h)&&!2v(d.1e,g.1p.1Q))c.1Z.6q=1m;9N(g,d,e,f,aH(c));if(!c.1t.3p){g.2E(9O,1h.1j+d.1o.1g,1a(a){14 b=7e(g,a);if(b>1f.4R){1f.4g=a;1f.4R=b;1f.5i=1m;h=1q}});if(h)c.1Z.5y=1m}g.3g=1z.2f(g.3g,1h.1j);7b(c,c6);14 i=d.1o.1g-(1e.1j-1h.1j)-1;2N(c,1h.1j,1e.1j+1,i);if(5H(c,"9l")){14 j={1h:1h,1e:1e,1o:d.1o,cy:d.cy,2y:d.2y};if(c.1Z.6p){1l(14 k=c.1Z.6p;k.3N;k=k.3N){}k.3N=j}1k c.1Z.6p=j}}1a 3u(a,b,c,d,e){if(!d)d=c;if(2v(d,c)){14 f=d;d=c;c=f}if(2o b=="2h")b=bA(b);5B(a,{1h:c,1e:d,1o:b,2y:e},1d)}1a 1D(a,b){if(!(1b 6X 1D))1c 2d 1D(a,b);1b.1j=a;1b.ch=b}1r.1D=1D;1a 2m(a,b){1c a.1j==b.1j&&a.ch==b.ch}1a 2v(a,b){1c a.1jc)1c 1D(c,1G(a,c).1o.1g);1c 7T(b,1G(a,b.1j).1o.1g)}1a 7T(a,b){14 c=a.ch;if(c==1d||c>b)1c 1D(a.1j,b);1k if(c<0)1c 1D(a.1j,0);1k 1c a}1a 5N(a,l){1c l>=a.1w&&l=4H.ch:h.1e>4H.ch))){if(d){3j(m,"fu");if(m.6H){if(!g.21)1W;1k{--i;3s}}}if(!m.7W)3s;14 j=m.2Y()[f<0?"1h":"1e"];if(2m(j,4H)){j.ch+=f;if(j.ch<0){if(j.1j>a.1w)j=1L(a,1D(j.1j-1));1k j=1d}1k if(j.ch>g.1o.1g){if(j.1j(3e.fv||1R.6o.2t))7X=1q;if(7X!=1d&&!L){14 d=c.2J.1s.1f=="3y";if(d){c.2J.1s.1f="";c.2J.1s.1u=b.1u+"1O";c.2J.1s.1x=(b.1x-c.4s)+"1O"}c.2J.9Q(7X);if(d)c.2J.1s.1f="3y"}}1a bN(a,b,c){if(c==1d)c=0;1P(1m){14 d=1q,4x=3O(a,b);14 e=7F(a,4x.1u,4x.1x-c,4x.1u,4x.2l+c);14 f=a.1i.1H,fw=a.1i.1M;if(e.1H!=1d){6y(a,e.1H);if(1z.6C(a.1i.1H-f)>1)d=1m}if(e.1M!=1d){5A(a,e.1M);if(1z.6C(a.1i.1M-fw)>1)d=1m}if(!d)1c 4x}}1a 9Q(a,b,c,d,e){14 f=7F(a,b,c,d,e);if(f.1H!=1d)6y(a,f.1H);if(f.1M!=1d)5A(a,f.1M)}1a 7F(a,b,c,d,e){14 f=a.1f,7Y=7i(f);c+=7Y;e+=7Y;if(c<0)c=0;14 g=f.1A.2t-br,9R=f.1A.1H,3a={};14 h=a.1i.1v+aL(f);14 i=c<7Y+10,fx=e+7Y>h-10;if(c<9R){3a.1H=i?0:c}1k if(e>9R+g){14 j=1z.2f(c,(fx?h:e)-g);if(j!=9R)3a.1H=j}14 k=f.1A.2B-br,cD=f.1A.1M;b+=f.2j.2F;d+=f.2j.2F;14 l=f.2j.2F;14 m=bk+cD-3){3a.1M=d+10-k}1c 3a}1a 3D(a,b,c){a.1Z.3D={1M:b==1d?a.1i.1M:b,1H:c==1d?a.1i.1H:c}}1a cE(a,b,c){14 d=a.1Z.3D||(a.1Z.3D={1M:a.1i.1M,1H:a.1i.1H});14 e=a.1f.1A;d.1H=1z.29(0,1z.2f(e.6e-e.2t,d.1H+c));d.1M=1z.29(0,1z.2f(e.5m-e.2B,d.1M+b))}1a 5K(a,n,b,c){14 d=a.1i;if(!b)b="4j";if(b=="7R"){if(!a.1i.2i.fy)b="3c";1k 14 e=6l(a,n)}14 f=a.1t.4l;14 g=1G(d,n),cF=4V(g.1o,1d,f);14 h=g.1o.5e(/^\\s*/)[0],3G;if(b=="7R"){3G=a.1i.2i.fy(e,g.1o.2a(h.1g),g.1o);if(3G==bs){if(!c)1c;b="3c"}}if(b=="3c"){if(n>d.1w)3G=4V(1G(d,n-1).1o,1d,f);1k 3G=0}1k if(b=="4j"){3G=cF+a.1t.cG}1k if(b=="cH"){3G=cF-a.1t.cG}3G=1z.29(0,3G);14 j="",1y=0;if(a.1t.fz)1l(14 i=1z.aM(3G/f);i;--i){1y+=f;j+="\\t"}if(1y<3G)j+=cI(3G-1y);if(j!=h)3u(a.1i,j,1D(n,0),1D(n,h.1g),"+1U");g.3S=1d}1a 7Z(a,b,c){14 d=b,1j=b,1i=a.1i;if(2o b=="5n")1j=1G(1i,cz(1i,b));1k d=3h(b);if(d==1d)1c 1d;if(c(1j,d))2N(a,d,d+1);1k 1c 1d;1c 1j}1a 80(c,d,e,f,g){14 h=d.1j,ch=d.ch;14 i=1G(c,h);14 j=1m;1a fA(){14 l=h+e;if(l=c.1w+c.1Y)1c(j=1q);h=l;1c i=1G(c,l)}1a 6I(a){14 b=(g?9h:cJ)(i,ch,e,1m);if(b==1d){if(!a&&fA()){if(g)ch=(e<0?7A:7z)(i);1k ch=e<0?i.1o.1g:0}1k 1c(j=1q)}1k ch=b;1c 1m}if(f=="6J")6I();1k if(f=="9S")6I(1m);1k if(f=="81"||f=="58"){14 k=1d,58=f=="58";1l(14 m=1m;1m;m=1q){if(e<0&&!6I(!m))1W;14 n=i.1o.2C(ch)||"\\n";14 o=82(n)?"w":!58?1d:/\\s/.1I(n)?1d:"p";if(k&&k!=o){if(e<0){e=1;6I()}1W}if(o)k=o;if(e>0&&!6I(!m))1W}}14 p=7V(c,1D(h,ch),e,1m);if(!j)p.9T=1m;1c p}1a 9U(a,b,c,d){14 e=a.1i,x=b.1u,y;if(d=="4z"){14 f=1z.2f(a.1f.1T.2t,3e.fv||1R.6o.2t);y=b.1x+c*(f-(c<0?1.5:.5)*6b(a.1f))}1k if(d=="1j"){y=c>0?b.2l+3:b.1x-3}1P(1m){14 g=5v(a,x,y);if(!g.eQ)1W;if(c<0?y<=0:y>=e.1v){g.9T=1m;1W}y+=c*5}1c g}1a 9p(b,c){14 d=c.ch,2U=c.ch;if(b){if(c.eS===1q||2U==b.1g)--d;1k++2U;14 e=b.2C(d);14 f=82(e)?82:/\\s/.1I(e)?1a(a){1c/\\s/.1I(a)}:1a(a){1c!/\\s/.1I(a)&&!82(a)};1P(d>0&&f(b.2C(d-1)))--d;1P(2Uh)&&a.1x>b.2Z)g=a.1x-b.2Z;1k if(a.2l+b.2Z<=h)g=a.2l;if(1u+b.2F>cP)1u=cP-b.2F}b.1s.1x=(g+7i(f))+"1O";b.1s.1u=b.1s.2q="";if(e=="2q"){1u=f.2X.2B-b.2F;b.1s.2q="az"}1k{if(e=="1u")1u=0;1k if(e=="4Y")1u=(f.2X.2B-b.2F)/2;b.1s.1u=1u+"1O"}if(c)9Q(1b,1u,g,1u+b.2F,g+b.2Z)},iN:1S(1d,bZ),iO:1a(a){1c bh[a](1b)},80:1a(a,b,c,d){14 e=1;if(b<0){e=-1;b=-b}1l(14 i=0,1C=1L(1b.1i,a);i2){b.fL=[];1l(14 i=2;i<4m.1g;++i)b.fL.1B(4m[i])}be[a]=b};1r.fM=1a(a,b){8a[a]=b};1r.cV=1a(a){if(2o a=="2h"&&8a.3w(a))a=8a[a];1k if(2o a=="2h"&&/^[\\w\\-]+\\/[\\w\\-]+\\+fN$/.1I(a))1c 1r.cV("j1/fN");if(2o a=="2h")1c{5a:a};1k 1c a||{5a:"1d"}};1r.7a=1a(a,b){b=1r.cV(b);14 c=be[b.5a];if(!c)1c 1r.7a(a,"1o/fO");14 d=c(a,b);if(bf.3w(b.5a)){14 e=bf[b.5a];1l(14 f in e){if(!e.3w(f))3s;if(d.3w(f))d["fP"+f]=d[f];d[f]=e[f]}}d.5a=b.5a;1c d};1r.fK("1d",1a(){1c{83:1a(a){a.fQ()}}});1r.fM("1o/fO","1d");14 bf=1r.j2={};1r.j3=1a(a,b){14 c=bf.3w(a)?bf[a]:(bf[a]={});8b(b,c)};1r.j4=1a(a,b){1r.2k[a]=b};1r.j5=1a(a,b){bn.2k[a]=b};1r.j6=1X;14 bg=[];1r.j7=1a(f){bg.1B(f)};1a 4k(a,b){if(b===1m)1c b;if(a.4k)1c a.4k(b);14 c={};1l(14 n in b){14 d=b[n];if(d 6X 6E)d=d.8c([]);c[n]=d}1c c}1r.4k=4k;1a 4y(a,b,c){1c a.4y?a.4y(b,c):1m}1r.4y=4y;1r.cW=1a(a,b){1P(a.cW){14 c=a.cW(b);b=c.1F;a=c.2i}1c c||{2i:a,1F:b}};14 bh=1r.j8={9E:1a(a){a.43(1D(a.cX(),0),1D(a.3k()))},fR:1a(a){14 b=a.47(1m),1e=a.47(1q),1p=!2m(b,1e);if(!1p&&a.1G(b.1j).1g==b.ch)a.3u("",b,1D(b.1j+1,0),"+5R");1k a.3u("",b,1p?1e:1D(b.1j),"+5R")},cY:1a(a){14 l=a.47().1j;a.3u("",1D(l,0),1D(l),"+5R")},4n:1a(a){a.4n()},4J:1a(a){a.4J()},9Z:1a(a){a.2s(1D(a.cX(),0))},8d:1a(a){a.2s(1D(a.3k()))},a0:1a(a){a.2s(cZ(a,a.47().1j))},fS:1a(a){14 b=a.47(),2H=cZ(a,b.1j);14 c=a.d0(2H.1j);14 d=3Y(c);if(!d||d[0].28==0){14 e=1z.29(0,c.1o.3M(/\\S/));14 f=b.1j==2H.1j&&b.ch<=e&&b.ch;a.2s(1D(2H.1j,f?0:e))}1k a.2s(2H)},8e:1a(a){a.2s(fT(a,a.47().1j))},j9:1a(a){14 b=a.5s(a.47(),"1J").1x+5;a.2s(a.5v({1u:a.1f.3r.2F+3I,1x:b},"1J"))},ja:1a(a){14 b=a.5s(a.47(),"1J").1x+5;a.2s(a.5v({1u:0,1x:b},"1J"))},d1:1a(a){a.86(-1,"1j")},d2:1a(a){a.86(1,"1j")},d3:1a(a){a.86(-1,"4z")},d4:1a(a){a.86(1,"4z")},d5:1a(a){a.4I(-1,"6J")},d6:1a(a){a.4I(1,"6J")},jb:1a(a){a.4I(-1,"9S")},jc:1a(a){a.4I(1,"9S")},fU:1a(a){a.4I(-1,"81")},d7:1a(a){a.4I(1,"58")},d8:1a(a){a.4I(-1,"58")},fV:1a(a){a.4I(1,"81")},d9:1a(a){a.5Q(-1,"6J")},da:1a(a){a.5Q(1,"6J")},fW:1a(a){a.5Q(-1,"81")},fX:1a(a){a.5Q(1,"81")},db:1a(a){a.5Q(-1,"58")},a1:1a(a){a.5Q(1,"58")},fY:1a(a){a.84("7R")},dc:1a(a){a.84("4j")},dd:1a(a){a.84("cH")},jd:1a(a){a.6F("\\t","2U","+1U")},fZ:1a(a){if(a.g0())a.84("4j");1k a.6F("\\t","2U","+1U")},g1:1a(a){14 b=a.47(),1j=a.1G(b.1j);if(b.ch>0&&b.ch<1j.1g-1)a.3u(1j.2C(b.ch)+1j.2C(b.ch-1),1D(b.1j,b.ch-1),1D(b.1j,b.ch+1))},g2:1a(a){1S(a,1a(){a.6F("\\n","2U","+1U");a.5K(a.47().1j,1d,1m)})()},9W:1a(a){a.9W()}};14 bi=1r.5l={};bi.de={"5S":"d5","5T":"d6","8f":"d1","8g":"d2","8h":"8e","a2":"fS","df":"d3","dg":"d4","6L":"da","6M":"d9","dh":"fZ","3E-dh":"fY","di":"g2","dj":"9W"};bi.g3={"22-A":"9E","22-D":"cY","22-Z":"4n","3E-22-Z":"4J","22-Y":"4J","22-a2":"9Z","3d-8f":"9Z","22-8h":"8d","22-8g":"8d","22-5S":"d8","22-5T":"d7","3d-5S":"a0","3d-5T":"8e","22-6M":"db","22-6L":"a1","22-S":"4K","22-F":"2Y","22-G":"g4","3E-22-G":"g5","3E-22-F":"3T","3E-22-R":"g6","22-[":"dd","22-]":"dc",dk:"de"};bi.g7={"2O-A":"9E","2O-D":"cY","2O-Z":"4n","3E-2O-Z":"4J","2O-Y":"4J","2O-8f":"9Z","2O-8h":"8d","2O-8g":"8d","3d-5S":"d8","3d-5T":"d7","2O-5S":"a0","2O-5T":"8e","3d-6M":"db","22-3d-6M":"a1","3d-6L":"a1","2O-S":"4K","2O-F":"2Y","2O-G":"g4","3E-2O-G":"g5","2O-3d-F":"3T","3E-2O-3d-F":"g6","2O-[":"dd","2O-]":"dc",dk:["de","g8"]};bi["cS"]=O?bi.g7:bi.g3;bi.g8={"22-F":"d6","22-B":"d5","22-P":"d1","22-N":"d2","3d-F":"fV","3d-B":"fU","22-A":"a0","22-E":"8e","22-V":"d4","3E-22-V":"d3","22-D":"da","22-H":"d9","3d-D":"fX","3d-6M":"fW","22-K":"fR","22-T":"g1"};1a 9x(a){if(2o a=="2h")1c bi[a];1k 1c a}1a 5J(f,g,h){1a a3(a){a=9x(a);14 b=a[f];if(b===1q)1c"7Q";if(b!=1d&&h(b))1c 1m;if(a.je)1c"7Q";14 c=a.dk;if(c==1d)1c 1q;if(jf.2k.9Y.52(c)!="[8H 6E]")1c a3(c);1l(14 i=0,e=c.1g;i=1b.2h.1g},jn:1a(){1c 1b.1y==0},jo:1a(){1c 1b.2h.2C(1b.1y)||cs},3N:1a(){if(1b.1y<1b.2h.1g)1c 1b.2h.2C(1b.1y++)},ga:1a(a){14 b=1b.2h.2C(1b.1y);if(2o a=="2h")14 c=b==a;1k 14 c=b&&(a.1I?a.1I(b):a(b));if(c){++1b.1y;1c b}},jp:1a(a){14 b=1b.1y;1P(1b.ga(a)){}1c 1b.1y>b},jq:1a(){14 a=1b.1y;1P(/[\\s\\4Q]/.1I(1b.2h.2C(1b.1y)))++1b.1y;1c 1b.1y>a},fQ:1a(){1b.1y=1b.2h.1g},jr:1a(a){14 b=1b.2h.3b(a,1b.1y);if(b>-1){1b.1y=b;1c 1m}},js:1a(n){1b.1y-=n},9S:1a(){if(1b.a6<1b.2H){1b.a7=4V(1b.2h,1b.2H,1b.4l,1b.a6,1b.a7);1b.a6=1b.2H}1c 1b.a7},3G:1a(){1c 4V(1b.2h,1d,1b.4l)},5e:1a(b,c,d){if(2o b=="2h"){14 e=1a(a){1c d?a.gb():a};14 f=1b.2h.jt(1b.1y,b.1g);if(e(f)==e(b)){if(c!==1q)1b.1y+=b.1g;1c 1m}}1k{14 g=1b.2h.2a(1b.1y).5e(b);if(g&&g.8K>0)1c 1d;if(g&&c!==1q)1b.1y+=g[0].1g;1c g}},cM:1a(){1c 1b.2h.2a(1b.2H,1b.1y)}};1r.5P=5P;1a 4M(a,b){1b.1V=[];1b.3t=b;1b.1i=a}1r.4M=4M;4M.2k.4o=1a(){if(1b.6H)1c;14 a=1b.1i.cm,6r=a&&!a.1Z;if(6r)5x(a);14 b=1d,29=1d;1l(14 i=0;i<1b.1V.1g;++i){14 c=1b.1V[i];14 d=6N(c.21,1b);if(d.1e!=1d)29=3h(c);c.21=gc(c.21,d);if(d.1h!=1d)b=3h(c);1k if(1b.26&&!4S(1b.1i,c)&&a)3U(c,6b(a.1f))}if(a&&1b.26&&!a.1t.3p)1l(14 i=0;i<1b.1V.1g;++i){14 e=5p(a.1i,1b.1V[i]),3v=7e(a.1i,e);if(3v>a.1f.4R){a.1f.4g=e;a.1f.4R=3v;a.1f.5i=1m}}if(b!=1d&&a)2N(a,b,29+1);1b.1V.1g=0;1b.6H=1m;if(1b.26&&1b.1i.6x){1b.1i.6x=1q;if(a)cA(a)}if(6r)5z(a);3W(1b,"4o")};4M.2k.2Y=1a(){14 a,1e;1l(14 i=0;i<1b.1V.1g;++i){14 b=1b.1V[i];14 c=6N(b.21,1b);if(c.1h!=1d||c.1e!=1d){14 d=3h(b);if(c.1h!=1d)a=1D(d,c.1h);if(c.1e!=1d)1e=1D(d,c.1e)}}if(1b.3t=="8i")1c a;1c a&&{1h:a,1e:1e}};4M.2k.dm=1a(a){14 b=1b.4a;1c{2p:1b.2p,56:1b.56,57:1b.57,7W:1b.7W,26:1b.26,4a:a?b&&b.dn(1m):b,4Z:1b.4Z,8j:1b.8j,8k:1b.8k}};4M.2k.dp=1a(a){if(!1b.1V.1g&&1b.1i.cm){14 b=1b.1i.cm.1Z;if(!b.7G||3b(b.7G,1b)==-1)(b.bO||(b.bO=[])).1B(1b)}1b.1V.1B(a)};4M.2k.gd=1a(a){1b.1V.2x(3b(1b.1V,a),1);if(!1b.1V.1g&&1b.1i.cm){14 b=1b.1i.cm.1Z;(b.7G||(b.7G=[])).1B(1b)}};1a 5b(c,d,e,f,g){if(f&&f.dq)1c ge(c,d,e,f,g);if(c.cm&&!c.cm.1Z)1c 1S(c.cm,5b)(c,d,e,f,g);14 h=2d 4M(c,g);if(g=="gf"&&!2v(d,e))1c h;if(f)8b(f,h);if(h.4a){h.26=1m;h.4a=1E("42",[h.4a],"1r-c3")}if(h.26)5Y=1m;if(h.9J)9J(c,{1h:d,1e:e,2y:"5b"},{1Q:c.1p.1Q,2b:c.1p.2b},ct);14 i=d.1j,1Y=0,dr,ds,cm=c.cm,5y;c.2E(i,e.1j+1,1a(a){if(cm&&h.26&&!cm.1t.3p&&5p(c,a)==cm.1f.4g)5y=1m;14 b={1h:1d,1e:1d,1K:h};1Y+=a.1o.1g;if(i==d.1j){b.1h=d.ch;1Y-=d.ch}if(i==e.1j){b.1e=e.ch;1Y-=a.1o.1g-e.ch}if(h.26){if(i==e.1j)ds=8l(a,e.ch);if(i==d.1j)dr=8l(a,d.ch);1k 3U(a,0)}gg(a,b);++i});if(h.26)c.2E(d.1j,e.1j+1,1a(a){if(4S(c,a))3U(a,0)});if(h.ju)1N(h,"fu",1a(){h.4o()});if(h.4Z){T=1m;if(c.2c.2D.1g||c.2c.3F.1g)c.gh()}if(h.26){if(dr!=ds)8G 2d cK("jv 26 1K jw an jx jy");h.1Y=1Y;h.7W=1m}if(cm){if(5y)cm.1Z.5y=1m;if(h.2p||h.8j||h.8k||h.26)2N(cm,d.1j,e.1j+1);if(h.7W)cA(cm)}1c h}1a 5V(a,b){1b.dt=a;1b.6O=b;1l(14 i=0,gi=1b;i=b:d.1e>b);(4b||(4b=[])).1B({1h:d.1h,1e:f?1d:d.1e,1K:1K})}}1c 4b}1a gl(a,b,c){if(a)1l(14 i=0,4b;i=b:d.1e>b);if(e||1K.3t=="8i"&&d.1h==b&&(!c||d.1K.a8)){14 f=d.1h==1d||(1K.56?d.1h<=b:d.1h0&&f)1l(14 i=0;ib)&&(!4U||4U.2ea.1t.cU){e=1q;h.1y=1z.2f(b.1g,h.2H+jB);1s=1d}1k{1s=c.83(h,d)}14 i=h.cM();h.2H=h.1y;if(!e||8n!=1s){if(g)f(g,8n);g=i;8n=1s}1k g=g+i}if(g)f(g,8n)}1a b9(e,f,g){14 h=[e.1F.61];dA(e,f.1o,e.1i.2i,g,1a(a,b){h.1B(a,b)});1l(14 o=0;o="\\jP"&&g<"\\jQ"&&if)){if(k.1e!=1d&&g>k.1e){g=k.1e;8r=""}if(m.2p)8q+=" "+m.2p;if(m.8j&&k.1h==f)8s+=" "+m.8j;if(m.8k&&k.1e==g)8r+=" "+m.8k;if(m.26&&(!26||26.1K.2ef&&g>k.1h){g=k.1h}if(m.3t=="8i"&&k.1h==f&&m.4a)h=m.4a}if(26&&(26.1h||0)==f){dH(b,(26.1e==1d?3v:26.1e)-f,26.1h!=1d&&26.1K.4a);if(26.1e==1d)1c 26.1K.2Y()}if(h&&!26)dH(b,0,h)}if(f>=3v)1W;14 l=1z.2f(3v,g);1P(1m){if(1o){14 n=f+1o.1g;if(!26){14 o=n>l?1o.2a(0,l-f):1o;b.8o(b,o,1s?1s+8q:8q,8s,f+o.1g==g?8r:"")}if(n>=l){1o=1o.2a(l-f);f=l;1W}f=n;8s=""}1o=c[i++];1s=dC(c[i++])}}}1a 9N(d,f,g,h,j){1a 5c(n){1c g?g[n]:1d}1a 4t(a,b,c){gq(a,b,c,j);3W(a,"9l",a,f)}14 k=f.1h,1e=f.1e,1o=f.1o;14 l=1G(d,k.1j),3k=1G(d,1e.1j);14 m=3n(1o),8t=5c(1o.1g-1),6U=1e.1j-k.1j;if(k.ch==0&&1e.ch==0&&m==""){1l(14 i=0,e=1o.1g-1,o=[];i1)d.8u(k.1j+1,6U-1);d.8v(k.1j+1,o)}3W(d,"9l",d,f);43(d,h.2b,h.1Q,1d,1m)}1a 8w(a){1b.1V=a;1b.2r=1d;1l(14 i=0,e=a.1g,1v=0;i50){1P(d.1V.1g>50){14 f=d.1V.2x(d.1V.1g-25,25);14 g=2d 8w(f);d.1v-=g.1v;1b.2n.2x(i+1,0,g);g.2r=1b}1b.dI()}1W}a-=3o}},dI:1a(){if(1b.2n.1g<=10)1c;14 a=1b;do{14 b=a.2n.2x(a.2n.1g-5,5);14 c=2d 6V(b);if(!a.2r){14 d=2d 6V(a.2n);d.2r=a;a.2n=[d,c];a=d}1k{a.1Y-=c.1Y;a.1v-=c.1v;14 e=3b(a.2r.2n,a);a.2r.2n.2x(e+1,0,c)}c.2r=a.2r}1P(a.2n.1g>10);a.2r.dI()},8x:1a(a,n,b){1l(14 i=0,e=1b.2n.1g;i=a.ch))b.1B(c.1K.2r||c.1K)}1c b},k6:1a(){14 c=[];1b.2E(1a(a){14 b=a.21;if(b)1l(14 i=0;ic){d=c;1c 1m}c-=b;++3h});1c 1L(1b,1D(3h,d))},k8:1a(b){b=1L(1b,b);14 c=b.ch;if(b.1j<1b.1w||b.ch<0)1c 0;1b.2E(1b.1w,b.1j,1a(a){c+=a.1o.1g+1});1c c},6B:1a(a){14 b=2d bn(ai(1b,1b.1w,1b.1w+1b.1Y),1b.6a,1b.1w);b.1H=1b.1H;b.1M=1b.1M;b.1p={1h:1b.1p.1h,1e:1b.1p.1e,1Q:1b.1p.1Q,2b:1b.1p.2b,3i:1b.1p.3i,4D:1q,5O:1b.1p.5O};if(a){b.2c.6K=1b.2c.6K;b.gA(1b.gz())}1c b},k9:1a(a){if(!a)a={};14 b=1b.1w,1e=1b.1w+1b.1Y;if(a.1h!=1d&&a.1h>b)b=a.1h;if(a.1e!=1d&&a.1e<1e)1e=a.1e;14 c=2d bn(ai(1b,b,1e),a.2i||1b.6a,b);if(a.6W)c.2c=1b.2c;(1b.3R||(1b.3R=[])).1B({1i:c,6W:a.6W});c.3R=[{1i:1b,gj:1m,6W:a.6W}];1c c},gB:1a(b){if(b 6X 1r)b=b.1i;if(1b.3R)1l(14 i=0;i<1b.3R.1g;++i){14 c=1b.3R[i];if(c.1i!=b)3s;1b.3R.2x(i,1);b.gB(1b);1W}if(b.2c==1b.2c){14 d=[b.id];5L(b,1a(a){d.1B(a.id)},1m);b.2c=8y();b.2c.2D=8z(1b.2c.2D,d);b.2c.3F=8z(1b.2c.3F,d)}},ka:1a(f){5L(1b,f)},7a:1a(){1c 1b.2i},gC:1a(){1c 1b.cm}});bn.2k.kb=bn.2k.2E;14 bo="2E 8v 8u 6B gC".8p(" ");1l(14 bp in bn.2k)if(bn.2k.3w(bp)&&3b(bo,bp)<0)1r.2k[bp]=(1a(a){1c 1a(){1c a.4B(1b.1i,4m)}})(bn.2k[bp]);1a 5L(g,f,h){1a dJ(a,b,c){if(a.3R)1l(14 i=0;if-a.cm.1t.fJ)||b.2y.2C(0)=="*"))){14 g=3n(1C.2V);if(2m(b.1h,b.1e)&&2m(b.1h,g.1e)){g.1e=9F(b)}1k{1C.2V.1B(9L(a,b))}1C.4F=c.2b;1C.54=c.1Q}1k{1C={2V:[9L(a,b)],4E:a.1p.2b,4G:a.1p.1Q,4F:c.2b,54:c.1Q};e.2D.1B(1C);1P(e.2D.1g>e.6K)e.2D.3i();if(e.5M<0)e.5M=ct;1k e.5M++}e.dK=f;e.aj=d;e.ak=b.2y}1a gE(a){if(!a)1c 1d;1l(14 i=0,5d;i-1){3n(am)[e]=d[e];5R d[e]}}}}1c 6B}1a 8A(a,b,c,d){if(c0}1r.1N=1N;1r.3m=3m;1r.3j=3j;14 br=30;14 bs=1r.gO={9Y:1a(){1c"1r.gO"}};1a 8E(){1b.id=1d}8E.2k={7u:1a(a,f){cf(1b.id);1b.id=2A(f,a)}};1a 4V(a,b,c,d,e){if(b==1d){b=a.3M(/[^\\s\\4Q]/);if(b==-1)b=a.1g}1l(14 i=d||0,n=e||0;i"\\kq"&&(a.kr()!=a.gb()||bu.1I(a))}1a cN(a){1l(14 n in a)if(a.3w(n)&&a[n])1c 1q;1c 1m}14 bv=/[\\ks-\\kt\\ku-\\kv\\kw-\\kx\\ky-\\kz\\kA\\kB-\\kC\\kD-\\kE\\kF\\kG-\\kH\\kI-\\kJ\\kK\\kL-\\kM\\kN-\\kO\\kP-\\kQ\\kR-\\kS\\kT\\kU-\\kV\\kW-\\kX\\kY\\kZ-\\l0]/;1a 1E(a,b,c,d){14 e=1R.l1(a);if(c)e.2p=c;if(d)e.1s.9D=d;if(2o b=="2h")aW(e,b);1k if(b)1l(14 i=0;i0;--a)e.7n(e.2T);1c e}1a 41(a,e){1c 7c(a).23(e)}1a aW(e,a){if(C){e.l3="";e.23(1R.5w(a))}1k e.l4=a}1a 2G(a){1c a.l5()}1r.l6=1a(f){2G=f};14 bw=1a(){if(C)1c 1q;14 a=1E(\'1J\');1c"64"in a||"6A"in a}();14 bx=/^$/;if(z)bx=/$\'/;1k if(H&&!/dY\\/([6-9]|\\d\\d)\\b/.1I(2P.3l))bx=/\\-[^ \\-?]|\\?[^ !\'\\"\\),.\\-\\/:;\\?\\]\\}]/;1k if(D)bx=/[~!#%&*)=+}\\]|\\"\\.>,:;][({[<]|-[^\\-?\\.]|\\?[\\w~`@#$%\\^&*(fP=+{[|><]/;14 by;1a 7h(a){if(by!=1d)1c by;14 b=1E("1J",1d,1d,"2e: gP; 1v: gP; ax-x: 2w");41(a,b);if(b.2F)by=b.2Z-b.2t;1c by||0}14 bz;1a 7w(a){if(bz==1d){14 b=1E("42","\\dF");41(a,1E("42",[b,1R.5w("x")]));if(a.2T.2Z!=0)bz=b.2F<=1&&b.2Z>2&&!B}if(bz)1c 1E("42","\\dF");1k 1c 1E("42","\\4Q",1d,"1f: eK-7g; 2e: 4P; l7-2q: -4P")}14 bA="\\n\\l8".8p(/\\n/).1g!=3?1a(a){14 b=0,3a=[],l=a.1g;1P(b<=l){14 c=a.3b("\\n",b);if(c==-1)c=a.1g;14 d=a.2a(b,a.2C(c-1)=="\\r"?c-1:c);14 e=d.3b("\\r");if(e!=-1){3a.1B(d.2a(0,e));b+=e+1}1k{3a.1B(d);b=c+1}}1c 3a}:1a(a){1c a.8p(/\\r\\n?|\\n/)};1r.l9=bA;14 bB=3e.6w?1a(a){3q{1c a.7S!=a.cp}4r(e){1c 1q}}:1a(a){3q{14 b=a.la.lb.lc()}4r(e){}if(!b||b.ld()!=a)1c 1q;1c b.le("lf",b)!=0};14 bC=(1a(){14 e=1E("1J");if("dR"in e)1c 1m;e.71("dR","1c;");1c 2o e.dR==\'1a\'})();14 bD={3:"di",8:"6M",9:"dh",13:"di",16:"3E",17:"22",18:"3d",19:"lg",20:"li",27:"lj",32:"lk",33:"df",34:"dg",35:"8h",36:"a2",37:"5S",38:"8f",39:"5T",40:"8g",44:"ll",45:"dj",46:"6L",59:";",91:"a4",92:"a4",93:"a4",lm:"-",ln:"=",lo:"6L",lp:";",lq:"=",lr:",",ls:"-",lt:".",lu:"/",lv:"`",lw:"[",lx:"\\\\",ly:"]",lz:"\'",lA:"df",lB:"dg",lC:"8h",lD:"a2",lE:"5S",lF:"8f",gQ:"5T",lG:"8g",lH:"dj",lI:"6L"};1r.lJ=bD;(1a(){1l(14 i=0;i<10;i++)bD[i+48]=7k(i);1l(14 i=65;i<=90;i++)bD[i]=7k.fm(i);1l(14 i=1;i<=12;i++)bD[i+lK]=bD[i+gQ]="F"+i})();1a ez(a,b,c,f){if(!a)1c f(b,c,"gR");1l(14 i=0;ib||b==c&&d.1e==b)f(1z.29(d.1h,b),1z.2f(d.1e,c),d.28==1?"3Z":"gR")}}1a ap(a){1c a.28%2?a.1e:a.1h}1a aq(a){1c a.28%2?a.1h:a.1e}1a 7z(a){14 b=3Y(a);1c b?ap(b[0]):0}1a 7A(a){14 b=3Y(a);if(!b)1c a.1o.1g;1c aq(3n(b))}1a cZ(a,b){14 c=1G(a.1i,b);14 d=5p(a.1i,c);if(d!=c)b=3h(d);14 e=3Y(d);14 f=!e?0:e[0].28%2?7A(d):7z(d);1c 1D(b,f)}1a fT(a,b){14 c,1j;1P(c=6d(1j=1G(a.1i,b)))b=c.2Y().1e.1j;14 d=3Y(1j);14 e=!d?1j.1o.1g:d[0].28%2?7z(1j):7A(1j);1c 1D(b,e)}1a 9h(c,d,e,f){14 g=3Y(c);if(!g)1c cJ(c,d,e,f);14 h=f?1a(a,b){do a+=b;1P(a>0&&bv.1I(c.1o.2C(a)));1c a}:1a(a,b){1c a+b};14 j=g[0].28;1l(14 i=0;id)||(gS&&(k.1h==d||k.1e==d)))1W}14 l=h(d,k.28%2?-e:e);1P(l!=1d){if(k.28%2==j){if(lk.1e){k=g[i+=e];l=k&&(e>0==k.28%2?h(k.1e,-1):h(k.1h,1))}1k 1W}1k{if(l==ap(k)){k=g[--i];l=k&&aq(k)}1k if(l==aq(k)){k=g[++i];l=k&&ap(k)}1k 1W}}1c l<0||l>c.1o.1g?1d:l}1a cJ(a,b,c,d){14 e=b+c;if(d)1P(e>0&&bv.1I(a.1o.2C(e)))e+=c;1c e<0||e>a.1o.1g?1d:e}14 bE=(1a(){14 o="lL%%%lM,N,lN,N%%%%lO%%lP";14 p="lQ,lR%lS";1a gT(a){if(a<=lT)1c o.2C(a);1k if(lU<=a&&a<=lV)1c"R";1k if(gU<=a&&a<=lW)1c p.2C(a-gU);1k if(lX<=a&&a<=lY)1c"r";1k 1c"L"}14 q=/[\\lZ-\\m0\\m1-\\m2\\m3-\\m4]/;14 r=/[m5]/,dS=/[m6]/,dT=/[m7]/,dU=/[1n]/;14 s="L";1c 1a(a){if(!q.1I(a))1c 1q;14 b=a.1g,2g=[];1l(14 i=0,c;i*\/]/.test(ch)) { - return ret(null, "select-op"); - } - else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { - return ret("qualifier", "qualifier"); - } - else if (ch == ":") { - return ret("operator", ch); - } - else if (/[;{}\[\]\(\)]/.test(ch)) { - return ret(null, ch); - } - else if (ch == "u" && stream.match("rl(")) { - stream.backUp(1); - state.tokenize = tokenParenthesized; - return ret("property", "variable"); - } - else { - stream.eatWhile(/[\w\\\-]/); - return ret("property", "variable"); - } - } - - function tokenString(quote, nonInclusive) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) - break; - escaped = !escaped && ch == "\\"; - } - if (!escaped) { - if (nonInclusive) stream.backUp(1); - state.tokenize = tokenBase; - } - return ret("string", "string"); - }; - } - - function tokenParenthesized(stream, state) { - stream.next(); // Must be '(' - if (!stream.match(/\s*[\"\']/, false)) - state.tokenize = tokenString(")", true); - else - state.tokenize = tokenBase; - return ret(null, "("); - } - - return { - startState: function(base) { - return {tokenize: tokenBase, - baseIndent: base || 0, - stack: []}; - }, - - token: function(stream, state) { - - // Use these terms when applicable (see http://www.xanthir.com/blog/b4E50) - // - // rule** or **ruleset: - // A selector + braces combo, or an at-rule. - // - // declaration block: - // A sequence of declarations. - // - // declaration: - // A property + colon + value combo. - // - // property value: - // The entire value of a property. - // - // component value: - // A single piece of a property value. Like the 5px in - // text-shadow: 0 0 5px blue;. Can also refer to things that are - // multiple terms, like the 1-4 terms that make up the background-size - // portion of the background shorthand. - // - // term: - // The basic unit of author-facing CSS, like a single number (5), - // dimension (5px), string ("foo"), or function. Officially defined - // by the CSS 2.1 grammar (look for the 'term' production) - // - // - // simple selector: - // A single atomic selector, like a type selector, an attr selector, a - // class selector, etc. - // - // compound selector: - // One or more simple selectors without a combinator. div.example is - // compound, div > .example is not. - // - // complex selector: - // One or more compound selectors chained with combinators. - // - // combinator: - // The parts of selectors that express relationships. There are four - // currently - the space (descendant combinator), the greater-than - // bracket (child combinator), the plus sign (next sibling combinator), - // and the tilda (following sibling combinator). - // - // sequence of selectors: - // One or more of the named type of selector chained with commas. - - state.tokenize = state.tokenize || tokenBase; - if (state.tokenize == tokenBase && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (style && typeof style != "string") style = ret(style[0], style[1]); - - // Changing style returned based on context - var context = state.stack[state.stack.length-1]; - if (style == "variable") { - if (type == "variable-definition") state.stack.push("propertyValue"); - return "variable-2"; - } else if (style == "property") { - if (context == "propertyValue"){ - if (valueKeywords[stream.current()]) { - style = "string-2"; - } else if (colorKeywords[stream.current()]) { - style = "keyword"; - } else { - style = "variable-2"; - } - } else if (context == "rule") { - if (!propertyKeywords[stream.current()]) { - style += " error"; - } - } else if (context == "block") { - // if a value is present in both property, value, or color, the order - // of preference is property -> color -> value - if (propertyKeywords[stream.current()]) { - style = "property"; - } else if (colorKeywords[stream.current()]) { - style = "keyword"; - } else if (valueKeywords[stream.current()]) { - style = "string-2"; - } else { - style = "tag"; - } - } else if (!context || context == "@media{") { - style = "tag"; - } else if (context == "@media") { - if (atMediaTypes[stream.current()]) { - style = "attribute"; // Known attribute - } else if (/^(only|not)$/i.test(stream.current())) { - style = "keyword"; - } else if (stream.current().toLowerCase() == "and") { - style = "error"; // "and" is only allowed in @mediaType - } else if (atMediaFeatures[stream.current()]) { - style = "error"; // Known property, should be in @mediaType( - } else { - // Unknown, expecting keyword or attribute, assuming attribute - style = "attribute error"; - } - } else if (context == "@mediaType") { - if (atMediaTypes[stream.current()]) { - style = "attribute"; - } else if (stream.current().toLowerCase() == "and") { - style = "operator"; - } else if (/^(only|not)$/i.test(stream.current())) { - style = "error"; // Only allowed in @media - } else if (atMediaFeatures[stream.current()]) { - style = "error"; // Known property, should be in parentheses - } else { - // Unknown attribute or property, but expecting property (preceded - // by "and"). Should be in parentheses - style = "error"; - } - } else if (context == "@mediaType(") { - if (propertyKeywords[stream.current()]) { - // do nothing, remains "property" - } else if (atMediaTypes[stream.current()]) { - style = "error"; // Known property, should be in parentheses - } else if (stream.current().toLowerCase() == "and") { - style = "operator"; - } else if (/^(only|not)$/i.test(stream.current())) { - style = "error"; // Only allowed in @media - } else { - style += " error"; - } - } else { - style = "error"; - } - } else if (style == "atom") { - if(!context || context == "@media{" || context == "block") { - style = "builtin"; - } else if (context == "propertyValue") { - if (!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) { - style += " error"; - } - } else { - style = "error"; - } - } else if (context == "@media" && type == "{") { - style = "error"; - } - - // Push/pop context stack - if (type == "{") { - if (context == "@media" || context == "@mediaType") { - state.stack.pop(); - state.stack[state.stack.length-1] = "@media{"; - } - else { - var newContext = allowNested ? "block" : "rule"; - state.stack.push(newContext); - } - } - else if (type == "}") { - var lastState = state.stack[state.stack.length - 1]; - if (lastState == "interpolation") style = "operator"; - state.stack.pop(); - if (context == "propertyValue") state.stack.pop(); - } - else if (type == "interpolation") state.stack.push("interpolation"); - else if (type == "@media") state.stack.push("@media"); - else if (context == "@media" && /\b(keyword|attribute)\b/.test(style)) - state.stack.push("@mediaType"); - else if (context == "@mediaType" && stream.current() == ",") state.stack.pop(); - else if (context == "@mediaType" && type == "(") state.stack.push("@mediaType("); - else if (context == "@mediaType(" && type == ")") state.stack.pop(); - else if ((context == "rule" || context == "block") && type == ":") state.stack.push("propertyValue"); - else if (context == "propertyValue" && type == ";") state.stack.pop(); - return style; - }, - - indent: function(state, textAfter) { - var n = state.stack.length; - if (/^\}/.test(textAfter)) - n -= state.stack[state.stack.length-1] == "propertyValue" ? 2 : 1; - return state.baseIndent + n * indentUnit; - }, - - electricChars: "}" - }; -}); - -(function() { - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var atMediaTypes = keySet([ - "all", "aural", "braille", "handheld", "print", "projection", "screen", - "tty", "tv", "embossed" - ]); - - var atMediaFeatures = keySet([ - "width", "min-width", "max-width", "height", "min-height", "max-height", - "device-width", "min-device-width", "max-device-width", "device-height", - "min-device-height", "max-device-height", "aspect-ratio", - "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", - "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", - "max-color", "color-index", "min-color-index", "max-color-index", - "monochrome", "min-monochrome", "max-monochrome", "resolution", - "min-resolution", "max-resolution", "scan", "grid" - ]); - - var propertyKeywords = keySet([ - "align-content", "align-items", "align-self", "alignment-adjust", - "alignment-baseline", "anchor-point", "animation", "animation-delay", - "animation-direction", "animation-duration", "animation-iteration-count", - "animation-name", "animation-play-state", "animation-timing-function", - "appearance", "azimuth", "backface-visibility", "background", - "background-attachment", "background-clip", "background-color", - "background-image", "background-origin", "background-position", - "background-repeat", "background-size", "baseline-shift", "binding", - "bleed", "bookmark-label", "bookmark-level", "bookmark-state", - "bookmark-target", "border", "border-bottom", "border-bottom-color", - "border-bottom-left-radius", "border-bottom-right-radius", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-image", "border-image-outset", - "border-image-repeat", "border-image-slice", "border-image-source", - "border-image-width", "border-left", "border-left-color", - "border-left-style", "border-left-width", "border-radius", "border-right", - "border-right-color", "border-right-style", "border-right-width", - "border-spacing", "border-style", "border-top", "border-top-color", - "border-top-left-radius", "border-top-right-radius", "border-top-style", - "border-top-width", "border-width", "bottom", "box-decoration-break", - "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", - "caption-side", "clear", "clip", "color", "color-profile", "column-count", - "column-fill", "column-gap", "column-rule", "column-rule-color", - "column-rule-style", "column-rule-width", "column-span", "column-width", - "columns", "content", "counter-increment", "counter-reset", "crop", "cue", - "cue-after", "cue-before", "cursor", "direction", "display", - "dominant-baseline", "drop-initial-after-adjust", - "drop-initial-after-align", "drop-initial-before-adjust", - "drop-initial-before-align", "drop-initial-size", "drop-initial-value", - "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", - "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", - "float", "float-offset", "font", "font-feature-settings", "font-family", - "font-kerning", "font-language-override", "font-size", "font-size-adjust", - "font-stretch", "font-style", "font-synthesis", "font-variant", - "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", - "font-variant-ligatures", "font-variant-numeric", "font-variant-position", - "font-weight", "grid-cell", "grid-column", "grid-column-align", - "grid-column-sizing", "grid-column-span", "grid-columns", "grid-flow", - "grid-row", "grid-row-align", "grid-row-sizing", "grid-row-span", - "grid-rows", "grid-template", "hanging-punctuation", "height", "hyphens", - "icon", "image-orientation", "image-rendering", "image-resolution", - "inline-box-align", "justify-content", "left", "letter-spacing", - "line-break", "line-height", "line-stacking", "line-stacking-ruby", - "line-stacking-shift", "line-stacking-strategy", "list-style", - "list-style-image", "list-style-position", "list-style-type", "margin", - "margin-bottom", "margin-left", "margin-right", "margin-top", - "marker-offset", "marks", "marquee-direction", "marquee-loop", - "marquee-play-count", "marquee-speed", "marquee-style", "max-height", - "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", - "nav-left", "nav-right", "nav-up", "opacity", "order", "orphans", "outline", - "outline-color", "outline-offset", "outline-style", "outline-width", - "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", - "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", - "page", "page-break-after", "page-break-before", "page-break-inside", - "page-policy", "pause", "pause-after", "pause-before", "perspective", - "perspective-origin", "pitch", "pitch-range", "play-during", "position", - "presentation-level", "punctuation-trim", "quotes", "rendering-intent", - "resize", "rest", "rest-after", "rest-before", "richness", "right", - "rotation", "rotation-point", "ruby-align", "ruby-overhang", - "ruby-position", "ruby-span", "size", "speak", "speak-as", "speak-header", - "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", - "tab-size", "table-layout", "target", "target-name", "target-new", - "target-position", "text-align", "text-align-last", "text-decoration", - "text-decoration-color", "text-decoration-line", "text-decoration-skip", - "text-decoration-style", "text-emphasis", "text-emphasis-color", - "text-emphasis-position", "text-emphasis-style", "text-height", - "text-indent", "text-justify", "text-outline", "text-shadow", - "text-space-collapse", "text-transform", "text-underline-position", - "text-wrap", "top", "transform", "transform-origin", "transform-style", - "transition", "transition-delay", "transition-duration", - "transition-property", "transition-timing-function", "unicode-bidi", - "vertical-align", "visibility", "voice-balance", "voice-duration", - "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", - "voice-volume", "volume", "white-space", "widows", "width", "word-break", - "word-spacing", "word-wrap", "z-index" - ]); - - var colorKeywords = keySet([ - "black", "silver", "gray", "white", "maroon", "red", "purple", "fuchsia", - "green", "lime", "olive", "yellow", "navy", "blue", "teal", "aqua" - ]); - - var valueKeywords = keySet([ - "above", "absolute", "activeborder", "activecaption", "afar", - "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate", - "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", - "arabic-indic", "armenian", "asterisks", "auto", "avoid", "background", - "backwards", "baseline", "below", "bidi-override", "binary", "bengali", - "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", - "both", "bottom", "break-all", "break-word", "button", "button-bevel", - "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian", - "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", - "cell", "center", "checkbox", "circle", "cjk-earthly-branch", - "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", - "col-resize", "collapse", "compact", "condensed", "contain", "content", - "content-box", "context-menu", "continuous", "copy", "cover", "crop", - "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal", - "decimal-leading-zero", "default", "default-button", "destination-atop", - "destination-in", "destination-out", "destination-over", "devanagari", - "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted", - "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", - "element", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", - "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", - "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", - "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", - "ethiopic-halehame-gez", "ethiopic-halehame-om-et", - "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed", - "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes", - "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", - "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", - "help", "hidden", "hide", "higher", "highlight", "highlighttext", - "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore", - "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", - "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", - "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert", - "italic", "justify", "kannada", "katakana", "katakana-iroha", "khmer", - "landscape", "lao", "large", "larger", "left", "level", "lighter", - "line-through", "linear", "lines", "list-item", "listbox", "listitem", - "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", - "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", - "lower-roman", "lowercase", "ltr", "malayalam", "match", - "media-controls-background", "media-current-time-display", - "media-fullscreen-button", "media-mute-button", "media-play-button", - "media-return-to-realtime-button", "media-rewind-button", - "media-seek-back-button", "media-seek-forward-button", "media-slider", - "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", - "media-volume-slider-container", "media-volume-sliderthumb", "medium", - "menu", "menulist", "menulist-button", "menulist-text", - "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", - "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize", - "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", - "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", - "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", - "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", - "outside", "overlay", "overline", "padding", "padding-box", "painted", - "paused", "persian", "plus-darker", "plus-lighter", "pointer", "portrait", - "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", - "radio", "read-only", "read-write", "read-write-plaintext-only", "relative", - "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", - "ridge", "right", "round", "row-resize", "rtl", "run-in", "running", - "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield", - "searchfield-cancel-button", "searchfield-decoration", - "searchfield-results-button", "searchfield-results-decoration", - "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", - "single", "skip-white-space", "slide", "slider-horizontal", - "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", - "small", "small-caps", "small-caption", "smaller", "solid", "somali", - "source-atop", "source-in", "source-out", "source-over", "space", "square", - "square-button", "start", "static", "status-bar", "stretch", "stroke", - "sub", "subpixel-antialiased", "super", "sw-resize", "table", - "table-caption", "table-cell", "table-column", "table-column-group", - "table-footer-group", "table-header-group", "table-row", "table-row-group", - "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", - "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", - "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", - "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", - "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", - "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", - "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", - "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", - "visibleStroke", "visual", "w-resize", "wait", "wave", "white", "wider", - "window", "windowframe", "windowtext", "x-large", "x-small", "xor", - "xx-large", "xx-small" - ]); - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - CodeMirror.defineMIME("text/css", { - atMediaTypes: atMediaTypes, - atMediaFeatures: atMediaFeatures, - propertyKeywords: propertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - hooks: { - "<": function(stream, state) { - function tokenSGMLComment(stream, state) { - var dashes = 0, ch; - while ((ch = stream.next()) != null) { - if (dashes >= 2 && ch == ">") { - state.tokenize = null; - break; - } - dashes = (ch == "-") ? dashes + 1 : 0; - } - return ["comment", "comment"]; - } - if (stream.eat("!")) { - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - } - }, - "/": function(stream, state) { - if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - return false; - } - }, - name: "css-base" - }); - - CodeMirror.defineMIME("text/x-scss", { - atMediaTypes: atMediaTypes, - atMediaFeatures: atMediaFeatures, - propertyKeywords: propertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - allowNested: true, - hooks: { - "$": function(stream) { - stream.match(/^[\w-]+/); - if (stream.peek() == ":") { - return ["variable", "variable-definition"]; - } - return ["variable", "variable"]; - }, - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - "#": function(stream) { - if (stream.eat("{")) { - return ["operator", "interpolation"]; - } else { - stream.eatWhile(/[\w\\\-]/); - return ["atom", "hash"]; - } - } - }, - name: "css-base" - }); -})(); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/diff.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/diff.js deleted file mode 100644 index 9a0d90e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/diff.js +++ /dev/null @@ -1,32 +0,0 @@ -CodeMirror.defineMode("diff", function() { - - var TOKEN_NAMES = { - '+': 'positive', - '-': 'negative', - '@': 'meta' - }; - - return { - token: function(stream) { - var tw_pos = stream.string.search(/[\t ]+?$/); - - if (!stream.sol() || tw_pos === 0) { - stream.skipToEnd(); - return ("error " + ( - TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); - } - - var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); - - if (tw_pos === -1) { - stream.skipToEnd(); - } else { - stream.pos = tw_pos; - } - - return token_name; - } - }; -}); - -CodeMirror.defineMIME("text/x-diff", "diff"); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/htmlembedded.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/htmlembedded.js deleted file mode 100644 index ff6dfd2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/htmlembedded.js +++ /dev/null @@ -1,73 +0,0 @@ -CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { - - //config settings - var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i, - scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i; - - //inner modes - var scriptingMode, htmlMixedMode; - - //tokenizer when in html mode - function htmlDispatch(stream, state) { - if (stream.match(scriptStartRegex, false)) { - state.token=scriptingDispatch; - return scriptingMode.token(stream, state.scriptState); - } - else - return htmlMixedMode.token(stream, state.htmlState); - } - - //tokenizer when in scripting mode - function scriptingDispatch(stream, state) { - if (stream.match(scriptEndRegex, false)) { - state.token=htmlDispatch; - return htmlMixedMode.token(stream, state.htmlState); - } - else - return scriptingMode.token(stream, state.scriptState); - } - - - return { - startState: function() { - scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec); - htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed"); - return { - token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch, - htmlState : CodeMirror.startState(htmlMixedMode), - scriptState : CodeMirror.startState(scriptingMode) - }; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (state.token == htmlDispatch) - return htmlMixedMode.indent(state.htmlState, textAfter); - else if (scriptingMode.indent) - return scriptingMode.indent(state.scriptState, textAfter); - }, - - copyState: function(state) { - return { - token : state.token, - htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState), - scriptState : CodeMirror.copyState(scriptingMode, state.scriptState) - }; - }, - - electricChars: "/{}:", - - innerMode: function(state) { - if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode}; - else return {state: state.htmlState, mode: htmlMixedMode}; - } - }; -}, "htmlmixed"); - -CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"}); -CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); -CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"}); -CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"}); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/htmlmixed.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/htmlmixed.js deleted file mode 100644 index ec0c21d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/htmlmixed.js +++ /dev/null @@ -1,104 +0,0 @@ -CodeMirror.defineMode("htmlmixed", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, {name: "xml", htmlMode: true}); - var cssMode = CodeMirror.getMode(config, "css"); - - var scriptTypes = [], scriptTypesConf = parserConfig && parserConfig.scriptTypes; - scriptTypes.push({matches: /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, - mode: CodeMirror.getMode(config, "javascript")}); - if (scriptTypesConf) for (var i = 0; i < scriptTypesConf.length; ++i) { - var conf = scriptTypesConf[i]; - scriptTypes.push({matches: conf.matches, mode: conf.mode && CodeMirror.getMode(config, conf.mode)}); - } - scriptTypes.push({matches: /./, - mode: CodeMirror.getMode(config, "text/plain")}); - - function html(stream, state) { - var tagName = state.htmlState.tagName; - var style = htmlMode.token(stream, state.htmlState); - if (tagName == "script" && /\btag\b/.test(style) && stream.current() == ">") { - // Script block: mode to change to depends on type attribute - var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i); - scriptType = scriptType ? scriptType[1] : ""; - if (scriptType && /[\"\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1); - for (var i = 0; i < scriptTypes.length; ++i) { - var tp = scriptTypes[i]; - if (typeof tp.matches == "string" ? scriptType == tp.matches : tp.matches.test(scriptType)) { - if (tp.mode) { - state.token = script; - state.localMode = tp.mode; - state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, "")); - } - break; - } - } - } else if (tagName == "style" && /\btag\b/.test(style) && stream.current() == ">") { - state.token = css; - state.localMode = cssMode; - state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); - } - return style; - } - function maybeBackup(stream, pat, style) { - var cur = stream.current(); - var close = cur.search(pat), m; - if (close > -1) stream.backUp(cur.length - close); - else if (m = cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur[0]); - } - return style; - } - function script(stream, state) { - if (stream.match(/^<\/\s*script\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return html(stream, state); - } - return maybeBackup(stream, /<\/\s*script\s*>/, - state.localMode.token(stream, state.localState)); - } - function css(stream, state) { - if (stream.match(/^<\/\s*style\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return html(stream, state); - } - return maybeBackup(stream, /<\/\s*style\s*>/, - cssMode.token(stream, state.localState)); - } - - return { - startState: function() { - var state = htmlMode.startState(); - return {token: html, localMode: null, localState: null, htmlState: state}; - }, - - copyState: function(state) { - if (state.localState) - var local = CodeMirror.copyState(state.localMode, state.localState); - return {token: state.token, localMode: state.localMode, localState: local, - htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (!state.localMode || /^\s*<\//.test(textAfter)) - return htmlMode.indent(state.htmlState, textAfter); - else if (state.localMode.indent) - return state.localMode.indent(state.localState, textAfter); - else - return CodeMirror.Pass; - }, - - electricChars: "/{}:", - - innerMode: function(state) { - return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; - } - }; -}, "xml", "javascript", "css"); - -CodeMirror.defineMIME("text/html", "htmlmixed"); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/http.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/http.js deleted file mode 100644 index 5a51636..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/http.js +++ /dev/null @@ -1,98 +0,0 @@ -CodeMirror.defineMode("http", function() { - function failFirstLine(stream, state) { - stream.skipToEnd(); - state.cur = header; - return "error"; - } - - function start(stream, state) { - if (stream.match(/^HTTP\/\d\.\d/)) { - state.cur = responseStatusCode; - return "keyword"; - } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { - state.cur = requestPath; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function responseStatusCode(stream, state) { - var code = stream.match(/^\d+/); - if (!code) return failFirstLine(stream, state); - - state.cur = responseStatusText; - var status = Number(code[0]); - if (status >= 100 && status < 200) { - return "positive informational"; - } else if (status >= 200 && status < 300) { - return "positive success"; - } else if (status >= 300 && status < 400) { - return "positive redirect"; - } else if (status >= 400 && status < 500) { - return "negative client-error"; - } else if (status >= 500 && status < 600) { - return "negative server-error"; - } else { - return "error"; - } - } - - function responseStatusText(stream, state) { - stream.skipToEnd(); - state.cur = header; - return null; - } - - function requestPath(stream, state) { - stream.eatWhile(/\S/); - state.cur = requestProtocol; - return "string-2"; - } - - function requestProtocol(stream, state) { - if (stream.match(/^HTTP\/\d\.\d$/)) { - state.cur = header; - return "keyword"; - } else { - return failFirstLine(stream, state); - } - } - - function header(stream) { - if (stream.sol() && !stream.eat(/[ \t]/)) { - if (stream.match(/^.*?:/)) { - return "atom"; - } else { - stream.skipToEnd(); - return "error"; - } - } else { - stream.skipToEnd(); - return "string"; - } - } - - function body(stream) { - stream.skipToEnd(); - return null; - } - - return { - token: function(stream, state) { - var cur = state.cur; - if (cur != header && cur != body && stream.eatSpace()) return null; - return cur(stream, state); - }, - - blankLine: function(state) { - state.cur = body; - }, - - startState: function() { - return {cur: start}; - } - }; -}); - -CodeMirror.defineMIME("message/http", "http"); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/javascript.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/javascript.js deleted file mode 100644 index 08c1cb1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/javascript.js +++ /dev/null @@ -1,467 +0,0 @@ -// TODO actually recognize syntax of TypeScript constructs - -CodeMirror.defineMode("javascript", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var jsonMode = parserConfig.json; - var isTS = parserConfig.typescript; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}; - - var jsKeywords = { - "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, - "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, - "var": kw("var"), "const": kw("var"), "let": kw("var"), - "function": kw("function"), "catch": kw("catch"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "typeof": operator, "instanceof": operator, - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, - "this": kw("this") - }; - - // Extend the 'normal' keywords with the TypeScript language extensions - if (isTS) { - var type = {type: "variable", style: "variable-3"}; - var tsKeywords = { - // object-like things - "interface": kw("interface"), - "class": kw("class"), - "extends": kw("extends"), - "constructor": kw("constructor"), - - // scope modifiers - "public": kw("public"), - "private": kw("private"), - "protected": kw("protected"), - "static": kw("static"), - - "super": kw("super"), - - // types - "string": type, "number": type, "bool": type, "any": type - }; - - for (var attr in tsKeywords) { - jsKeywords[attr] = tsKeywords[attr]; - } - } - - return jsKeywords; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|~^]/; - - function chain(stream, state, f) { - state.tokenize = f; - return f(stream, state); - } - - function nextUntilUnescaped(stream, end) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (next == end && !escaped) - return false; - escaped = !escaped && next == "\\"; - } - return escaped; - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - - function jsTokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") - return chain(stream, state, jsTokenString(ch)); - else if (/[\[\]{}\(\),;\:\.]/.test(ch)) - return ret(ch); - else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } - else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } - else if (ch == "/") { - if (stream.eat("*")) { - return chain(stream, state, jsTokenComment); - } - else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } - else if (state.lastType == "operator" || state.lastType == "keyword c" || - /^[\[{}\(,;:]$/.test(state.lastType)) { - nextUntilUnescaped(stream, "/"); - stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla - return ret("regexp", "string-2"); - } - else { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - } - else if (ch == "#") { - stream.skipToEnd(); - return ret("error", "error"); - } - else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", null, stream.current()); - } - else { - stream.eatWhile(/[\w\$_]/); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.lastType != ".") ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - - function jsTokenString(quote) { - return function(stream, state) { - if (!nextUntilUnescaped(stream, quote)) - state.tokenize = jsTokenBase; - return ret("string", "string"); - }; - } - - function jsTokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = jsTokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true}; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - return style; - } - } - } - - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - function inList(list) { - for (var v = list; v; v = v.next) - if (v.name == varname) return true; - return false; - } - var state = cx.state; - if (state.context) { - cx.marked = "def"; - if (inList(state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else { - if (inList(state.globalVars)) return; - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: {name: "arguments"}}; - function pushcontext() { - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - cx.state.localVars = defaultVars; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state; - state.lexical = new JSLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - return function(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(arguments.callee); - }; - } - - function statement(type) { - if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), block, poplex); - if (type == ";") return cont(); - if (type == "if") return cont(pushlex("form"), expression, statement, poplex, maybeelse(cx.state.indented)); - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), - poplex, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - return expressionInner(type, maybeoperatorComma); - } - function expressionNoComma(type) { - return expressionInner(type, maybeoperatorNoComma); - } - function expressionInner(type, maybeop) { - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == "function") return cont(functiondef); - if (type == "keyword c") return cont(maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); - if (type == "operator") return cont(expression); - if (type == "[") return cont(pushlex("]"), commasep(expressionNoComma, "]"), poplex, maybeop); - if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeop); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - - function maybeoperatorComma(type, value) { - if (type == ",") return cont(expression); - return maybeoperatorNoComma(type, value, maybeoperatorComma); - } - function maybeoperatorNoComma(type, value, me) { - if (!me) me = maybeoperatorNoComma; - if (type == "operator") { - if (/\+\+|--/.test(value)) return cont(me); - if (value == "?") return cont(expression, expect(":"), expression); - return cont(expression); - } - if (type == ";") return; - if (type == "(") return cont(pushlex(")", "call"), commasep(expressionNoComma, ")"), poplex, me); - if (type == ".") return cont(property, me); - if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, me); - } - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperatorComma, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type, value) { - if (type == "variable") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(getterSetter); - } else if (type == "number" || type == "string") { - cx.marked = type + " property"; - } - if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expressionNoComma); - } - function getterSetter(type) { - if (type == ":") return cont(expression); - if (type != "variable") return cont(expect(":"), expression); - cx.marked = "property"; - return cont(functiondef); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") { - var lex = cx.state.lexical; - if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; - return cont(what, proceed); - } - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - else return pass(what, proceed); - }; - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function maybetype(type) { - if (type == ":") return cont(typedef); - return pass(); - } - function typedef(type) { - if (type == "variable"){cx.marked = "variable-3"; return cont();} - return pass(); - } - function vardef1(type, value) { - if (type == "variable") { - register(value); - return isTS ? cont(maybetype, vardef2) : cont(vardef2); - } - return pass(); - } - function vardef2(type, value) { - if (value == "=") return cont(expressionNoComma, vardef2); - if (type == ",") return cont(vardef1); - } - function maybeelse(indent) { - return function(type, value) { - if (type == "keyword b" && value == "else") { - cx.state.lexical = new JSLexical(indent, 0, "form", null, cx.state.lexical); - return cont(statement, poplex); - } - return pass(); - }; - } - function forspec1(type) { - if (type == "var") return cont(vardef1, expect(";"), forspec2); - if (type == ";") return cont(forspec2); - if (type == "variable") return cont(formaybein); - return pass(expression, expect(";"), forspec2); - } - function formaybein(_type, value) { - if (value == "in") return cont(expression); - return cont(maybeoperatorComma, forspec2); - } - function forspec2(type, value) { - if (type == ";") return cont(forspec3); - if (value == "in") return cont(expression); - return pass(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type != ")") cont(expression); - } - function functiondef(type, value) { - if (type == "variable") {register(value); return cont(functiondef);} - if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, statement, popcontext); - } - function funarg(type, value) { - if (type == "variable") {register(value); return isTS ? cont(maybetype) : cont();} - } - - // Interface - - return { - startState: function(basecolumn) { - return { - tokenize: jsTokenBase, - lastType: null, - cc: [], - lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - globalVars: parserConfig.globalVars, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - } - if (state.tokenize != jsTokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize == jsTokenComment) return CodeMirror.Pass; - if (state.tokenize != jsTokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - if (parserConfig.statementIndent != null) { - if (type == ")" && lexical.prev && lexical.prev.type == "stat") lexical = lexical.prev; - if (lexical.type == "stat") return lexical.indented + parserConfig.statementIndent; - } - - if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? 4 : 0); - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "form") return lexical.indented + indentUnit; - else if (type == "stat") - return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? indentUnit : 0); - else if (lexical.info == "switch" && !closing) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricChars: ":{}", - - jsonMode: jsonMode - }; -}); - -CodeMirror.defineMIME("text/javascript", "javascript"); -CodeMirror.defineMIME("text/ecmascript", "javascript"); -CodeMirror.defineMIME("application/javascript", "javascript"); -CodeMirror.defineMIME("application/ecmascript", "javascript"); -CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); -CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); -CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/meta.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/meta.js deleted file mode 100644 index 87000c4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/meta.js +++ /dev/null @@ -1,75 +0,0 @@ -CodeMirror.modeInfo = [ - {name: 'APL', mime: 'text/apl', mode: 'apl'}, - {name: 'Asterisk', mime: 'text/x-asterisk', mode: 'asterisk'}, - {name: 'C', mime: 'text/x-csrc', mode: 'clike'}, - {name: 'C++', mime: 'text/x-c++src', mode: 'clike'}, - {name: 'Java', mime: 'text/x-java', mode: 'clike'}, - {name: 'C#', mime: 'text/x-csharp', mode: 'clike'}, - {name: 'Scala', mime: 'text/x-scala', mode: 'clike'}, - {name: 'Clojure', mime: 'text/x-clojure', mode: 'clojure'}, - {name: 'CoffeeScript', mime: 'text/x-coffeescript', mode: 'coffeescript'}, - {name: 'Common Lisp', mime: 'text/x-common-lisp', mode: 'commonlisp'}, - {name: 'CSS', mime: 'text/css', mode: 'css'}, - {name: 'D', mime: 'text/x-d', mode: 'd'}, - {name: 'diff', mime: 'text/x-diff', mode: 'diff'}, - {name: 'ECL', mime: 'text/x-ecl', mode: 'ecl'}, - {name: 'Erlang', mime: 'text/x-erlang', mode: 'erlang'}, - {name: 'Gas', mime: 'text/x-gas', mode: 'gas'}, - {name: 'GitHub Flavored Markdown', mode: 'gfm'}, - {name: 'GO', mime: 'text/x-go', mode: 'go'}, - {name: 'Groovy', mime: 'text/x-groovy', mode: 'groovy'}, - {name: 'Haskell', mime: 'text/x-haskell', mode: 'haskell'}, - {name: 'Haxe', mime: 'text/x-haxe', mode: 'haxe'}, - {name: 'ASP.NET', mime: 'application/x-aspx', mode: 'htmlembedded'}, - {name: 'Embedded Javascript', mime: 'application/x-ejs', mode: 'htmlembedded'}, - {name: 'JavaServer Pages', mime: 'application/x-jsp', mode: 'htmlembedded'}, - {name: 'HTML', mime: 'text/html', mode: 'htmlmixed'}, - {name: 'HTTP', mime: 'message/http', mode: 'http'}, - {name: 'JavaScript', mime: 'text/javascript', mode: 'javascript'}, - {name: 'JSON', mime: 'application/json', mode: 'javascript'}, - {name: 'TypeScript', mime: 'application/typescript', mode: 'javascript'}, - {name: 'Jinja2', mime: 'jinja2', mode: 'jinja2'}, - {name: 'LESS', mime: 'text/x-less', mode: 'less'}, - {name: 'LiveScript', mime: 'text/x-livescript', mode: 'livescript'}, - {name: 'Lua', mime: 'text/x-lua', mode: 'lua'}, - {name: 'Markdown (GitHub-flavour)', mime: 'text/x-markdown', mode: 'markdown'}, - {name: 'mIRC', mime: 'text/mirc', mode: 'mirc'}, - {name: 'NTriples', mime: 'text/n-triples', mode: 'ntriples'}, - {name: 'OCaml', mime: 'text/x-ocaml', mode: 'ocaml'}, - {name: 'Pascal', mime: 'text/x-pascal', mode: 'pascal'}, - {name: 'Perl', mime: 'text/x-perl', mode: 'perl'}, - {name: 'PHP', mime: 'text/x-php', mode: 'php'}, - {name: 'PHP(HTML)', mime: 'application/x-httpd-php', mode: 'php'}, - {name: 'Pig', mime: 'text/x-pig', mode: 'pig'}, - {name: 'Plain Text', mime: 'text/plain', mode: 'null'}, - {name: 'Properties files', mime: 'text/x-properties', mode: 'clike'}, - {name: 'Python', mime: 'text/x-python', mode: 'python'}, - {name: 'R', mime: 'text/x-rsrc', mode: 'r'}, - {name: 'reStructuredText', mime: 'text/x-rst', mode: 'rst'}, - {name: 'Ruby', mime: 'text/x-ruby', mode: 'ruby'}, - {name: 'Rust', mime: 'text/x-rustsrc', mode: 'rust'}, - {name: 'Sass', mime: 'text/x-sass', mode: 'sass'}, - {name: 'Scheme', mime: 'text/x-scheme', mode: 'scheme'}, - {name: 'SCSS', mime: 'text/x-scss', mode: 'css'}, - {name: 'Shell', mime: 'text/x-sh', mode: 'shell'}, - {name: 'Sieve', mime: 'application/sieve', mode: 'sieve'}, - {name: 'Smalltalk', mime: 'text/x-stsrc', mode: 'smalltalk'}, - {name: 'Smarty', mime: 'text/x-smarty', mode: 'smarty'}, - {name: 'SPARQL', mime: 'application/x-sparql-query', mode: 'sparql'}, - {name: 'SQL', mime: 'text/x-sql', mode: 'sql'}, - {name: 'MariaDB', mime: 'text/x-mariadb', mode: 'sql'}, - {name: 'sTeX', mime: 'text/x-stex', mode: 'stex'}, - {name: 'LaTeX', mime: 'text/x-latex', mode: 'stex'}, - {name: 'Tcl', mime: 'text/x-tcl', mode: 'tcl'}, - {name: 'TiddlyWiki ', mime: 'text/x-tiddlywiki', mode: 'tiddlywiki'}, - {name: 'Tiki wiki', mime: 'text/tiki', mode: 'tiki'}, - {name: 'VB.NET', mime: 'text/x-vb', mode: 'vb'}, - {name: 'VBScript', mime: 'text/vbscript', mode: 'vbscript'}, - {name: 'Velocity', mime: 'text/velocity', mode: 'velocity'}, - {name: 'Verilog', mime: 'text/x-verilog', mode: 'verilog'}, - {name: 'XML', mime: 'application/xml', mode: 'xml'}, - {name: 'HTML', mime: 'text/html', mode: 'xml'}, - {name: 'XQuery', mime: 'application/xquery', mode: 'xquery'}, - {name: 'YAML', mime: 'text/x-yaml', mode: 'yaml'}, - {name: 'Z80', mime: 'text/x-z80', mode: 'z80'} -]; diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/php.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/php.js deleted file mode 100644 index 56497ed..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/php.js +++ /dev/null @@ -1,129 +0,0 @@ -(function() { - function keywords(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - function heredoc(delim) { - return function(stream, state) { - if (stream.match(delim)) state.tokenize = null; - else stream.skipToEnd(); - return "string"; - }; - } - var phpConfig = { - name: "clike", - keywords: keywords("abstract and array as break case catch class clone const continue declare default " + - "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + - "for foreach function global goto if implements interface instanceof namespace " + - "new or private protected public static switch throw trait try use var while xor " + - "die echo empty exit eval include include_once isset list require require_once return " + - "print unset __halt_compiler self static parent"), - blockKeywords: keywords("catch do else elseif for foreach if switch try while"), - atoms: keywords("true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__"), - builtin: keywords("func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport echo print global static exit array empty eval isset unset die include require include_once require_once"), - multiLineStrings: true, - hooks: { - "$": function(stream) { - stream.eatWhile(/[\w\$_]/); - return "variable-2"; - }, - "<": function(stream, state) { - if (stream.match(/<", false)) stream.next(); - return "comment"; - }, - "/": function(stream) { - if (stream.eat("/")) { - while (!stream.eol() && !stream.match("?>", false)) stream.next(); - return "comment"; - } - return false; - } - } - }; - - CodeMirror.defineMode("php", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, "text/html"); - var phpMode = CodeMirror.getMode(config, phpConfig); - - function dispatch(stream, state) { - var isPHP = state.curMode == phpMode; - if (stream.sol() && state.pending != '"') state.pending = null; - if (!isPHP) { - if (stream.match(/^<\?\w*/)) { - state.curMode = phpMode; - state.curState = state.php; - return "meta"; - } - if (state.pending == '"') { - while (!stream.eol() && stream.next() != '"') {} - var style = "string"; - } else if (state.pending && stream.pos < state.pending.end) { - stream.pos = state.pending.end; - var style = state.pending.style; - } else { - var style = htmlMode.token(stream, state.curState); - } - state.pending = null; - var cur = stream.current(), openPHP = cur.search(/<\?/); - if (openPHP != -1) { - if (style == "string" && /\"$/.test(cur) && !/\?>/.test(cur)) state.pending = '"'; - else state.pending = {end: stream.pos, style: style}; - stream.backUp(cur.length - openPHP); - } - return style; - } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { - state.curMode = htmlMode; - state.curState = state.html; - return "meta"; - } else { - return phpMode.token(stream, state.curState); - } - } - - return { - startState: function() { - var html = CodeMirror.startState(htmlMode), php = CodeMirror.startState(phpMode); - return {html: html, - php: php, - curMode: parserConfig.startOpen ? phpMode : htmlMode, - curState: parserConfig.startOpen ? php : html, - pending: null}; - }, - - copyState: function(state) { - var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), - php = state.php, phpNew = CodeMirror.copyState(phpMode, php), cur; - if (state.curMode == htmlMode) cur = htmlNew; - else cur = phpNew; - return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, - pending: state.pending}; - }, - - token: dispatch, - - indent: function(state, textAfter) { - if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || - (state.curMode == phpMode && /^\?>/.test(textAfter))) - return htmlMode.indent(state.html, textAfter); - return state.curMode.indent(state.curState, textAfter); - }, - - electricChars: "/{}:", - - innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } - }; - }, "htmlmixed", "clike"); - - CodeMirror.defineMIME("application/x-httpd-php", "php"); - CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); - CodeMirror.defineMIME("text/x-php", phpConfig); -})(); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/python.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/python.js deleted file mode 100644 index d69ef83..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/python.js +++ /dev/null @@ -1,340 +0,0 @@ -CodeMirror.defineMode("python", function(conf, parserConf) { - var ERRORCLASS = 'error'; - - function wordRegexp(words) { - return new RegExp("^((" + words.join(")|(") + "))\\b"); - } - - var singleOperators = parserConf.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!]"); - var singleDelimiters = parserConf.singleDelimiters || new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); - var doubleOperators = parserConf.doubleOperators || new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); - var doubleDelimiters = parserConf.doubleDelimiters || new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); - var tripleDelimiters = parserConf.tripleDelimiters || new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); - var identifiers = parserConf.identifiers|| new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); - - var wordOperators = wordRegexp(['and', 'or', 'not', 'is', 'in']); - var commonkeywords = ['as', 'assert', 'break', 'class', 'continue', - 'def', 'del', 'elif', 'else', 'except', 'finally', - 'for', 'from', 'global', 'if', 'import', - 'lambda', 'pass', 'raise', 'return', - 'try', 'while', 'with', 'yield']; - var commonBuiltins = ['abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'callable', 'chr', - 'classmethod', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', - 'enumerate', 'eval', 'filter', 'float', 'format', 'frozenset', - 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', - 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', - 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', - 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', - 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', - 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', - 'type', 'vars', 'zip', '__import__', 'NotImplemented', - 'Ellipsis', '__debug__']; - var py2 = {'builtins': ['apply', 'basestring', 'buffer', 'cmp', 'coerce', 'execfile', - 'file', 'intern', 'long', 'raw_input', 'reduce', 'reload', - 'unichr', 'unicode', 'xrange', 'False', 'True', 'None'], - 'keywords': ['exec', 'print']}; - var py3 = {'builtins': ['ascii', 'bytes', 'exec', 'print'], - 'keywords': ['nonlocal', 'False', 'True', 'None']}; - - if (!!parserConf.version && parseInt(parserConf.version, 10) === 3) { - commonkeywords = commonkeywords.concat(py3.keywords); - commonBuiltins = commonBuiltins.concat(py3.builtins); - var stringPrefixes = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i"); - } else { - commonkeywords = commonkeywords.concat(py2.keywords); - commonBuiltins = commonBuiltins.concat(py2.builtins); - var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); - } - var keywords = wordRegexp(commonkeywords); - var builtins = wordRegexp(commonBuiltins); - - var indentInfo = null; - - // tokenizers - function tokenBase(stream, state) { - // Handle scope changes - if (stream.sol()) { - var scopeOffset = state.scopes[0].offset; - if (stream.eatSpace()) { - var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset) { - indentInfo = 'indent'; - } else if (lineOffset < scopeOffset) { - indentInfo = 'dedent'; - } - return null; - } else { - if (scopeOffset > 0) { - dedent(stream, state); - } - } - } - if (stream.eatSpace()) { - return null; - } - - var ch = stream.peek(); - - // Handle Comments - if (ch === '#') { - stream.skipToEnd(); - return 'comment'; - } - - // Handle Number Literals - if (stream.match(/^[0-9\.]/, false)) { - var floatLiteral = false; - // Floats - if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } - if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } - if (stream.match(/^\.\d+/)) { floatLiteral = true; } - if (floatLiteral) { - // Float literals may be "imaginary" - stream.eat(/J/i); - return 'number'; - } - // Integers - var intLiteral = false; - // Hex - if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; } - // Binary - if (stream.match(/^0b[01]+/i)) { intLiteral = true; } - // Octal - if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; } - // Decimal - if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { - // Decimal literals may be "imaginary" - stream.eat(/J/i); - // TODO - Can you have imaginary longs? - intLiteral = true; - } - // Zero by itself with no other piece of number. - if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } - if (intLiteral) { - // Integer literals may be "long" - stream.eat(/L/i); - return 'number'; - } - } - - // Handle Strings - if (stream.match(stringPrefixes)) { - state.tokenize = tokenStringFactory(stream.current()); - return state.tokenize(stream, state); - } - - // Handle operators and Delimiters - if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { - return null; - } - if (stream.match(doubleOperators) - || stream.match(singleOperators) - || stream.match(wordOperators)) { - return 'operator'; - } - if (stream.match(singleDelimiters)) { - return null; - } - - if (stream.match(keywords)) { - return 'keyword'; - } - - if (stream.match(builtins)) { - return 'builtin'; - } - - if (stream.match(identifiers)) { - return 'variable'; - } - - // Handle non-detected items - stream.next(); - return ERRORCLASS; - } - - function tokenStringFactory(delimiter) { - while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { - delimiter = delimiter.substr(1); - } - var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; - - function tokenString(stream, state) { - while (!stream.eol()) { - stream.eatWhile(/[^'"\\]/); - if (stream.eat('\\')) { - stream.next(); - if (singleline && stream.eol()) { - return OUTCLASS; - } - } else if (stream.match(delimiter)) { - state.tokenize = tokenBase; - return OUTCLASS; - } else { - stream.eat(/['"]/); - } - } - if (singleline) { - if (parserConf.singleLineStringErrors) { - return ERRORCLASS; - } else { - state.tokenize = tokenBase; - } - } - return OUTCLASS; - } - tokenString.isString = true; - return tokenString; - } - - function indent(stream, state, type) { - type = type || 'py'; - var indentUnit = 0; - if (type === 'py') { - if (state.scopes[0].type !== 'py') { - state.scopes[0].offset = stream.indentation(); - return; - } - for (var i = 0; i < state.scopes.length; ++i) { - if (state.scopes[i].type === 'py') { - indentUnit = state.scopes[i].offset + conf.indentUnit; - break; - } - } - } else { - indentUnit = stream.column() + stream.current().length; - } - state.scopes.unshift({ - offset: indentUnit, - type: type - }); - } - - function dedent(stream, state, type) { - type = type || 'py'; - if (state.scopes.length == 1) return; - if (state.scopes[0].type === 'py') { - var _indent = stream.indentation(); - var _indent_index = -1; - for (var i = 0; i < state.scopes.length; ++i) { - if (_indent === state.scopes[i].offset) { - _indent_index = i; - break; - } - } - if (_indent_index === -1) { - return true; - } - while (state.scopes[0].offset !== _indent) { - state.scopes.shift(); - } - return false; - } else { - if (type === 'py') { - state.scopes[0].offset = stream.indentation(); - return false; - } else { - if (state.scopes[0].type != type) { - return true; - } - state.scopes.shift(); - return false; - } - } - } - - function tokenLexer(stream, state) { - indentInfo = null; - var style = state.tokenize(stream, state); - var current = stream.current(); - - // Handle '.' connected identifiers - if (current === '.') { - style = stream.match(identifiers, false) ? null : ERRORCLASS; - if (style === null && state.lastToken === 'meta') { - // Apply 'meta' style to '.' connected identifiers when - // appropriate. - style = 'meta'; - } - return style; - } - - // Handle decorators - if (current === '@') { - return stream.match(identifiers, false) ? 'meta' : ERRORCLASS; - } - - if ((style === 'variable' || style === 'builtin') - && state.lastToken === 'meta') { - style = 'meta'; - } - - // Handle scope changes. - if (current === 'pass' || current === 'return') { - state.dedent += 1; - } - if (current === 'lambda') state.lambda = true; - if ((current === ':' && !state.lambda && state.scopes[0].type == 'py') - || indentInfo === 'indent') { - indent(stream, state); - } - var delimiter_index = '[({'.indexOf(current); - if (delimiter_index !== -1) { - indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1)); - } - if (indentInfo === 'dedent') { - if (dedent(stream, state)) { - return ERRORCLASS; - } - } - delimiter_index = '])}'.indexOf(current); - if (delimiter_index !== -1) { - if (dedent(stream, state, current)) { - return ERRORCLASS; - } - } - if (state.dedent > 0 && stream.eol() && state.scopes[0].type == 'py') { - if (state.scopes.length > 1) state.scopes.shift(); - state.dedent -= 1; - } - - return style; - } - - var external = { - startState: function(basecolumn) { - return { - tokenize: tokenBase, - scopes: [{offset:basecolumn || 0, type:'py'}], - lastToken: null, - lambda: false, - dedent: 0 - }; - }, - - token: function(stream, state) { - var style = tokenLexer(stream, state); - - state.lastToken = style; - - if (stream.eol() && stream.lambda) { - state.lambda = false; - } - - return style; - }, - - indent: function(state) { - if (state.tokenize != tokenBase) { - return state.tokenize.isString ? CodeMirror.Pass : 0; - } - - return state.scopes[0].offset; - } - - }; - return external; -}); - -CodeMirror.defineMIME("text/x-python", "python"); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/shell.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/shell.js deleted file mode 100644 index abfd214..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/shell.js +++ /dev/null @@ -1,118 +0,0 @@ -CodeMirror.defineMode('shell', function() { - - var words = {}; - function define(style, string) { - var split = string.split(' '); - for(var i = 0; i < split.length; i++) { - words[split[i]] = style; - } - }; - - // Atoms - define('atom', 'true false'); - - // Keywords - define('keyword', 'if then do else elif while until for in esac fi fin ' + - 'fil done exit set unset export function'); - - // Commands - define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + - 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' + - 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + - 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' + - 'touch vi vim wall wc wget who write yes zsh'); - - function tokenBase(stream, state) { - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\'' || ch === '"' || ch === '`') { - state.tokens.unshift(tokenString(ch)); - return tokenize(stream, state); - } - if (ch === '#') { - if (sol && stream.eat('!')) { - stream.skipToEnd(); - return 'meta'; // 'comment'? - } - stream.skipToEnd(); - return 'comment'; - } - if (ch === '$') { - state.tokens.unshift(tokenDollar); - return tokenize(stream, state); - } - if (ch === '+' || ch === '=') { - return 'operator'; - } - if (ch === '-') { - stream.eat('-'); - stream.eatWhile(/\w/); - return 'attribute'; - } - if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - if(!/\w/.test(stream.peek())) { - return 'number'; - } - } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; - return words.hasOwnProperty(cur) ? words[cur] : null; - } - - function tokenString(quote) { - return function(stream, state) { - var next, end = false, escaped = false; - while ((next = stream.next()) != null) { - if (next === quote && !escaped) { - end = true; - break; - } - if (next === '$' && !escaped && quote !== '\'') { - escaped = true; - stream.backUp(1); - state.tokens.unshift(tokenDollar); - break; - } - escaped = !escaped && next === '\\'; - } - if (end || !escaped) { - state.tokens.shift(); - } - return (quote === '`' || quote === ')' ? 'quote' : 'string'); - }; - }; - - var tokenDollar = function(stream, state) { - if (state.tokens.length > 1) stream.eat('$'); - var ch = stream.next(), hungry = /\w/; - if (ch === '{') hungry = /[^}]/; - if (ch === '(') { - state.tokens[0] = tokenString(')'); - return tokenize(stream, state); - } - if (!/\d/.test(ch)) { - stream.eatWhile(hungry); - stream.eat('}'); - } - state.tokens.shift(); - return 'def'; - }; - - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase) (stream, state); - }; - - return { - startState: function() {return {tokens:[]};}, - token: function(stream, state) { - if (stream.eatSpace()) return null; - return tokenize(stream, state); - } - }; -}); - -CodeMirror.defineMIME('text/x-sh', 'shell'); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/sql.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/sql.js deleted file mode 100644 index 4ff847f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/sql.js +++ /dev/null @@ -1,268 +0,0 @@ -CodeMirror.defineMode("sql", function(config, parserConfig) { - "use strict"; - - var client = parserConfig.client || {}, - atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, - builtin = parserConfig.builtin || {}, - keywords = parserConfig.keywords || {}, - operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, - support = parserConfig.support || {}, - hooks = parserConfig.hooks || {}, - dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; - - function tokenBase(stream, state) { - var ch = stream.next(); - - // call hooks from the mime type - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } - - if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) - || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/)) { - // hex - return "number"; - } else if (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) - || (ch == "0" && stream.match(/^b[01]+/))) { - // bitstring - return "number"; - } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { - // numbers - stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/); - return "number"; - } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { - // placeholders - return "variable-3"; - } else if (ch == '"' || ch == "'") { - // strings - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } else if (/^[\(\),\;\[\]]/.test(ch)) { - // no highlightning - return null; - } else if (ch == "#" || (ch == "-" && stream.eat("-") && stream.eat(" "))) { - // 1-line comments - stream.skipToEnd(); - return "comment"; - } else if (ch == "/" && stream.eat("*")) { - // multi-line comments - state.tokenize = tokenComment; - return state.tokenize(stream, state); - } else if (ch == ".") { - // .1 for 0.1 - if (stream.match(/^[0-9eE]+/) && support.zerolessFloat == true) { - return "number"; - } - // .table_name (ODBC) - if (stream.match(/^[a-zA-Z_]+/) && support.ODBCdotTable == true) { - return "variable-2"; - } - } else if (operatorChars.test(ch)) { - // operators - stream.eatWhile(operatorChars); - return null; - } else if (ch == '{' && - (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { - // dates (weird ODBC syntax) - return "number"; - } else { - stream.eatWhile(/^[_\w\d]/); - var word = stream.current().toLowerCase(); - // dates (standard SQL syntax) - if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) - return "number"; - if (atoms.hasOwnProperty(word)) return "atom"; - if (builtin.hasOwnProperty(word)) return "builtin"; - if (keywords.hasOwnProperty(word)) return "keyword"; - if (client.hasOwnProperty(word)) return "string-2"; - return null; - } - } - - // 'string', with char specified in quote escaped by '\' - function tokenLiteral(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && ch == "\\"; - } - return "string"; - }; - } - function tokenComment(stream, state) { - while (true) { - if (stream.skipTo("*")) { - stream.next(); - if (stream.eat("/")) { - state.tokenize = tokenBase; - break; - } - } else { - stream.skipToEnd(); - break; - } - } - return "comment"; - } - - function pushContext(stream, state, type) { - state.context = { - prev: state.context, - indent: stream.indentation(), - col: stream.column(), - type: type - }; - } - - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } - - return { - startState: function() { - return {tokenize: tokenBase, context: null}; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) - state.context.align = false; - } - if (stream.eatSpace()) return null; - - var style = state.tokenize(stream, state); - if (style == "comment") return style; - - if (state.context && state.context.align == null) - state.context.align = true; - - var tok = stream.current(); - if (tok == "(") - pushContext(stream, state, ")"); - else if (tok == "[") - pushContext(stream, state, "]"); - else if (state.context && state.context.type == tok) - popContext(state); - return style; - }, - - indent: function(state, textAfter) { - var cx = state.context; - if (!cx) return CodeMirror.Pass; - if (cx.align) return cx.col + (textAfter.charAt(0) == cx.type ? 0 : 1); - else return cx.indent + config.indentUnit; - } - }; -}); - -(function() { - "use strict"; - - // `identifier` - function hookIdentifier(stream) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == "`" && !escaped) return "variable-2"; - escaped = !escaped && ch == "`"; - } - return null; - } - - // variable token - function hookVar(stream) { - // variables - // @@ and prefix - if (stream.eat("@")) { - stream.match(/^session\./); - stream.match(/^local\./); - stream.match(/^global\./); - } - - if (stream.eat("'")) { - stream.match(/^.*'/); - return "variable-2"; - } else if (stream.eat('"')) { - stream.match(/^.*"/); - return "variable-2"; - } else if (stream.eat("`")) { - stream.match(/^.*`/); - return "variable-2"; - } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { - return "variable-2"; - } - return null; - }; - - // short client keyword token - function hookClient(stream) { - // \g, etc - return stream.match(/^[a-zA-Z]\b/) ? "variable-2" : null; - } - - var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from having in insert into is join like not on or order select set table union update values where "; - - function set(str) { - var obj = {}, words = str.split(" "); - for (var i = 0; i < words.length; ++i) obj[words[i]] = true; - return obj; - } - - CodeMirror.defineMIME("text/x-sql", { - name: "sql", - keywords: set(sqlKeywords + "begin"), - builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable") - }); - - CodeMirror.defineMIME("text/x-mysql", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double enum float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable zerolessFloat"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - CodeMirror.defineMIME("text/x-mariadb", { - name: "sql", - client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), - keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), - builtin: set("bool boolean bit blob decimal double enum float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), - atoms: set("false true null unknown"), - operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set("date time timestamp"), - support: set("ODBCdotTable zerolessFloat"), - hooks: { - "@": hookVar, - "`": hookIdentifier, - "\\": hookClient - } - }); - - // this is based on Peter Raganitsch's 'plsql' mode - CodeMirror.defineMIME("text/x-plsql", { - name: "sql", - client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), - keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), - functions: set("abs acos add_months ascii asin atan atan2 average bfilename ceil chartorowid chr concat convert cos cosh count decode deref dual dump dup_val_on_index empty error exp false floor found glb greatest hextoraw initcap instr instrb isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mod months_between new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null nvl others power rawtohex reftohex round rowcount rowidtochar rpad rtrim sign sin sinh soundex sqlcode sqlerrm sqrt stddev substr substrb sum sysdate tan tanh to_char to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid upper user userenv variance vsize"), - builtin: set("bfile blob character clob dec float int integer mlslabel natural naturaln nchar nclob number numeric nvarchar2 real rowtype signtype smallint string varchar varchar2"), - operatorChars: /^[*+\-%<>!=~]/, - dateSQL: set("date time timestamp") - }); -}()); diff --git a/J6/src/examples/devfw.web/framework/assets/coder/mode/xml.js b/J6/src/examples/devfw.web/framework/assets/coder/mode/xml.js deleted file mode 100644 index 440343b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/coder/mode/xml.js +++ /dev/null @@ -1,328 +0,0 @@ -CodeMirror.defineMode("xml", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1; - - var Kludges = parserConfig.htmlMode ? { - autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, - 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, - 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, - 'track': true, 'wbr': true}, - implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, - 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, - 'th': true, 'tr': true}, - contextGrabbers: { - 'dd': {'dd': true, 'dt': true}, - 'dt': {'dd': true, 'dt': true}, - 'li': {'li': true}, - 'option': {'option': true, 'optgroup': true}, - 'optgroup': {'optgroup': true}, - 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, - 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, - 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, - 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, - 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, - 'rp': {'rp': true, 'rt': true}, - 'rt': {'rp': true, 'rt': true}, - 'tbody': {'tbody': true, 'tfoot': true}, - 'td': {'td': true, 'th': true}, - 'tfoot': {'tbody': true}, - 'th': {'td': true, 'th': true}, - 'thead': {'tbody': true, 'tfoot': true}, - 'tr': {'tr': true} - }, - doNotIndent: {"pre": true}, - allowUnquoted: true, - allowMissing: true - } : { - autoSelfClosers: {}, - implicitlyClosed: {}, - contextGrabbers: {}, - doNotIndent: {}, - allowUnquoted: false, - allowMissing: false - }; - var alignCDATA = parserConfig.alignCDATA; - - // Return variables for tokenizers - var tagName, type; - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var ch = stream.next(); - if (ch == "<") { - if (stream.eat("!")) { - if (stream.eat("[")) { - if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); - else return null; - } - else if (stream.match("--")) return chain(inBlock("comment", "-->")); - else if (stream.match("DOCTYPE", true, true)) { - stream.eatWhile(/[\w\._\-]/); - return chain(doctype(1)); - } - else return null; - } - else if (stream.eat("?")) { - stream.eatWhile(/[\w\._\-]/); - state.tokenize = inBlock("meta", "?>"); - return "meta"; - } - else { - var isClose = stream.eat("/"); - tagName = ""; - var c; - while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; - if (!tagName) return "error"; - type = isClose ? "closeTag" : "openTag"; - state.tokenize = inTag; - return "tag"; - } - } - else if (ch == "&") { - var ok; - if (stream.eat("#")) { - if (stream.eat("x")) { - ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); - } else { - ok = stream.eatWhile(/[\d]/) && stream.eat(";"); - } - } else { - ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); - } - return ok ? "atom" : "error"; - } - else { - stream.eatWhile(/[^&<]/); - return null; - } - } - - function inTag(stream, state) { - var ch = stream.next(); - if (ch == ">" || (ch == "/" && stream.eat(">"))) { - state.tokenize = inText; - type = ch == ">" ? "endTag" : "selfcloseTag"; - return "tag"; - } - else if (ch == "=") { - type = "equals"; - return null; - } - else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - return state.tokenize(stream, state); - } - else { - stream.eatWhile(/[^\s\u00a0=<>\"\']/); - return "word"; - } - } - - function inAttribute(quote) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inTag; - break; - } - } - return "string"; - }; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - return style; - }; - } - function doctype(depth) { - return function(stream, state) { - var ch; - while ((ch = stream.next()) != null) { - if (ch == "<") { - state.tokenize = doctype(depth + 1); - return state.tokenize(stream, state); - } else if (ch == ">") { - if (depth == 1) { - state.tokenize = inText; - break; - } else { - state.tokenize = doctype(depth - 1); - return state.tokenize(stream, state); - } - } - } - return "meta"; - }; - } - - var curState, curStream, setStyle; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - - function pushContext(tagName, startOfLine) { - var noIndent = Kludges.doNotIndent.hasOwnProperty(tagName) || (curState.context && curState.context.noIndent); - curState.context = { - prev: curState.context, - tagName: tagName, - indent: curState.indented, - startOfLine: startOfLine, - noIndent: noIndent - }; - } - function popContext() { - if (curState.context) curState.context = curState.context.prev; - } - - function element(type) { - if (type == "openTag") { - curState.tagName = tagName; - curState.tagStart = curStream.column(); - return cont(attributes, endtag(curState.startOfLine)); - } else if (type == "closeTag") { - var err = false; - if (curState.context) { - if (curState.context.tagName != tagName) { - if (Kludges.implicitlyClosed.hasOwnProperty(curState.context.tagName.toLowerCase())) { - popContext(); - } - err = !curState.context || curState.context.tagName != tagName; - } - } else { - err = true; - } - if (err) setStyle = "error"; - return cont(endclosetag(err)); - } - return cont(); - } - function endtag(startOfLine) { - return function(type) { - var tagName = curState.tagName; - curState.tagName = curState.tagStart = null; - if (type == "selfcloseTag" || - (type == "endTag" && Kludges.autoSelfClosers.hasOwnProperty(tagName.toLowerCase()))) { - maybePopContext(tagName.toLowerCase()); - return cont(); - } - if (type == "endTag") { - maybePopContext(tagName.toLowerCase()); - pushContext(tagName, startOfLine); - return cont(); - } - return cont(); - }; - } - function endclosetag(err) { - return function(type) { - if (err) setStyle = "error"; - if (type == "endTag") { popContext(); return cont(); } - setStyle = "error"; - return cont(arguments.callee); - }; - } - function maybePopContext(nextTagName) { - var parentTagName; - while (true) { - if (!curState.context) { - return; - } - parentTagName = curState.context.tagName.toLowerCase(); - if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) || - !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { - return; - } - popContext(); - } - } - - function attributes(type) { - if (type == "word") {setStyle = "attribute"; return cont(attribute, attributes);} - if (type == "endTag" || type == "selfcloseTag") return pass(); - setStyle = "error"; - return cont(attributes); - } - function attribute(type) { - if (type == "equals") return cont(attvalue, attributes); - if (!Kludges.allowMissing) setStyle = "error"; - else if (type == "word") setStyle = "attribute"; - return (type == "endTag" || type == "selfcloseTag") ? pass() : cont(); - } - function attvalue(type) { - if (type == "string") return cont(attvaluemaybe); - if (type == "word" && Kludges.allowUnquoted) {setStyle = "string"; return cont();} - setStyle = "error"; - return (type == "endTag" || type == "selfCloseTag") ? pass() : cont(); - } - function attvaluemaybe(type) { - if (type == "string") return cont(attvaluemaybe); - else return pass(); - } - - return { - startState: function() { - return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, tagStart: null, context: null}; - }, - - token: function(stream, state) { - if (!state.tagName && stream.sol()) { - state.startOfLine = true; - state.indented = stream.indentation(); - } - if (stream.eatSpace()) return null; - - setStyle = type = tagName = null; - var style = state.tokenize(stream, state); - state.type = type; - if ((style || type) && style != "comment") { - curState = state; curStream = stream; - while (true) { - var comb = state.cc.pop() || element; - if (comb(type || style)) break; - } - } - state.startOfLine = false; - return setStyle || style; - }, - - indent: function(state, textAfter, fullLine) { - var context = state.context; - if ((state.tokenize != inTag && state.tokenize != inText) || - context && context.noIndent) - return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; - if (state.tagName) return state.tagStart + indentUnit * multilineTagIndentFactor; - if (alignCDATA && /35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('9 G(){p.42=\'3.1\';p.22=\'\';p.2Q=O}G.P={2R:9(){8(p.2Q){p.2S()}7 f=u.13(\'1I\');7 s=f[f.z-1];7 g=s.1b;p.22=g.I(/(\\/)[^/]+$/,\'$1\');8(!u.Y){u.Y=9(a,b){8(b&&!b.Q){b=u.1J(b)}7 c=(b||u).13(\'*\');7 d=Z 14(\'\\\\s\'+a+\'\\\\s\');7 e=[];B(7 i=0,j;j=c[i];i++){8(d.10(\' \'+j.11+\' \'))e.1l(j)}r e}}8(23(2T)!="2U"){2T.P.43=9(a){24(a!=F&&23(a.44)!="45"){8(a==p)r O;a=a.2V}r N}}8(!C.1K){C.1K=9(s){8(!s)r F;8(C.2W){2X{r 2W.46(s)}2Y(2l){}}r 25(\'(\'+s+\')\')}}},2S:9(){2Z.P.47=9(a){r p.I(a?/[\\48-\\49]/g:/[^4a-4b]/g,"1L").z};26.P.4c=9(a){7 o={"M+":p.30()+1,"d+":p.4d(),"h+":p.2m()%12==0?12:p.2m()%12,"H+":p.2m(),"m+":p.4e(),"s+":p.4f(),"q+":1g.4g((p.30()+3)/3),"S":p.4h()};7 b={"0":"/4i","1":"/4j","2":"/4k","3":"/4l","4":"/4m","5":"/4n","6":"/4o"};8(/(y+)/.10(a)){a=a.I(14.$1,(p.4p()+"").31(4-14.$1.z))}8(/(E+)/.10(a)){a=a.I(14.$1,((14.$1.z>1)?(14.$1.z>2?"/4q/4r":"/4s"):"")+b[p.4t()+""])}B(7 k V o){8(Z 14("("+k+")").10(a)){a=a.I(14.$1,(14.$1.z==1)?(o[k]):(("1L"+o[k]).31((""+o[k]).z)))}}r a}},32:9(a){8(a&&a 19 1u){B(7 b V a){8(p[b]==2U){p[b]=a[b]}}}},27:{4u:9(e,a){7 b=e.2V;7 c=e.33;7 d=/;(\\s*)1M:(.+);/34;7 f=(b==u.1c?1g.1N(u.1c.1m,u.1v.1m):b.1n)-e.4v;24(c){8(c.Q[0]!=\'#\'){f-=c.1n}c=c.33}f-=a||0;8(d.10(e.L.1O)){e.L.1O=e.L.1O.I(d,\'; 1M:\'+f+\'35;\')}K{e.L.1O+=\'1M:\'+f+\'35;\'}},$:9(a,b,c){7 e=a.Q?a:u.1J(a||\'\');8(!e)4w a.Q?\'28 4x F\':\'4y \'+a+\' 4z 4A!\';8(!b)r e;e=e.13(b);8(!c)r e;7 d=Z[];7 f;B(7 i=0;i0){7 d=u.1h.U(c);8(d!=-1){d+=c.z;7 e=u.1h.U(";",d);8(e==-1)e=u.1h.z;b=5e(u.1h.1s(d,e))}}r b}},2c:{3p:\'5f\',3q:/(.+)\\[([^\\]]+)\\]/,1Y:/^(\\d{4}((\\/|-)\\d{2}){2})T(\\d{2}(:\\d{2}){2})((\\.\\d+)*)$/i,3r:9(a,b){B(7 i=0;i]*>([\\s\\S]+)<\\/1c>/5q;7 d=/<3D((.|\\n)*?)>([\\s\\S]*?)<\\/3D>/5r;7 f=b.5s(c);8(f==F){f=[\'\',b]}8(!a.Q)a=p.27.$(a);8(a){2X{a.2g=f[1].I(d,\'\').I(/]+)>/34,\'<3E L="1i:1F" 2n=\\"2C\\">3s\');p.1P(a.Y?a.Y(\'2C\'):u.Y(\'2C\',a),9(i,e){a.2D(e)});8(C.1Q.2E.U(\'5t\')!=-1){p.1P(a.13(\'5u\'),9(i,e){a.2D(e);u.13(\'3F\')[0].2F(e)})}}2Y(2l){8(C.3G){3G.5v(2l.5w)}}}7 g=/^[\\n\\s]+$/g;7 h=/1E=["\']*1p\\/2G["\']*/i;7 j;d.5x=0;24((j=d.29(b))!=F){8(j[1].U(\' 1E=\')==-1||h.10(j[1])){8(!g.10(j[3])){p.25(j[3])}}}},2H:9(c,d,e,f){(9(b){b.2q.2w(d,9(a){b.3C(c,a);8(e){e(a)}},f)}(p))},2I:9(c,d){(9(j,b){j.2q.2w({X:b+c+\'.G\',1V:N,1q:N},9(a){j.25(a)})}(p,d||p.22))},1K:9(a){r C.1K(a)},25:9(a){8(!a)r a;8(C.3H){C.3H(a)}K{7 b=u.3I(\'1I\');b.1D(\'1E\',\'1p/2G\');b.1p=a;u.3J.2F(b);u.3J.2D(b)}r a}};G.5y=G.32;G.P.3K=9(){r/3L\\s*6\\.0/.10(C.1Q.2E)};G.P.5z=9(){7 d=u.5A,X=1z.1A;d=X.1s(X.U(d)+d.z);r d.1s(d.U("/"))};G.P.21=9(a,b){8(!b)r u.1J(a).17;K u.1J(a).17=b};G.P.5B=9(a,b){8(a){5C(a,b||5D)}};G.P.1G=9(e,a,b){8(!e.Q)e=p.$(e);7 c=p.3K();p.R.1d(e,\'2J\',(9(t){r 9(){8(c)t.11+=\' 1G\';8(a)a(t)}})(e));p.R.1d(e,\'2K\',(9(t){r 9(){8(c)t.11=t.11.I(\' 1G\',\'\');8(b)b(t)}})(e))};G.P.5E=9(a,b,c){7 d=F;7 e=u.1v.13("3F");8(e.z!=0)d=e[0];K d=u.1c;7 f=d.13(\'1I\');7 g=N;B(7 i=0;i0){7 f;7 g=N;7 h=9(a){B(7 i=0;ic.z){g=O}}}40(c)}2v(2i)}},5Q)}9 40(a){8(C.2r){7 b=C.1Q.2E;8(/3L\\s*6\\.0/.10(b)){B(7 i=0;i - - - - AJAX Content - - -

                                                                                          Here is the content loaded via AJAX.

                                                                                          -
                                                                                            -
                                                                                          • easyui is a collection of user-interface plugin based on jQuery.
                                                                                          • -
                                                                                          • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                                                          • -
                                                                                          • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                          • -
                                                                                          • complete framework for HTML5 web page.
                                                                                          • -
                                                                                          • easyui save your time and scales while developing your products.
                                                                                          • -
                                                                                          • easyui is very easy but powerful.
                                                                                          • -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/actions.html deleted file mode 100644 index ecb3aaf..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/actions.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Accordion Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                          Accordion Actions

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to add or remove accordion items.
                                                                                          -
                                                                                          -
                                                                                          - Select - Add - Remove -
                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          Accordion for jQuery

                                                                                          -

                                                                                          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/ajax.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/ajax.html deleted file mode 100644 index 11be6c1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/ajax.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Loading Accordion Content with AJAX - jQuery EasyUI Demo - - - - - - - -

                                                                                          Loading Accordion Content with AJAX

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click AJAX panel header to load content via AJAX.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          Accordion for jQuery

                                                                                          -

                                                                                          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/basic.html deleted file mode 100644 index a47958e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/basic.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Basic Accordion - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Accordion

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click on panel header to show its content.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          Accordion for jQuery

                                                                                          -

                                                                                          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                            -
                                                                                          • - Foods -
                                                                                              -
                                                                                            • - Fruits -
                                                                                                -
                                                                                              • apple
                                                                                              • -
                                                                                              • orange
                                                                                              • -
                                                                                              -
                                                                                            • -
                                                                                            • - Vegetables -
                                                                                                -
                                                                                              • tomato
                                                                                              • -
                                                                                              • carrot
                                                                                              • -
                                                                                              • cabbage
                                                                                              • -
                                                                                              • potato
                                                                                              • -
                                                                                              • lettuce
                                                                                              • -
                                                                                              -
                                                                                            • -
                                                                                            -
                                                                                          • -
                                                                                          -
                                                                                          -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/datagrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/tools.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/tools.html deleted file mode 100644 index 261d763..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/accordion/tools.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Accordion Tools - jQuery EasyUI Demo - - - - - - - -

                                                                                          Accordion Tools

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the tools on top right of panel to perform actions.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          Accordion for jQuery

                                                                                          -

                                                                                          Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.

                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          The accordion allows you to provide multiple panels and display one at a time. Each panel has built-in support for expanding and collapsing. Clicking on a panel header to expand or collapse that panel body. The panel content can be loaded via ajax by specifying a 'href' property. Users can define a panel to be selected. If it is not specified, then the first panel is taken by default.

                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProduct IDList PriceUnit CostAttributeStatus
                                                                                          -
                                                                                          -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/calendar/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/calendar/basic.html deleted file mode 100644 index 5dc3260..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/calendar/basic.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Basic Calendar - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Calendar

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click to select date.
                                                                                          -
                                                                                          - -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/calendar/firstday.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/calendar/firstday.html deleted file mode 100644 index fd6863b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/calendar/firstday.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - First Day of Week - jQuery EasyUI Demo - - - - - - - -

                                                                                          First Day of Week

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Choose the first day of the week.
                                                                                          -
                                                                                          - -
                                                                                          - -
                                                                                          - -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combo/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combo/basic.html deleted file mode 100644 index d9ac911..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combo/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Combo - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Combo

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the right arrow button to show drop down panel that can be filled with any content.
                                                                                          -
                                                                                          - -
                                                                                          -
                                                                                          Select a language
                                                                                          - Java
                                                                                          - C#
                                                                                          - Ruby
                                                                                          - Basic
                                                                                          - Fortran -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/actions.html deleted file mode 100644 index 35e4a29..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/actions.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - ComboBox Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                          ComboBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to perform actions.
                                                                                          -
                                                                                          - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/basic.html deleted file mode 100644 index 95f3b45..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/basic.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Basic ComboBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic ComboBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Type in ComboBox to try auto complete.
                                                                                          -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/combobox_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/combobox_data1.json deleted file mode 100644 index 8bfba76..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/combobox_data1.json +++ /dev/null @@ -1,22 +0,0 @@ -[{ - "id":1, - "text":"Java", - "desc":"Write once, run anywhere" -},{ - "id":2, - "text":"C#", - "desc":"One of the programming languages designed for the Common Language Infrastructure" -},{ - "id":3, - "text":"Ruby", - "selected":true, - "desc":"A dynamic, reflective, general-purpose object-oriented programming language" -},{ - "id":4, - "text":"Perl", - "desc":"A high-level, general-purpose, interpreted, dynamic programming language" -},{ - "id":5, - "text":"Basic", - "desc":"A family of general-purpose, high-level programming languages" -}] \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/combobox_data2.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/combobox_data2.json deleted file mode 100644 index fcaca4f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/combobox_data2.json +++ /dev/null @@ -1,47 +0,0 @@ -[{ - "value":"f20", - "text":"Firefox 2.0 or higher", - "group":"Firefox" -},{ - "value":"f15", - "text":"Firefox 1.5.x", - "group":"Firefox" -},{ - "value":"f10", - "text":"Firefox 1.0.x", - "group":"Firefox" -},{ - "value":"ie7", - "text":"Microsoft Internet Explorer 7.0 or higher", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie6", - "text":"Microsoft Internet Explorer 6.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie5", - "text":"Microsoft Internet Explorer 5.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"ie4", - "text":"Microsoft Internet Explorer 4.x", - "group":"Microsoft Internet Explorer" -},{ - "value":"op9", - "text":"Opera 9.0 or higher", - "group":"Opera" -},{ - "value":"op8", - "text":"Opera 8.x", - "group":"Opera" -},{ - "value":"op7", - "text":"Opera 7.x", - "group":"Opera" -},{ - "value":"Safari", - "text":"Safari" -},{ - "value":"Other", - "text":"Other" -}] \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/customformat.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/customformat.html deleted file mode 100644 index bdd6d92..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/customformat.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Custom Format in ComboBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Custom Format in ComboBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to custom the format of list item.
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/dynamicdata.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/dynamicdata.html deleted file mode 100644 index 7e22988..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/dynamicdata.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Load Dynamic ComboBox Data - jQuery EasyUI Demo - - - - - - - -

                                                                                          Load Dynamic ComboBox Data

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the button below to load data.
                                                                                          -
                                                                                          -
                                                                                          - LoadData -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/group.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/group.html deleted file mode 100644 index 560e78e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/group.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Group ComboBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Group ComboBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This example shows how to display combobox items in groups.
                                                                                          -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/multiple.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/multiple.html deleted file mode 100644 index ce02d84..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/multiple.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Multiple Select - jQuery EasyUI Demo - - - - - - - -

                                                                                          Load Dynamic ComboBox Data

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Drop down the panel and select multiple items.
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/navigation.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/navigation.html deleted file mode 100644 index a62e4a0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/navigation.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - Navigate ComboBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Navigate ComboBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Navigate through combobox items width keyboard to select an item.
                                                                                          -
                                                                                          -
                                                                                          - - SelectOnNavigation -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/remotedata.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/remotedata.html deleted file mode 100644 index 592cc39..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/remotedata.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Binding to Remote Data - jQuery EasyUI Demo - - - - - - - -

                                                                                          Binding to Remote Data

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The ComboBox is bound to a remote data.
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/remotejsonp.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/remotejsonp.html deleted file mode 100644 index 52c99fe..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combobox/remotejsonp.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - Remote JSONP - jQuery EasyUI Demo - - - - - - - -

                                                                                          Remote JSONP

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to use JSONP to retrieve data from a remote site.
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/actions.html deleted file mode 100644 index 0d1930b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/actions.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - ComboGrid Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                          ComboGrid Actions

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to perform actions.
                                                                                          -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/basic.html deleted file mode 100644 index a43cb0b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/basic.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Basic ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic ComboGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the right arrow button to show the DataGrid.
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/datagrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/datagrid_data1.json deleted file mode 100644 index 3a62a71..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"selected":true,"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/initvalue.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/initvalue.html deleted file mode 100644 index 920b035..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/initvalue.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Initialize Value for ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Initialize Value for ComboGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Initialize value when ComboGrid is created.
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/multiple.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/multiple.html deleted file mode 100644 index 2b4273a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/multiple.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Multiple ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Multiple ComboGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the right arrow button to show the DataGrid and select items.
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/navigation.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/navigation.html deleted file mode 100644 index cfb7fad..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combogrid/navigation.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Navigate ComboGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Navigate ComboGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Navigate through grid items with keyboard to select an item.
                                                                                          -
                                                                                          -
                                                                                          - - SelectOnNavigation -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/actions.html deleted file mode 100644 index 671659d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/actions.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - ComboTree Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                          ComboTree Actions

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to perform actions
                                                                                          -
                                                                                          - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/basic.html deleted file mode 100644 index 09d5ca7..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/basic.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Basic ComboTree - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic ComboTree

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the right arrow button to show the tree panel.
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/initvalue.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/initvalue.html deleted file mode 100644 index 5f6576c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/initvalue.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Initialize Value for ComboTree - jQuery EasyUI Demo - - - - - - - -

                                                                                          Initialize Value for ComboTree

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Initialize Value when ComboTree is created.
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/multiple.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/multiple.html deleted file mode 100644 index cbdd23f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/multiple.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Multiple ComboTree - jQuery EasyUI Demo - - - - - - - -

                                                                                          Multiple ComboTree

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the right arrow button to show the tree panel and select multiple nodes.
                                                                                          -
                                                                                          -
                                                                                          - Cascade Check: - -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/tree_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/combotree/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/aligncolumns.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/aligncolumns.html deleted file mode 100644 index 41ce52f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/aligncolumns.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Aligning Columns in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Aligning Columns in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Use align and halign properties to set the alignment of the columns and their header.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/basic.html deleted file mode 100644 index 223a37c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/basic.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Basic DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The DataGrid is created from markup, no JavaScript code needed.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/cellediting.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/cellediting.html deleted file mode 100644 index 4a8b9a6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/cellediting.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - Cell Editing in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Cell Editing in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click a cell to start editing.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/cellstyle.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/cellstyle.html deleted file mode 100644 index 4a4bc4c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/cellstyle.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - DataGrid Cell Style - jQuery EasyUI Demo - - - - - - - -

                                                                                          DataGrid Cell Style

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The cells which listprice value is less than 30 are highlighted.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/checkbox.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/checkbox.html deleted file mode 100644 index e01266c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/checkbox.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CheckBox Selection on DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          CheckBox Selection on DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the checkbox on header to select or unselect all selections.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          -
                                                                                          - Selection Mode: -
                                                                                          - SelectOnCheck:
                                                                                          - CheckOnSelect: -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/clientpagination.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/clientpagination.html deleted file mode 100644 index 6af7b0d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/clientpagination.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Client Side Pagination in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Client Side Pagination in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to implement client side pagination in DataGrid.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - -
                                                                                          Inv NoDateNameAmountPriceCostNote
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/columngroup.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/columngroup.html deleted file mode 100644 index 258799d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/columngroup.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Column Group - jQuery EasyUI Demo - - - - - - - -

                                                                                          Column Group

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The header cells can be merged. Useful to group columns under a category.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - - -
                                                                                          Item IDProductItem Details
                                                                                          List PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/complextoolbar.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/complextoolbar.html deleted file mode 100644 index 767c030..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/complextoolbar.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - DataGrid Complex Toolbar - jQuery EasyUI Demo - - - - - - - -

                                                                                          DataGrid Complex Toolbar

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The DataGrid toolbar can be defined from a <div/> markup, so you can define the layout of toolbar easily.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          -
                                                                                          -
                                                                                          - - - - - -
                                                                                          -
                                                                                          - Date From: - To: - Language: - - Search -
                                                                                          -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/contextmenu.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/contextmenu.html deleted file mode 100644 index 9c59838..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/contextmenu.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - Context Menu on DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Context Menu on DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Right click on the header of DataGrid to display context menu.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/custompager.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/custompager.html deleted file mode 100644 index c1a80a6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/custompager.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Custom DataGrid Pager - jQuery EasyUI Demo - - - - - - - -

                                                                                          Custom DataGrid Pager

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          You can append some buttons to the standard datagrid pager bar.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/datagrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/datagrid_data2.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/datagrid_data2.json deleted file mode 100644 index 4a27e14..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/datagrid_data2.json +++ /dev/null @@ -1,15 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":28.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":63.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -],"footer":[ - {"unitcost":19.80,"listprice":60.40,"productid":"Average:"}, - {"unitcost":198.00,"listprice":604.00,"productid":"Total:"} -]} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/footer.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/footer.html deleted file mode 100644 index 3e1a615..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/footer.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Footer Rows in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Footer Rows in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The summary informations can be displayed in footer rows.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProduct IDList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/formatcolumns.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/formatcolumns.html deleted file mode 100644 index cbf6f40..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/formatcolumns.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Format DataGrid Columns - jQuery EasyUI Demo - - - - - - - -

                                                                                          Format DataGrid Columns

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The list price value will show red color when less than 30.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/frozencolumns.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/frozencolumns.html deleted file mode 100644 index 19650e5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/frozencolumns.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Frozen Columns in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Frozen Columns in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          You can freeze some columns that can't scroll out of view.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - - - -
                                                                                          Item IDProduct
                                                                                          List PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/frozenrows.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/frozenrows.html deleted file mode 100644 index 6072511..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/frozenrows.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Frozen Rows in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Frozen Rows in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to freeze some rows that will always be displayed at the top when the datagrid is scrolled down.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - - - -
                                                                                          Item IDProduct
                                                                                          List PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/mergecells.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/mergecells.html deleted file mode 100644 index 2751bcf..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/mergecells.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Merge Cells for DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Merge Cells for DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Cells in DataGrid body can be merged.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          ProductItem IDList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/multisorting.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/multisorting.html deleted file mode 100644 index 2a744af..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/multisorting.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Multiple Sorting - jQuery EasyUI Demo - - - - - - - -

                                                                                          Multiple Sorting

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Set 'multiSort' property to true to enable multiple column sorting.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/products.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/products.json deleted file mode 100644 index 2c512bc..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/products.json +++ /dev/null @@ -1,9 +0,0 @@ -[ -{"productid":"FI-SW-01","productname":"Koi"}, -{"productid":"K9-DL-01","productname":"Dalmation"}, -{"productid":"RP-SN-01","productname":"Rattlesnake"}, -{"productid":"RP-LI-02","productname":"Iguana"}, -{"productid":"FL-DSH-01","productname":"Manx"}, -{"productid":"FL-DLH-02","productname":"Persian"}, -{"productid":"AV-CB-01","productname":"Amazon Parrot"} -] diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowborder.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowborder.html deleted file mode 100644 index bad6fa4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowborder.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Row Border in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Row Border in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to change the row border style of datagrid.
                                                                                          -
                                                                                          -
                                                                                          - Border: - - Striped: - -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowediting.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowediting.html deleted file mode 100644 index a743e08..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowediting.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Row Editing in DataGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                          Row Editing in DataGrid

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the row to start editing.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowstyle.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowstyle.html deleted file mode 100644 index aefbfa7..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/rowstyle.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - DataGrid Row Style - jQuery EasyUI Demo - - - - - - - -

                                                                                          DataGrid Row Style

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The rows which listprice value is less than 30 are highlighted.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/selection.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/selection.html deleted file mode 100644 index bfe57f8..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/selection.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - DataGrid Selection - jQuery EasyUI Demo - - - - - - - -

                                                                                          DataGrid Selection

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Choose a selection mode and select one or more rows.
                                                                                          -
                                                                                          - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          -
                                                                                          - Selection Mode: - -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/simpletoolbar.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/simpletoolbar.html deleted file mode 100644 index 8aca43f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/simpletoolbar.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - DataGrid with Toolbar - jQuery EasyUI Demo - - - - - - - -

                                                                                          DataGrid with Toolbar

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Put buttons on top toolbar of DataGrid.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProductList PriceUnit CostAttributeStatus
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/transform.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/transform.html deleted file mode 100644 index dc2a420..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datagrid/transform.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Transform DataGrid from Table - jQuery EasyUI Demo - - - - - - - -

                                                                                          Transform DataGrid from Table

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Transform DataGrid from an existing, unformatted html table.
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                          Item IDProductList PriceAttribute
                                                                                          EST-1FI-SW-0136.50Large
                                                                                          EST-10K9-DL-0118.50Spotted Adult Female
                                                                                          EST-11RP-SN-0128.50Venomless
                                                                                          EST-12RP-SN-0126.50Rattleless
                                                                                          EST-13RP-LI-0235.50Green Adult
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/basic.html deleted file mode 100644 index 9fc40a6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic DateBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic DateBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the calendar image on the right side.
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/dateformat.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/dateformat.html deleted file mode 100644 index 5a45cc0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/dateformat.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Date Format - jQuery EasyUI Demo - - - - - - - -

                                                                                          Date Format

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Different date formats are applied to different DateBox components.
                                                                                          -
                                                                                          -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/events.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/events.html deleted file mode 100644 index 68c8b29..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/events.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - DateBox Events - jQuery EasyUI Demo - - - - - - - -

                                                                                          DateBox Events

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the calendar image on the right side.
                                                                                          -
                                                                                          -
                                                                                          - -
                                                                                          - Selected Date: - -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/validate.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/validate.html deleted file mode 100644 index a0b4ca3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datebox/validate.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Validate DateBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Validate DateBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          When the selected date is greater than specified date. The field validator will raise an error.
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/basic.html deleted file mode 100644 index 59bec16..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic DateTimeBox - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic DateTimeBox

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the calendar image on the right side.
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/initvalue.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/initvalue.html deleted file mode 100644 index 809e113..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/initvalue.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Initialize Value for DateTime - jQuery EasyUI Demo - - - - - - - -

                                                                                          Initialize Value for DateTime

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The value is initialized when DateTimeBox has been created.
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/showseconds.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/showseconds.html deleted file mode 100644 index bcd3707..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/datetimebox/showseconds.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Display Seconds - jQuery EasyUI Demo - - - - - - - -

                                                                                          Display Seconds

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The user can decide to display seconds part or not.
                                                                                          -
                                                                                          -
                                                                                          - Show Seconds: - -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/demo.css b/J6/src/examples/devfw.web/framework/assets/easyui/demo/demo.css deleted file mode 100644 index 824a8ab..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/demo.css +++ /dev/null @@ -1,26 +0,0 @@ -*{ - font-size:12px; -} -body { - font-family:helvetica,tahoma,verdana,sans-serif; - padding:20px; - font-size:13px; - margin:0; -} -h2 { - font-size:18px; - font-weight:bold; - margin:0; - margin-bottom:15px; -} -.demo-info{ - background:#FFFEE6; - color:#8F5700; - padding:12px; -} -.demo-tip{ - width:16px; - height:16px; - margin-right:8px; - float:left; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/basic.html deleted file mode 100644 index 0875bb2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic Dialog - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Dialog

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click below button to open or close dialog.
                                                                                          -
                                                                                          -
                                                                                          - Open - Close -
                                                                                          -
                                                                                          - The dialog content. -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/complextoolbar.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/complextoolbar.html deleted file mode 100644 index cce5594..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/complextoolbar.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Complex Toolbar on Dialog - jQuery EasyUI Demo - - - - - - - -

                                                                                          Complex Toolbar on Dialog

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to create complex toolbar on dialog.
                                                                                          -
                                                                                          -
                                                                                          - Open - Close -
                                                                                          -
                                                                                          - The dialog content. -
                                                                                          -
                                                                                          - - - - - -
                                                                                          - Edit - Help - - -
                                                                                          -
                                                                                          -
                                                                                          - Save - Close -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/toolbarbuttons.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/toolbarbuttons.html deleted file mode 100644 index 4265bef..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/dialog/toolbarbuttons.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Toolbar and Buttons - jQuery EasyUI Demo - - - - - - - -

                                                                                          Toolbar and Buttons

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The toolbar and buttons can be added to dialog.
                                                                                          -
                                                                                          -
                                                                                          - Open - Close -
                                                                                          -
                                                                                          - The dialog content. -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/basic.html deleted file mode 100644 index ee2aed1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/basic.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Basic Draggable - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Draggable

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Move the boxes below by clicking on it with mouse.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Title
                                                                                          -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/constain.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/constain.html deleted file mode 100644 index ae6eee1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/constain.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Constrain Draggable - jQuery EasyUI Demo - - - - - - - -

                                                                                          Constrain Draggable

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The draggable object can only be moved within its parent container.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/snap.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/snap.html deleted file mode 100644 index 0bf82b2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/draggable/snap.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Snap Draggable - jQuery EasyUI Demo - - - - - - - -

                                                                                          Snap Draggable

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to snap a draggable object to a 20x20 grid.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/accept.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/accept.html deleted file mode 100644 index ab279f8..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/accept.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Accept a Drop - jQuery EasyUI Demo - - - - - - - -

                                                                                          Accept a Drop

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Some draggable object can not be accepted.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - drag me! -
                                                                                          Drag 1
                                                                                          -
                                                                                          Drag 2
                                                                                          -
                                                                                          Drag 3
                                                                                          -
                                                                                          -
                                                                                          - drop here! -
                                                                                          -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/basic.html deleted file mode 100644 index 2ba8687..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/basic.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - Basic Droppable - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Droppable

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Drag the boxed on left to the target area on right.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Source
                                                                                          -
                                                                                          -
                                                                                          Apple
                                                                                          -
                                                                                          Peach
                                                                                          -
                                                                                          Orange
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Target
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/sort.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/sort.html deleted file mode 100644 index ec5d966..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/droppable/sort.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Change Items Order - jQuery EasyUI Demo - - - - - - - -

                                                                                          Change Items Order

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Drag the list items to change their order.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                            -
                                                                                          • Drag 1
                                                                                          • -
                                                                                          • Drag 2
                                                                                          • -
                                                                                          • Drag 3
                                                                                          • -
                                                                                          • Drag 4
                                                                                          • -
                                                                                          • Drag 5
                                                                                          • -
                                                                                          • Drag 6
                                                                                          • -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/easyloader/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/easyloader/basic.html deleted file mode 100644 index 44a09eb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/easyloader/basic.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Basic EasyLoader - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic EasyLoader

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to load components dynamically.
                                                                                          -
                                                                                          - -
                                                                                          -
                                                                                          -
                                                                                          - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/basic.html deleted file mode 100644 index b8e1dc1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/basic.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - Basic Form - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Form

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Fill the form and submit it.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - - - - - - - - - -
                                                                                          Name:
                                                                                          Email:
                                                                                          Subject:
                                                                                          Message:
                                                                                          Language: - -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - Submit - Clear -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/form_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/form_data1.json deleted file mode 100644 index e6f6ab1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/form_data1.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name":"easyui", - "email":"easyui@gmail.com", - "subject":"Subject Title", - "message":"Message Content", - "language":"en" -} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/load.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/load.html deleted file mode 100644 index dabb4ba..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/form/load.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Load Form Data - jQuery EasyUI Demo - - - - - - - -

                                                                                          Load Form Data

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to load form data.
                                                                                          -
                                                                                          - -
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - - - - - - - - - - - -
                                                                                          Name:
                                                                                          Email:
                                                                                          Subject:
                                                                                          Message:
                                                                                          Language: - -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/_content.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/_content.html deleted file mode 100644 index 66c1bd5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                                                          jQuery EasyUI framework help you build your web page easily.

                                                                                          -
                                                                                            -
                                                                                          • easyui is a collection of user-interface plugin based on jQuery.
                                                                                          • -
                                                                                          • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                                                          • -
                                                                                          • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                          • -
                                                                                          • complete framework for HTML5 web page.
                                                                                          • -
                                                                                          • easyui save your time and scales while developing your products.
                                                                                          • -
                                                                                          • easyui is very easy but powerful.
                                                                                          • -
                                                                                          - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/addremove.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/addremove.html deleted file mode 100644 index daf8c04..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/addremove.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Add and Remove Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                          Add and Remove Layout

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          Click the buttons below to add or remove region panel of layout.
                                                                                          -
                                                                                          -
                                                                                          - Select Region Panel: - - Add - Remove -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/autoheight.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/autoheight.html deleted file mode 100644 index bc71e94..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/autoheight.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Auto Height for Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                          Auto Height for Layout

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This example shows how to auto adjust layout height after dynamically adding items.
                                                                                          -
                                                                                          - -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -

                                                                                          Panel Content.

                                                                                          -

                                                                                          Panel Content.

                                                                                          -

                                                                                          Panel Content.

                                                                                          -

                                                                                          Panel Content.

                                                                                          -

                                                                                          Panel Content.

                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/basic.html deleted file mode 100644 index a98cfc9..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                          Basic Layout

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          The layout contains north,south,west,east and center regions.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          - - - - - - - - - - - -
                                                                                          Item IDProduct IDList PriceUnit CostAttributeStatus
                                                                                          -
                                                                                          -
                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/complex.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/complex.html deleted file mode 100644 index 29e6d41..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/complex.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Complex Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                          Complex Layout

                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          This sample shows how to create a complex layout.
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                          -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - content1 -
                                                                                            -
                                                                                            - content2 -
                                                                                            -
                                                                                            - content3 -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - - - - - - - - - - -
                                                                                            Item IDProduct IDList PriceUnit CostAttributeStatus
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/datagrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/datagrid_data1.json deleted file mode 100644 index e9a5be2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/datagrid_data1.json +++ /dev/null @@ -1,12 +0,0 @@ -{"total":28,"rows":[ - {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"}, - {"productid":"K9-DL-01","productname":"Dalmation","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":38.50,"attr1":"Venomless","itemid":"EST-11"}, - {"productid":"RP-SN-01","productname":"Rattlesnake","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"}, - {"productid":"RP-LI-02","productname":"Iguana","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"}, - {"productid":"FL-DSH-01","productname":"Manx","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"Adult Female","itemid":"EST-16"}, - {"productid":"FL-DLH-02","productname":"Persian","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"}, - {"productid":"AV-CB-01","productname":"Amazon Parrot","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"} -]} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/full.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/full.html deleted file mode 100644 index c83bf07..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/full.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - Full Layout - jQuery EasyUI Demo - - - - - - - -
                                                                                            north region
                                                                                            -
                                                                                            west content
                                                                                            -
                                                                                            east region
                                                                                            -
                                                                                            south region
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/nestedlayout.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/nestedlayout.html deleted file mode 100644 index 2e80b89..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/nestedlayout.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Nested Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                            Nested Layout

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The layout region panel contains another layout or other components.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/nocollapsible.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/nocollapsible.html deleted file mode 100644 index 3d2938e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/nocollapsible.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - No collapsible button in Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                            No collapsible button in Layout

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The layout region panel has no collapsible button.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/propertygrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/propertygrid_data1.json deleted file mode 100644 index 12b2d00..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/propertygrid_data1.json +++ /dev/null @@ -1,20 +0,0 @@ -{"total":7,"rows":[ - {"name":"Name","value":"Bill Smith","group":"ID Settings","editor":"text"}, - {"name":"Address","value":"","group":"ID Settings","editor":"text"}, - {"name":"Age","value":"40","group":"ID Settings","editor":"numberbox"}, - {"name":"Birthday","value":"01/02/2012","group":"ID Settings","editor":"datebox"}, - {"name":"SSN","value":"123-456-7890","group":"ID Settings","editor":"text"}, - {"name":"Email","value":"bill@gmail.com","group":"Marketing Settings","editor":{ - "type":"validatebox", - "options":{ - "validType":"email" - } - }}, - {"name":"FrequentBuyer","value":"false","group":"Marketing Settings","editor":{ - "type":"checkbox", - "options":{ - "on":true, - "off":false - } - }} -]} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/tree_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/layout/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/basic.html deleted file mode 100644 index 7e0ed7a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/basic.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Basic LinkButton - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic LinkButton

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Buttons can be created from <a/> link.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Add - Remove - Save - Cut - Text Button -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/group.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/group.html deleted file mode 100644 index 4560e90..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/group.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Button Group - jQuery EasyUI Demo - - - - - - - -

                                                                                            Button Group

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            In a button group only one button can be selected.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/iconalign.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/iconalign.html deleted file mode 100644 index 4c044a4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/iconalign.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Icon Align on LinkButton - jQuery EasyUI Demo - - - - - - - -

                                                                                            Icon Align on LinkButton

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Change the icon align to place icon on left or right of button.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Add - Remove - Save - Cut -
                                                                                            -
                                                                                            - Select Icon Align: - -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/plain.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/plain.html deleted file mode 100644 index 6331f0a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/plain.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Plain LinkButton - jQuery EasyUI Demo - - - - - - - -

                                                                                            Plain LinkButton

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The link buttons have plain effect.
                                                                                            -
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/toggle.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/toggle.html deleted file mode 100644 index d2df604..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/linkbutton/toggle.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Toggle Button - jQuery EasyUI Demo - - - - - - - -

                                                                                            Toggle Button

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the button below to switch its selected state.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Add - Remove - Save - Cut - Text Button -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/basic.html deleted file mode 100644 index c5d15ee..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/basic.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Basic Menu - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic Menu

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Right click on page to display menu.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            -
                                                                                            New
                                                                                            -
                                                                                            - Open -
                                                                                            -
                                                                                            Word
                                                                                            -
                                                                                            Excel
                                                                                            -
                                                                                            PowerPoint
                                                                                            -
                                                                                            - M1 -
                                                                                            -
                                                                                            sub1
                                                                                            -
                                                                                            sub2
                                                                                            -
                                                                                            - Sub -
                                                                                            -
                                                                                            sub21
                                                                                            -
                                                                                            sub22
                                                                                            -
                                                                                            sub23
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            sub3
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Window Demos -
                                                                                            -
                                                                                            Window
                                                                                            -
                                                                                            Dialog
                                                                                            - -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Save
                                                                                            -
                                                                                            Print
                                                                                            - -
                                                                                            Exit
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/customitem.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/customitem.html deleted file mode 100644 index 03c0b33..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/customitem.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Custom Menu Item - jQuery EasyUI Demo - - - - - - - -

                                                                                            Custom Menu Item

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Right click on page to display menu, move to the 'Open' item to display its custom sub content.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            New
                                                                                            -
                                                                                            - Open - -
                                                                                            -
                                                                                            Save
                                                                                            -
                                                                                            Print
                                                                                            - -
                                                                                            Exit
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/events.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/events.html deleted file mode 100644 index 9e8bea3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menu/events.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Menu Events - jQuery EasyUI Demo - - - - - - - -

                                                                                            Menu Events

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Right click on page to display menu and click an item.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            New
                                                                                            -
                                                                                            Save
                                                                                            -
                                                                                            Print
                                                                                            - -
                                                                                            Exit
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menubutton/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/menubutton/actions.html deleted file mode 100644 index 7ec5feb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menubutton/actions.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - MenuButton Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                            MenuButton Actions

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the buttons below to perform actions.
                                                                                            -
                                                                                            - -
                                                                                            - Home - Edit - Help - About -
                                                                                            -
                                                                                            -
                                                                                            Undo
                                                                                            -
                                                                                            Redo
                                                                                            - -
                                                                                            Cut
                                                                                            -
                                                                                            Copy
                                                                                            -
                                                                                            Paste
                                                                                            - -
                                                                                            - Toolbar -
                                                                                            -
                                                                                            Address
                                                                                            -
                                                                                            Link
                                                                                            -
                                                                                            Navigation Toolbar
                                                                                            -
                                                                                            Bookmark Toolbar
                                                                                            - -
                                                                                            New Toolbar...
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Delete
                                                                                            -
                                                                                            Select All
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Help
                                                                                            -
                                                                                            Update
                                                                                            -
                                                                                            About
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menubutton/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/menubutton/basic.html deleted file mode 100644 index 28bb67e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/menubutton/basic.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Basic MenuButton - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic MenuButton

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Move mouse over the button to drop down menu.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Home - Edit - Help - About -
                                                                                            -
                                                                                            -
                                                                                            Undo
                                                                                            -
                                                                                            Redo
                                                                                            - -
                                                                                            Cut
                                                                                            -
                                                                                            Copy
                                                                                            -
                                                                                            Paste
                                                                                            - -
                                                                                            - Toolbar -
                                                                                            -
                                                                                            Address
                                                                                            -
                                                                                            Link
                                                                                            -
                                                                                            Navigation Toolbar
                                                                                            -
                                                                                            Bookmark Toolbar
                                                                                            - -
                                                                                            New Toolbar...
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Delete
                                                                                            -
                                                                                            Select All
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Help
                                                                                            -
                                                                                            Update
                                                                                            -
                                                                                            About
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/alert.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/alert.html deleted file mode 100644 index 35c6bf9..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/alert.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Alert Messager - jQuery EasyUI Demo - - - - - - - -

                                                                                            Alert Messager

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click on each button to display different alert message box.
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/basic.html deleted file mode 100644 index b9637ab..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/basic.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - Basic Messager - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic Messager

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click on each button to see a distinct message box.
                                                                                            -
                                                                                            -
                                                                                            - Show - Slide - Fade - Progress -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/interactive.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/interactive.html deleted file mode 100644 index 12b9298..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/interactive.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Interactive Messager - jQuery EasyUI Demo - - - - - - - -

                                                                                            Interactive Messager

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click on each button to display interactive message box.
                                                                                            -
                                                                                            -
                                                                                            - Confirm - Prompt -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/position.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/position.html deleted file mode 100644 index f7f241a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/messager/position.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Message Box Position - jQuery EasyUI Demo - - - - - - - -

                                                                                            Message Box Position

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the buttons below to display message box on different position.
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/basic.html deleted file mode 100644 index c34f4fc..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/basic.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Basic NumberBox - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic NumberBox

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The Box can only input number.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - Value: -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/format.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/format.html deleted file mode 100644 index fe14b65..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/format.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Format NumberBox - jQuery EasyUI Demo - - - - - - - -

                                                                                            Format NumberBox

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Number formatting is the ability to control how a number is displayed.
                                                                                            -
                                                                                            -
                                                                                            - - - - - - - - - - - - - - - - - - - - - -
                                                                                            Number in the United States
                                                                                            Number in France
                                                                                            Currency:USD
                                                                                            Currency:EUR
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/range.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/range.html deleted file mode 100644 index e91a6b0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberbox/range.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Number Range - jQuery EasyUI Demo - - - - - - - -

                                                                                            Number Range

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The value is constrained to a range between 10 and 90.
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/basic.html deleted file mode 100644 index df62d96..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/basic.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Basic NumberSpinner - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic NumberSpinner

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click spinner button to change value.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - Value: -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/increment.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/increment.html deleted file mode 100644 index 35cd86c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/increment.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Increment Number - jQuery EasyUI Demo - - - - - - - -

                                                                                            Increment Number

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The sample shows how to set the increment step.
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/range.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/range.html deleted file mode 100644 index 02d8371..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/numberspinner/range.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Number Range - jQuery EasyUI Demo - - - - - - - -

                                                                                            Number Range

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The value is constrained to a range between 10 and 100.
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/basic.html deleted file mode 100644 index cfd62cf..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic Pagination - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic Pagination

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The user can change page number and page size on page bar.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/custombuttons.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/custombuttons.html deleted file mode 100644 index 15ea480..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/custombuttons.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Custom Pagination Buttons - jQuery EasyUI Demo - - - - - - - -

                                                                                            Custom Pagination Buttons

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The customized buttons can be append to page bar.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/simple.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/simple.html deleted file mode 100644 index 7009970..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/pagination/simple.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Simplify Pagination - jQuery EasyUI Demo - - - - - - - -

                                                                                            Simplify Pagination

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The sample shows how to simplify pagination.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/_content.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                                                            Here is the content loaded via AJAX.

                                                                                            -
                                                                                              -
                                                                                            • easyui is a collection of user-interface plugin based on jQuery.
                                                                                            • -
                                                                                            • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                                                            • -
                                                                                            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                            • -
                                                                                            • complete framework for HTML5 web page.
                                                                                            • -
                                                                                            • easyui save your time and scales while developing your products.
                                                                                            • -
                                                                                            • easyui is very easy but powerful.
                                                                                            • -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/basic.html deleted file mode 100644 index cb87f92..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/basic.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Basic Panel - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic Panel

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The panel is a container for other components or elements.
                                                                                            -
                                                                                            -
                                                                                            - Open - Close -
                                                                                            -
                                                                                            -

                                                                                            jQuery EasyUI framework help you build your web page easily.

                                                                                            -
                                                                                              -
                                                                                            • easyui is a collection of user-interface plugin based on jQuery.
                                                                                            • -
                                                                                            • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                            • -
                                                                                            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                            • -
                                                                                            • complete framework for HTML5 web page.
                                                                                            • -
                                                                                            • easyui save your time and scales while developing your products.
                                                                                            • -
                                                                                            • easyui is very easy but powerful.
                                                                                            • -
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/customtools.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/customtools.html deleted file mode 100644 index c3d72cb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/customtools.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Custom Panel Tools - jQuery EasyUI Demo - - - - - - - -

                                                                                            Custom Panel Tools

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the right top buttons to perform actions with panel.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -

                                                                                            jQuery EasyUI framework help you build your web page easily.

                                                                                            -
                                                                                              -
                                                                                            • easyui is a collection of user-interface plugin based on jQuery.
                                                                                            • -
                                                                                            • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                            • -
                                                                                            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                            • -
                                                                                            • complete framework for HTML5 web page.
                                                                                            • -
                                                                                            • easyui save your time and scales while developing your products.
                                                                                            • -
                                                                                            • easyui is very easy but powerful.
                                                                                            • -
                                                                                            -
                                                                                            -
                                                                                            - - - - -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/loadcontent.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/loadcontent.html deleted file mode 100644 index 865ccb5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/loadcontent.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Load Panel Content - jQuery EasyUI Demo - - - - - - - -

                                                                                            Load Panel Content

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the refresh button on top right of panel to load content.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/nestedpanel.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/nestedpanel.html deleted file mode 100644 index 348d19e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/nestedpanel.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Nested Panel - jQuery EasyUI Demo - - - - - - - -

                                                                                            Nested Panel

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The panel can be placed inside containers and can contain other components.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Left Content -
                                                                                            -
                                                                                            - Right Content -
                                                                                            -
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/paneltools.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/paneltools.html deleted file mode 100644 index f708916..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/panel/paneltools.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Panel Tools - jQuery EasyUI Demo - - - - - - - -

                                                                                            Panel Tools

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the right top buttons to perform actions with panel.
                                                                                            -
                                                                                            - -
                                                                                            -
                                                                                            -

                                                                                            jQuery EasyUI framework help you build your web page easily.

                                                                                            -
                                                                                              -
                                                                                            • easyui is a collection of user-interface plugin based on jQuery.
                                                                                            • -
                                                                                            • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                            • -
                                                                                            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                            • -
                                                                                            • complete framework for HTML5 web page.
                                                                                            • -
                                                                                            • easyui save your time and scales while developing your products.
                                                                                            • -
                                                                                            • easyui is very easy but powerful.
                                                                                            • -
                                                                                            -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/progressbar/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/progressbar/basic.html deleted file mode 100644 index a1eb973..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/progressbar/basic.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Basic ProgressBar - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic ProgressBar

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the button below to show progress information.
                                                                                            -
                                                                                            -
                                                                                            - Start -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/basic.html deleted file mode 100644 index 064c20f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/basic.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Basic PropertyGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic PropertyGrid

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click on row to change each property value.
                                                                                            -
                                                                                            - - -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/customcolumns.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/customcolumns.html deleted file mode 100644 index f8bc494..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/customcolumns.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - Customize Columns of PropertyGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                            Customize Columns of PropertyGrid

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The columns of PropertyGrid can be changed.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/groupformat.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/groupformat.html deleted file mode 100644 index e847a74..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/groupformat.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Group Format - jQuery EasyUI Demo - - - - - - - -

                                                                                            Group Format

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The user can change the group information.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/propertygrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/propertygrid_data1.json deleted file mode 100644 index 12b2d00..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/propertygrid/propertygrid_data1.json +++ /dev/null @@ -1,20 +0,0 @@ -{"total":7,"rows":[ - {"name":"Name","value":"Bill Smith","group":"ID Settings","editor":"text"}, - {"name":"Address","value":"","group":"ID Settings","editor":"text"}, - {"name":"Age","value":"40","group":"ID Settings","editor":"numberbox"}, - {"name":"Birthday","value":"01/02/2012","group":"ID Settings","editor":"datebox"}, - {"name":"SSN","value":"123-456-7890","group":"ID Settings","editor":"text"}, - {"name":"Email","value":"bill@gmail.com","group":"Marketing Settings","editor":{ - "type":"validatebox", - "options":{ - "validType":"email" - } - }}, - {"name":"FrequentBuyer","value":"false","group":"Marketing Settings","editor":{ - "type":"checkbox", - "options":{ - "on":true, - "off":false - } - }} -]} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/resizable/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/resizable/basic.html deleted file mode 100644 index 1c274d6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/resizable/basic.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Basic Resizable - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic Resizable

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click on the edge of box and move the edge to resize the box.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Resize Me
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Title
                                                                                            -
                                                                                            Drag and Resize Me
                                                                                            -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/searchbox/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/searchbox/basic.html deleted file mode 100644 index 602d177..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/searchbox/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic SearchBox - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic SearchBox

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click search button or press enter key in input box to do searching.
                                                                                            -
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/searchbox/category.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/searchbox/category.html deleted file mode 100644 index 0d1103a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/searchbox/category.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Search Category - jQuery EasyUI Demo - - - - - - - -

                                                                                            Search Category

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Select a category and click search button or press enter key in input box to do searching.
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            -
                                                                                            All News
                                                                                            -
                                                                                            Sports News
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/basic.html deleted file mode 100644 index 3c96f93..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/basic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Basic Slider - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic Slider

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Drag the slider to change value.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/formattip.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/formattip.html deleted file mode 100644 index 6114bd1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/formattip.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Format Tip Information - jQuery EasyUI Demo - - - - - - - -

                                                                                            Format Tip Information

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            This sample shows how to format tip information.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            -
                                                                                            jQuery EasyUI
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/rule.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/rule.html deleted file mode 100644 index 49623a2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/rule.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Slider Rule - jQuery EasyUI Demo - - - - - - - -

                                                                                            Slider Rule

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            This sample shows how to define slider rule.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/vertical.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/vertical.html deleted file mode 100644 index 42676e1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/slider/vertical.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Vertical Slider - jQuery EasyUI Demo - - - - - - - -

                                                                                            Vertical Slider

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            This sample shows how to create a vertical slider.
                                                                                            -
                                                                                            -
                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/splitbutton/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/splitbutton/actions.html deleted file mode 100644 index 795fe8c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/splitbutton/actions.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - SplitButton Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                            SplitButton Actions

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Click the buttons below to perform actions.
                                                                                            -
                                                                                            - -
                                                                                            - Home - Edit - Ok - Help -
                                                                                            -
                                                                                            -
                                                                                            Undo
                                                                                            -
                                                                                            Redo
                                                                                            - -
                                                                                            Cut
                                                                                            -
                                                                                            Copy
                                                                                            -
                                                                                            Paste
                                                                                            - -
                                                                                            - Toolbar -
                                                                                            -
                                                                                            Address
                                                                                            -
                                                                                            Link
                                                                                            -
                                                                                            Navigation Toolbar
                                                                                            -
                                                                                            Bookmark Toolbar
                                                                                            - -
                                                                                            New Toolbar...
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Delete
                                                                                            -
                                                                                            Select All
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Ok
                                                                                            -
                                                                                            Cancel
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Help
                                                                                            -
                                                                                            Update
                                                                                            -
                                                                                            - About - -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/splitbutton/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/splitbutton/basic.html deleted file mode 100644 index 0c3a3f6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/splitbutton/basic.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Basic SplitButton - jQuery EasyUI Demo - - - - - - - -

                                                                                            Basic SplitButton

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Move mouse over the arrow area of button to drop down menu.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            - Home - Edit - Ok - Help -
                                                                                            -
                                                                                            -
                                                                                            Undo
                                                                                            -
                                                                                            Redo
                                                                                            - -
                                                                                            Cut
                                                                                            -
                                                                                            Copy
                                                                                            -
                                                                                            Paste
                                                                                            - -
                                                                                            - Toolbar -
                                                                                            -
                                                                                            Address
                                                                                            -
                                                                                            Link
                                                                                            -
                                                                                            Navigation Toolbar
                                                                                            -
                                                                                            Bookmark Toolbar
                                                                                            - -
                                                                                            New Toolbar...
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Delete
                                                                                            -
                                                                                            Select All
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Ok
                                                                                            -
                                                                                            Cancel
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            Help
                                                                                            -
                                                                                            Update
                                                                                            -
                                                                                            - About - -
                                                                                            -
                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/_content.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                                                            Here is the content loaded via AJAX.

                                                                                            -
                                                                                              -
                                                                                            • easyui is a collection of user-interface plugin based on jQuery.
                                                                                            • -
                                                                                            • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                                                            • -
                                                                                            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                            • -
                                                                                            • complete framework for HTML5 web page.
                                                                                            • -
                                                                                            • easyui save your time and scales while developing your products.
                                                                                            • -
                                                                                            • easyui is very easy but powerful.
                                                                                            • -
                                                                                            - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/autoheight.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/autoheight.html deleted file mode 100644 index 6c5b4da..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/autoheight.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Auto Height for Tabs - jQuery EasyUI Demo - - - - - - - -

                                                                                            Auto Height for Tabs

                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            The tabs height is auto adjusted according to tab panel content.
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                            -

                                                                                            jQuery EasyUI framework help you build your web page easily.

                                                                                            -
                                                                                              -
                                                                                            • easyui is a collection of user-interface plugin based on jQuery.
                                                                                            • -
                                                                                            • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                            • -
                                                                                            • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                            • -
                                                                                            • complete framework for HTML5 web page.
                                                                                            • -
                                                                                            • easyui save your time and scales while developing your products.
                                                                                            • -
                                                                                            • easyui is very easy but powerful.
                                                                                            • -
                                                                                            -
                                                                                            -
                                                                                            -
                                                                                              -
                                                                                              -
                                                                                              - This is the help content. -
                                                                                              -
                                                                                              - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/basic.html deleted file mode 100644 index 00233cc..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/basic.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Basic Tabs - jQuery EasyUI Demo - - - - - - - -

                                                                                              Basic Tabs

                                                                                              -
                                                                                              -
                                                                                              -
                                                                                              Click tab strip to swap tab panel content.
                                                                                              -
                                                                                              -
                                                                                              -
                                                                                              -
                                                                                              -

                                                                                              jQuery EasyUI framework help you build your web page easily.

                                                                                              -
                                                                                                -
                                                                                              • easyui is a collection of user-interface plugin based on jQuery.
                                                                                              • -
                                                                                              • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                              • -
                                                                                              • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                              • -
                                                                                              • complete framework for HTML5 web page.
                                                                                              • -
                                                                                              • easyui save your time and scales while developing your products.
                                                                                              • -
                                                                                              • easyui is very easy but powerful.
                                                                                              • -
                                                                                              -
                                                                                              -
                                                                                              -
                                                                                                -
                                                                                                -
                                                                                                - This is the help content. -
                                                                                                -
                                                                                                - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/fixedwidth.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/fixedwidth.html deleted file mode 100644 index 2526a32..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/fixedwidth.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Fixed Tab Width - jQuery EasyUI Demo - - - - - - - -

                                                                                                Fixed Tab Width

                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                The tab strips have fixed width and height.
                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                Home Content.

                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                Maps Content.

                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                Journal Content.

                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                History Content.

                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                References Content.

                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                Contact Content.

                                                                                                -
                                                                                                -
                                                                                                - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/hover.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/hover.html deleted file mode 100644 index f5ce183..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/hover.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Hover Tabs - jQuery EasyUI Demo - - - - - - - -

                                                                                                Hover Tabs

                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                Move mouse over the tab strip to open the tab panel.
                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                -

                                                                                                jQuery EasyUI framework help you build your web page easily.

                                                                                                -
                                                                                                  -
                                                                                                • easyui is a collection of user-interface plugin based on jQuery.
                                                                                                • -
                                                                                                • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                                • -
                                                                                                • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                                • -
                                                                                                • complete framework for HTML5 web page.
                                                                                                • -
                                                                                                • easyui save your time and scales while developing your products.
                                                                                                • -
                                                                                                • easyui is very easy but powerful.
                                                                                                • -
                                                                                                -
                                                                                                -
                                                                                                -
                                                                                                  -
                                                                                                  -
                                                                                                  - This is the help content. -
                                                                                                  -
                                                                                                  - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/modem.png b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/modem.png deleted file mode 100644 index be5a2eb..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/modem.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/pda.png b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/pda.png deleted file mode 100644 index 1458d9b..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/pda.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/scanner.png b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/scanner.png deleted file mode 100644 index 974635d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/scanner.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/tablet.png b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/tablet.png deleted file mode 100644 index fa871f5..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/images/tablet.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/nestedtabs.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/nestedtabs.html deleted file mode 100644 index 15c426a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/nestedtabs.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - Nested Tabs - jQuery EasyUI Demo - - - - - - - -

                                                                                                  Nested Tabs

                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  The tab panel can contain sub tabs or other components.
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  Content 1
                                                                                                  -
                                                                                                  Content 2
                                                                                                  -
                                                                                                  Content 3
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  - -
                                                                                                  -
                                                                                                  - - - - - - - - - - - - - - - - - - - - -
                                                                                                  Title1Title2Title3
                                                                                                  d11d12d13
                                                                                                  d21d22d23
                                                                                                  -
                                                                                                  -
                                                                                                  - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/striptools.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/striptools.html deleted file mode 100644 index bb611eb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/striptools.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Tabs Strip Tools - jQuery EasyUI Demo - - - - - - - -

                                                                                                  Tabs Strip Tools

                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  Click the mini-buttons on the tab strip to perform actions.
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -

                                                                                                  jQuery EasyUI framework help you build your web page easily.

                                                                                                  -
                                                                                                    -
                                                                                                  • easyui is a collection of user-interface plugin based on jQuery.
                                                                                                  • -
                                                                                                  • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                                  • -
                                                                                                  • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                                  • -
                                                                                                  • complete framework for HTML5 web page.
                                                                                                  • -
                                                                                                  • easyui save your time and scales while developing your products.
                                                                                                  • -
                                                                                                  • easyui is very easy but powerful.
                                                                                                  • -
                                                                                                  -
                                                                                                  -
                                                                                                  - This is the help content. -
                                                                                                  -
                                                                                                  -
                                                                                                  - - - -
                                                                                                  - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabimage.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabimage.html deleted file mode 100644 index aa93354..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabimage.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Tabs with Images - jQuery EasyUI Demo - - - - - - - -

                                                                                                  Tabs with Images

                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  The tab strip can display big images.
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  -

                                                                                                  A modem (modulator-demodulator) is a device that modulates an analog carrier signal to encode digital information, and also demodulates such a carrier signal to decode the transmitted information.

                                                                                                  -
                                                                                                  -
                                                                                                  -

                                                                                                  In computing, an image scanner—often abbreviated to just scanner—is a device that optically scans images, printed text, handwriting, or an object, and converts it to a digital image.

                                                                                                  -
                                                                                                  -
                                                                                                  -

                                                                                                  A personal digital assistant (PDA), also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. PDAs are largely considered obsolete with the widespread adoption of smartphones.

                                                                                                  -
                                                                                                  -
                                                                                                  -

                                                                                                  A tablet computer, or simply tablet, is a one-piece mobile computer. Devices typically have a touchscreen, with finger or stylus gestures replacing the conventional computer mouse.

                                                                                                  -
                                                                                                  -
                                                                                                  - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabposition.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabposition.html deleted file mode 100644 index de67ac4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabposition.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Tab Position - jQuery EasyUI Demo - - - - - - - -

                                                                                                  Tab Position

                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                  Click the 'position' drop-down list and select an item to change the tab position.
                                                                                                  -
                                                                                                  -
                                                                                                  - Position: - -
                                                                                                  -
                                                                                                  -
                                                                                                  -

                                                                                                  jQuery EasyUI framework help you build your web page easily.

                                                                                                  -
                                                                                                    -
                                                                                                  • easyui is a collection of user-interface plugin based on jQuery.
                                                                                                  • -
                                                                                                  • easyui provides essential functionality for building modem, interactive, javascript applications.
                                                                                                  • -
                                                                                                  • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                                  • -
                                                                                                  • complete framework for HTML5 web page.
                                                                                                  • -
                                                                                                  • easyui save your time and scales while developing your products.
                                                                                                  • -
                                                                                                  • easyui is very easy but powerful.
                                                                                                  • -
                                                                                                  -
                                                                                                  -
                                                                                                  -
                                                                                                    -
                                                                                                    -
                                                                                                    - This is the help content. -
                                                                                                    -
                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabstools.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabstools.html deleted file mode 100644 index 3851f50..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tabstools.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Tabs Tools - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Tabs Tools

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Click the buttons on the top right of tabs header to add or remove tab panel.
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    - - -
                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tree_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tabs/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/actions.html deleted file mode 100644 index 9d43e89..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/actions.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - TimeSpinner Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                                    TimeSpinner Actions

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Click the buttons below to perform actions.
                                                                                                    -
                                                                                                    - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/basic.html deleted file mode 100644 index e62666d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Basic TimeSpinner - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Basic TimeSpinner

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Click spin button to adjust time.
                                                                                                    -
                                                                                                    -
                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/range.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/range.html deleted file mode 100644 index d2cce16..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/timespinner/range.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Time Range - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Time Range

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    The time value is constrained in specified range.
                                                                                                    -
                                                                                                    -
                                                                                                    - From 08:30 to 18:00 -
                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/_content.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/_content.html deleted file mode 100644 index f7b8e2e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/_content.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - AJAX Content - - -

                                                                                                    Here is the content loaded via AJAX.

                                                                                                    -
                                                                                                      -
                                                                                                    • easyui is a collection of user-interface plugin based on jQuery.
                                                                                                    • -
                                                                                                    • easyui provides essential functionality for building modern, interactive, javascript applications.
                                                                                                    • -
                                                                                                    • using easyui you don't need to write many javascript code, you usually defines user-interface by writing some HTML markup.
                                                                                                    • -
                                                                                                    • complete framework for HTML5 web page.
                                                                                                    • -
                                                                                                    • easyui save your time and scales while developing your products.
                                                                                                    • -
                                                                                                    • easyui is very easy but powerful.
                                                                                                    • -
                                                                                                    - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/_dialog.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/_dialog.html deleted file mode 100644 index 2c1b464..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/_dialog.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Dialog Content - - -
                                                                                                    -
                                                                                                    -
                                                                                                    User Name:
                                                                                                    - -
                                                                                                    -
                                                                                                    -
                                                                                                    Password:
                                                                                                    - -
                                                                                                    -
                                                                                                    - Login - Cancel -
                                                                                                    -
                                                                                                    - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/ajax.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/ajax.html deleted file mode 100644 index 3274d82..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/ajax.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Ajax Tooltip - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Ajax Tooltip

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    The tooltip content can be loaded via AJAX.
                                                                                                    -
                                                                                                    -
                                                                                                    - Hove me to display tooltip content via AJAX. - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/basic.html deleted file mode 100644 index 1cccde2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/basic.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Basic Tooltip - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Basic Tooltip

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Hover the links to display tooltip message.
                                                                                                    -
                                                                                                    -
                                                                                                    -

                                                                                                    The tooltip can use each elements title attribute. - Hover me to display tooltip. -

                                                                                                    - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/customcontent.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/customcontent.html deleted file mode 100644 index c55ec1d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/customcontent.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Custom Tooltip Content - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Custom Tooltip Content

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Access to each elements attribute to get the tooltip content.
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/customstyle.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/customstyle.html deleted file mode 100644 index a739e66..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/customstyle.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Custom Tooltip Style - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Custom Tooltip Style

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    This sample shows how to change the tooltip style.
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Hover Me
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Hover Me
                                                                                                    -
                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/position.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/position.html deleted file mode 100644 index b33e7e0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/position.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Tooltip Position - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Tooltip Position

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Click the drop-down list below to change where the tooltip appears.
                                                                                                    -
                                                                                                    -
                                                                                                    - Select position: - -
                                                                                                    -
                                                                                                    Hover Me
                                                                                                    -
                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/toolbar.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/toolbar.html deleted file mode 100644 index adc4a64..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/toolbar.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Tooltip as Toolbar - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Tooltip as Toolbar

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    This sample shows how to create a tooltip style toolbar.
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    -

                                                                                                    Hover me to display toolbar.

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    - - - - - -
                                                                                                    -
                                                                                                    - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/tooltipdialog.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/tooltipdialog.html deleted file mode 100644 index 4ce5f66..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tooltip/tooltipdialog.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Tooltip Dialog - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Tooltip Dialog

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    This sample shows how to create a tooltip dialog.
                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    -

                                                                                                    Click here to see the tooltip dialog. -

                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/actions.html deleted file mode 100644 index 7b3342c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/actions.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Tree Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                                    Tree Actions

                                                                                                    -
                                                                                                    -
                                                                                                    -
                                                                                                    Click the buttons below to perform actions.
                                                                                                    -
                                                                                                    - -
                                                                                                      - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/animation.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/animation.html deleted file mode 100644 index 7afed71..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/animation.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Animation Tree - jQuery EasyUI Demo - - - - - - - -

                                                                                                      Animation Tree

                                                                                                      -
                                                                                                      -
                                                                                                      -
                                                                                                      Apply 'animate' property to true to enable animation effect.
                                                                                                      -
                                                                                                      -
                                                                                                      -
                                                                                                        - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/basic.html deleted file mode 100644 index 21cdca4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/basic.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Basic Tree - jQuery EasyUI Demo - - - - - - - -

                                                                                                        Basic Tree

                                                                                                        -
                                                                                                        -
                                                                                                        -
                                                                                                        Click the arrow on the left to expand or collapse nodes.
                                                                                                        -
                                                                                                        -
                                                                                                        -
                                                                                                          -
                                                                                                        • - My Documents -
                                                                                                            -
                                                                                                          • - Photos -
                                                                                                              -
                                                                                                            • - Friend -
                                                                                                            • -
                                                                                                            • - Wife -
                                                                                                            • -
                                                                                                            • - Company -
                                                                                                            • -
                                                                                                            -
                                                                                                          • -
                                                                                                          • - Program Files -
                                                                                                              -
                                                                                                            • Intel
                                                                                                            • -
                                                                                                            • Java
                                                                                                            • -
                                                                                                            • Microsoft Office
                                                                                                            • -
                                                                                                            • Games
                                                                                                            • -
                                                                                                            -
                                                                                                          • -
                                                                                                          • index.html
                                                                                                          • -
                                                                                                          • about.html
                                                                                                          • -
                                                                                                          • welcome.html
                                                                                                          • -
                                                                                                          -
                                                                                                        • -
                                                                                                        - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/checkbox.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/checkbox.html deleted file mode 100644 index f859397..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/checkbox.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - CheckBox Tree - jQuery EasyUI Demo - - - - - - - -

                                                                                                        CheckBox Tree

                                                                                                        -
                                                                                                        -
                                                                                                        -
                                                                                                        Tree nodes with check boxes.
                                                                                                        -
                                                                                                        -
                                                                                                        - GetChecked -
                                                                                                        - CascadeCheck - OnlyLeafCheck -
                                                                                                        -
                                                                                                          - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/contextmenu.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/contextmenu.html deleted file mode 100644 index 64dfec3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/contextmenu.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - Tree Context Menu - jQuery EasyUI Demo - - - - - - - -

                                                                                                          Tree Context Menu

                                                                                                          -
                                                                                                          -
                                                                                                          -
                                                                                                          Right click on a node to display context menu.
                                                                                                          -
                                                                                                          -
                                                                                                          -
                                                                                                          -
                                                                                                            -
                                                                                                            -
                                                                                                            Append
                                                                                                            -
                                                                                                            Remove
                                                                                                            - -
                                                                                                            Expand
                                                                                                            -
                                                                                                            Collapse
                                                                                                            -
                                                                                                            - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/dnd.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/dnd.html deleted file mode 100644 index 20943c8..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/dnd.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Drag Drop Tree Nodes - jQuery EasyUI Demo - - - - - - - -

                                                                                                            Drag Drop Tree Nodes

                                                                                                            -
                                                                                                            -
                                                                                                            -
                                                                                                            Press mouse down and drag a node to another position.
                                                                                                            -
                                                                                                            -
                                                                                                            -
                                                                                                              - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/editable.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/editable.html deleted file mode 100644 index 8223131..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/editable.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Editable Tree - jQuery EasyUI Demo - - - - - - - -

                                                                                                              Editable Tree

                                                                                                              -
                                                                                                              -
                                                                                                              -
                                                                                                              Click the node to begin edit, press enter key to stop edit or esc key to cancel edit.
                                                                                                              -
                                                                                                              -
                                                                                                              -
                                                                                                                - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/icons.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/icons.html deleted file mode 100644 index 3dbc5a9..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/icons.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Tree Node Icons - jQuery EasyUI Demo - - - - - - - -

                                                                                                                Tree Node Icons

                                                                                                                -
                                                                                                                -
                                                                                                                -
                                                                                                                This sample illustrates how to add icons to tree node.
                                                                                                                -
                                                                                                                -
                                                                                                                -
                                                                                                                  - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/lines.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/lines.html deleted file mode 100644 index 074791f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/lines.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Tree Lines - jQuery EasyUI Demo - - - - - - - -

                                                                                                                  Tree Lines

                                                                                                                  -
                                                                                                                  -
                                                                                                                  -
                                                                                                                  This sample shows how to show tree lines.
                                                                                                                  -
                                                                                                                  -
                                                                                                                  -
                                                                                                                  -
                                                                                                                    - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/tree_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/tree_data1.json deleted file mode 100644 index 83fb0d6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/tree_data1.json +++ /dev/null @@ -1,49 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java", - "attributes":{ - "p1":"Custom Attribute1", - "p2":"Custom Attribute2" - } - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games", - "checked":true - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/tree_data2.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/tree_data2.json deleted file mode 100644 index 14e3429..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/tree/tree_data2.json +++ /dev/null @@ -1,61 +0,0 @@ -[{ - "id":1, - "text":"My Documents", - "children":[{ - "id":11, - "text":"Photos", - "state":"closed", - "children":[{ - "id":111, - "text":"Friend" - },{ - "id":112, - "text":"Wife" - },{ - "id":113, - "text":"Company" - }] - },{ - "id":12, - "text":"Program Files", - "state":"closed", - "children":[{ - "id":121, - "text":"Intel" - },{ - "id":122, - "text":"Java" - },{ - "id":123, - "text":"Microsoft Office" - },{ - "id":124, - "text":"Games" - }] - },{ - "id":16, - "text":"Actions", - "children":[{ - "text":"Add", - "iconCls":"icon-add" - },{ - "text":"Remove", - "iconCls":"icon-remove" - },{ - "text":"Save", - "iconCls":"icon-save" - },{ - "text":"Search", - "iconCls":"icon-search" - }] - },{ - "id":13, - "text":"index.html" - },{ - "id":14, - "text":"about.html" - },{ - "id":15, - "text":"welcome.html" - }] -}] diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/actions.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/actions.html deleted file mode 100644 index f1e0f81..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/actions.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - TreeGrid Actions - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    TreeGrid Actions

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Click the buttons below to perform actions.
                                                                                                                    -
                                                                                                                    - - - - - - - - - - - -
                                                                                                                    Task NamePersonsBegin DateEnd DateProgress
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/basic.html deleted file mode 100644 index 29d8c98..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/basic.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Basic TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Basic TreeGrid

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    TreeGrid allows you to expand or collapse group rows.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - - - - - - -
                                                                                                                    NameSizeModified Date
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/clientpagination.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/clientpagination.html deleted file mode 100644 index 3638df9..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/clientpagination.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - Client Side Pagination in TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Client Side Pagination in TreeGrid

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    This sample shows how to implement client side pagination in TreeGrid.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - - - - - - - - -
                                                                                                                    Task NamePersonsBegin DateEnd DateProgress
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/contextmenu.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/contextmenu.html deleted file mode 100644 index 3156f34..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/contextmenu.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - TreeGrid ContextMenu - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    TreeGrid ContextMenu

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Right click to display the context menu.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - - - - - - - - -
                                                                                                                    Task NamePersonsBegin DateEnd DateProgress
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Append
                                                                                                                    -
                                                                                                                    Remove
                                                                                                                    - -
                                                                                                                    Collapse
                                                                                                                    -
                                                                                                                    Expand
                                                                                                                    -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/editable.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/editable.html deleted file mode 100644 index 0216bd1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/editable.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Editable TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Editable TreeGrid

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Select one node and click edit button to perform editing.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - Edit - Save - Cancel -
                                                                                                                    - - - - - - - - - - -
                                                                                                                    Task NamePersonsBegin DateEnd DateProgress
                                                                                                                    - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/footer.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/footer.html deleted file mode 100644 index 801583e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/footer.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - TreeGrid with Footer - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    TreeGrid with Footer

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Show summary information on TreeGrid footer.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/reports.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/reports.html deleted file mode 100644 index 034d8c3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/reports.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Reports using TreeGrid - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Reports using TreeGrid

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Using TreeGrid to show complex reports.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                    Region
                                                                                                                    20092010
                                                                                                                    1st qrt.2st qrt.3st qrt.4st qrt.1st qrt.2st qrt.3st qrt.4st qrt.
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data1.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data1.json deleted file mode 100644 index 0313d46..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data1.json +++ /dev/null @@ -1,73 +0,0 @@ -[{ - "id":1, - "name":"C", - "size":"", - "date":"02/19/2010", - "children":[{ - "id":2, - "name":"Program Files", - "size":"120 MB", - "date":"03/20/2010", - "children":[{ - "id":21, - "name":"Java", - "size":"", - "date":"01/13/2010", - "state":"closed", - "children":[{ - "id":211, - "name":"java.exe", - "size":"142 KB", - "date":"01/13/2010" - },{ - "id":212, - "name":"jawt.dll", - "size":"5 KB", - "date":"01/13/2010" - }] - },{ - "id":22, - "name":"MySQL", - "size":"", - "date":"01/13/2010", - "state":"closed", - "children":[{ - "id":221, - "name":"my.ini", - "size":"10 KB", - "date":"02/26/2009" - },{ - "id":222, - "name":"my-huge.ini", - "size":"5 KB", - "date":"02/26/2009" - },{ - "id":223, - "name":"my-large.ini", - "size":"5 KB", - "date":"02/26/2009" - }] - }] - },{ - "id":3, - "name":"eclipse", - "size":"", - "date":"01/20/2010", - "children":[{ - "id":31, - "name":"eclipse.exe", - "size":"56 KB", - "date":"05/19/2009" - },{ - "id":32, - "name":"eclipse.ini", - "size":"1 KB", - "date":"04/20/2010" - },{ - "id":33, - "name":"notice.html", - "size":"7 KB", - "date":"03/17/2005" - }] - }] -}] \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data2.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data2.json deleted file mode 100644 index f917507..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data2.json +++ /dev/null @@ -1,11 +0,0 @@ -{"total":7,"rows":[ - {"id":1,"name":"All Tasks","begin":"3/4/2010","end":"3/20/2010","progress":60,"iconCls":"icon-ok"}, - {"id":2,"name":"Designing","begin":"3/4/2010","end":"3/10/2010","progress":100,"_parentId":1,"state":"closed"}, - {"id":21,"name":"Database","persons":2,"begin":"3/4/2010","end":"3/6/2010","progress":100,"_parentId":2}, - {"id":22,"name":"UML","persons":1,"begin":"3/7/2010","end":"3/8/2010","progress":100,"_parentId":2}, - {"id":23,"name":"Export Document","persons":1,"begin":"3/9/2010","end":"3/10/2010","progress":100,"_parentId":2}, - {"id":3,"name":"Coding","persons":2,"begin":"3/11/2010","end":"3/18/2010","progress":80}, - {"id":4,"name":"Testing","persons":1,"begin":"3/19/2010","end":"3/20/2010","progress":20} -],"footer":[ - {"name":"Total Persons:","persons":7,"iconCls":"icon-sum"} -]} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data3.json b/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data3.json deleted file mode 100644 index 0475c38..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/treegrid/treegrid_data3.json +++ /dev/null @@ -1,13 +0,0 @@ -{"total":9,"rows":[ - {"id":1,"region":"Wyoming"}, - {"id":11,"region":"Albin","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":12,"region":"Canon","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":13,"region":"Egbert","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":1}, - {"id":2,"region":"Washington"}, - {"id":21,"region":"Bellingham","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":22,"region":"Chehalis","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":23,"region":"Ellensburg","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2}, - {"id":24,"region":"Monroe","f1":2000,"f2":1800,"f3":1903,"f4":2183,"f5":2133,"f6":1923,"f7":2018,"f8":1838,"_parentId":2} -],"footer":[ - {"region":"Total","f1":14000,"f2":12600,"f3":13321,"f4":15281,"f5":14931,"f6":13461,"f7":14126,"f8":12866} -]} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/validatebox/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/validatebox/basic.html deleted file mode 100644 index 4746862..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/validatebox/basic.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Basic ValidateBox - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Basic ValidateBox

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    It's easy to add validate logic to a input box.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                    User Name:
                                                                                                                    Email:
                                                                                                                    Birthday:
                                                                                                                    URL:
                                                                                                                    Phone:
                                                                                                                    -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/validatebox/customtooltip.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/validatebox/customtooltip.html deleted file mode 100644 index 53ab216..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/validatebox/customtooltip.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - Custom ValidateBox Tooltip - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Custom ValidateBox Tooltip

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    This sample shows how to display another tooltip message on a valid textbox.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                    User Name:
                                                                                                                    Email:
                                                                                                                    Birthday:
                                                                                                                    URL:
                                                                                                                    Phone:
                                                                                                                    -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/basic.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/basic.html deleted file mode 100644 index f974a78..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/basic.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Basic Window - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Basic Window

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Window can be dragged freely on screen.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - Open - Close -
                                                                                                                    -
                                                                                                                    - The window content. -
                                                                                                                    - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/customtools.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/customtools.html deleted file mode 100644 index 1572449..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/customtools.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Custom Window Tools - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Custom Window Tools

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Click the right top buttons to perform actions.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - Open - Close -
                                                                                                                    -
                                                                                                                    - The window content. -
                                                                                                                    -
                                                                                                                    - - - - -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/inlinewindow.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/inlinewindow.html deleted file mode 100644 index a66cacd..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/inlinewindow.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Inline Window - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Inline Window

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    The inline window stay inside its parent.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - Open - Close -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - This window stay inside its parent -
                                                                                                                    -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/modalwindow.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/modalwindow.html deleted file mode 100644 index 6174815..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/modalwindow.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Modal Window - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Modal Window

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Click the open button below to open the modal window.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - Open - Close -
                                                                                                                    -
                                                                                                                    - The window content. -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/windowlayout.html b/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/windowlayout.html deleted file mode 100644 index 3478939..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/demo/window/windowlayout.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Window Layout - jQuery EasyUI Demo - - - - - - - -

                                                                                                                    Window Layout

                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    Using layout on window.
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - Open - Close -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - jQuery EasyUI framework help you build your web page easily. -
                                                                                                                    -
                                                                                                                    - Ok - Cancel -
                                                                                                                    -
                                                                                                                    -
                                                                                                                    - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/dgloader.js b/J6/src/examples/devfw.web/framework/assets/easyui/dgloader.js deleted file mode 100644 index 1080cbb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/dgloader.js +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************* -* 文 件 名:dgloader.js -* 文件描述:用于加载datagrid控件 -* 创 建 人:刘成文 -* 创建日期:2012-002 10:09:33 -********************************************/ -var pageTag = 'datagrid'; -if (!window.dgp) alert('初始化失败!'); -$(function () { - $('#'+dgp.id).datagrid({ - queryParams: dgp.query, - width: dgp.width, - height: dgp.height, - nowrap: true, - cache: false, - striped: true, - singleSelect: false, - idfield: dgp.idField, - pagination: dgp.paging, - pageSize: dgp.pageSize, - fitColumns: true, //列根据宽度调整 - fit: true, - url: dgp.dataUrl, - - //列 - columns: dgp.columns || null, - //工具栏 - toolbar: [ - - ], - //选择列 - onHeaderContextMenu: function (e, field) { - //DataGridExtend.headerContextMenu(e, field, $(this).attr('ID'), pageTag + '.' + $(this).attr('ID')) - }, - //加载成功的时候,初始化隐藏列 - onLoadSuccess: function (data) { - //DataGridExtend.loadSuccessInit($(this).attr('ID'), pageTag + '.' + $(this).attr('ID')); - // DataGridExtend.ShowTip_Url(); - }, - onLoadError: function () { - $.messager.alert('提示', '数据加载错误,请重新登录系统', 'error'); - } - }); - //搜素栏 - $(".datagrid-toolbar").append($(".searchBar")); - //工具栏 - $(".datagrid-toolbar").append($(".toolBar")); - //messageBar - $(".datagrid-toolbar").append($("#messageBar")); - - $(window).resize(function () { - $("#"+pageTag).datagrid("resize"); - }); - -}); - - -function test() { - alert('功能未实现!'); -} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/easyloader.js b/J6/src/examples/devfw.web/framework/assets/easyui/easyloader.js deleted file mode 100644 index 732e056..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/easyloader.js +++ /dev/null @@ -1,192 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function(){ -var _1={draggable:{js:"jquery.draggable.js"},droppable:{js:"jquery.droppable.js"},resizable:{js:"jquery.resizable.js"},linkbutton:{js:"jquery.linkbutton.js",css:"linkbutton.css"},progressbar:{js:"jquery.progressbar.js",css:"progressbar.css"},tooltip:{js:"jquery.tooltip.js",css:"tooltip.css"},pagination:{js:"jquery.pagination.js",css:"pagination.css",dependencies:["linkbutton"]},datagrid:{js:"jquery.datagrid.js",css:"datagrid.css",dependencies:["panel","resizable","linkbutton","pagination"]},treegrid:{js:"jquery.treegrid.js",css:"tree.css",dependencies:["datagrid"]},propertygrid:{js:"jquery.propertygrid.js",css:"propertygrid.css",dependencies:["datagrid"]},panel:{js:"jquery.panel.js",css:"panel.css"},window:{js:"jquery.window.js",css:"window.css",dependencies:["resizable","draggable","panel"]},dialog:{js:"jquery.dialog.js",css:"dialog.css",dependencies:["linkbutton","window"]},messager:{js:"jquery.messager.js",css:"messager.css",dependencies:["linkbutton","window","progressbar"]},layout:{js:"jquery.layout.js",css:"layout.css",dependencies:["resizable","panel"]},form:{js:"jquery.form.js"},menu:{js:"jquery.menu.js",css:"menu.css"},tabs:{js:"jquery.tabs.js",css:"tabs.css",dependencies:["panel","linkbutton"]},menubutton:{js:"jquery.menubutton.js",css:"menubutton.css",dependencies:["linkbutton","menu"]},splitbutton:{js:"jquery.splitbutton.js",css:"splitbutton.css",dependencies:["menubutton"]},accordion:{js:"jquery.accordion.js",css:"accordion.css",dependencies:["panel"]},calendar:{js:"jquery.calendar.js",css:"calendar.css"},combo:{js:"jquery.combo.js",css:"combo.css",dependencies:["panel","validatebox"]},combobox:{js:"jquery.combobox.js",css:"combobox.css",dependencies:["combo"]},combotree:{js:"jquery.combotree.js",dependencies:["combo","tree"]},combogrid:{js:"jquery.combogrid.js",dependencies:["combo","datagrid"]},validatebox:{js:"jquery.validatebox.js",css:"validatebox.css",dependencies:["tooltip"]},numberbox:{js:"jquery.numberbox.js",dependencies:["validatebox"]},searchbox:{js:"jquery.searchbox.js",css:"searchbox.css",dependencies:["menubutton"]},spinner:{js:"jquery.spinner.js",css:"spinner.css",dependencies:["validatebox"]},numberspinner:{js:"jquery.numberspinner.js",dependencies:["spinner","numberbox"]},timespinner:{js:"jquery.timespinner.js",dependencies:["spinner"]},tree:{js:"jquery.tree.js",css:"tree.css",dependencies:["draggable","droppable"]},datebox:{js:"jquery.datebox.js",css:"datebox.css",dependencies:["calendar","combo"]},datetimebox:{js:"jquery.datetimebox.js",dependencies:["datebox","timespinner"]},slider:{js:"jquery.slider.js",dependencies:["draggable"]},tooltip:{js:"jquery.tooltip.js"},parser:{js:"jquery.parser.js"}}; -var _2={"af":"easyui-lang-af.js","ar":"easyui-lang-ar.js","bg":"easyui-lang-bg.js","ca":"easyui-lang-ca.js","cs":"easyui-lang-cs.js","cz":"easyui-lang-cz.js","da":"easyui-lang-da.js","de":"easyui-lang-de.js","el":"easyui-lang-el.js","en":"easyui-lang-en.js","es":"easyui-lang-es.js","fr":"easyui-lang-fr.js","it":"easyui-lang-it.js","jp":"easyui-lang-jp.js","nl":"easyui-lang-nl.js","pl":"easyui-lang-pl.js","pt_BR":"easyui-lang-pt_BR.js","ru":"easyui-lang-ru.js","sv_SE":"easyui-lang-sv_SE.js","tr":"easyui-lang-tr.js","zh_CN":"easyui-lang-zh_CN.js","zh_TW":"easyui-lang-zh_TW.js"}; -var _3={}; -function _4(_5,_6){ -var _7=false; -var _8=document.createElement("script"); -_8.type="text/javascript"; -_8.language="javascript"; -_8.src=_5; -_8.onload=_8.onreadystatechange=function(){ -if(!_7&&(!_8.readyState||_8.readyState=="loaded"||_8.readyState=="complete")){ -_7=true; -_8.onload=_8.onreadystatechange=null; -if(_6){ -_6.call(_8); -} -} -}; -document.getElementsByTagName("head")[0].appendChild(_8); -}; -function _9(_a,_b){ -_4(_a,function(){ -document.getElementsByTagName("head")[0].removeChild(this); -if(_b){ -_b(); -} -}); -}; -function _c(_d,_e){ -var _f=document.createElement("link"); -_f.rel="stylesheet"; -_f.type="text/css"; -_f.media="screen"; -_f.href=_d; -document.getElementsByTagName("head")[0].appendChild(_f); -if(_e){ -_e.call(_f); -} -}; -function _10(_11,_12){ -_3[_11]="loading"; -var _13=_1[_11]; -var _14="loading"; -var _15=(easyloader.css&&_13["css"])?"loading":"loaded"; -if(easyloader.css&&_13["css"]){ -if(/^http/i.test(_13["css"])){ -var url=_13["css"]; -}else{ -var url=easyloader.base+"themes/"+easyloader.theme+"/"+_13["css"]; -} -_c(url,function(){ -_15="loaded"; -if(_14=="loaded"&&_15=="loaded"){ -_16(); -} -}); -} -if(/^http/i.test(_13["js"])){ -var url=_13["js"]; -}else{ -var url=easyloader.base+"plugins/"+_13["js"]; -} -_4(url,function(){ -_14="loaded"; -if(_14=="loaded"&&_15=="loaded"){ -_16(); -} -}); -function _16(){ -_3[_11]="loaded"; -easyloader.onProgress(_11); -if(_12){ -_12(); -} -}; -}; -function _17(_18,_19){ -var mm=[]; -var _1a=false; -if(typeof _18=="string"){ -add(_18); -}else{ -for(var i=0;i<_18.length;i++){ -add(_18[i]); -} -} -function add(_1b){ -if(!_1[_1b]){ -return; -} -var d=_1[_1b]["dependencies"]; -if(d){ -for(var i=0;i").appendTo("body"); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); -(function($){ -function _1b(e){ -var _1c=$.data(e.data.target,"draggable"); -var _1d=_1c.options; -var _1e=_1c.proxy; -var _1f=e.data; -var _20=_1f.startLeft+e.pageX-_1f.startX; -var top=_1f.startTop+e.pageY-_1f.startY; -if(_1e){ -if(_1e.parent()[0]==document.body){ -if(_1d.deltaX!=null&&_1d.deltaX!=undefined){ -_20=e.pageX+_1d.deltaX; -}else{ -_20=e.pageX-e.data.offsetWidth; -} -if(_1d.deltaY!=null&&_1d.deltaY!=undefined){ -top=e.pageY+_1d.deltaY; -}else{ -top=e.pageY-e.data.offsetHeight; -} -}else{ -if(_1d.deltaX!=null&&_1d.deltaX!=undefined){ -_20+=e.data.offsetWidth+_1d.deltaX; -} -if(_1d.deltaY!=null&&_1d.deltaY!=undefined){ -top+=e.data.offsetHeight+_1d.deltaY; -} -} -} -if(e.data.parent!=document.body){ -_20+=$(e.data.parent).scrollLeft(); -top+=$(e.data.parent).scrollTop(); -} -if(_1d.axis=="h"){ -_1f.left=_20; -}else{ -if(_1d.axis=="v"){ -_1f.top=top; -}else{ -_1f.left=_20; -_1f.top=top; -} -} -}; -function _21(e){ -var _22=$.data(e.data.target,"draggable"); -var _23=_22.options; -var _24=_22.proxy; -if(!_24){ -_24=$(e.data.target); -} -_24.css({left:e.data.left,top:e.data.top}); -$("body").css("cursor",_23.cursor); -}; -function _25(e){ -$.fn.draggable.isDragging=true; -var _26=$.data(e.data.target,"draggable"); -var _27=_26.options; -var _28=$(".droppable").filter(function(){ -return e.data.target!=this; -}).filter(function(){ -var _29=$.data(this,"droppable").options.accept; -if(_29){ -return $(_29).filter(function(){ -return this==e.data.target; -}).length>0; -}else{ -return true; -} -}); -_26.droppables=_28; -var _2a=_26.proxy; -if(!_2a){ -if(_27.proxy){ -if(_27.proxy=="clone"){ -_2a=$(e.data.target).clone().insertAfter(e.data.target); -}else{ -_2a=_27.proxy.call(e.data.target,e.data.target); -} -_26.proxy=_2a; -}else{ -_2a=$(e.data.target); -} -} -_2a.css("position","absolute"); -_1b(e); -_21(e); -_27.onStartDrag.call(e.data.target,e); -return false; -}; -function _2b(e){ -var _2c=$.data(e.data.target,"draggable"); -_1b(e); -if(_2c.options.onDrag.call(e.data.target,e)!=false){ -_21(e); -} -var _2d=e.data.target; -_2c.droppables.each(function(){ -var _2e=$(this); -if(_2e.droppable("options").disabled){ -return; -} -var p2=_2e.offset(); -if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_43.options.edge; -}; -}); -}; -$.fn.draggable.methods={options:function(jq){ -return $.data(jq[0],"draggable").options; -},proxy:function(jq){ -return $.data(jq[0],"draggable").proxy; -},enable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:true}); -}); -}}; -$.fn.draggable.parseOptions=function(_48){ -var t=$(_48); -return $.extend({},$.parser.parseOptions(_48,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,onBeforeDrag:function(e){ -},onStartDrag:function(e){ -},onDrag:function(e){ -},onStopDrag:function(e){ -}}; -$.fn.draggable.isDragging=false; -})(jQuery); -(function($){ -function _49(_4a){ -$(_4a).addClass("droppable"); -$(_4a).bind("_dragenter",function(e,_4b){ -$.data(_4a,"droppable").options.onDragEnter.apply(_4a,[e,_4b]); -}); -$(_4a).bind("_dragleave",function(e,_4c){ -$.data(_4a,"droppable").options.onDragLeave.apply(_4a,[e,_4c]); -}); -$(_4a).bind("_dragover",function(e,_4d){ -$.data(_4a,"droppable").options.onDragOver.apply(_4a,[e,_4d]); -}); -$(_4a).bind("_drop",function(e,_4e){ -$.data(_4a,"droppable").options.onDrop.apply(_4a,[e,_4e]); -}); -}; -$.fn.droppable=function(_4f,_50){ -if(typeof _4f=="string"){ -return $.fn.droppable.methods[_4f](this,_50); -} -_4f=_4f||{}; -return this.each(function(){ -var _51=$.data(this,"droppable"); -if(_51){ -$.extend(_51.options,_4f); -}else{ -_49(this); -$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_4f)}); -} -}); -}; -$.fn.droppable.methods={options:function(jq){ -return $.data(jq[0],"droppable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:true}); -}); -}}; -$.fn.droppable.parseOptions=function(_52){ -var t=$(_52); -return $.extend({},$.parser.parseOptions(_52,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_53){ -},onDragOver:function(e,_54){ -},onDragLeave:function(e,_55){ -},onDrop:function(e,_56){ -}}; -})(jQuery); -(function($){ -$.fn.resizable=function(_57,_58){ -if(typeof _57=="string"){ -return $.fn.resizable.methods[_57](this,_58); -} -function _59(e){ -var _5a=e.data; -var _5b=$.data(_5a.target,"resizable").options; -if(_5a.dir.indexOf("e")!=-1){ -var _5c=_5a.startWidth+e.pageX-_5a.startX; -_5c=Math.min(Math.max(_5c,_5b.minWidth),_5b.maxWidth); -_5a.width=_5c; -} -if(_5a.dir.indexOf("s")!=-1){ -var _5d=_5a.startHeight+e.pageY-_5a.startY; -_5d=Math.min(Math.max(_5d,_5b.minHeight),_5b.maxHeight); -_5a.height=_5d; -} -if(_5a.dir.indexOf("w")!=-1){ -var _5c=_5a.startWidth-e.pageX+_5a.startX; -_5c=Math.min(Math.max(_5c,_5b.minWidth),_5b.maxWidth); -_5a.width=_5c; -_5a.left=_5a.startLeft+_5a.startWidth-_5a.width; -} -if(_5a.dir.indexOf("n")!=-1){ -var _5d=_5a.startHeight-e.pageY+_5a.startY; -_5d=Math.min(Math.max(_5d,_5b.minHeight),_5b.maxHeight); -_5a.height=_5d; -_5a.top=_5a.startTop+_5a.startHeight-_5a.height; -} -}; -function _5e(e){ -var _5f=e.data; -var t=$(_5f.target); -t.css({left:_5f.left,top:_5f.top}); -if(t.outerWidth()!=_5f.width){ -t._outerWidth(_5f.width); -} -if(t.outerHeight()!=_5f.height){ -t._outerHeight(_5f.height); -} -}; -function _60(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _61(e){ -_59(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_5e(e); -} -return false; -}; -function _62(e){ -$.fn.resizable.isResizing=false; -_59(e,true); -_5e(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _63=null; -var _64=$.data(this,"resizable"); -if(_64){ -$(this).unbind(".resizable"); -_63=$.extend(_64.options,_57||{}); -}else{ -_63=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_57||{}); -$.data(this,"resizable",{options:_63}); -} -if(_63.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var dir=_65(e); -if(dir==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",dir+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_65(e); -if(dir==""){ -return; -} -function _66(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _67={target:e.data.target,dir:dir,startLeft:_66("left"),startTop:_66("top"),left:_66("left"),top:_66("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_67,_60); -$(document).bind("mousemove.resizable",_67,_61); -$(document).bind("mouseup.resizable",_67,_62); -$("body").css("cursor",dir+"-resize"); -}); -function _65(e){ -var tt=$(e.data.target); -var dir=""; -var _68=tt.offset(); -var _69=tt.outerWidth(); -var _6a=tt.outerHeight(); -var _6b=_63.edge; -if(e.pageY>_68.top&&e.pageY<_68.top+_6b){ -dir+="n"; -}else{ -if(e.pageY<_68.top+_6a&&e.pageY>_68.top+_6a-_6b){ -dir+="s"; -} -} -if(e.pageX>_68.left&&e.pageX<_68.left+_6b){ -dir+="w"; -}else{ -if(e.pageX<_68.left+_69&&e.pageX>_68.left+_69-_6b){ -dir+="e"; -} -} -var _6c=_63.handles.split(","); -for(var i=0;i<_6c.length;i++){ -var _6d=_6c[i].replace(/(^\s*)|(\s*$)/g,""); -if(_6d=="all"||_6d==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_6e){ -var t=$(_6e); -return $.extend({},$.parser.parseOptions(_6e,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); -(function($){ -function _6f(_70){ -var _71=$.data(_70,"linkbutton").options; -var t=$(_70); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_71.plain){ -t.addClass("l-btn-plain"); -} -if(_71.selected){ -t.addClass(_71.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_71.group||""); -t.attr("id",_71.id||""); -t.html(""+""+""); -if(_71.text){ -t.find(".l-btn-text").html(_71.text); -if(_71.iconCls){ -t.find(".l-btn-text").addClass(_71.iconCls).addClass(_71.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_71.iconCls){ -t.find(".l-btn-empty").addClass(_71.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_71.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_71.toggle&&!_71.disabled){ -t.bind("click.linkbutton",function(){ -if(_71.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_72(_70,_71.selected); -_73(_70,_71.disabled); -}; -function _72(_74,_75){ -var _76=$.data(_74,"linkbutton").options; -if(_75){ -if(_76.group){ -$("a.l-btn[group=\""+_76.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_74).addClass(_76.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_76.selected=true; -}else{ -if(!_76.group){ -$(_74).removeClass("l-btn-selected l-btn-plain-selected"); -_76.selected=false; -} -} -}; -function _73(_77,_78){ -var _79=$.data(_77,"linkbutton"); -var _7a=_79.options; -$(_77).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_78){ -_7a.disabled=true; -var _7b=$(_77).attr("href"); -if(_7b){ -_79.href=_7b; -$(_77).attr("href","javascript:void(0)"); -} -if(_77.onclick){ -_79.onclick=_77.onclick; -_77.onclick=null; -} -_7a.plain?$(_77).addClass("l-btn-disabled l-btn-plain-disabled"):$(_77).addClass("l-btn-disabled"); -}else{ -_7a.disabled=false; -if(_79.href){ -$(_77).attr("href",_79.href); -} -if(_79.onclick){ -_77.onclick=_79.onclick; -} -} -}; -$.fn.linkbutton=function(_7c,_7d){ -if(typeof _7c=="string"){ -return $.fn.linkbutton.methods[_7c](this,_7d); -} -_7c=_7c||{}; -return this.each(function(){ -var _7e=$.data(this,"linkbutton"); -if(_7e){ -$.extend(_7e.options,_7c); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_7c)}); -$(this).removeAttr("disabled"); -} -_6f(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_73(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_73(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_72(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_72(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_7f){ -var t=$(_7f); -return $.extend({},$.parser.parseOptions(_7f,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); -(function($){ -function _80(_81){ -var _82=$.data(_81,"pagination"); -var _83=_82.options; -var bb=_82.bb={}; -var _84=$(_81).addClass("pagination").html("
                                                                                                                    "); -var tr=_84.find("tr"); -function _85(_86){ -var btn=_83.nav[_86]; -var a=$("").appendTo(tr); -a.wrap(""); -a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -btn.handler.call(_81); -}); -return a; -}; -if(_83.showPageList){ -var ps=$(""); -ps.bind("change",function(){ -_83.pageSize=parseInt($(this).val()); -_83.onChangePageSize.call(_81,_83.pageSize); -_88(_81,_83.pageNumber); -}); -for(var i=0;i<_83.pageList.length;i++){ -$("").text(_83.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -$("
                                                                                                                    ").appendTo(tr); -} -bb.first=_85("first"); -bb.prev=_85("prev"); -$("
                                                                                                                    ").appendTo(tr); -$("").html(_83.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _87=parseInt($(this).val())||1; -_88(_81,_87); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -$("
                                                                                                                    ").appendTo(tr); -bb.next=_85("next"); -bb.last=_85("last"); -if(_83.showRefresh){ -$("
                                                                                                                    ").appendTo(tr); -bb.refresh=_85("refresh"); -} -if(_83.buttons){ -$("
                                                                                                                    ").appendTo(tr); -if($.isArray(_83.buttons)){ -for(var i=0;i<_83.buttons.length;i++){ -var btn=_83.buttons[i]; -if(btn=="-"){ -$("
                                                                                                                    ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(btn.handler||function(){ -}); -a.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_83.buttons).appendTo(td).show(); -} -} -$("
                                                                                                                    ").appendTo(_84); -$("
                                                                                                                    ").appendTo(_84); -}; -function _88(_89,_8a){ -var _8b=$.data(_89,"pagination").options; -_8c(_89,{pageNumber:_8a}); -_8b.onSelectPage.call(_89,_8b.pageNumber,_8b.pageSize); -}; -function _8c(_8d,_8e){ -var _8f=$.data(_8d,"pagination"); -var _90=_8f.options; -var bb=_8f.bb; -$.extend(_90,_8e||{}); -var ps=$(_8d).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_90.pageSize+""); -_90.pageSize=parseInt(ps.val()); -} -var _91=Math.ceil(_90.total/_90.pageSize)||1; -if(_90.pageNumber<1){ -_90.pageNumber=1; -} -if(_90.pageNumber>_91){ -_90.pageNumber=_91; -} -bb.num.val(_90.pageNumber); -bb.after.html(_90.afterPageText.replace(/{pages}/,_91)); -var _92=_90.displayMsg; -_92=_92.replace(/{from}/,_90.total==0?0:_90.pageSize*(_90.pageNumber-1)+1); -_92=_92.replace(/{to}/,Math.min(_90.pageSize*(_90.pageNumber),_90.total)); -_92=_92.replace(/{total}/,_90.total); -$(_8d).find("div.pagination-info").html(_92); -bb.first.add(bb.prev).linkbutton({disabled:(_90.pageNumber==1)}); -bb.next.add(bb.last).linkbutton({disabled:(_90.pageNumber==_91)}); -_93(_8d,_90.loading); -}; -function _93(_94,_95){ -var _96=$.data(_94,"pagination"); -var _97=_96.options; -var bb=_96.bb; -_97.loading=_95; -if(_97.showRefresh){ -_96.bb.refresh.linkbutton({iconCls:(_97.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_98,_99){ -if(typeof _98=="string"){ -return $.fn.pagination.methods[_98](this,_99); -} -_98=_98||{}; -return this.each(function(){ -var _9a; -var _9b=$.data(this,"pagination"); -if(_9b){ -_9a=$.extend(_9b.options,_98); -}else{ -_9a=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_98); -$.data(this,"pagination",{options:_9a}); -} -_80(this); -_8c(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_93(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_93(this,false); -}); -},refresh:function(jq,_9c){ -return jq.each(function(){ -_8c(this,_9c); -}); -},select:function(jq,_9d){ -return jq.each(function(){ -_88(this,_9d); -}); -}}; -$.fn.pagination.parseOptions=function(_9e){ -var t=$(_9e); -return $.extend({},$.parser.parseOptions(_9e,[{total:"number",pageSize:"number",pageNumber:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,onSelectPage:function(_9f,_a0){ -},onBeforeRefresh:function(_a1,_a2){ -},onRefresh:function(_a3,_a4){ -},onChangePageSize:function(_a5){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _a6=$(this).pagination("options"); -if(_a6.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _a7=$(this).pagination("options"); -if(_a7.pageNumber>1){ -$(this).pagination("select",_a7.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _a8=$(this).pagination("options"); -var _a9=Math.ceil(_a8.total/_a8.pageSize); -if(_a8.pageNumber<_a9){ -$(this).pagination("select",_a8.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _aa=$(this).pagination("options"); -var _ab=Math.ceil(_aa.total/_aa.pageSize); -if(_aa.pageNumber<_ab){ -$(this).pagination("select",_ab); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _ac=$(this).pagination("options"); -if(_ac.onBeforeRefresh.call(this,_ac.pageNumber,_ac.pageSize)!=false){ -$(this).pagination("select",_ac.pageNumber); -_ac.onRefresh.call(this,_ac.pageNumber,_ac.pageSize); -} -}}}}; -})(jQuery); -(function($){ -function _ad(_ae){ -var _af=$(_ae); -_af.addClass("tree"); -return _af; -}; -function _b0(_b1){ -var _b2=[]; -_b3(_b2,$(_b1)); -function _b3(aa,_b4){ -_b4.children("li").each(function(){ -var _b5=$(this); -var _b6=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_b5.attr("checked")?true:undefined)}); -_b6.text=_b5.children("span").html(); -if(!_b6.text){ -_b6.text=_b5.html(); -} -var _b7=_b5.children("ul"); -if(_b7.length){ -_b6.children=[]; -_b3(_b6.children,_b7); -} -aa.push(_b6); -}); -}; -return _b2; -}; -function _b8(_b9){ -var _ba=$.data(_b9,"tree").options; -$(_b9).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _bb=tt.closest("div.tree-node"); -if(!_bb.length){ -return; -} -_bb.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _bc=tt.closest("div.tree-node"); -if(!_bc.length){ -return; -} -_bc.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _bd=tt.closest("div.tree-node"); -if(!_bd.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_121(_b9,_bd[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_e5(_b9,_bd[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_162(_b9,_bd[0]); -_ba.onClick.call(_b9,_c0(_b9,_bd[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _be=$(e.target).closest("div.tree-node"); -if(!_be.length){ -return; -} -_162(_b9,_be[0]); -_ba.onDblClick.call(_b9,_c0(_b9,_be[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _bf=$(e.target).closest("div.tree-node"); -if(!_bf.length){ -return; -} -_ba.onContextMenu.call(_b9,e,_c0(_b9,_bf[0])); -e.stopPropagation(); -}); -}; -function _c1(_c2){ -var _c3=$(_c2).find("div.tree-node"); -_c3.draggable("disable"); -_c3.css("cursor","pointer"); -}; -function _c4(_c5){ -var _c6=$.data(_c5,"tree"); -var _c7=_c6.options; -var _c8=_c6.tree; -_c6.disabledNodes=[]; -_c8.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_c9){ -var p=$("
                                                                                                                    ").appendTo("body"); -p.html(" "+$(_c9).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_c7.onBeforeDrag.call(_c5,_c0(_c5,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _ca=$(this).find("span.tree-indent"); -if(_ca.length){ -e.data.offsetWidth-=_ca.length*_ca.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_c7.onStartDrag.call(_c5,_c0(_c5,this)); -var _cb=_c0(_c5,this); -if(_cb.id==undefined){ -_cb.id="easyui_tree_node_id_temp"; -_15a(_c5,_cb); -} -_c6.draggingNodeId=_cb.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_c6.disabledNodes.length;i++){ -$(_c6.disabledNodes[i]).droppable("enable"); -} -_c6.disabledNodes=[]; -var _cc=_160(_c5,_c6.draggingNodeId); -if(_cc&&_cc.id=="easyui_tree_node_id_temp"){ -_cc.id=""; -_15a(_c5,_cc); -} -_c7.onStopDrag.call(_c5,_cc); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_cd){ -if(_c7.onDragEnter.call(_c5,this,_c0(_c5,_cd))==false){ -_ce(_cd,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_c6.disabledNodes.push(this); -} -},onDragOver:function(e,_cf){ -if($(this).droppable("options").disabled){ -return; -} -var _d0=_cf.pageY; -var top=$(this).offset().top; -var _d1=top+$(this).outerHeight(); -_ce(_cf,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_d0>top+(_d1-top)/2){ -if(_d1-_d0<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_d0-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_c7.onDragOver.call(_c5,this,_c0(_c5,_cf))==false){ -_ce(_cf,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_c6.disabledNodes.push(this); -} -},onDragLeave:function(e,_d2){ -_ce(_d2,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_c7.onDragLeave.call(_c5,this,_c0(_c5,_d2)); -},onDrop:function(e,_d3){ -var _d4=this; -var _d5,_d6; -if($(this).hasClass("tree-node-append")){ -_d5=_d7; -_d6="append"; -}else{ -_d5=_d8; -_d6=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_c7.onBeforeDrop.call(_c5,_d4,_154(_c5,_d3),_d6)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_d5(_d3,_d4,_d6); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _ce(_d9,_da){ -var _db=$(_d9).draggable("proxy").find("span.tree-dnd-icon"); -_db.removeClass("tree-dnd-yes tree-dnd-no").addClass(_da?"tree-dnd-yes":"tree-dnd-no"); -}; -function _d7(_dc,_dd){ -if(_c0(_c5,_dd).state=="closed"){ -_119(_c5,_dd,function(){ -_de(); -}); -}else{ -_de(); -} -function _de(){ -var _df=$(_c5).tree("pop",_dc); -$(_c5).tree("append",{parent:_dd,data:[_df]}); -_c7.onDrop.call(_c5,_dd,_df,"append"); -}; -}; -function _d8(_e0,_e1,_e2){ -var _e3={}; -if(_e2=="top"){ -_e3.before=_e1; -}else{ -_e3.after=_e1; -} -var _e4=$(_c5).tree("pop",_e0); -_e3.data=_e4; -$(_c5).tree("insert",_e3); -_c7.onDrop.call(_c5,_e1,_e4,_e2); -}; -}; -function _e5(_e6,_e7,_e8){ -var _e9=$.data(_e6,"tree").options; -if(!_e9.checkbox){ -return; -} -var _ea=_c0(_e6,_e7); -if(_e9.onBeforeCheck.call(_e6,_ea,_e8)==false){ -return; -} -var _eb=$(_e7); -var ck=_eb.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_e8){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_e9.cascadeCheck){ -_ec(_eb); -_ed(_eb); -} -_e9.onCheck.call(_e6,_ea,_e8); -function _ed(_ee){ -var _ef=_ee.next().find(".tree-checkbox"); -_ef.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_ee.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_ef.addClass("tree-checkbox1"); -}else{ -_ef.addClass("tree-checkbox0"); -} -}; -function _ec(_f0){ -var _f1=_12c(_e6,_f0[0]); -if(_f1){ -var ck=$(_f1.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_f2(_f0)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_f3(_f0)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_ec($(_f1.target)); -} -function _f2(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _f3(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _f4(_f5,_f6){ -var _f7=$.data(_f5,"tree").options; -var _f8=$(_f6); -if(_f9(_f5,_f6)){ -var ck=_f8.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_e5(_f5,_f6,true); -}else{ -_e5(_f5,_f6,false); -} -}else{ -if(_f7.onlyLeafCheck){ -$("").insertBefore(_f8.find(".tree-title")); -} -} -}else{ -var ck=_f8.find(".tree-checkbox"); -if(_f7.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_e5(_f5,_f6,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _fa=true; -var _fb=true; -var _fc=_fd(_f5,_f6); -for(var i=0;i<_fc.length;i++){ -if(_fc[i].checked){ -_fb=false; -}else{ -_fa=false; -} -} -if(_fa){ -_e5(_f5,_f6,true); -} -if(_fb){ -_e5(_f5,_f6,false); -} -} -} -} -} -}; -function _fe(_ff,ul,data,_100){ -var opts=$.data(_ff,"tree").options; -data=opts.loadFilter.call(_ff,data,$(ul).prev("div.tree-node")[0]); -if(!_100){ -$(ul).empty(); -} -var _101=[]; -var _102=[]; -var _103=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_104(ul,data,_103); -if(opts.dnd){ -_c4(_ff); -}else{ -_c1(_ff); -} -if(_101.length){ -_e5(_ff,_101[0],false); -} -for(var i=0;i<_102.length;i++){ -_e5(_ff,_102[i],true); -} -setTimeout(function(){ -_109(_ff,_ff); -},0); -var _105=null; -if(_ff!=ul){ -var node=$(ul).prev(); -_105=_c0(_ff,node[0]); -} -opts.onLoadSuccess.call(_ff,_105,data); -function _104(ul,_106,_107){ -for(var i=0;i<_106.length;i++){ -var li=$("
                                                                                                                  • ").appendTo(ul); -var item=_106[i]; -if(item.state!="open"&&item.state!="closed"){ -item.state="open"; -} -var node=$("
                                                                                                                    ").appendTo(li); -node.attr("node-id",item.id); -$.data(node[0],"tree-node",{id:item.id,text:item.text,iconCls:item.iconCls,attributes:item.attributes}); -$("").html(opts.formatter.call(_ff,item)).appendTo(node); -if(opts.checkbox){ -if(opts.onlyLeafCheck){ -if(item.state=="open"&&(!item.children||!item.children.length)){ -if(item.checked){ -$("").prependTo(node); -}else{ -$("").prependTo(node); -} -} -}else{ -if(item.checked){ -$("").prependTo(node); -_102.push(node[0]); -}else{ -$("").prependTo(node); -if(_106==data){ -_101.push(node[0]); -} -} -} -} -if(item.children&&item.children.length){ -var _108=$("
                                                                                                                      ").appendTo(li); -if(item.state=="open"){ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -}else{ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -_108.css("display","none"); -} -_104(_108,item.children,_107+1); -}else{ -if(item.state=="closed"){ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -}else{ -$("").addClass(item.iconCls).prependTo(node); -$("").prependTo(node); -} -} -for(var j=0;j<_107;j++){ -$("").prependTo(node); -} -} -}; -}; -function _109(_10a,ul,_10b){ -var opts=$.data(_10a,"tree").options; -if(!opts.lines){ -return; -} -if(!_10b){ -_10b=true; -$(_10a).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_10a).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _10c=$(_10a).tree("getRoots"); -if(_10c.length>1){ -$(_10c[0].target).addClass("tree-root-first"); -}else{ -if(_10c.length==1){ -$(_10c[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var node=$(this).children("div.tree-node"); -var ul=node.next("ul"); -if(ul.length){ -if($(this).next().length){ -_10d(node); -} -_109(_10a,ul,_10b); -}else{ -_10e(node); -} -}); -var _10f=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_10f.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _10e(node,_110){ -var icon=node.find("span.tree-icon"); -icon.prev("span.tree-indent").addClass("tree-join"); -}; -function _10d(node){ -var _111=node.find("span.tree-indent, span.tree-hit").length; -node.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_111-1)+")").addClass("tree-line"); -}); -}; -}; -function _112(_113,ul,_114,_115){ -var opts=$.data(_113,"tree").options; -_114=_114||{}; -var _116=null; -if(_113!=ul){ -var node=$(ul).prev(); -_116=_c0(_113,node[0]); -} -if(opts.onBeforeLoad.call(_113,_116,_114)==false){ -return; -} -var _117=$(ul).prev().children("span.tree-folder"); -_117.addClass("tree-loading"); -var _118=opts.loader.call(_113,_114,function(data){ -_117.removeClass("tree-loading"); -_fe(_113,ul,data); -if(_115){ -_115(); -} -},function(){ -_117.removeClass("tree-loading"); -opts.onLoadError.apply(_113,arguments); -if(_115){ -_115(); -} -}); -if(_118==false){ -_117.removeClass("tree-loading"); -} -}; -function _119(_11a,_11b,_11c){ -var opts=$.data(_11a,"tree").options; -var hit=$(_11b).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var node=_c0(_11a,_11b); -if(opts.onBeforeExpand.call(_11a,node)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_11b).next(); -if(ul.length){ -if(opts.animate){ -ul.slideDown("normal",function(){ -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -}); -}else{ -ul.css("display","block"); -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -} -}else{ -var _11d=$("
                                                                                                                        ").insertAfter(_11b); -_112(_11a,_11d[0],{id:node.id},function(){ -if(_11d.is(":empty")){ -_11d.remove(); -} -if(opts.animate){ -_11d.slideDown("normal",function(){ -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -}); -}else{ -_11d.css("display","block"); -opts.onExpand.call(_11a,node); -if(_11c){ -_11c(); -} -} -}); -} -}; -function _11e(_11f,_120){ -var opts=$.data(_11f,"tree").options; -var hit=$(_120).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var node=_c0(_11f,_120); -if(opts.onBeforeCollapse.call(_11f,node)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_120).next(); -if(opts.animate){ -ul.slideUp("normal",function(){ -opts.onCollapse.call(_11f,node); -}); -}else{ -ul.css("display","none"); -opts.onCollapse.call(_11f,node); -} -}; -function _121(_122,_123){ -var hit=$(_123).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_11e(_122,_123); -}else{ -_119(_122,_123); -} -}; -function _124(_125,_126){ -var _127=_fd(_125,_126); -if(_126){ -_127.unshift(_c0(_125,_126)); -} -for(var i=0;i<_127.length;i++){ -_119(_125,_127[i].target); -} -}; -function _128(_129,_12a){ -var _12b=[]; -var p=_12c(_129,_12a); -while(p){ -_12b.unshift(p); -p=_12c(_129,p.target); -} -for(var i=0;i<_12b.length;i++){ -_119(_129,_12b[i].target); -} -}; -function _12d(_12e,_12f){ -var c=$(_12e).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_12f); -var ntop=n.offset().top; -if(c[0].tagName!="BODY"){ -var ctop=c.offset().top; -if(ntopctop+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(ntop); -} -}; -function _130(_131,_132){ -var _133=_fd(_131,_132); -if(_132){ -_133.unshift(_c0(_131,_132)); -} -for(var i=0;i<_133.length;i++){ -_11e(_131,_133[i].target); -} -}; -function _134(_135){ -var _136=_137(_135); -if(_136.length){ -return _136[0]; -}else{ -return null; -} -}; -function _137(_138){ -var _139=[]; -$(_138).children("li").each(function(){ -var node=$(this).children("div.tree-node"); -_139.push(_c0(_138,node[0])); -}); -return _139; -}; -function _fd(_13a,_13b){ -var _13c=[]; -if(_13b){ -_13d($(_13b)); -}else{ -var _13e=_137(_13a); -for(var i=0;i<_13e.length;i++){ -_13c.push(_13e[i]); -_13d($(_13e[i].target)); -} -} -function _13d(node){ -node.next().find("div.tree-node").each(function(){ -_13c.push(_c0(_13a,this)); -}); -}; -return _13c; -}; -function _12c(_13f,_140){ -var ul=$(_140).parent().parent(); -if(ul[0]==_13f){ -return null; -}else{ -return _c0(_13f,ul.prev()[0]); -} -}; -function _141(_142,_143){ -_143=_143||"checked"; -if(!$.isArray(_143)){ -_143=[_143]; -} -var _144=[]; -for(var i=0;i<_143.length;i++){ -var s=_143[i]; -if(s=="checked"){ -_144.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_144.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_144.push("span.tree-checkbox2"); -} -} -} -} -var _145=[]; -$(_142).find(_144.join(",")).each(function(){ -var node=$(this).parent(); -_145.push(_c0(_142,node[0])); -}); -return _145; -}; -function _146(_147){ -var node=$(_147).find("div.tree-node-selected"); -if(node.length){ -return _c0(_147,node[0]); -}else{ -return null; -} -}; -function _148(_149,_14a){ -var node=$(_14a.parent); -var data=_14a.data; -if(!data){ -return; -} -data=$.isArray(data)?data:[data]; -if(!data.length){ -return; -} -var ul; -if(node.length==0){ -ul=$(_149); -}else{ -if(_f9(_149,node[0])){ -var _14b=node.find("span.tree-icon"); -_14b.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_14b); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=node.next(); -if(!ul.length){ -ul=$("
                                                                                                                          ").insertAfter(node); -} -} -_fe(_149,ul[0],data,true); -_f4(_149,ul.prev()); -}; -function _14c(_14d,_14e){ -var ref=_14e.before||_14e.after; -var _14f=_12c(_14d,ref); -var data=_14e.data; -if(!data){ -return; -} -data=$.isArray(data)?data:[data]; -if(!data.length){ -return; -} -_148(_14d,{parent:(_14f?_14f.target:null),data:data}); -var li=$(); -var last=_14f?$(_14f.target).next().children("li:last"):$(_14d).children("li:last"); -for(var i=0;i").prependTo(node); -if(ul[0]!=_151){ -ul.remove(); -} -} -if(_153){ -_f4(_151,_153.target); -} -_109(_151,_151); -}; -function _154(_155,_156){ -function _157(aa,ul){ -ul.children("li").each(function(){ -var node=$(this).children("div.tree-node"); -var _158=_c0(_155,node[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_158.children=[]; -_157(_158.children,sub); -} -aa.push(_158); -}); -}; -if(_156){ -var _159=_c0(_155,_156); -_159.children=[]; -_157(_159.children,$(_156).next()); -return _159; -}else{ -return null; -} -}; -function _15a(_15b,_15c){ -var opts=$.data(_15b,"tree").options; -var node=$(_15c.target); -var _15d=_c0(_15b,_15c.target); -if(_15d.iconCls){ -node.find(".tree-icon").removeClass(_15d.iconCls); -} -var data=$.extend({},_15d,_15c); -$.data(_15c.target,"tree-node",data); -node.attr("node-id",data.id); -node.find(".tree-title").html(opts.formatter.call(_15b,data)); -if(data.iconCls){ -node.find(".tree-icon").addClass(data.iconCls); -} -if(_15d.checked!=data.checked){ -_e5(_15b,_15c.target,data.checked); -} -}; -function _c0(_15e,_15f){ -var node=$.extend({},$.data(_15f,"tree-node"),{target:_15f,checked:$(_15f).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_f9(_15e,_15f)){ -node.state=$(_15f).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return node; -}; -function _160(_161,id){ -var node=$(_161).find("div.tree-node[node-id=\""+id+"\"]"); -if(node.length){ -return _c0(_161,node[0]); -}else{ -return null; -} -}; -function _162(_163,_164){ -var opts=$.data(_163,"tree").options; -var node=_c0(_163,_164); -if(opts.onBeforeSelect.call(_163,node)==false){ -return; -} -$("div.tree-node-selected",_163).removeClass("tree-node-selected"); -$(_164).addClass("tree-node-selected"); -opts.onSelect.call(_163,node); -}; -function _f9(_165,_166){ -var node=$(_166); -var hit=node.children("span.tree-hit"); -return hit.length==0; -}; -function _167(_168,_169){ -var opts=$.data(_168,"tree").options; -var node=_c0(_168,_169); -if(opts.onBeforeEdit.call(_168,node)==false){ -return; -} -$(_169).css("position","relative"); -var nt=$(_169).find(".tree-title"); -var _16a=nt.outerWidth(); -nt.empty(); -var _16b=$("").appendTo(nt); -_16b.val(node.text).focus(); -_16b.width(_16a+20); -_16b.height(document.compatMode=="CSS1Compat"?(18-(_16b.outerHeight()-_16b.height())):18); -_16b.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_16c(_168,_169); -return false; -}else{ -if(e.keyCode==27){ -_170(_168,_169); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_16c(_168,_169); -}); -}; -function _16c(_16d,_16e){ -var opts=$.data(_16d,"tree").options; -$(_16e).css("position",""); -var _16f=$(_16e).find("input.tree-editor"); -var val=_16f.val(); -_16f.remove(); -var node=_c0(_16d,_16e); -node.text=val; -_15a(_16d,node); -opts.onAfterEdit.call(_16d,node); -}; -function _170(_171,_172){ -var opts=$.data(_171,"tree").options; -$(_172).css("position",""); -$(_172).find("input.tree-editor").remove(); -var node=_c0(_171,_172); -_15a(_171,node); -opts.onCancelEdit.call(_171,node); -}; -$.fn.tree=function(_173,_174){ -if(typeof _173=="string"){ -return $.fn.tree.methods[_173](this,_174); -} -var _173=_173||{}; -return this.each(function(){ -var _175=$.data(this,"tree"); -var opts; -if(_175){ -opts=$.extend(_175.options,_173); -_175.options=opts; -}else{ -opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_173); -$.data(this,"tree",{options:opts,tree:_ad(this)}); -var data=_b0(this); -if(data.length&&!opts.data){ -opts.data=data; -} -} -_b8(this); -if(opts.lines){ -$(this).addClass("tree-lines"); -} -if(opts.data){ -_fe(this,this,opts.data); -}else{ -if(opts.dnd){ -_c4(this); -}else{ -_c1(this); -} -} -_112(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,data){ -return jq.each(function(){ -_fe(this,this,data); -}); -},getNode:function(jq,_176){ -return _c0(jq[0],_176); -},getData:function(jq,_177){ -return _154(jq[0],_177); -},reload:function(jq,_178){ -return jq.each(function(){ -if(_178){ -var node=$(_178); -var hit=node.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -node.next().remove(); -_119(this,_178); -}else{ -$(this).empty(); -_112(this,this); -} -}); -},getRoot:function(jq){ -return _134(jq[0]); -},getRoots:function(jq){ -return _137(jq[0]); -},getParent:function(jq,_179){ -return _12c(jq[0],_179); -},getChildren:function(jq,_17a){ -return _fd(jq[0],_17a); -},getChecked:function(jq,_17b){ -return _141(jq[0],_17b); -},getSelected:function(jq){ -return _146(jq[0]); -},isLeaf:function(jq,_17c){ -return _f9(jq[0],_17c); -},find:function(jq,id){ -return _160(jq[0],id); -},select:function(jq,_17d){ -return jq.each(function(){ -_162(this,_17d); -}); -},check:function(jq,_17e){ -return jq.each(function(){ -_e5(this,_17e,true); -}); -},uncheck:function(jq,_17f){ -return jq.each(function(){ -_e5(this,_17f,false); -}); -},collapse:function(jq,_180){ -return jq.each(function(){ -_11e(this,_180); -}); -},expand:function(jq,_181){ -return jq.each(function(){ -_119(this,_181); -}); -},collapseAll:function(jq,_182){ -return jq.each(function(){ -_130(this,_182); -}); -},expandAll:function(jq,_183){ -return jq.each(function(){ -_124(this,_183); -}); -},expandTo:function(jq,_184){ -return jq.each(function(){ -_128(this,_184); -}); -},scrollTo:function(jq,_185){ -return jq.each(function(){ -_12d(this,_185); -}); -},toggle:function(jq,_186){ -return jq.each(function(){ -_121(this,_186); -}); -},append:function(jq,_187){ -return jq.each(function(){ -_148(this,_187); -}); -},insert:function(jq,_188){ -return jq.each(function(){ -_14c(this,_188); -}); -},remove:function(jq,_189){ -return jq.each(function(){ -_150(this,_189); -}); -},pop:function(jq,_18a){ -var node=jq.tree("getData",_18a); -jq.tree("remove",_18a); -return node; -},update:function(jq,_18b){ -return jq.each(function(){ -_15a(this,_18b); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_c4(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_c1(this); -}); -},beginEdit:function(jq,_18c){ -return jq.each(function(){ -_167(this,_18c); -}); -},endEdit:function(jq,_18d){ -return jq.each(function(){ -_16c(this,_18d); -}); -},cancelEdit:function(jq,_18e){ -return jq.each(function(){ -_170(this,_18e); -}); -}}; -$.fn.tree.parseOptions=function(_18f){ -var t=$(_18f); -return $.extend({},$.parser.parseOptions(_18f,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_190,_191,_192){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_190,dataType:"json",success:function(data){ -_191(data); -},error:function(){ -_192.apply(this,arguments); -}}); -},loadFilter:function(data,_193){ -return data; -},onBeforeLoad:function(node,_194){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_195){ -},onCheck:function(node,_196){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_197,_198){ -},onDragOver:function(_199,_19a){ -},onDragLeave:function(_19b,_19c){ -},onBeforeDrop:function(_19d,_19e,_19f){ -},onDrop:function(_1a0,_1a1,_1a2){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); -(function($){ -function init(_1a3){ -$(_1a3).addClass("progressbar"); -$(_1a3).html("
                                                                                                                          "); -return $(_1a3); -}; -function _1a4(_1a5,_1a6){ -var opts=$.data(_1a5,"progressbar").options; -var bar=$.data(_1a5,"progressbar").bar; -if(_1a6){ -opts.width=_1a6; -} -bar._outerWidth(opts.width)._outerHeight(opts.height); -bar.find("div.progressbar-text").width(bar.width()); -bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); -}; -$.fn.progressbar=function(_1a7,_1a8){ -if(typeof _1a7=="string"){ -var _1a9=$.fn.progressbar.methods[_1a7]; -if(_1a9){ -return _1a9(this,_1a8); -} -} -_1a7=_1a7||{}; -return this.each(function(){ -var _1aa=$.data(this,"progressbar"); -if(_1aa){ -$.extend(_1aa.options,_1a7); -}else{ -_1aa=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1a7),bar:init(this)}); -} -$(this).progressbar("setValue",_1aa.options.value); -_1a4(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_1ab){ -return jq.each(function(){ -_1a4(this,_1ab); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_1ac){ -if(_1ac<0){ -_1ac=0; -} -if(_1ac>100){ -_1ac=100; -} -return jq.each(function(){ -var opts=$.data(this,"progressbar").options; -var text=opts.text.replace(/{value}/,_1ac); -var _1ad=opts.value; -opts.value=_1ac; -$(this).find("div.progressbar-value").width(_1ac+"%"); -$(this).find("div.progressbar-text").html(text); -if(_1ad!=_1ac){ -opts.onChange.call(this,_1ac,_1ad); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_1ae){ -return $.extend({},$.parser.parseOptions(_1ae,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1af,_1b0){ -}}; -})(jQuery); -(function($){ -function init(_1b1){ -$(_1b1).addClass("tooltip-f"); -}; -function _1b2(_1b3){ -var opts=$.data(_1b3,"tooltip").options; -$(_1b3).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ -_1ba(_1b3,e); -}).bind(opts.hideEvent+".tooltip",function(e){ -_1c0(_1b3,e); -}).bind("mousemove.tooltip",function(e){ -if(opts.trackMouse){ -opts.trackMouseX=e.pageX; -opts.trackMouseY=e.pageY; -_1b4(_1b3); -} -}); -}; -function _1b5(_1b6){ -var _1b7=$.data(_1b6,"tooltip"); -if(_1b7.showTimer){ -clearTimeout(_1b7.showTimer); -_1b7.showTimer=null; -} -if(_1b7.hideTimer){ -clearTimeout(_1b7.hideTimer); -_1b7.hideTimer=null; -} -}; -function _1b4(_1b8){ -var _1b9=$.data(_1b8,"tooltip"); -if(!_1b9||!_1b9.tip){ -return; -} -var opts=_1b9.options; -var tip=_1b9.tip; -if(opts.trackMouse){ -t=$(); -var left=opts.trackMouseX+opts.deltaX; -var top=opts.trackMouseY+opts.deltaY; -}else{ -var t=$(_1b8); -var left=t.offset().left+opts.deltaX; -var top=t.offset().top+opts.deltaY; -} -switch(opts.position){ -case "right": -left+=t._outerWidth()+12+(opts.trackMouse?12:0); -top-=(tip._outerHeight()-t._outerHeight())/2; -break; -case "left": -left-=tip._outerWidth()+12+(opts.trackMouse?12:0); -top-=(tip._outerHeight()-t._outerHeight())/2; -break; -case "top": -left-=(tip._outerWidth()-t._outerWidth())/2; -top-=tip._outerHeight()+12+(opts.trackMouse?12:0); -break; -case "bottom": -left-=(tip._outerWidth()-t._outerWidth())/2; -top+=t._outerHeight()+12+(opts.trackMouse?12:0); -break; -} -tip.css({left:left,top:top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); -opts.onPosition.call(_1b8,left,top); -}; -function _1ba(_1bb,e){ -var _1bc=$.data(_1bb,"tooltip"); -var opts=_1bc.options; -var tip=_1bc.tip; -if(!tip){ -tip=$("
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          ").appendTo("body"); -_1bc.tip=tip; -_1bd(_1bb); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); -_1b5(_1bb); -_1bc.showTimer=setTimeout(function(){ -_1b4(_1bb); -tip.show(); -opts.onShow.call(_1bb,e); -var _1be=tip.children(".tooltip-arrow-outer"); -var _1bf=tip.children(".tooltip-arrow"); -var bc="border-"+opts.position+"-color"; -_1be.add(_1bf).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_1be.css(bc,tip.css(bc)); -_1bf.css(bc,tip.css("backgroundColor")); -},opts.showDelay); -}; -function _1c0(_1c1,e){ -var _1c2=$.data(_1c1,"tooltip"); -if(_1c2&&_1c2.tip){ -_1b5(_1c1); -_1c2.hideTimer=setTimeout(function(){ -_1c2.tip.hide(); -_1c2.options.onHide.call(_1c1,e); -},_1c2.options.hideDelay); -} -}; -function _1bd(_1c3,_1c4){ -var _1c5=$.data(_1c3,"tooltip"); -var opts=_1c5.options; -if(_1c4){ -opts.content=_1c4; -} -if(!_1c5.tip){ -return; -} -var cc=typeof opts.content=="function"?opts.content.call(_1c3):opts.content; -_1c5.tip.children(".tooltip-content").html(cc); -opts.onUpdate.call(_1c3,cc); -}; -function _1c6(_1c7){ -var _1c8=$.data(_1c7,"tooltip"); -if(_1c8){ -_1b5(_1c7); -var opts=_1c8.options; -if(_1c8.tip){ -_1c8.tip.remove(); -} -if(opts._title){ -$(_1c7).attr("title",opts._title); -} -$.removeData(_1c7,"tooltip"); -$(_1c7).unbind(".tooltip").removeClass("tooltip-f"); -opts.onDestroy.call(_1c7); -} -}; -$.fn.tooltip=function(_1c9,_1ca){ -if(typeof _1c9=="string"){ -return $.fn.tooltip.methods[_1c9](this,_1ca); -} -_1c9=_1c9||{}; -return this.each(function(){ -var _1cb=$.data(this,"tooltip"); -if(_1cb){ -$.extend(_1cb.options,_1c9); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_1c9)}); -init(this); -} -_1b2(this); -_1bd(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_1ba(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_1c0(this,e); -}); -},update:function(jq,_1cc){ -return jq.each(function(){ -_1bd(this,_1cc); -}); -},reposition:function(jq){ -return jq.each(function(){ -_1b4(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1c6(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_1cd){ -var t=$(_1cd); -var opts=$.extend({},$.parser.parseOptions(_1cd,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!opts.content){ -opts.content=opts._title; -} -return opts; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_1ce){ -},onPosition:function(left,top){ -},onDestroy:function(){ -}}; -})(jQuery); -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1cf(node){ -node._remove(); -}; -function _1d0(_1d1,_1d2){ -var opts=$.data(_1d1,"panel").options; -var _1d3=$.data(_1d1,"panel").panel; -var _1d4=_1d3.children("div.panel-header"); -var _1d5=_1d3.children("div.panel-body"); -if(_1d2){ -if(_1d2.width){ -opts.width=_1d2.width; -} -if(_1d2.height){ -opts.height=_1d2.height; -} -if(_1d2.left!=null){ -opts.left=_1d2.left; -} -if(_1d2.top!=null){ -opts.top=_1d2.top; -} -} -opts.fit?$.extend(opts,_1d3._fit()):_1d3._fit(false); -_1d3.css({left:opts.left,top:opts.top}); -if(!isNaN(opts.width)){ -_1d3._outerWidth(opts.width); -}else{ -_1d3.width("auto"); -} -_1d4.add(_1d5)._outerWidth(_1d3.width()); -if(!isNaN(opts.height)){ -_1d3._outerHeight(opts.height); -_1d5._outerHeight(_1d3.height()-_1d4._outerHeight()); -}else{ -_1d5.height("auto"); -} -_1d3.css("height",""); -opts.onResize.apply(_1d1,[opts.width,opts.height]); -_1d3.find(">div.panel-body>div").triggerHandler("_resize"); -}; -function _1d6(_1d7,_1d8){ -var opts=$.data(_1d7,"panel").options; -var _1d9=$.data(_1d7,"panel").panel; -if(_1d8){ -if(_1d8.left!=null){ -opts.left=_1d8.left; -} -if(_1d8.top!=null){ -opts.top=_1d8.top; -} -} -_1d9.css({left:opts.left,top:opts.top}); -opts.onMove.apply(_1d7,[opts.left,opts.top]); -}; -function _1da(_1db){ -$(_1db).addClass("panel-body"); -var _1dc=$("
                                                                                                                          ").insertBefore(_1db); -_1dc[0].appendChild(_1db); -_1dc.bind("_resize",function(){ -var opts=$.data(_1db,"panel").options; -if(opts.fit==true){ -_1d0(_1db); -} -return false; -}); -return _1dc; -}; -function _1dd(_1de){ -var opts=$.data(_1de,"panel").options; -var _1df=$.data(_1de,"panel").panel; -if(opts.tools&&typeof opts.tools=="string"){ -_1df.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(opts.tools); -} -_1cf(_1df.children("div.panel-header")); -if(opts.title&&!opts.noheader){ -var _1e0=$("
                                                                                                                          "+opts.title+"
                                                                                                                          ").prependTo(_1df); -if(opts.iconCls){ -_1e0.find(".panel-title").addClass("panel-with-icon"); -$("
                                                                                                                          ").addClass(opts.iconCls).appendTo(_1e0); -} -var tool=$("
                                                                                                                          ").appendTo(_1e0); -tool.bind("click",function(e){ -e.stopPropagation(); -}); -if(opts.tools){ -if(typeof opts.tools=="string"){ -$(opts.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); -}); -}else{ -for(var i=0;i").addClass(opts.tools[i].iconCls).appendTo(tool); -if(opts.tools[i].handler){ -t.bind("click",eval(opts.tools[i].handler)); -} -} -} -} -if(opts.collapsible){ -$("").appendTo(tool).bind("click",function(){ -if(opts.collapsed==true){ -_1fb(_1de,true); -}else{ -_1f0(_1de,true); -} -return false; -}); -} -if(opts.minimizable){ -$("").appendTo(tool).bind("click",function(){ -_201(_1de); -return false; -}); -} -if(opts.maximizable){ -$("").appendTo(tool).bind("click",function(){ -if(opts.maximized==true){ -_204(_1de); -}else{ -_1ef(_1de); -} -return false; -}); -} -if(opts.closable){ -$("").appendTo(tool).bind("click",function(){ -_1e1(_1de); -return false; -}); -} -_1df.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_1df.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1e2(_1e3){ -var _1e4=$.data(_1e3,"panel"); -var opts=_1e4.options; -if(opts.href){ -if(!_1e4.isLoaded||!opts.cache){ -if(opts.onBeforeLoad.call(_1e3)==false){ -return; -} -_1e4.isLoaded=false; -_1e5(_1e3); -if(opts.loadingMessage){ -$(_1e3).html($("
                                                                                                                          ").html(opts.loadingMessage)); -} -$.ajax({url:opts.href,cache:false,dataType:"html",success:function(data){ -_1e6(opts.extractor.call(_1e3,data)); -opts.onLoad.apply(_1e3,arguments); -_1e4.isLoaded=true; -}}); -} -}else{ -if(opts.content){ -if(!_1e4.isLoaded){ -_1e5(_1e3); -_1e6(opts.content); -_1e4.isLoaded=true; -} -} -} -function _1e6(_1e7){ -$(_1e3).html(_1e7); -if($.parser){ -$.parser.parse($(_1e3)); -} -}; -}; -function _1e5(_1e8){ -var t=$(_1e8); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").tooltip("destroy"); -}; -function _1e9(_1ea){ -$(_1ea).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _1eb(_1ec,_1ed){ -var opts=$.data(_1ec,"panel").options; -var _1ee=$.data(_1ec,"panel").panel; -if(_1ed!=true){ -if(opts.onBeforeOpen.call(_1ec)==false){ -return; -} -} -_1ee.show(); -opts.closed=false; -opts.minimized=false; -var tool=_1ee.children("div.panel-header").find("a.panel-tool-restore"); -if(tool.length){ -opts.maximized=true; -} -opts.onOpen.call(_1ec); -if(opts.maximized==true){ -opts.maximized=false; -_1ef(_1ec); -} -if(opts.collapsed==true){ -opts.collapsed=false; -_1f0(_1ec); -} -if(!opts.collapsed){ -_1e2(_1ec); -_1e9(_1ec); -} -}; -function _1e1(_1f1,_1f2){ -var opts=$.data(_1f1,"panel").options; -var _1f3=$.data(_1f1,"panel").panel; -if(_1f2!=true){ -if(opts.onBeforeClose.call(_1f1)==false){ -return; -} -} -_1f3._fit(false); -_1f3.hide(); -opts.closed=true; -opts.onClose.call(_1f1); -}; -function _1f4(_1f5,_1f6){ -var opts=$.data(_1f5,"panel").options; -var _1f7=$.data(_1f5,"panel").panel; -if(_1f6!=true){ -if(opts.onBeforeDestroy.call(_1f5)==false){ -return; -} -} -_1e5(_1f5); -_1cf(_1f7); -opts.onDestroy.call(_1f5); -}; -function _1f0(_1f8,_1f9){ -var opts=$.data(_1f8,"panel").options; -var _1fa=$.data(_1f8,"panel").panel; -var body=_1fa.children("div.panel-body"); -var tool=_1fa.children("div.panel-header").find("a.panel-tool-collapse"); -if(opts.collapsed==true){ -return; -} -body.stop(true,true); -if(opts.onBeforeCollapse.call(_1f8)==false){ -return; -} -tool.addClass("panel-tool-expand"); -if(_1f9==true){ -body.slideUp("normal",function(){ -opts.collapsed=true; -opts.onCollapse.call(_1f8); -}); -}else{ -body.hide(); -opts.collapsed=true; -opts.onCollapse.call(_1f8); -} -}; -function _1fb(_1fc,_1fd){ -var opts=$.data(_1fc,"panel").options; -var _1fe=$.data(_1fc,"panel").panel; -var body=_1fe.children("div.panel-body"); -var tool=_1fe.children("div.panel-header").find("a.panel-tool-collapse"); -if(opts.collapsed==false){ -return; -} -body.stop(true,true); -if(opts.onBeforeExpand.call(_1fc)==false){ -return; -} -tool.removeClass("panel-tool-expand"); -if(_1fd==true){ -body.slideDown("normal",function(){ -opts.collapsed=false; -opts.onExpand.call(_1fc); -_1e2(_1fc); -_1e9(_1fc); -}); -}else{ -body.show(); -opts.collapsed=false; -opts.onExpand.call(_1fc); -_1e2(_1fc); -_1e9(_1fc); -} -}; -function _1ef(_1ff){ -var opts=$.data(_1ff,"panel").options; -var _200=$.data(_1ff,"panel").panel; -var tool=_200.children("div.panel-header").find("a.panel-tool-max"); -if(opts.maximized==true){ -return; -} -tool.addClass("panel-tool-restore"); -if(!$.data(_1ff,"panel").original){ -$.data(_1ff,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; -} -opts.left=0; -opts.top=0; -opts.fit=true; -_1d0(_1ff); -opts.minimized=false; -opts.maximized=true; -opts.onMaximize.call(_1ff); -}; -function _201(_202){ -var opts=$.data(_202,"panel").options; -var _203=$.data(_202,"panel").panel; -_203._fit(false); -_203.hide(); -opts.minimized=true; -opts.maximized=false; -opts.onMinimize.call(_202); -}; -function _204(_205){ -var opts=$.data(_205,"panel").options; -var _206=$.data(_205,"panel").panel; -var tool=_206.children("div.panel-header").find("a.panel-tool-max"); -if(opts.maximized==false){ -return; -} -_206.show(); -tool.removeClass("panel-tool-restore"); -$.extend(opts,$.data(_205,"panel").original); -_1d0(_205); -opts.minimized=false; -opts.maximized=false; -$.data(_205,"panel").original=null; -opts.onRestore.call(_205); -}; -function _207(_208){ -var opts=$.data(_208,"panel").options; -var _209=$.data(_208,"panel").panel; -var _20a=$(_208).panel("header"); -var body=$(_208).panel("body"); -_209.css(opts.style); -_209.addClass(opts.cls); -if(opts.border){ -_20a.removeClass("panel-header-noborder"); -body.removeClass("panel-body-noborder"); -}else{ -_20a.addClass("panel-header-noborder"); -body.addClass("panel-body-noborder"); -} -_20a.addClass(opts.headerCls); -body.addClass(opts.bodyCls); -if(opts.id){ -$(_208).attr("id",opts.id); -}else{ -$(_208).attr("id",""); -} -}; -function _20b(_20c,_20d){ -$.data(_20c,"panel").options.title=_20d; -$(_20c).panel("header").find("div.panel-title").html(_20d); -}; -var TO=false; -var _20e=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_20e){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_20e=false; -var _20f=$("body.layout"); -if(_20f.length){ -_20f.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_20e=true; -TO=false; -},200); -}); -$.fn.panel=function(_210,_211){ -if(typeof _210=="string"){ -return $.fn.panel.methods[_210](this,_211); -} -_210=_210||{}; -return this.each(function(){ -var _212=$.data(this,"panel"); -var opts; -if(_212){ -opts=$.extend(_212.options,_210); -_212.isLoaded=false; -}else{ -opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_210); -$(this).attr("title",""); -_212=$.data(this,"panel",{options:opts,panel:_1da(this),isLoaded:false}); -} -_1dd(this); -_207(this); -if(opts.doSize==true){ -_212.panel.css("display","block"); -_1d0(this); -} -if(opts.closed==true||opts.minimized==true){ -_212.panel.hide(); -}else{ -_1eb(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_213){ -return jq.each(function(){ -_20b(this,_213); -}); -},open:function(jq,_214){ -return jq.each(function(){ -_1eb(this,_214); -}); -},close:function(jq,_215){ -return jq.each(function(){ -_1e1(this,_215); -}); -},destroy:function(jq,_216){ -return jq.each(function(){ -_1f4(this,_216); -}); -},refresh:function(jq,href){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(href){ -$.data(this,"panel").options.href=href; -} -_1e2(this); -}); -},resize:function(jq,_217){ -return jq.each(function(){ -_1d0(this,_217); -}); -},move:function(jq,_218){ -return jq.each(function(){ -_1d6(this,_218); -}); -},maximize:function(jq){ -return jq.each(function(){ -_1ef(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_201(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_204(this); -}); -},collapse:function(jq,_219){ -return jq.each(function(){ -_1f0(this,_219); -}); -},expand:function(jq,_21a){ -return jq.each(function(){ -_1fb(this,_21a); -}); -}}; -$.fn.panel.parseOptions=function(_21b){ -var t=$(_21b); -return $.extend({},$.parser.parseOptions(_21b,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(data){ -var _21c=/]*>((.|[\n\r])*)<\/body>/im; -var _21d=_21c.exec(data); -if(_21d){ -return _21d[1]; -}else{ -return data; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_21e,_21f){ -},onMove:function(left,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); -(function($){ -function _220(_221,_222){ -var opts=$.data(_221,"window").options; -if(_222){ -if(_222.width){ -opts.width=_222.width; -} -if(_222.height){ -opts.height=_222.height; -} -if(_222.left!=null){ -opts.left=_222.left; -} -if(_222.top!=null){ -opts.top=_222.top; -} -} -$(_221).panel("resize",opts); -}; -function _223(_224,_225){ -var _226=$.data(_224,"window"); -if(_225){ -if(_225.left!=null){ -_226.options.left=_225.left; -} -if(_225.top!=null){ -_226.options.top=_225.top; -} -} -$(_224).panel("move",_226.options); -if(_226.shadow){ -_226.shadow.css({left:_226.options.left,top:_226.options.top}); -} -}; -function _227(_228,_229){ -var _22a=$.data(_228,"window"); -var opts=_22a.options; -var _22b=opts.width; -if(isNaN(_22b)){ -_22b=_22a.window._outerWidth(); -} -if(opts.inline){ -var _22c=_22a.window.parent(); -opts.left=(_22c.width()-_22b)/2+_22c.scrollLeft(); -}else{ -opts.left=($(window)._outerWidth()-_22b)/2+$(document).scrollLeft(); -} -if(_229){ -_223(_228); -} -}; -function _22d(_22e,_22f){ -var _230=$.data(_22e,"window"); -var opts=_230.options; -var _231=opts.height; -if(isNaN(_231)){ -_231=_230.window._outerHeight(); -} -if(opts.inline){ -var _232=_230.window.parent(); -opts.top=(_232.height()-_231)/2+_232.scrollTop(); -}else{ -opts.top=($(window)._outerHeight()-_231)/2+$(document).scrollTop(); -} -if(_22f){ -_223(_22e); -} -}; -function _233(_234){ -var _235=$.data(_234,"window"); -var win=$(_234).panel($.extend({},_235.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_235.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_235.options.onBeforeDestroy.call(_234)==false){ -return false; -} -if(_235.shadow){ -_235.shadow.remove(); -} -if(_235.mask){ -_235.mask.remove(); -} -},onClose:function(){ -if(_235.shadow){ -_235.shadow.hide(); -} -if(_235.mask){ -_235.mask.hide(); -} -_235.options.onClose.call(_234); -},onOpen:function(){ -if(_235.mask){ -_235.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_235.shadow){ -_235.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_235.options.left,top:_235.options.top,width:_235.window._outerWidth(),height:_235.window._outerHeight()}); -} -_235.window.css("z-index",$.fn.window.defaults.zIndex++); -_235.options.onOpen.call(_234); -},onResize:function(_236,_237){ -var opts=$(this).panel("options"); -$.extend(_235.options,{width:opts.width,height:opts.height,left:opts.left,top:opts.top}); -if(_235.shadow){ -_235.shadow.css({left:_235.options.left,top:_235.options.top,width:_235.window._outerWidth(),height:_235.window._outerHeight()}); -} -_235.options.onResize.call(_234,_236,_237); -},onMinimize:function(){ -if(_235.shadow){ -_235.shadow.hide(); -} -if(_235.mask){ -_235.mask.hide(); -} -_235.options.onMinimize.call(_234); -},onBeforeCollapse:function(){ -if(_235.options.onBeforeCollapse.call(_234)==false){ -return false; -} -if(_235.shadow){ -_235.shadow.hide(); -} -},onExpand:function(){ -if(_235.shadow){ -_235.shadow.show(); -} -_235.options.onExpand.call(_234); -}})); -_235.window=win.panel("panel"); -if(_235.mask){ -_235.mask.remove(); -} -if(_235.options.modal==true){ -_235.mask=$("
                                                                                                                          ").insertAfter(_235.window); -_235.mask.css({width:(_235.options.inline?_235.mask.parent().width():_238().width),height:(_235.options.inline?_235.mask.parent().height():_238().height),display:"none"}); -} -if(_235.shadow){ -_235.shadow.remove(); -} -if(_235.options.shadow==true){ -_235.shadow=$("
                                                                                                                          ").insertAfter(_235.window); -_235.shadow.css({display:"none"}); -} -if(_235.options.left==null){ -_227(_234); -} -if(_235.options.top==null){ -_22d(_234); -} -_223(_234); -if(_235.options.closed==false){ -win.window("open"); -} -}; -function _239(_23a){ -var _23b=$.data(_23a,"window"); -_23b.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_23b.options.draggable==false,onStartDrag:function(e){ -if(_23b.mask){ -_23b.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_23b.shadow){ -_23b.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_23b.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_23b.proxy){ -_23b.proxy=$("
                                                                                                                          ").insertAfter(_23b.window); -} -_23b.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(_23b.window._outerWidth()); -_23b.proxy._outerHeight(_23b.window._outerHeight()); -setTimeout(function(){ -if(_23b.proxy){ -_23b.proxy.show(); -} -},500); -},onDrag:function(e){ -_23b.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_23b.options.left=e.data.left; -_23b.options.top=e.data.top; -$(_23a).window("move"); -_23b.proxy.remove(); -_23b.proxy=null; -}}); -_23b.window.resizable({disabled:_23b.options.resizable==false,onStartResize:function(e){ -_23b.pmask=$("
                                                                                                                          ").insertAfter(_23b.window); -_23b.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_23b.window._outerWidth(),height:_23b.window._outerHeight()}); -if(!_23b.proxy){ -_23b.proxy=$("
                                                                                                                          ").insertAfter(_23b.window); -} -_23b.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(e.data.width); -_23b.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_23b.proxy.css({left:e.data.left,top:e.data.top}); -_23b.proxy._outerWidth(e.data.width); -_23b.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_23b.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_220(_23a); -_23b.pmask.remove(); -_23b.pmask=null; -_23b.proxy.remove(); -_23b.proxy=null; -}}); -}; -function _238(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_238().width,height:_238().height}); -},50); -}); -$.fn.window=function(_23c,_23d){ -if(typeof _23c=="string"){ -var _23e=$.fn.window.methods[_23c]; -if(_23e){ -return _23e(this,_23d); -}else{ -return this.panel(_23c,_23d); -} -} -_23c=_23c||{}; -return this.each(function(){ -var _23f=$.data(this,"window"); -if(_23f){ -$.extend(_23f.options,_23c); -}else{ -_23f=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_23c)}); -if(!_23f.options.inline){ -document.body.appendChild(this); -} -} -_233(this); -_239(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _240=jq.panel("options"); -var _241=$.data(jq[0],"window").options; -return $.extend(_241,{closed:_240.closed,collapsed:_240.collapsed,minimized:_240.minimized,maximized:_240.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_242){ -return jq.each(function(){ -_220(this,_242); -}); -},move:function(jq,_243){ -return jq.each(function(){ -_223(this,_243); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_227(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_22d(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_227(this); -_22d(this); -_223(this); -}); -}}; -$.fn.window.parseOptions=function(_244){ -return $.extend({},$.fn.panel.parseOptions(_244),$.parser.parseOptions(_244,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); -(function($){ -function _245(_246){ -var cp=document.createElement("div"); -while(_246.firstChild){ -cp.appendChild(_246.firstChild); -} -_246.appendChild(cp); -var _247=$(cp); -_247.attr("style",$(_246).attr("style")); -$(_246).removeAttr("style").css("overflow","hidden"); -_247.panel({border:false,doSize:false,bodyCls:"dialog-content"}); -return _247; -}; -function _248(_249){ -var opts=$.data(_249,"dialog").options; -var _24a=$.data(_249,"dialog").contentPanel; -if(opts.toolbar){ -if($.isArray(opts.toolbar)){ -$(_249).find("div.dialog-toolbar").remove(); -var _24b=$("
                                                                                                                          ").prependTo(_249); -var tr=_24b.find("tr"); -for(var i=0;i
                                                                                                                          ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(btn.handler||function(){ -}); -tool.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(opts.toolbar).addClass("dialog-toolbar").prependTo(_249); -$(opts.toolbar).show(); -} -}else{ -$(_249).find("div.dialog-toolbar").remove(); -} -if(opts.buttons){ -if($.isArray(opts.buttons)){ -$(_249).find("div.dialog-button").remove(); -var _24c=$("
                                                                                                                          ").appendTo(_249); -for(var i=0;i").appendTo(_24c); -if(p.handler){ -_24d[0].onclick=p.handler; -} -_24d.linkbutton(p); -} -}else{ -$(opts.buttons).addClass("dialog-button").appendTo(_249); -$(opts.buttons).show(); -} -}else{ -$(_249).find("div.dialog-button").remove(); -} -var _24e=opts.href; -var _24f=opts.content; -opts.href=null; -opts.content=null; -_24a.panel({closed:opts.closed,cache:opts.cache,href:_24e,content:_24f,onLoad:function(){ -if(opts.height=="auto"){ -$(_249).window("resize"); -} -opts.onLoad.apply(_249,arguments); -}}); -$(_249).window($.extend({},opts,{onOpen:function(){ -if(_24a.panel("options").closed){ -_24a.panel("open"); -} -if(opts.onOpen){ -opts.onOpen.call(_249); -} -},onResize:function(_250,_251){ -var _252=$(_249); -_24a.panel("panel").show(); -_24a.panel("resize",{width:_252.width(),height:(_251=="auto")?"auto":_252.height()-_252.children("div.dialog-toolbar")._outerHeight()-_252.children("div.dialog-button")._outerHeight()}); -if(opts.onResize){ -opts.onResize.call(_249,_250,_251); -} -}})); -opts.href=_24e; -opts.content=_24f; -}; -function _253(_254,href){ -var _255=$.data(_254,"dialog").contentPanel; -_255.panel("refresh",href); -}; -$.fn.dialog=function(_256,_257){ -if(typeof _256=="string"){ -var _258=$.fn.dialog.methods[_256]; -if(_258){ -return _258(this,_257); -}else{ -return this.window(_256,_257); -} -} -_256=_256||{}; -return this.each(function(){ -var _259=$.data(this,"dialog"); -if(_259){ -$.extend(_259.options,_256); -}else{ -$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_256),contentPanel:_245(this)}); -} -_248(this); -}); -}; -$.fn.dialog.methods={options:function(jq){ -var _25a=$.data(jq[0],"dialog").options; -var _25b=jq.panel("options"); -$.extend(_25a,{closed:_25b.closed,collapsed:_25b.collapsed,minimized:_25b.minimized,maximized:_25b.maximized}); -var _25c=$.data(jq[0],"dialog").contentPanel; -return _25a; -},dialog:function(jq){ -return jq.window("window"); -},refresh:function(jq,href){ -return jq.each(function(){ -_253(this,href); -}); -}}; -$.fn.dialog.parseOptions=function(_25d){ -return $.extend({},$.fn.window.parseOptions(_25d),$.parser.parseOptions(_25d,["toolbar","buttons"])); -}; -$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); -})(jQuery); -(function($){ -function show(el,type,_25e,_25f){ -var win=$(el).window("window"); -if(!win){ -return; -} -switch(type){ -case null: -win.show(); -break; -case "slide": -win.slideDown(_25e); -break; -case "fade": -win.fadeIn(_25e); -break; -case "show": -win.show(_25e); -break; -} -var _260=null; -if(_25f>0){ -_260=setTimeout(function(){ -hide(el,type,_25e); -},_25f); -} -win.hover(function(){ -if(_260){ -clearTimeout(_260); -} -},function(){ -if(_25f>0){ -_260=setTimeout(function(){ -hide(el,type,_25e); -},_25f); -} -}); -}; -function hide(el,type,_261){ -if(el.locked==true){ -return; -} -el.locked=true; -var win=$(el).window("window"); -if(!win){ -return; -} -switch(type){ -case null: -win.hide(); -break; -case "slide": -win.slideUp(_261); -break; -case "fade": -win.fadeOut(_261); -break; -case "show": -win.hide(_261); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_261); -}; -function _262(_263){ -var opts=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -show(this,opts.showType,opts.showSpeed,opts.timeout); -return false; -},onBeforeClose:function(){ -hide(this,opts.showType,opts.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_263); -opts.style.zIndex=$.fn.window.defaults.zIndex++; -var win=$("
                                                                                                                          ").html(opts.msg).appendTo("body"); -win.window(opts); -win.window("window").css(opts.style); -win.window("open"); -return win; -}; -function _264(_265,_266,_267){ -var win=$("
                                                                                                                          ").appendTo("body"); -win.append(_266); -if(_267){ -var tb=$("
                                                                                                                          ").appendTo(win); -for(var _268 in _267){ -$("").attr("href","javascript:void(0)").text(_268).css("margin-left",10).bind("click",eval(_267[_268])).appendTo(tb).linkbutton(); -} -} -win.window({title:_265,noheader:(_265?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_269){ -return _262(_269); -},alert:function(_26a,msg,icon,fn){ -var _26b="
                                                                                                                          "+msg+"
                                                                                                                          "; -switch(icon){ -case "error": -_26b="
                                                                                                                          "+_26b; -break; -case "info": -_26b="
                                                                                                                          "+_26b; -break; -case "question": -_26b="
                                                                                                                          "+_26b; -break; -case "warning": -_26b="
                                                                                                                          "+_26b; -break; -} -_26b+="
                                                                                                                          "; -var _26c={}; -_26c[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_264(_26a,_26b,_26c); -return win; -},confirm:function(_26d,msg,fn){ -var _26e="
                                                                                                                          "+"
                                                                                                                          "+msg+"
                                                                                                                          "+"
                                                                                                                          "; -var _26f={}; -_26f[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_26f[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_264(_26d,_26e,_26f); -return win; -},prompt:function(_270,msg,fn){ -var _271="
                                                                                                                          "+"
                                                                                                                          "+msg+"
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          "; -var _272={}; -_272[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_272[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_264(_270,_271,_272); -win.children("input.messager-input").focus(); -return win; -},progress:function(_273){ -var _274={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _273=="string"){ -var _275=_274[_273]; -return _275(); -} -var opts=$.extend({title:"",msg:"",text:undefined,interval:300},_273||{}); -var _276="
                                                                                                                          "; -var win=_264(opts.title,_276,null); -win.find("div.messager-p-msg").html(opts.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:opts.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(opts.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},opts.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); -(function($){ -function _277(_278){ -var _279=$.data(_278,"accordion"); -var opts=_279.options; -var _27a=_279.panels; -var cc=$(_278); -opts.fit?$.extend(opts,cc._fit()):cc._fit(false); -if(opts.width>0){ -cc._outerWidth(opts.width); -} -var _27b="auto"; -if(opts.height>0){ -cc._outerHeight(opts.height); -var _27c=_27a.length?_27a[0].panel("header").css("height","")._outerHeight():"auto"; -var _27b=cc.height()-(_27a.length-1)*_27c; -} -for(var i=0;i<_27a.length;i++){ -var _27d=_27a[i]; -_27d.panel("header")._outerHeight(_27c); -_27d.panel("resize",{width:cc.width(),height:_27b}); -} -}; -function _27e(_27f){ -var _280=$.data(_27f,"accordion").panels; -for(var i=0;i<_280.length;i++){ -var _281=_280[i]; -if(_281.panel("options").collapsed==false){ -return _281; -} -} -return null; -}; -function _282(_283,_284){ -var _285=$.data(_283,"accordion").panels; -for(var i=0;i<_285.length;i++){ -if(_285[i][0]==$(_284)[0]){ -return i; -} -} -return -1; -}; -function _286(_287,_288,_289){ -var _28a=$.data(_287,"accordion").panels; -if(typeof _288=="number"){ -if(_288<0||_288>=_28a.length){ -return null; -}else{ -var _28b=_28a[_288]; -if(_289){ -_28a.splice(_288,1); -} -return _28b; -} -} -for(var i=0;i<_28a.length;i++){ -var _28b=_28a[i]; -if(_28b.panel("options").title==_288){ -if(_289){ -_28a.splice(i,1); -} -return _28b; -} -} -return null; -}; -function _28c(_28d){ -var opts=$.data(_28d,"accordion").options; -var cc=$(_28d); -if(opts.border){ -cc.removeClass("accordion-noborder"); -}else{ -cc.addClass("accordion-noborder"); -} -}; -function _28e(_28f){ -var cc=$(_28f); -cc.addClass("accordion"); -var _290=[]; -cc.children("div").each(function(){ -var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_290.push(pp); -_292(_28f,pp,opts); -}); -cc.bind("_resize",function(e,_291){ -var opts=$.data(_28f,"accordion").options; -if(opts.fit==true||_291){ -_277(_28f); -} -return false; -}); -return {accordion:cc,panels:_290}; -}; -function _292(_293,pp,_294){ -pp.panel($.extend({},_294,{collapsible:false,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",onBeforeExpand:function(){ -if(_294.onBeforeExpand){ -if(_294.onBeforeExpand.call(this)==false){ -return false; -} -} -var curr=_27e(_293); -if(curr){ -var _295=$(curr).panel("header"); -_295.removeClass("accordion-header-selected"); -_295.find(".accordion-collapse").triggerHandler("click"); -} -var _295=pp.panel("header"); -_295.addClass("accordion-header-selected"); -_295.find(".accordion-collapse").removeClass("accordion-expand"); -},onExpand:function(){ -if(_294.onExpand){ -_294.onExpand.call(this); -} -var opts=$.data(_293,"accordion").options; -opts.onSelect.call(_293,pp.panel("options").title,_282(_293,this)); -},onBeforeCollapse:function(){ -if(_294.onBeforeCollapse){ -if(_294.onBeforeCollapse.call(this)==false){ -return false; -} -} -var _296=pp.panel("header"); -_296.removeClass("accordion-header-selected"); -_296.find(".accordion-collapse").addClass("accordion-expand"); -}})); -var _297=pp.panel("header"); -var t=$("").appendTo(_297.children("div.panel-tool")); -t.bind("click",function(e){ -var _298=$.data(_293,"accordion").options.animate; -_2a3(_293); -if(pp.panel("options").collapsed){ -pp.panel("expand",_298); -}else{ -pp.panel("collapse",_298); -} -return false; -}); -_297.click(function(){ -$(this).find(".accordion-collapse").triggerHandler("click"); -return false; -}); -}; -function _299(_29a,_29b){ -var _29c=_286(_29a,_29b); -if(!_29c){ -return; -} -var curr=_27e(_29a); -if(curr&&curr[0]==_29c[0]){ -return; -} -_29c.panel("header").triggerHandler("click"); -}; -function _29d(_29e){ -var _29f=$.data(_29e,"accordion").panels; -for(var i=0;i<_29f.length;i++){ -if(_29f[i].panel("options").selected){ -_2a0(i); -return; -} -} -if(_29f.length){ -_2a0(0); -} -function _2a0(_2a1){ -var opts=$.data(_29e,"accordion").options; -var _2a2=opts.animate; -opts.animate=false; -_299(_29e,_2a1); -opts.animate=_2a2; -}; -}; -function _2a3(_2a4){ -var _2a5=$.data(_2a4,"accordion").panels; -for(var i=0;i<_2a5.length;i++){ -_2a5[i].stop(true,true); -} -}; -function add(_2a6,_2a7){ -var _2a8=$.data(_2a6,"accordion"); -var opts=_2a8.options; -var _2a9=_2a8.panels; -if(_2a7.selected==undefined){ -_2a7.selected=true; -} -_2a3(_2a6); -var pp=$("
                                                                                                                          ").appendTo(_2a6); -_2a9.push(pp); -_292(_2a6,pp,_2a7); -_277(_2a6); -opts.onAdd.call(_2a6,_2a7.title,_2a9.length-1); -if(_2a7.selected){ -_299(_2a6,_2a9.length-1); -} -}; -function _2aa(_2ab,_2ac){ -var _2ad=$.data(_2ab,"accordion"); -var opts=_2ad.options; -var _2ae=_2ad.panels; -_2a3(_2ab); -var _2af=_286(_2ab,_2ac); -var _2b0=_2af.panel("options").title; -var _2b1=_282(_2ab,_2af); -if(opts.onBeforeRemove.call(_2ab,_2b0,_2b1)==false){ -return; -} -var _2af=_286(_2ab,_2ac,true); -if(_2af){ -_2af.panel("destroy"); -if(_2ae.length){ -_277(_2ab); -var curr=_27e(_2ab); -if(!curr){ -_299(_2ab,0); -} -} -} -opts.onRemove.call(_2ab,_2b0,_2b1); -}; -$.fn.accordion=function(_2b2,_2b3){ -if(typeof _2b2=="string"){ -return $.fn.accordion.methods[_2b2](this,_2b3); -} -_2b2=_2b2||{}; -return this.each(function(){ -var _2b4=$.data(this,"accordion"); -var opts; -if(_2b4){ -opts=$.extend(_2b4.options,_2b2); -_2b4.opts=opts; -}else{ -opts=$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_2b2); -var r=_28e(this); -$.data(this,"accordion",{options:opts,accordion:r.accordion,panels:r.panels}); -} -_28c(this); -_277(this); -_29d(this); -}); -}; -$.fn.accordion.methods={options:function(jq){ -return $.data(jq[0],"accordion").options; -},panels:function(jq){ -return $.data(jq[0],"accordion").panels; -},resize:function(jq){ -return jq.each(function(){ -_277(this); -}); -},getSelected:function(jq){ -return _27e(jq[0]); -},getPanel:function(jq,_2b5){ -return _286(jq[0],_2b5); -},getPanelIndex:function(jq,_2b6){ -return _282(jq[0],_2b6); -},select:function(jq,_2b7){ -return jq.each(function(){ -_299(this,_2b7); -}); -},add:function(jq,_2b8){ -return jq.each(function(){ -add(this,_2b8); -}); -},remove:function(jq,_2b9){ -return jq.each(function(){ -_2aa(this,_2b9); -}); -}}; -$.fn.accordion.parseOptions=function(_2ba){ -var t=$(_2ba); -return $.extend({},$.parser.parseOptions(_2ba,["width","height",{fit:"boolean",border:"boolean",animate:"boolean"}])); -}; -$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,onSelect:function(_2bb,_2bc){ -},onAdd:function(_2bd,_2be){ -},onBeforeRemove:function(_2bf,_2c0){ -},onRemove:function(_2c1,_2c2){ -}}; -})(jQuery); -(function($){ -function _2c3(_2c4){ -var opts=$.data(_2c4,"tabs").options; -if(opts.tabPosition=="left"||opts.tabPosition=="right"){ -return; -} -var _2c5=$(_2c4).children("div.tabs-header"); -var tool=_2c5.children("div.tabs-tool"); -var _2c6=_2c5.children("div.tabs-scroller-left"); -var _2c7=_2c5.children("div.tabs-scroller-right"); -var wrap=_2c5.children("div.tabs-wrap"); -var _2c8=_2c5.outerHeight(); -if(opts.plain){ -_2c8-=_2c8-_2c5.height(); -} -tool._outerHeight(_2c8); -var _2c9=0; -$("ul.tabs li",_2c5).each(function(){ -_2c9+=$(this).outerWidth(true); -}); -var _2ca=_2c5.width()-tool._outerWidth(); -if(_2c9>_2ca){ -_2c6.add(_2c7).show()._outerHeight(_2c8); -if(opts.toolPosition=="left"){ -tool.css({left:_2c6.outerWidth(),right:""}); -wrap.css({marginLeft:_2c6.outerWidth()+tool._outerWidth(),marginRight:_2c7._outerWidth(),width:_2ca-_2c6.outerWidth()-_2c7.outerWidth()}); -}else{ -tool.css({left:"",right:_2c7.outerWidth()}); -wrap.css({marginLeft:_2c6.outerWidth(),marginRight:_2c7.outerWidth()+tool._outerWidth(),width:_2ca-_2c6.outerWidth()-_2c7.outerWidth()}); -} -}else{ -_2c6.add(_2c7).hide(); -if(opts.toolPosition=="left"){ -tool.css({left:0,right:""}); -wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_2ca}); -}else{ -tool.css({left:"",right:0}); -wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_2ca}); -} -} -}; -function _2cb(_2cc){ -var opts=$.data(_2cc,"tabs").options; -var _2cd=$(_2cc).children("div.tabs-header"); -if(opts.tools){ -if(typeof opts.tools=="string"){ -$(opts.tools).addClass("tabs-tool").appendTo(_2cd); -$(opts.tools).show(); -}else{ -_2cd.children("div.tabs-tool").remove(); -var _2ce=$("
                                                                                                                          ").appendTo(_2cd); -var tr=_2ce.find("tr"); -for(var i=0;i").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(opts.tools[i].handler||function(){ -}); -tool.linkbutton($.extend({},opts.tools[i],{plain:true})); -} -} -}else{ -_2cd.children("div.tabs-tool").remove(); -} -}; -function _2cf(_2d0){ -var _2d1=$.data(_2d0,"tabs"); -var opts=_2d1.options; -var cc=$(_2d0); -opts.fit?$.extend(opts,cc._fit()):cc._fit(false); -cc.width(opts.width).height(opts.height); -var _2d2=$(_2d0).children("div.tabs-header"); -var _2d3=$(_2d0).children("div.tabs-panels"); -var wrap=_2d2.find("div.tabs-wrap"); -var ul=wrap.find(".tabs"); -for(var i=0;i<_2d1.tabs.length;i++){ -var _2d4=_2d1.tabs[i].panel("options"); -var p_t=_2d4.tab.find("a.tabs-inner"); -var _2d5=parseInt(_2d4.tabWidth||opts.tabWidth)||undefined; -if(_2d5){ -p_t._outerWidth(_2d5); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(opts.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(opts.tabPosition=="left"||opts.tabPosition=="right"){ -_2d2._outerWidth(opts.headerWidth); -_2d3._outerWidth(cc.width()-opts.headerWidth); -_2d2.add(_2d3)._outerHeight(opts.height); -wrap._outerWidth(_2d2.width()); -ul._outerWidth(wrap.width()).css("height",""); -}else{ -_2d2._outerWidth(opts.width).css("height",""); -ul._outerHeight(opts.tabHeight).css("width",""); -_2c3(_2d0); -var _2d6=opts.height; -if(!isNaN(_2d6)){ -_2d3._outerHeight(_2d6-_2d2.outerHeight()); -}else{ -_2d3.height("auto"); -} -var _2d5=opts.width; -if(!isNaN(_2d5)){ -_2d3._outerWidth(_2d5); -}else{ -_2d3.width("auto"); -} -} -}; -function _2d7(_2d8){ -var opts=$.data(_2d8,"tabs").options; -var tab=_2d9(_2d8); -if(tab){ -var _2da=$(_2d8).children("div.tabs-panels"); -var _2db=opts.width=="auto"?"auto":_2da.width(); -var _2dc=opts.height=="auto"?"auto":_2da.height(); -tab.panel("resize",{width:_2db,height:_2dc}); -} -}; -function _2dd(_2de){ -var tabs=$.data(_2de,"tabs").tabs; -var cc=$(_2de); -cc.addClass("tabs-container"); -var pp=$("
                                                                                                                          ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                          "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            ").prependTo(_2de); -cc.children("div.tabs-panels").children("div").each(function(i){ -var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -tabs.push(pp); -_2e8(_2de,pp,opts); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_2df){ -var opts=$.data(_2de,"tabs").options; -if(opts.fit==true||_2df){ -_2cf(_2de); -_2d7(_2de); -} -return false; -}); -}; -function _2e0(_2e1){ -var opts=$.data(_2e1,"tabs").options; -$(_2e1).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2e1).tabs("scrollBy",-opts.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2e1).tabs("scrollBy",opts.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_2f9(_2e1,_2e2(li)); -}else{ -if(li.length){ -_2ef(_2e1,_2e2(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -opts.onContextMenu.call(_2e1,e,li.find("span.tabs-title").html(),_2e2(li)); -} -}); -function _2e2(li){ -var _2e3=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2e3=i; -return false; -} -}); -return _2e3; -}; -}; -function _2e4(_2e5){ -var opts=$.data(_2e5,"tabs").options; -var _2e6=$(_2e5).children("div.tabs-header"); -var _2e7=$(_2e5).children("div.tabs-panels"); -_2e6.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_2e7.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(opts.tabPosition=="top"){ -_2e6.insertBefore(_2e7); -}else{ -if(opts.tabPosition=="bottom"){ -_2e6.insertAfter(_2e7); -_2e6.addClass("tabs-header-bottom"); -_2e7.addClass("tabs-panels-top"); -}else{ -if(opts.tabPosition=="left"){ -_2e6.addClass("tabs-header-left"); -_2e7.addClass("tabs-panels-right"); -}else{ -if(opts.tabPosition=="right"){ -_2e6.addClass("tabs-header-right"); -_2e7.addClass("tabs-panels-left"); -} -} -} -} -if(opts.plain==true){ -_2e6.addClass("tabs-header-plain"); -}else{ -_2e6.removeClass("tabs-header-plain"); -} -if(opts.border==true){ -_2e6.removeClass("tabs-header-noborder"); -_2e7.removeClass("tabs-panels-noborder"); -}else{ -_2e6.addClass("tabs-header-noborder"); -_2e7.addClass("tabs-panels-noborder"); -} -}; -function _2e8(_2e9,pp,_2ea){ -var _2eb=$.data(_2e9,"tabs"); -_2ea=_2ea||{}; -pp.panel($.extend({},_2ea,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_2ea.icon?_2ea.icon:undefined),onLoad:function(){ -if(_2ea.onLoad){ -_2ea.onLoad.call(this,arguments); -} -_2eb.options.onLoad.call(_2e9,$(this)); -}})); -var opts=pp.panel("options"); -var tabs=$(_2e9).children("div.tabs-header").find("ul.tabs"); -opts.tab=$("
                                                                                                                          • ").appendTo(tabs); -opts.tab.append(""+""+""+""); -$(_2e9).tabs("update",{tab:pp,options:opts}); -}; -function _2ec(_2ed,_2ee){ -var opts=$.data(_2ed,"tabs").options; -var tabs=$.data(_2ed,"tabs").tabs; -if(_2ee.selected==undefined){ -_2ee.selected=true; -} -var pp=$("
                                                                                                                            ").appendTo($(_2ed).children("div.tabs-panels")); -tabs.push(pp); -_2e8(_2ed,pp,_2ee); -opts.onAdd.call(_2ed,_2ee.title,tabs.length-1); -_2cf(_2ed); -if(_2ee.selected){ -_2ef(_2ed,tabs.length-1); -} -}; -function _2f0(_2f1,_2f2){ -var _2f3=$.data(_2f1,"tabs").selectHis; -var pp=_2f2.tab; -var _2f4=pp.panel("options").title; -pp.panel($.extend({},_2f2.options,{iconCls:(_2f2.options.icon?_2f2.options.icon:undefined)})); -var opts=pp.panel("options"); -var tab=opts.tab; -var _2f5=tab.find("span.tabs-title"); -var _2f6=tab.find("span.tabs-icon"); -_2f5.html(opts.title); -_2f6.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(opts.closable){ -_2f5.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_2f5.removeClass("tabs-closable"); -} -if(opts.iconCls){ -_2f5.addClass("tabs-with-icon"); -_2f6.addClass(opts.iconCls); -}else{ -_2f5.removeClass("tabs-with-icon"); -} -if(_2f4!=opts.title){ -for(var i=0;i<_2f3.length;i++){ -if(_2f3[i]==_2f4){ -_2f3[i]=opts.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(opts.tools){ -var _2f7=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(opts.tools)){ -for(var i=0;i").appendTo(_2f7); -t.addClass(opts.tools[i].iconCls); -if(opts.tools[i].handler){ -t.bind("click",{handler:opts.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(opts.tools).children().appendTo(_2f7); -} -var pr=_2f7.children().length*12; -if(opts.closable){ -pr+=8; -}else{ -pr-=3; -_2f7.css("right","5px"); -} -_2f5.css("padding-right",pr+"px"); -} -_2cf(_2f1); -$.data(_2f1,"tabs").options.onUpdate.call(_2f1,opts.title,_2f8(_2f1,pp)); -}; -function _2f9(_2fa,_2fb){ -var opts=$.data(_2fa,"tabs").options; -var tabs=$.data(_2fa,"tabs").tabs; -var _2fc=$.data(_2fa,"tabs").selectHis; -if(!_2fd(_2fa,_2fb)){ -return; -} -var tab=_2fe(_2fa,_2fb); -var _2ff=tab.panel("options").title; -var _300=_2f8(_2fa,tab); -if(opts.onBeforeClose.call(_2fa,_2ff,_300)==false){ -return; -} -var tab=_2fe(_2fa,_2fb,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -opts.onClose.call(_2fa,_2ff,_300); -_2cf(_2fa); -for(var i=0;i<_2fc.length;i++){ -if(_2fc[i]==_2ff){ -_2fc.splice(i,1); -i--; -} -} -var _301=_2fc.pop(); -if(_301){ -_2ef(_2fa,_301); -}else{ -if(tabs.length){ -_2ef(_2fa,0); -} -} -}; -function _2fe(_302,_303,_304){ -var tabs=$.data(_302,"tabs").tabs; -if(typeof _303=="number"){ -if(_303<0||_303>=tabs.length){ -return null; -}else{ -var tab=tabs[_303]; -if(_304){ -tabs.splice(_303,1); -} -return tab; -} -} -for(var i=0;idiv.tabs-header>div.tabs-wrap"); -var left=tab.position().left; -var _30f=left+tab.outerWidth(); -if(left<0||_30f>wrap.width()){ -var _310=left-(wrap.width()-tab.width())/2; -$(_309).tabs("scrollBy",_310); -}else{ -$(_309).tabs("scrollBy",0); -} -_2d7(_309); -opts.onSelect.call(_309,_30e,_2f8(_309,_30c)); -}; -function _2fd(_311,_312){ -return _2fe(_311,_312)!=null; -}; -$.fn.tabs=function(_313,_314){ -if(typeof _313=="string"){ -return $.fn.tabs.methods[_313](this,_314); -} -_313=_313||{}; -return this.each(function(){ -var _315=$.data(this,"tabs"); -var opts; -if(_315){ -opts=$.extend(_315.options,_313); -_315.options=opts; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_313),tabs:[],selectHis:[]}); -_2dd(this); -} -_2cb(this); -_2e4(this); -_2cf(this); -_2e0(this); -_307(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_2cf(this); -_2d7(this); -}); -},add:function(jq,_316){ -return jq.each(function(){ -_2ec(this,_316); -}); -},close:function(jq,_317){ -return jq.each(function(){ -_2f9(this,_317); -}); -},getTab:function(jq,_318){ -return _2fe(jq[0],_318); -},getTabIndex:function(jq,tab){ -return _2f8(jq[0],tab); -},getSelected:function(jq){ -return _2d9(jq[0]); -},select:function(jq,_319){ -return jq.each(function(){ -_2ef(this,_319); -}); -},exists:function(jq,_31a){ -return _2fd(jq[0],_31a); -},update:function(jq,_31b){ -return jq.each(function(){ -_2f0(this,_31b); -}); -},enableTab:function(jq,_31c){ -return jq.each(function(){ -$(this).tabs("getTab",_31c).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_31d){ -return jq.each(function(){ -$(this).tabs("getTab",_31d).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_31e){ -return jq.each(function(){ -var opts=$(this).tabs("options"); -var wrap=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(wrap._scrollLeft()+_31e,_31f()); -wrap.animate({scrollLeft:pos},opts.scrollDuration); -function _31f(){ -var w=0; -var ul=wrap.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-wrap.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_320){ -return $.extend({},$.parser.parseOptions(_320,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_321){ -},onSelect:function(_322,_323){ -},onBeforeClose:function(_324,_325){ -},onClose:function(_326,_327){ -},onAdd:function(_328,_329){ -},onUpdate:function(_32a,_32b){ -},onContextMenu:function(e,_32c,_32d){ -}}; -})(jQuery); -(function($){ -var _32e=false; -function _32f(_330){ -var _331=$.data(_330,"layout"); -var opts=_331.options; -var _332=_331.panels; -var cc=$(_330); -if(_330.tagName=="BODY"){ -cc._fit(); -}else{ -opts.fit?cc.css(cc._fit()):cc._fit(false); -} -function _333(pp){ -var opts=pp.panel("options"); -return Math.min(Math.max(opts.height,opts.minHeight),opts.maxHeight); -}; -function _334(pp){ -var opts=pp.panel("options"); -return Math.min(Math.max(opts.width,opts.minWidth),opts.maxWidth); -}; -var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; -function _335(pp){ -if(!pp.length){ -return; -} -var _336=_333(pp); -pp.panel("resize",{width:cc.width(),height:_336,left:0,top:0}); -cpos.top+=_336; -cpos.height-=_336; -}; -if(_33d(_332.expandNorth)){ -_335(_332.expandNorth); -}else{ -_335(_332.north); -} -function _337(pp){ -if(!pp.length){ -return; -} -var _338=_333(pp); -pp.panel("resize",{width:cc.width(),height:_338,left:0,top:cc.height()-_338}); -cpos.height-=_338; -}; -if(_33d(_332.expandSouth)){ -_337(_332.expandSouth); -}else{ -_337(_332.south); -} -function _339(pp){ -if(!pp.length){ -return; -} -var _33a=_334(pp); -pp.panel("resize",{width:_33a,height:cpos.height,left:cc.width()-_33a,top:cpos.top}); -cpos.width-=_33a; -}; -if(_33d(_332.expandEast)){ -_339(_332.expandEast); -}else{ -_339(_332.east); -} -function _33b(pp){ -if(!pp.length){ -return; -} -var _33c=_334(pp); -pp.panel("resize",{width:_33c,height:cpos.height,left:0,top:cpos.top}); -cpos.left+=_33c; -cpos.width-=_33c; -}; -if(_33d(_332.expandWest)){ -_33b(_332.expandWest); -}else{ -_33b(_332.west); -} -_332.center.panel("resize",cpos); -}; -function init(_33e){ -var cc=$(_33e); -cc.addClass("layout"); -function _33f(cc){ -cc.children("div").each(function(){ -var opts=$.fn.layout.parsePanelOptions(this); -if("north,south,east,west,center".indexOf(opts.region)>=0){ -_341(_33e,opts,this); -} -}); -}; -cc.children("form").length?_33f(cc.children("form")):_33f(cc); -cc.append("
                                                                                                                            "); -cc.bind("_resize",function(e,_340){ -var opts=$.data(_33e,"layout").options; -if(opts.fit==true||_340){ -_32f(_33e); -} -return false; -}); -}; -function _341(_342,_343,el){ -_343.region=_343.region||"center"; -var _344=$.data(_342,"layout").panels; -var cc=$(_342); -var dir=_343.region; -if(_344[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
                                                                                                                            ").appendTo(cc); -} -var _345=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var tool=$(this).panel("header").children("div.panel-tool"); -tool.children("a.panel-tool-collapse").hide(); -var _346={north:"up",south:"down",east:"right",west:"left"}; -if(!_346[dir]){ -return; -} -var _347="layout-button-"+_346[dir]; -var t=tool.children("a."+_347); -if(!t.length){ -t=$("").addClass(_347).appendTo(tool); -t.bind("click",{dir:dir},function(e){ -_353(_342,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_343); -pp.panel(_345); -_344[dir]=pp; -if(pp.panel("options").split){ -var _348=pp.panel("panel"); -_348.addClass("layout-split-"+dir); -var _349=""; -if(dir=="north"){ -_349="s"; -} -if(dir=="south"){ -_349="n"; -} -if(dir=="east"){ -_349="w"; -} -if(dir=="west"){ -_349="e"; -} -_348.resizable($.extend({},{handles:_349,onStartResize:function(e){ -_32e=true; -if(dir=="north"||dir=="south"){ -var _34a=$(">div.layout-split-proxy-v",_342); -}else{ -var _34a=$(">div.layout-split-proxy-h",_342); -} -var top=0,left=0,_34b=0,_34c=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_348.css("top"))+_348.outerHeight()-_34a.height(); -pos.left=parseInt(_348.css("left")); -pos.width=_348.outerWidth(); -pos.height=_34a.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_348.css("top")); -pos.left=parseInt(_348.css("left")); -pos.width=_348.outerWidth(); -pos.height=_34a.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_348.css("top"))||0; -pos.left=parseInt(_348.css("left"))||0; -pos.width=_34a.width(); -pos.height=_348.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_348.css("top"))||0; -pos.left=_348.outerWidth()-_34a.width(); -pos.width=_34a.width(); -pos.height=_348.outerHeight(); -} -} -} -} -_34a.css(pos); -$("
                                                                                                                            ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _34d=$(">div.layout-split-proxy-v",_342); -_34d.css("top",e.pageY-$(_342).offset().top-_34d.height()/2); -}else{ -var _34d=$(">div.layout-split-proxy-h",_342); -_34d.css("left",e.pageX-$(_342).offset().left-_34d.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_32f(_342); -_32e=false; -cc.find(">div.layout-mask").remove(); -}},_343)); -} -}; -function _34e(_34f,_350){ -var _351=$.data(_34f,"layout").panels; -if(_351[_350].length){ -_351[_350].panel("destroy"); -_351[_350]=$(); -var _352="expand"+_350.substring(0,1).toUpperCase()+_350.substring(1); -if(_351[_352]){ -_351[_352].panel("destroy"); -_351[_352]=undefined; -} -} -}; -function _353(_354,_355,_356){ -if(_356==undefined){ -_356="normal"; -} -var _357=$.data(_354,"layout").panels; -var p=_357[_355]; -if(p.panel("options").onBeforeCollapse.call(p)==false){ -return; -} -var _358="expand"+_355.substring(0,1).toUpperCase()+_355.substring(1); -if(!_357[_358]){ -_357[_358]=_359(_355); -_357[_358].panel("panel").bind("click",function(){ -var _35a=_35b(); -p.panel("expand",false).panel("open").panel("resize",_35a.collapse); -p.panel("panel").animate(_35a.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_355},function(e){ -if(_32e==true){ -return; -} -_353(_354,e.data.region); -}); -}); -return false; -}); -} -var _35c=_35b(); -if(!_33d(_357[_358])){ -_357.center.panel("resize",_35c.resizeC); -} -p.panel("panel").animate(_35c.collapse,_356,function(){ -p.panel("collapse",false).panel("close"); -_357[_358].panel("open").panel("resize",_35c.expandP); -$(this).unbind(".layout"); -}); -function _359(dir){ -var icon; -if(dir=="east"){ -icon="layout-button-left"; -}else{ -if(dir=="west"){ -icon="layout-button-right"; -}else{ -if(dir=="north"){ -icon="layout-button-down"; -}else{ -if(dir=="south"){ -icon="layout-button-up"; -} -} -} -} -var _35d=$.extend({},$.fn.layout.paneldefaults,{cls:"layout-expand",title:" ",closed:true,doSize:false,tools:[{iconCls:icon,handler:function(){ -_361(_354,_355); -return false; -}}]}); -var p=$("
                                                                                                                            ").appendTo(_354).panel(_35d); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _35b(){ -var cc=$(_354); -var _35e=_357.center.panel("options"); -if(_355=="east"){ -var _35f=_357["east"].panel("options"); -return {resizeC:{width:_35e.width+_35f.width-28},expand:{left:cc.width()-_35f.width},expandP:{top:_35e.top,left:cc.width()-28,width:28,height:_35e.height},collapse:{left:cc.width(),top:_35e.top,height:_35e.height}}; -}else{ -if(_355=="west"){ -var _360=_357["west"].panel("options"); -return {resizeC:{width:_35e.width+_360.width-28,left:28},expand:{left:0},expandP:{left:0,top:_35e.top,width:28,height:_35e.height},collapse:{left:-_360.width,top:_35e.top,height:_35e.height}}; -}else{ -if(_355=="north"){ -var hh=cc.height()-28; -if(_33d(_357.expandSouth)){ -hh-=_357.expandSouth.panel("options").height; -}else{ -if(_33d(_357.south)){ -hh-=_357.south.panel("options").height; -} -} -_357.east.panel("resize",{top:28,height:hh}); -_357.west.panel("resize",{top:28,height:hh}); -if(_33d(_357.expandEast)){ -_357.expandEast.panel("resize",{top:28,height:hh}); -} -if(_33d(_357.expandWest)){ -_357.expandWest.panel("resize",{top:28,height:hh}); -} -return {resizeC:{top:28,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_357["north"].panel("options").height,width:cc.width()}}; -}else{ -if(_355=="south"){ -var hh=cc.height()-28; -if(_33d(_357.expandNorth)){ -hh-=_357.expandNorth.panel("options").height; -}else{ -if(_33d(_357.north)){ -hh-=_357.north.panel("options").height; -} -} -_357.east.panel("resize",{height:hh}); -_357.west.panel("resize",{height:hh}); -if(_33d(_357.expandEast)){ -_357.expandEast.panel("resize",{height:hh}); -} -if(_33d(_357.expandWest)){ -_357.expandWest.panel("resize",{height:hh}); -} -return {resizeC:{height:hh},expand:{top:cc.height()-_357["south"].panel("options").height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _361(_362,_363){ -var _364=$.data(_362,"layout").panels; -var _365=_366(); -var p=_364[_363]; -if(p.panel("options").onBeforeExpand.call(p)==false){ -return; -} -var _367="expand"+_363.substring(0,1).toUpperCase()+_363.substring(1); -_364[_367].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_365.collapse); -p.panel("panel").animate(_365.expand,function(){ -_32f(_362); -}); -function _366(){ -var cc=$(_362); -var _368=_364.center.panel("options"); -if(_363=="east"&&_364.expandEast){ -return {collapse:{left:cc.width(),top:_368.top,height:_368.height},expand:{left:cc.width()-_364["east"].panel("options").width}}; -}else{ -if(_363=="west"&&_364.expandWest){ -return {collapse:{left:-_364["west"].panel("options").width,top:_368.top,height:_368.height},expand:{left:0}}; -}else{ -if(_363=="north"&&_364.expandNorth){ -return {collapse:{top:-_364["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_363=="south"&&_364.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_364["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _33d(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _369(_36a){ -var _36b=$.data(_36a,"layout").panels; -if(_36b.east.length&&_36b.east.panel("options").collapsed){ -_353(_36a,"east",0); -} -if(_36b.west.length&&_36b.west.panel("options").collapsed){ -_353(_36a,"west",0); -} -if(_36b.north.length&&_36b.north.panel("options").collapsed){ -_353(_36a,"north",0); -} -if(_36b.south.length&&_36b.south.panel("options").collapsed){ -_353(_36a,"south",0); -} -}; -$.fn.layout=function(_36c,_36d){ -if(typeof _36c=="string"){ -return $.fn.layout.methods[_36c](this,_36d); -} -_36c=_36c||{}; -return this.each(function(){ -var _36e=$.data(this,"layout"); -if(_36e){ -$.extend(_36e.options,_36c); -}else{ -var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_36c); -$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -init(this); -} -_32f(this); -_369(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_32f(this); -}); -},panel:function(jq,_36f){ -return $.data(jq[0],"layout").panels[_36f]; -},collapse:function(jq,_370){ -return jq.each(function(){ -_353(this,_370); -}); -},expand:function(jq,_371){ -return jq.each(function(){ -_361(this,_371); -}); -},add:function(jq,_372){ -return jq.each(function(){ -_341(this,_372); -_32f(this); -if($(this).layout("panel",_372.region).panel("options").collapsed){ -_353(this,_372.region,0); -} -}); -},remove:function(jq,_373){ -return jq.each(function(){ -_34e(this,_373); -_32f(this); -}); -}}; -$.fn.layout.parseOptions=function(_374){ -return $.extend({},$.parser.parseOptions(_374,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_375){ -var t=$(_375); -return $.extend({},$.fn.panel.parseOptions(_375),$.parser.parseOptions(_375,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); -(function($){ -function init(_376){ -$(_376).appendTo("body"); -$(_376).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _377=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_377); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _378=_379($(_376)); -for(var i=0;i<_378.length;i++){ -_37a(_378[i]); -} -function _379(menu){ -var _37b=[]; -menu.addClass("menu"); -_37b.push(menu); -if(!menu.hasClass("menu-content")){ -menu.children("div").each(function(){ -var _37c=$(this).children("div"); -if(_37c.length){ -_37c.insertAfter(_376); -this.submenu=_37c; -var mm=_379(_37c); -_37b=_37b.concat(mm); -} -}); -} -return _37b; -}; -function _37a(menu){ -var _37d=$.parser.parseOptions(menu[0],["width"]).width; -if(menu.hasClass("menu-content")){ -menu[0].originalWidth=_37d||menu._outerWidth(); -}else{ -menu[0].originalWidth=_37d||0; -menu.children("div").each(function(){ -var item=$(this); -if(item.hasClass("menu-sep")){ -}else{ -var _37e=$.extend({},$.parser.parseOptions(this,["name","iconCls","href"]),{disabled:(item.attr("disabled")?true:undefined)}); -item[0].itemName=_37e.name||""; -item[0].itemHref=_37e.href||""; -var text=item.addClass("menu-item").html(); -item.empty().append($("
                                                                                                                            ").html(text)); -if(_37e.iconCls){ -$("
                                                                                                                            ").addClass(_37e.iconCls).appendTo(item); -} -if(_37e.disabled){ -_37f(_376,item[0],true); -} -if(item[0].submenu){ -$("
                                                                                                                            ").appendTo(item); -} -_380(_376,item); -} -}); -$("
                                                                                                                            ").prependTo(menu); -} -_381(_376,menu); -menu.hide(); -_382(_376,menu); -}; -}; -function _381(_383,menu){ -var opts=$.data(_383,"menu").options; -var d=menu.css("display"); -menu.css({display:"block",left:-10000}); -var _384=0; -menu.find("div.menu-text").each(function(){ -if(_384<$(this)._outerWidth()){ -_384=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_384+=65; -menu._outerWidth(Math.max((menu[0].originalWidth||0),_384,opts.minWidth)); -menu.css("display",d); -}; -function _382(_385,menu){ -var _386=$.data(_385,"menu"); -menu.unbind(".menu").bind("mouseenter.menu",function(){ -if(_386.timer){ -clearTimeout(_386.timer); -_386.timer=null; -} -}).bind("mouseleave.menu",function(){ -_386.timer=setTimeout(function(){ -_387(_385); -},100); -}); -}; -function _380(_388,item){ -item.unbind(".menu"); -item.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_387(_388); -var href=$(this).attr("href"); -if(href){ -location.href=href; -} -} -var item=$(_388).menu("getItem",this); -$.data(_388,"menu").options.onClick.call(_388,item); -}).bind("mouseenter.menu",function(e){ -item.siblings().each(function(){ -if(this.submenu){ -_38b(this.submenu); -} -$(this).removeClass("menu-active"); -}); -item.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -item.addClass("menu-active-disabled"); -return; -} -var _389=item[0].submenu; -if(_389){ -$(_388).menu("show",{menu:_389,parent:item}); -} -}).bind("mouseleave.menu",function(e){ -item.removeClass("menu-active menu-active-disabled"); -var _38a=item[0].submenu; -if(_38a){ -if(e.pageX>=parseInt(_38a.css("left"))){ -item.addClass("menu-active"); -}else{ -_38b(_38a); -} -}else{ -item.removeClass("menu-active"); -} -}); -}; -function _387(_38c){ -var _38d=$.data(_38c,"menu"); -if(_38d){ -if($(_38c).is(":visible")){ -_38b($(_38c)); -_38d.options.onHide.call(_38c); -} -} -return false; -}; -function _38e(_38f,_390){ -var left,top; -_390=_390||{}; -var menu=$(_390.menu||_38f); -if(menu.hasClass("menu-top")){ -var opts=$.data(_38f,"menu").options; -$.extend(opts,_390); -left=opts.left; -top=opts.top; -if(opts.alignTo){ -var at=$(opts.alignTo); -left=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; -} -if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top-=menu.outerHeight(); -} -}else{ -var _391=_390.parent; -left=_391.offset().left+_391.outerWidth()-2; -if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -left=_391.offset().left-menu.outerWidth()+2; -} -var top=_391.offset().top-3; -if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight()-5; -} -} -menu.css({left:left,top:top}); -menu.show(0,function(){ -if(!menu[0].shadow){ -menu[0].shadow=$("
                                                                                                                            ").insertAfter(menu); -} -menu[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); -menu.css("z-index",$.fn.menu.defaults.zIndex++); -if(menu.hasClass("menu-top")){ -$.data(menu[0],"menu").options.onShow.call(menu[0]); -} -}); -}; -function _38b(menu){ -if(!menu){ -return; -} -_392(menu); -menu.find("div.menu-item").each(function(){ -if(this.submenu){ -_38b(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _392(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _393(_394,text){ -var _395=null; -var tmp=$("
                                                                                                                            "); -function find(menu){ -menu.children("div.menu-item").each(function(){ -var item=$(_394).menu("getItem",this); -var s=tmp.empty().html(item.text).text(); -if(text==$.trim(s)){ -_395=item; -}else{ -if(this.submenu&&!_395){ -find(this.submenu); -} -} -}); -}; -find($(_394)); -tmp.remove(); -return _395; -}; -function _37f(_396,_397,_398){ -var t=$(_397); -if(_398){ -t.addClass("menu-item-disabled"); -if(_397.onclick){ -_397.onclick1=_397.onclick; -_397.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_397.onclick1){ -_397.onclick=_397.onclick1; -_397.onclick1=null; -} -} -}; -function _399(_39a,_39b){ -var menu=$(_39a); -if(_39b.parent){ -if(!_39b.parent.submenu){ -var _39c=$("
                                                                                                                            ").appendTo("body"); -_39c.hide(); -_39b.parent.submenu=_39c; -$("
                                                                                                                            ").appendTo(_39b.parent); -} -menu=_39b.parent.submenu; -} -var item=$("
                                                                                                                            ").appendTo(menu); -$("
                                                                                                                            ").html(_39b.text).appendTo(item); -if(_39b.iconCls){ -$("
                                                                                                                            ").addClass(_39b.iconCls).appendTo(item); -} -if(_39b.id){ -item.attr("id",_39b.id); -} -if(_39b.name){ -item[0].itemName=_39b.name; -} -if(_39b.href){ -item[0].itemHref=_39b.href; -} -if(_39b.onclick){ -if(typeof _39b.onclick=="string"){ -item.attr("onclick",_39b.onclick); -}else{ -item[0].onclick=eval(_39b.onclick); -} -} -if(_39b.handler){ -item[0].onclick=eval(_39b.handler); -} -_380(_39a,item); -if(_39b.disabled){ -_37f(_39a,item[0],true); -} -_382(_39a,menu); -_381(_39a,menu); -}; -function _39d(_39e,_39f){ -function _3a0(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_3a0(this); -}); -var _3a1=el.submenu[0].shadow; -if(_3a1){ -_3a1.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_3a0(_39f); -}; -function _3a2(_3a3){ -$(_3a3).children("div.menu-item").each(function(){ -_39d(_3a3,this); -}); -if(_3a3.shadow){ -_3a3.shadow.remove(); -} -$(_3a3).remove(); -}; -$.fn.menu=function(_3a4,_3a5){ -if(typeof _3a4=="string"){ -return $.fn.menu.methods[_3a4](this,_3a5); -} -_3a4=_3a4||{}; -return this.each(function(){ -var _3a6=$.data(this,"menu"); -if(_3a6){ -$.extend(_3a6.options,_3a4); -}else{ -_3a6=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_3a4)}); -init(this); -} -$(this).css({left:_3a6.options.left,top:_3a6.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_38e(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_387(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_3a2(this); -}); -},setText:function(jq,_3a7){ -return jq.each(function(){ -$(_3a7.target).children("div.menu-text").html(_3a7.text); -}); -},setIcon:function(jq,_3a8){ -return jq.each(function(){ -var item=$(this).menu("getItem",_3a8.target); -if(item.iconCls){ -$(item.target).children("div.menu-icon").removeClass(item.iconCls).addClass(_3a8.iconCls); -}else{ -$("
                                                                                                                            ").addClass(_3a8.iconCls).appendTo(_3a8.target); -} -}); -},getItem:function(jq,_3a9){ -var t=$(_3a9); -var item={target:_3a9,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_3a9.itemName,href:_3a9.itemHref,onclick:_3a9.onclick}; -var icon=t.children("div.menu-icon"); -if(icon.length){ -var cc=[]; -var aa=icon.attr("class").split(" "); -for(var i=0;i "})); -if(opts.menu){ -$(opts.menu).menu(); -var _3b0=$(opts.menu).menu("options"); -var _3b1=_3b0.onShow; -var _3b2=_3b0.onHide; -$.extend(_3b0,{onShow:function(){ -var _3b3=$(this).menu("options"); -var btn=$(_3b3.alignTo); -var opts=btn.menubutton("options"); -btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); -_3b1.call(this); -},onHide:function(){ -var _3b4=$(this).menu("options"); -var btn=$(_3b4.alignTo); -var opts=btn.menubutton("options"); -btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); -_3b2.call(this); -}}); -} -_3b5(_3af,opts.disabled); -}; -function _3b5(_3b6,_3b7){ -var opts=$.data(_3b6,"menubutton").options; -opts.disabled=_3b7; -var btn=$(_3b6); -var t=btn.find("."+opts.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_3b7){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _3b8=null; -t.bind("click.menubutton",function(){ -_3b9(_3b6); -return false; -}).bind("mouseenter.menubutton",function(){ -_3b8=setTimeout(function(){ -_3b9(_3b6); -},opts.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_3b8){ -clearTimeout(_3b8); -} -}); -} -}; -function _3b9(_3ba){ -var opts=$.data(_3ba,"menubutton").options; -if(opts.disabled||!opts.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_3ba); -var mm=$(opts.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_3bb,_3bc){ -if(typeof _3bb=="string"){ -var _3bd=$.fn.menubutton.methods[_3bb]; -if(_3bd){ -return _3bd(this,_3bc); -}else{ -return this.linkbutton(_3bb,_3bc); -} -} -_3bb=_3bb||{}; -return this.each(function(){ -var _3be=$.data(this,"menubutton"); -if(_3be){ -$.extend(_3be.options,_3bb); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_3bb)}); -$(this).removeAttr("disabled"); -} -init(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _3bf=jq.linkbutton("options"); -var _3c0=$.data(jq[0],"menubutton").options; -_3c0.toggle=_3bf.toggle; -_3c0.selected=_3bf.selected; -return _3c0; -},enable:function(jq){ -return jq.each(function(){ -_3b5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_3b5(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var opts=$(this).menubutton("options"); -if(opts.menu){ -$(opts.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_3c1){ -var t=$(_3c1); -return $.extend({},$.fn.linkbutton.parseOptions(_3c1),$.parser.parseOptions(_3c1,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); -(function($){ -function init(_3c2){ -var opts=$.data(_3c2,"splitbutton").options; -$(_3c2).menubutton(opts); -}; -$.fn.splitbutton=function(_3c3,_3c4){ -if(typeof _3c3=="string"){ -var _3c5=$.fn.splitbutton.methods[_3c3]; -if(_3c5){ -return _3c5(this,_3c4); -}else{ -return this.menubutton(_3c3,_3c4); -} -} -_3c3=_3c3||{}; -return this.each(function(){ -var _3c6=$.data(this,"splitbutton"); -if(_3c6){ -$.extend(_3c6.options,_3c3); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_3c3)}); -$(this).removeAttr("disabled"); -} -init(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _3c7=jq.menubutton("options"); -var _3c8=$.data(jq[0],"splitbutton").options; -$.extend(_3c8,{disabled:_3c7.disabled,toggle:_3c7.toggle,selected:_3c7.selected}); -return _3c8; -}}; -$.fn.splitbutton.parseOptions=function(_3c9){ -var t=$(_3c9); -return $.extend({},$.fn.linkbutton.parseOptions(_3c9),$.parser.parseOptions(_3c9,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); -(function($){ -function init(_3ca){ -$(_3ca).hide(); -var span=$("").insertAfter(_3ca); -var _3cb=$("").appendTo(span); -$("").appendTo(span); -var name=$(_3ca).attr("name"); -if(name){ -_3cb.attr("name",name); -$(_3ca).removeAttr("name").attr("searchboxName",name); -} -return span; -}; -function _3cc(_3cd,_3ce){ -var opts=$.data(_3cd,"searchbox").options; -var sb=$.data(_3cd,"searchbox").searchbox; -if(_3ce){ -opts.width=_3ce; -} -sb.appendTo("body"); -if(isNaN(opts.width)){ -opts.width=sb._outerWidth(); -} -var _3cf=sb.find("span.searchbox-button"); -var menu=sb.find("a.searchbox-menu"); -var _3d0=sb.find("input.searchbox-text"); -sb._outerWidth(opts.width)._outerHeight(opts.height); -_3d0._outerWidth(sb.width()-menu._outerWidth()-_3cf._outerWidth()); -_3d0.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -menu._outerHeight(sb.height()); -_3cf._outerHeight(sb.height()); -var _3d1=menu.find("span.l-btn-left"); -_3d1._outerHeight(sb.height()); -_3d1.find("span.l-btn-text,span.m-btn-downarrow").css({height:_3d1.height()+"px",lineHeight:_3d1.height()+"px"}); -sb.insertAfter(_3cd); -}; -function _3d2(_3d3){ -var _3d4=$.data(_3d3,"searchbox"); -var opts=_3d4.options; -if(opts.menu){ -_3d4.menu=$(opts.menu).menu({onClick:function(item){ -_3d5(item); -}}); -var item=_3d4.menu.children("div.menu-item:first"); -_3d4.menu.children("div.menu-item").each(function(){ -var _3d6=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_3d6.selected){ -item=$(this); -return false; -} -}); -item.triggerHandler("click"); -}else{ -_3d4.searchbox.find("a.searchbox-menu").remove(); -_3d4.menu=null; -} -function _3d5(item){ -_3d4.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(item.text); -mb.prependTo(_3d4.searchbox).menubutton({menu:_3d4.menu,iconCls:item.iconCls}); -_3d4.searchbox.find("input.searchbox-text").attr("name",$(item.target).attr("name")||item.text); -_3cc(_3d3); -}; -}; -function _3d7(_3d8){ -var _3d9=$.data(_3d8,"searchbox"); -var opts=_3d9.options; -var _3da=_3d9.searchbox.find("input.searchbox-text"); -var _3db=_3d9.searchbox.find(".searchbox-button"); -_3da.unbind(".searchbox").bind("blur.searchbox",function(e){ -opts.value=$(this).val(); -if(opts.value==""){ -$(this).val(opts.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=opts.value){ -$(this).val(opts.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -var name=$.fn.prop?_3da.prop("name"):_3da.attr("name"); -opts.value=$(this).val(); -opts.searcher.call(_3d8,opts.value,name); -return false; -} -}); -_3db.unbind(".searchbox").bind("click.searchbox",function(){ -var name=$.fn.prop?_3da.prop("name"):_3da.attr("name"); -opts.searcher.call(_3d8,opts.value,name); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _3dc(_3dd){ -var _3de=$.data(_3dd,"searchbox"); -var opts=_3de.options; -var _3df=_3de.searchbox.find("input.searchbox-text"); -if(opts.value==""){ -_3df.val(opts.prompt); -_3df.addClass("searchbox-prompt"); -}else{ -_3df.val(opts.value); -_3df.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_3e0,_3e1){ -if(typeof _3e0=="string"){ -return $.fn.searchbox.methods[_3e0](this,_3e1); -} -_3e0=_3e0||{}; -return this.each(function(){ -var _3e2=$.data(this,"searchbox"); -if(_3e2){ -$.extend(_3e2.options,_3e0); -}else{ -_3e2=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_3e0),searchbox:init(this)}); -} -_3d2(this); -_3dc(this); -_3d7(this); -_3cc(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_3e3){ -return jq.each(function(){ -$(this).searchbox("options").value=_3e3; -$(this).searchbox("textbox").val(_3e3); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,name){ -return jq.each(function(){ -var menu=$.data(this,"searchbox").menu; -if(menu){ -menu.children("div.menu-item[name=\""+name+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var menu=$(this).searchbox("menu"); -if(menu){ -menu.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_3e4){ -return jq.each(function(){ -_3cc(this,_3e4); -}); -}}; -$.fn.searchbox.parseOptions=function(_3e5){ -var t=$(_3e5); -return $.extend({},$.parser.parseOptions(_3e5,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_3e6,name){ -}}; -})(jQuery); -(function($){ -function init(_3e7){ -$(_3e7).addClass("validatebox-text"); -}; -function _3e8(_3e9){ -var _3ea=$.data(_3e9,"validatebox"); -_3ea.validating=false; -$(_3e9).tooltip("destroy"); -$(_3e9).unbind(); -$(_3e9).remove(); -}; -function _3eb(_3ec){ -var box=$(_3ec); -var _3ed=$.data(_3ec,"validatebox"); -box.unbind(".validatebox"); -if(_3ed.options.novalidate){ -return; -} -box.bind("focus.validatebox",function(){ -_3ed.validating=true; -_3ed.value=undefined; -(function(){ -if(_3ed.validating){ -if(_3ed.value!=box.val()){ -_3ed.value=box.val(); -if(_3ed.timer){ -clearTimeout(_3ed.timer); -} -_3ed.timer=setTimeout(function(){ -$(_3ec).validatebox("validate"); -},_3ed.options.delay); -}else{ -_3f2(_3ec); -} -setTimeout(arguments.callee,200); -} -})(); -}).bind("blur.validatebox",function(){ -if(_3ed.timer){ -clearTimeout(_3ed.timer); -_3ed.timer=undefined; -} -_3ed.validating=false; -_3ee(_3ec); -}).bind("mouseenter.validatebox",function(){ -if(box.hasClass("validatebox-invalid")){ -_3ef(_3ec); -} -}).bind("mouseleave.validatebox",function(){ -if(!_3ed.validating){ -_3ee(_3ec); -} -}); -}; -function _3ef(_3f0){ -var _3f1=$.data(_3f0,"validatebox"); -var opts=_3f1.options; -$(_3f0).tooltip($.extend({},opts.tipOptions,{content:_3f1.message,position:opts.tipPosition,deltaX:opts.deltaX})).tooltip("show"); -_3f1.tip=true; -}; -function _3f2(_3f3){ -var _3f4=$.data(_3f3,"validatebox"); -if(_3f4&&_3f4.tip){ -$(_3f3).tooltip("reposition"); -} -}; -function _3ee(_3f5){ -var _3f6=$.data(_3f5,"validatebox"); -_3f6.tip=false; -$(_3f5).tooltip("hide"); -}; -function _3f7(_3f8){ -var _3f9=$.data(_3f8,"validatebox"); -var opts=_3f9.options; -var box=$(_3f8); -var _3fa=box.val(); -function _3fb(msg){ -_3f9.message=msg; -}; -function _3fc(_3fd){ -var _3fe=/([a-zA-Z_]+)(.*)/.exec(_3fd); -var rule=opts.rules[_3fe[1]]; -if(rule&&_3fa){ -var _3ff=eval(_3fe[2]); -if(!rule["validator"](_3fa,_3ff)){ -box.addClass("validatebox-invalid"); -var _400=rule["message"]; -if(_3ff){ -for(var i=0;i<_3ff.length;i++){ -_400=_400.replace(new RegExp("\\{"+i+"\\}","g"),_3ff[i]); -} -} -_3fb(opts.invalidMessage||_400); -if(_3f9.validating){ -_3ef(_3f8); -} -return false; -} -} -return true; -}; -if(opts.novalidate||box.is(":disabled")){ -return true; -} -if(opts.required){ -if(_3fa==""){ -box.addClass("validatebox-invalid"); -_3fb(opts.missingMessage); -if(_3f9.validating){ -_3ef(_3f8); -} -return false; -} -} -if(opts.validType){ -if(typeof opts.validType=="string"){ -if(!_3fc(opts.validType)){ -return false; -} -}else{ -for(var i=0;i=_40b[0]&&len<=_40b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_40c,_40d){ -var data={}; -data[_40d[1]]=_40c; -var _40e=$.ajax({url:_40d[0],dataType:"json",data:data,async:false,cache:false,type:"post"}).responseText; -return _40e=="true"; -},message:"Please fix this field."}}}; -})(jQuery); -(function($){ -function _40f(_410,_411){ -_411=_411||{}; -var _412={}; -if(_411.onSubmit){ -if(_411.onSubmit.call(_410,_412)==false){ -return; -} -} -var form=$(_410); -if(_411.url){ -form.attr("action",_411.url); -} -var _413="easyui_frame_"+(new Date().getTime()); -var _414=$("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=form.attr("target"),a=form.attr("action"); -form.attr("target",_413); -var _415=$(); -try{ -_414.appendTo("body"); -_414.bind("load",cb); -for(var n in _412){ -var f=$("").val(_412[n]).appendTo(form); -_415=_415.add(f); -} -form[0].submit(); -} -finally{ -form.attr("action",a); -t?form.attr("target",t):form.removeAttr("target"); -_415.remove(); -} -var _416=10; -function cb(){ -_414.unbind(); -var body=$("#"+_413).contents().find("body"); -var data=body.html(); -if(data==""){ -if(--_416){ -setTimeout(cb,100); -return; -} -return; -} -var ta=body.find(">textarea"); -if(ta.length){ -data=ta.val(); -}else{ -var pre=body.find(">pre"); -if(pre.length){ -data=pre.html(); -} -} -if(_411.success){ -_411.success(data); -} -setTimeout(function(){ -_414.unbind(); -_414.remove(); -},100); -}; -}; -function load(_417,data){ -if(!$.data(_417,"form")){ -$.data(_417,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var opts=$.data(_417,"form").options; -if(typeof data=="string"){ -var _418={}; -if(opts.onBeforeLoad.call(_417,_418)==false){ -return; -} -$.ajax({url:data,data:_418,dataType:"json",success:function(data){ -_419(data); -},error:function(){ -opts.onLoadError.apply(_417,arguments); -}}); -}else{ -_419(data); -} -function _419(data){ -var form=$(_417); -for(var name in data){ -var val=data[name]; -var rr=_41a(name,val); -if(!rr.length){ -var f=form.find("input[numberboxName=\""+name+"\"]"); -if(f.length){ -f.numberbox("setValue",val); -}else{ -$("input[name=\""+name+"\"]",form).val(val); -$("textarea[name=\""+name+"\"]",form).val(val); -$("select[name=\""+name+"\"]",form).val(val); -} -} -_41b(name,val); -} -opts.onLoadSuccess.call(_417,data); -_41e(_417); -}; -function _41a(name,val){ -var rr=$(_417).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),val)>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _41b(name,val){ -var form=$(_417); -var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"]; -var c=form.find("[comboName=\""+name+"\"]"); -if(c.length){ -for(var i=0;i").insertAfter(_42e); -var name=$(_42e).attr("name"); -if(name){ -v.attr("name",name); -$(_42e).removeAttr("name").attr("numberboxName",name); -} -return v; -}; -function _42f(_430){ -var opts=$.data(_430,"numberbox").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_431(_430,opts.parser.call(_430,opts.value)); -opts.onChange=fn; -opts.originalValue=_432(_430); -}; -function _432(_433){ -return $.data(_433,"numberbox").field.val(); -}; -function _431(_434,_435){ -var _436=$.data(_434,"numberbox"); -var opts=_436.options; -var _437=_432(_434); -_435=opts.parser.call(_434,_435); -opts.value=_435; -_436.field.val(_435); -$(_434).val(opts.formatter.call(_434,_435)); -if(_437!=_435){ -opts.onChange.call(_434,_435,_437); -} -}; -function _438(_439){ -var opts=$.data(_439,"numberbox").options; -$(_439).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return opts.filter.call(_439,e); -}).bind("blur.numberbox",function(){ -_431(_439,$(this).val()); -$(this).val(opts.formatter.call(_439,_432(_439))); -}).bind("focus.numberbox",function(){ -var vv=_432(_439); -if(vv!=opts.parser.call(_439,$(this).val())){ -$(this).val(opts.formatter.call(_439,vv)); -} -}); -}; -function _43a(_43b){ -if($.fn.validatebox){ -var opts=$.data(_43b,"numberbox").options; -$(_43b).validatebox(opts); -} -}; -function _43c(_43d,_43e){ -var opts=$.data(_43d,"numberbox").options; -if(_43e){ -opts.disabled=true; -$(_43d).attr("disabled",true); -}else{ -opts.disabled=false; -$(_43d).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_43f,_440){ -if(typeof _43f=="string"){ -var _441=$.fn.numberbox.methods[_43f]; -if(_441){ -return _441(this,_440); -}else{ -return this.validatebox(_43f,_440); -} -} -_43f=_43f||{}; -return this.each(function(){ -var _442=$.data(this,"numberbox"); -if(_442){ -$.extend(_442.options,_43f); -}else{ -_442=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_43f),field:init(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_43c(this,_442.options.disabled); -_438(this); -_43a(this); -_42f(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_43c(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_43c(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_431(this,$(this).val()); -}); -},setValue:function(jq,_443){ -return jq.each(function(){ -_431(this,_443); -}); -},getValue:function(jq){ -return _432(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _444=$.data(this,"numberbox"); -_444.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).numberbox("options"); -$(this).numberbox("setValue",opts.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_445){ -var t=$(_445); -return $.extend({},$.fn.validatebox.parseOptions(_445),$.parser.parseOptions(_445,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var opts=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==opts.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==opts.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_446){ -if(!_446){ -return _446; -} -_446=_446+""; -var opts=$(this).numberbox("options"); -var s1=_446,s2=""; -var dpos=_446.indexOf("."); -if(dpos>=0){ -s1=_446.substring(0,dpos); -s2=_446.substring(dpos+1,_446.length); -} -if(opts.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); -} -} -if(s2){ -return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; -}else{ -return opts.prefix+s1+opts.suffix; -} -},parser:function(s){ -s=s+""; -var opts=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(opts.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); -} -if(opts.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); -} -if(opts.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); -} -if(opts.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(opts.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (opts.min)=="number"&&valopts.max){ -val=opts.max.toFixed(opts.precision); -} -} -} -return val; -},onChange:function(_447,_448){ -}}); -})(jQuery); -(function($){ -function _449(_44a){ -var opts=$.data(_44a,"calendar").options; -var t=$(_44a); -opts.fit?$.extend(opts,t._fit()):t._fit(false); -var _44b=t.find(".calendar-header"); -t._outerWidth(opts.width); -t._outerHeight(opts.height); -t.find(".calendar-body")._outerHeight(t.height()-_44b._outerHeight()); -}; -function init(_44c){ -$(_44c).addClass("calendar").html("
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"Aprial 2010"+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+""+""+""+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "); -$(_44c).find(".calendar-title span").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var menu=$(_44c).find(".calendar-menu"); -if(menu.is(":visible")){ -menu.hide(); -}else{ -_453(_44c); -} -}); -$(".calendar-prevmonth,.calendar-nextmonth,.calendar-prevyear,.calendar-nextyear",_44c).hover(function(){ -$(this).addClass("calendar-nav-hover"); -},function(){ -$(this).removeClass("calendar-nav-hover"); -}); -$(_44c).find(".calendar-nextmonth").click(function(){ -_44d(_44c,1); -}); -$(_44c).find(".calendar-prevmonth").click(function(){ -_44d(_44c,-1); -}); -$(_44c).find(".calendar-nextyear").click(function(){ -_450(_44c,1); -}); -$(_44c).find(".calendar-prevyear").click(function(){ -_450(_44c,-1); -}); -$(_44c).bind("_resize",function(){ -var opts=$.data(_44c,"calendar").options; -if(opts.fit==true){ -_449(_44c); -} -return false; -}); -}; -function _44d(_44e,_44f){ -var opts=$.data(_44e,"calendar").options; -opts.month+=_44f; -if(opts.month>12){ -opts.year++; -opts.month=1; -}else{ -if(opts.month<1){ -opts.year--; -opts.month=12; -} -} -show(_44e); -var menu=$(_44e).find(".calendar-menu-month-inner"); -menu.find("td.calendar-selected").removeClass("calendar-selected"); -menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); -}; -function _450(_451,_452){ -var opts=$.data(_451,"calendar").options; -opts.year+=_452; -show(_451); -var menu=$(_451).find(".calendar-menu-year"); -menu.val(opts.year); -}; -function _453(_454){ -var opts=$.data(_454,"calendar").options; -$(_454).find(".calendar-menu").show(); -if($(_454).find(".calendar-menu-month-inner").is(":empty")){ -$(_454).find(".calendar-menu-month-inner").empty(); -var t=$("
                                                                                                                            ").appendTo($(_454).find(".calendar-menu-month-inner")); -var idx=0; -for(var i=0;i<3;i++){ -var tr=$("").appendTo(t); -for(var j=0;j<4;j++){ -$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); -} -} -$(_454).find(".calendar-menu-prev,.calendar-menu-next").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}); -$(_454).find(".calendar-menu-next").click(function(){ -var y=$(_454).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val())+1); -} -}); -$(_454).find(".calendar-menu-prev").click(function(){ -var y=$(_454).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val()-1)); -} -}); -$(_454).find(".calendar-menu-year").keypress(function(e){ -if(e.keyCode==13){ -_455(); -} -}); -$(_454).find(".calendar-menu-month").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var menu=$(_454).find(".calendar-menu"); -menu.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -_455(); -}); -} -function _455(){ -var menu=$(_454).find(".calendar-menu"); -var year=menu.find(".calendar-menu-year").val(); -var _456=menu.find(".calendar-selected").attr("abbr"); -if(!isNaN(year)){ -opts.year=parseInt(year); -opts.month=parseInt(_456); -show(_454); -} -menu.hide(); -}; -var body=$(_454).find(".calendar-body"); -var sele=$(_454).find(".calendar-menu"); -var _457=sele.find(".calendar-menu-year-inner"); -var _458=sele.find(".calendar-menu-month-inner"); -_457.find("input").val(opts.year).focus(); -_458.find("td.calendar-selected").removeClass("calendar-selected"); -_458.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); -sele._outerWidth(body._outerWidth()); -sele._outerHeight(body._outerHeight()); -_458._outerHeight(sele.height()-_457._outerHeight()); -}; -function _459(_45a,year,_45b){ -var opts=$.data(_45a,"calendar").options; -var _45c=[]; -var _45d=new Date(year,_45b,0).getDate(); -for(var i=1;i<=_45d;i++){ -_45c.push([year,_45b,i]); -} -var _45e=[],week=[]; -var _45f=-1; -while(_45c.length>0){ -var date=_45c.shift(); -week.push(date); -var day=new Date(date[0],date[1]-1,date[2]).getDay(); -if(_45f==day){ -day=0; -}else{ -if(day==(opts.firstDay==0?7:opts.firstDay)-1){ -_45e.push(week); -week=[]; -} -} -_45f=day; -} -if(week.length){ -_45e.push(week); -} -var _460=_45e[0]; -if(_460.length<7){ -while(_460.length<7){ -var _461=_460[0]; -var date=new Date(_461[0],_461[1]-1,_461[2]-1); -_460.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -}else{ -var _461=_460[0]; -var week=[]; -for(var i=1;i<=7;i++){ -var date=new Date(_461[0],_461[1]-1,_461[2]-i); -week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -_45e.unshift(week); -} -var _462=_45e[_45e.length-1]; -while(_462.length<7){ -var _463=_462[_462.length-1]; -var date=new Date(_463[0],_463[1]-1,_463[2]+1); -_462.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -if(_45e.length<6){ -var _463=_462[_462.length-1]; -var week=[]; -for(var i=1;i<=7;i++){ -var date=new Date(_463[0],_463[1]-1,_463[2]+i); -week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); -} -_45e.push(week); -} -return _45e; -}; -function show(_464){ -var opts=$.data(_464,"calendar").options; -$(_464).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); -var body=$(_464).find("div.calendar-body"); -body.find(">table").remove(); -var t=$("
                                                                                                                            ").prependTo(body); -var tr=$("").appendTo(t.find("thead")); -for(var i=opts.firstDay;i"+opts.weeks[i]+""); -} -for(var i=0;i"+opts.weeks[i]+""); -} -var _465=_459(_464,opts.year,opts.month); -for(var i=0;i<_465.length;i++){ -var week=_465[i]; -var tr=$("").appendTo(t.find("tbody")); -for(var j=0;j").attr("abbr",day[0]+","+day[1]+","+day[2]).html(day[2]).appendTo(tr); -} -} -t.find("td[abbr^=\""+opts.year+","+opts.month+"\"]").removeClass("calendar-other-month"); -var now=new Date(); -var _466=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); -t.find("td[abbr=\""+_466+"\"]").addClass("calendar-today"); -if(opts.current){ -t.find(".calendar-selected").removeClass("calendar-selected"); -var _467=opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate(); -t.find("td[abbr=\""+_467+"\"]").addClass("calendar-selected"); -} -var _468=6-opts.firstDay; -var _469=_468+1; -if(_468>=7){ -_468-=7; -} -if(_469>=7){ -_469-=7; -} -t.find("tr").find("td:eq("+_468+")").addClass("calendar-saturday"); -t.find("tr").find("td:eq("+_469+")").addClass("calendar-sunday"); -t.find("td").hover(function(){ -$(this).addClass("calendar-hover"); -},function(){ -$(this).removeClass("calendar-hover"); -}).click(function(){ -t.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -var _46a=$(this).attr("abbr").split(","); -opts.current=new Date(_46a[0],parseInt(_46a[1])-1,_46a[2]); -opts.onSelect.call(_464,opts.current); -}); -}; -$.fn.calendar=function(_46b,_46c){ -if(typeof _46b=="string"){ -return $.fn.calendar.methods[_46b](this,_46c); -} -_46b=_46b||{}; -return this.each(function(){ -var _46d=$.data(this,"calendar"); -if(_46d){ -$.extend(_46d.options,_46b); -}else{ -_46d=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_46b)}); -init(this); -} -if(_46d.options.border==false){ -$(this).addClass("calendar-noborder"); -} -_449(this); -show(this); -$(this).find("div.calendar-menu").hide(); -}); -}; -$.fn.calendar.methods={options:function(jq){ -return $.data(jq[0],"calendar").options; -},resize:function(jq){ -return jq.each(function(){ -_449(this); -}); -},moveTo:function(jq,date){ -return jq.each(function(){ -$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); -}); -}}; -$.fn.calendar.parseOptions=function(_46e){ -var t=$(_46e); -return $.extend({},$.parser.parseOptions(_46e,["width","height",{firstDay:"number",fit:"boolean",border:"boolean"}])); -}; -$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date(),onSelect:function(date){ -}}; -})(jQuery); -(function($){ -function init(_46f){ -var _470=$(""+""+""+""+""+"").insertAfter(_46f); -$(_46f).addClass("spinner-text spinner-f").prependTo(_470); -return _470; -}; -function _471(_472,_473){ -var opts=$.data(_472,"spinner").options; -var _474=$.data(_472,"spinner").spinner; -if(_473){ -opts.width=_473; -} -var _475=$("
                                                                                                                            ").insertBefore(_474); -_474.appendTo("body"); -if(isNaN(opts.width)){ -opts.width=$(_472).outerWidth(); -} -var _476=_474.find(".spinner-arrow"); -_474._outerWidth(opts.width)._outerHeight(opts.height); -$(_472)._outerWidth(_474.width()-_476.outerWidth()); -$(_472).css({height:_474.height()+"px",lineHeight:_474.height()+"px"}); -_476._outerHeight(_474.height()); -_476.find("span")._outerHeight(_476.height()/2); -_474.insertAfter(_475); -_475.remove(); -}; -function _477(_478){ -var opts=$.data(_478,"spinner").options; -var _479=$.data(_478,"spinner").spinner; -_479.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!opts.disabled){ -_479.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -opts.spin.call(_478,false); -opts.onSpinUp.call(_478); -$(_478).validatebox("validate"); -}); -_479.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -opts.spin.call(_478,true); -opts.onSpinDown.call(_478); -$(_478).validatebox("validate"); -}); -} -}; -function _47a(_47b,_47c){ -var opts=$.data(_47b,"spinner").options; -if(_47c){ -opts.disabled=true; -$(_47b).attr("disabled",true); -}else{ -opts.disabled=false; -$(_47b).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_47d,_47e){ -if(typeof _47d=="string"){ -var _47f=$.fn.spinner.methods[_47d]; -if(_47f){ -return _47f(this,_47e); -}else{ -return this.validatebox(_47d,_47e); -} -} -_47d=_47d||{}; -return this.each(function(){ -var _480=$.data(this,"spinner"); -if(_480){ -$.extend(_480.options,_47d); -}else{ -_480=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_47d),spinner:init(this)}); -$(this).removeAttr("disabled"); -} -_480.options.originalValue=_480.options.value; -$(this).val(_480.options.value); -$(this).attr("readonly",!_480.options.editable); -_47a(this,_480.options.disabled); -_471(this); -$(this).validatebox(_480.options); -_477(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var opts=$.data(jq[0],"spinner").options; -return $.extend(opts,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _481=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_481.remove(); -}); -},resize:function(jq,_482){ -return jq.each(function(){ -_471(this,_482); -}); -},enable:function(jq){ -return jq.each(function(){ -_47a(this,false); -_477(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_47a(this,true); -_477(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_483){ -return jq.each(function(){ -var opts=$.data(this,"spinner").options; -opts.value=_483; -$(this).val(_483); -}); -},clear:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"spinner").options; -opts.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).spinner("options"); -$(this).spinner("setValue",opts.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_484){ -var t=$(_484); -return $.extend({},$.fn.validatebox.parseOptions(_484),$.parser.parseOptions(_484,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(down){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); -(function($){ -function _485(_486){ -$(_486).addClass("numberspinner-f"); -var opts=$.data(_486,"numberspinner").options; -$(_486).spinner(opts).numberbox(opts); -}; -function _487(_488,down){ -var opts=$.data(_488,"numberspinner").options; -var v=parseFloat($(_488).numberbox("getValue")||opts.value)||0; -if(down==true){ -v-=opts.increment; -}else{ -v+=opts.increment; -} -$(_488).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_489,_48a){ -if(typeof _489=="string"){ -var _48b=$.fn.numberspinner.methods[_489]; -if(_48b){ -return _48b(this,_48a); -}else{ -return this.spinner(_489,_48a); -} -} -_489=_489||{}; -return this.each(function(){ -var _48c=$.data(this,"numberspinner"); -if(_48c){ -$.extend(_48c.options,_489); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_489)}); -} -_485(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var opts=$.data(jq[0],"numberspinner").options; -return $.extend(opts,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_48d){ -return jq.each(function(){ -$(this).numberbox("setValue",_48d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).numberspinner("options"); -$(this).numberspinner("setValue",opts.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_48e){ -return $.extend({},$.fn.spinner.parseOptions(_48e),$.fn.numberbox.parseOptions(_48e),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ -_487(this,down); -}}); -})(jQuery); -(function($){ -function _48f(_490){ -var opts=$.data(_490,"timespinner").options; -$(_490).addClass("timespinner-f"); -$(_490).spinner(opts); -$(_490).unbind(".timespinner"); -$(_490).bind("click.timespinner",function(){ -var _491=0; -if(this.selectionStart!=null){ -_491=this.selectionStart; -}else{ -if(this.createTextRange){ -var _492=_490.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_492); -_491=s.text.length; -} -} -if(_491>=0&&_491<=2){ -opts.highlight=0; -}else{ -if(_491>=3&&_491<=5){ -opts.highlight=1; -}else{ -if(_491>=6&&_491<=8){ -opts.highlight=2; -} -} -} -_494(_490); -}).bind("blur.timespinner",function(){ -_493(_490); -}); -}; -function _494(_495){ -var opts=$.data(_495,"timespinner").options; -var _496=0,end=0; -if(opts.highlight==0){ -_496=0; -end=2; -}else{ -if(opts.highlight==1){ -_496=3; -end=5; -}else{ -if(opts.highlight==2){ -_496=6; -end=8; -} -} -} -if(_495.selectionStart!=null){ -_495.setSelectionRange(_496,end); -}else{ -if(_495.createTextRange){ -var _497=_495.createTextRange(); -_497.collapse(); -_497.moveEnd("character",end); -_497.moveStart("character",_496); -_497.select(); -} -} -$(_495).focus(); -}; -function _498(_499,_49a){ -var opts=$.data(_499,"timespinner").options; -if(!_49a){ -return null; -} -var vv=_49a.split(opts.separator); -for(var i=0;itime){ -time=_49d; -} -if(_49e&&_49e"]; -for(var i=0;i<_4b1.length;i++){ -_4b0.cache[_4b1[i][0]]={width:_4b1[i][1]}; -} -var _4b2=0; -for(var s in _4b0.cache){ -var item=_4b0.cache[s]; -item.index=_4b2++; -ss.push(s+"{width:"+item.width+"}"); -} -ss.push(""); -$(ss.join("\n")).appendTo(cc); -setTimeout(function(){ -cc.children("style:not(:last)").remove(); -},0); -},getRule:function(_4b3){ -var _4b4=cc.children("style:last")[0]; -var _4b5=_4b4.styleSheet?_4b4.styleSheet:(_4b4.sheet||document.styleSheets[document.styleSheets.length-1]); -var _4b6=_4b5.cssRules||_4b5.rules; -return _4b6[_4b3]; -},set:function(_4b7,_4b8){ -var item=_4b0.cache[_4b7]; -if(item){ -item.width=_4b8; -var rule=this.getRule(item.index); -if(rule){ -rule.style["width"]=_4b8; -} -} -},remove:function(_4b9){ -var tmp=[]; -for(var s in _4b0.cache){ -if(s.indexOf(_4b9)==-1){ -tmp.push([s,_4b0.cache[s].width]); -} -} -_4b0.cache={}; -this.add(tmp); -},dirty:function(_4ba){ -if(_4ba){ -_4b0.dirty.push(_4ba); -} -},clean:function(){ -for(var i=0;i<_4b0.dirty.length;i++){ -this.remove(_4b0.dirty[i]); -} -_4b0.dirty=[]; -}}; -}; -function _4bb(_4bc,_4bd){ -var opts=$.data(_4bc,"datagrid").options; -var _4be=$.data(_4bc,"datagrid").panel; -if(_4bd){ -if(_4bd.width){ -opts.width=_4bd.width; -} -if(_4bd.height){ -opts.height=_4bd.height; -} -} -if(opts.fit==true){ -var p=_4be.panel("panel").parent(); -opts.width=p.width(); -opts.height=p.height(); -} -_4be.panel("resize",{width:opts.width,height:opts.height}); -}; -function _4bf(_4c0){ -var opts=$.data(_4c0,"datagrid").options; -var dc=$.data(_4c0,"datagrid").dc; -var wrap=$.data(_4c0,"datagrid").panel; -var _4c1=wrap.width(); -var _4c2=wrap.height(); -var view=dc.view; -var _4c3=dc.view1; -var _4c4=dc.view2; -var _4c5=_4c3.children("div.datagrid-header"); -var _4c6=_4c4.children("div.datagrid-header"); -var _4c7=_4c5.find("table"); -var _4c8=_4c6.find("table"); -view.width(_4c1); -var _4c9=_4c5.children("div.datagrid-header-inner").show(); -_4c3.width(_4c9.find("table").width()); -if(!opts.showHeader){ -_4c9.hide(); -} -_4c4.width(_4c1-_4c3._outerWidth()); -_4c3.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_4c3.width()); -_4c4.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_4c4.width()); -var hh; -_4c5.css("height",""); -_4c6.css("height",""); -_4c7.css("height",""); -_4c8.css("height",""); -hh=Math.max(_4c7.height(),_4c8.height()); -_4c7.height(hh); -_4c8.height(hh); -_4c5.add(_4c6)._outerHeight(hh); -if(opts.height!="auto"){ -var _4ca=_4c2-_4c4.children("div.datagrid-header")._outerHeight()-_4c4.children("div.datagrid-footer")._outerHeight()-wrap.children("div.datagrid-toolbar")._outerHeight(); -wrap.children("div.datagrid-pager").each(function(){ -_4ca-=$(this)._outerHeight(); -}); -dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); -var _4cb=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); -_4c3.add(_4c4).children("div.datagrid-body").css({marginTop:_4cb,height:(_4ca-_4cb)}); -} -view.height(_4c4.height()); -}; -function _4cc(_4cd,_4ce,_4cf){ -var rows=$.data(_4cd,"datagrid").data.rows; -var opts=$.data(_4cd,"datagrid").options; -var dc=$.data(_4cd,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_4cf)){ -if(_4ce!=undefined){ -var tr1=opts.finder.getTr(_4cd,_4ce,"body",1); -var tr2=opts.finder.getTr(_4cd,_4ce,"body",2); -_4d0(tr1,tr2); -}else{ -var tr1=opts.finder.getTr(_4cd,0,"allbody",1); -var tr2=opts.finder.getTr(_4cd,0,"allbody",2); -_4d0(tr1,tr2); -if(opts.showFooter){ -var tr1=opts.finder.getTr(_4cd,0,"allfooter",1); -var tr2=opts.finder.getTr(_4cd,0,"allfooter",2); -_4d0(tr1,tr2); -} -} -} -_4bf(_4cd); -if(opts.height=="auto"){ -var _4d1=dc.body1.parent(); -var _4d2=dc.body2; -var _4d3=_4d4(_4d2); -var _4d5=_4d3.height; -if(_4d3.width>_4d2.width()){ -_4d5+=18; -} -_4d1.height(_4d5); -_4d2.height(_4d5); -dc.view.height(dc.view2.height()); -} -dc.body2.triggerHandler("scroll"); -function _4d0(trs1,trs2){ -for(var i=0;i"); -} -_4dd(true); -_4dd(false); -_4bf(_4da); -function _4dd(_4de){ -var _4df=_4de?1:2; -var tr=opts.finder.getTr(_4da,_4db,"body",_4df); -(_4de?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); -}; -}; -function _4e0(_4e1,_4e2){ -function _4e3(){ -var _4e4=[]; -var _4e5=[]; -$(_4e1).children("thead").each(function(){ -var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); -$(this).find("tr").each(function(){ -var cols=[]; -$(this).find("th").each(function(){ -var th=$(this); -var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number",width:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); -if(th.attr("editor")){ -var s=$.trim(th.attr("editor")); -if(s.substr(0,1)=="{"){ -col.editor=eval("("+s+")"); -}else{ -col.editor=s; -} -} -cols.push(col); -}); -opt.frozen?_4e4.push(cols):_4e5.push(cols); -}); -}); -return [_4e4,_4e5]; -}; -var _4e6=$("
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+""+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+""+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            ").insertAfter(_4e1); -_4e6.panel({doSize:false}); -_4e6.panel("panel").addClass("datagrid").bind("_resize",function(e,_4e7){ -var opts=$.data(_4e1,"datagrid").options; -if(opts.fit==true||_4e7){ -_4bb(_4e1); -setTimeout(function(){ -if($.data(_4e1,"datagrid")){ -_4e8(_4e1); -} -},0); -} -return false; -}); -$(_4e1).hide().appendTo(_4e6.children("div.datagrid-view")); -var cc=_4e3(); -var view=_4e6.children("div.datagrid-view"); -var _4e9=view.children("div.datagrid-view1"); -var _4ea=view.children("div.datagrid-view2"); -var _4eb=_4e6.closest("div.datagrid-view"); -if(!_4eb.length){ -_4eb=view; -} -var ss=_4ae(_4eb); -return {panel:_4e6,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_4e9,view2:_4ea,header1:_4e9.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_4ea.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_4e9.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_4ea.children("div.datagrid-body"),footer1:_4e9.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_4ea.children("div.datagrid-footer").children("div.datagrid-footer-inner")},ss:ss}; -}; -function _4ec(_4ed){ -var _4ee=$.data(_4ed,"datagrid"); -var opts=_4ee.options; -var dc=_4ee.dc; -var _4ef=_4ee.panel; -_4ef.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_4f0,_4f1){ -setTimeout(function(){ -if($.data(_4ed,"datagrid")){ -_4bf(_4ed); -_518(_4ed); -opts.onResize.call(_4ef,_4f0,_4f1); -} -},0); -},onExpand:function(){ -_4cc(_4ed); -opts.onExpand.call(_4ef); -}})); -_4ee.rowIdPrefix="datagrid-row-r"+(++_4a9); -_4ee.cellClassPrefix="datagrid-cell-c"+_4a9; -_4f2(dc.header1,opts.frozenColumns,true); -_4f2(dc.header2,opts.columns,false); -_4f3(); -dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); -dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); -if(opts.toolbar){ -if($.isArray(opts.toolbar)){ -$("div.datagrid-toolbar",_4ef).remove(); -var tb=$("
                                                                                                                            ").prependTo(_4ef); -var tr=tb.find("tr"); -for(var i=0;i
                                                                                                                            ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var tool=$("").appendTo(td); -tool[0].onclick=eval(btn.handler||function(){ -}); -tool.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_4ef); -$(opts.toolbar).show(); -} -}else{ -$("div.datagrid-toolbar",_4ef).remove(); -} -$("div.datagrid-pager",_4ef).remove(); -if(opts.pagination){ -var _4f4=$("
                                                                                                                            "); -if(opts.pagePosition=="bottom"){ -_4f4.appendTo(_4ef); -}else{ -if(opts.pagePosition=="top"){ -_4f4.addClass("datagrid-pager-top").prependTo(_4ef); -}else{ -var ptop=$("
                                                                                                                            ").prependTo(_4ef); -_4f4.appendTo(_4ef); -_4f4=_4f4.add(ptop); -} -} -_4f4.pagination({total:0,pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_4f5,_4f6){ -opts.pageNumber=_4f5; -opts.pageSize=_4f6; -_4f4.pagination("refresh",{pageNumber:_4f5,pageSize:_4f6}); -_5dc(_4ed); -}}); -opts.pageSize=_4f4.pagination("options").pageSize; -} -function _4f2(_4f7,_4f8,_4f9){ -if(!_4f8){ -return; -} -$(_4f7).show(); -$(_4f7).empty(); -var _4fa=[]; -var _4fb=[]; -if(opts.sortName){ -_4fa=opts.sortName.split(","); -_4fb=opts.sortOrder.split(","); -} -var t=$("
                                                                                                                            ").appendTo(_4f7); -for(var i=0;i<_4f8.length;i++){ -var tr=$("").appendTo($("tbody",t)); -var cols=_4f8[i]; -for(var j=0;j").appendTo(tr); -if(col.checkbox){ -td.attr("field",col.field); -$("
                                                                                                                            ").html("").appendTo(td); -}else{ -if(col.field){ -td.attr("field",col.field); -td.append("
                                                                                                                            "); -$("span",td).html(col.title); -$("span.datagrid-sort-icon",td).html(" "); -var cell=td.find("div.datagrid-cell"); -var pos=_4aa(_4fa,col.field); -if(pos>=0){ -cell.addClass("datagrid-sort-"+_4fb[pos]); -} -if(col.resizable==false){ -cell.attr("resizable","false"); -} -if(col.width){ -cell._outerWidth(col.width); -col.boxWidth=parseInt(cell[0].style.width); -}else{ -col.auto=true; -} -cell.css("text-align",(col.halign||col.align||"")); -col.cellClass=_4ee.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); -}else{ -$("
                                                                                                                            ").html(col.title).appendTo(td); -} -} -if(col.hidden){ -td.hide(); -} -} -} -if(_4f9&&opts.rownumbers){ -var td=$("
                                                                                                                            "); -if($("tr",t).length==0){ -td.wrap("").parent().appendTo($("tbody",t)); -}else{ -td.prependTo($("tr:first",t)); -} -} -}; -function _4f3(){ -var _4fc=[]; -var _4fd=_4fe(_4ed,true).concat(_4fe(_4ed)); -for(var i=0;i<_4fd.length;i++){ -var col=_4ff(_4ed,_4fd[i]); -if(col&&!col.checkbox){ -_4fc.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); -} -} -_4ee.ss.add(_4fc); -_4ee.ss.dirty(_4ee.cellSelectorPrefix); -_4ee.cellSelectorPrefix="."+_4ee.cellClassPrefix; -}; -}; -function _500(_501){ -var _502=$.data(_501,"datagrid"); -var _503=_502.panel; -var opts=_502.options; -var dc=_502.dc; -var _504=dc.header1.add(dc.header2); -_504.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ -if(opts.singleSelect&&opts.selectOnCheck){ -return false; -} -if($(this).is(":checked")){ -_577(_501); -}else{ -_57d(_501); -} -e.stopPropagation(); -}); -var _505=_504.find("div.datagrid-cell"); -_505.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ -if(_502.resizing){ -return; -} -$(this).addClass("datagrid-header-over"); -}).bind("mouseleave.datagrid",function(){ -$(this).removeClass("datagrid-header-over"); -}).bind("contextmenu.datagrid",function(e){ -var _506=$(this).attr("field"); -opts.onHeaderContextMenu.call(_501,e,_506); -}); -_505.unbind(".datagrid").bind("click.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -if(e.pageXp1){ -var _507=$(this).parent().attr("field"); -var col=_4ff(_501,_507); -if(!col.sortable||_502.resizing){ -return; -} -var _508=[]; -var _509=[]; -if(opts.sortName){ -_508=opts.sortName.split(","); -_509=opts.sortOrder.split(","); -} -var pos=_4aa(_508,_507); -var _50a=col.order||"asc"; -if(pos>=0){ -$(this).removeClass("datagrid-sort-asc datagrid-sort-desc"); -var _50b=_509[pos]=="asc"?"desc":"asc"; -if(opts.multiSort&&_50b==_50a){ -_508.splice(pos,1); -_509.splice(pos,1); -}else{ -_509[pos]=_50b; -$(this).addClass("datagrid-sort-"+_50b); -} -}else{ -if(opts.multiSort){ -_508.push(_507); -_509.push(_50a); -}else{ -_508=[_507]; -_509=[_50a]; -_505.removeClass("datagrid-sort-asc datagrid-sort-desc"); -} -$(this).addClass("datagrid-sort-"+_50a); -} -opts.sortName=_508.join(","); -opts.sortOrder=_509.join(","); -if(opts.remoteSort){ -_5dc(_501); -}else{ -var data=$.data(_501,"datagrid").data; -_544(_501,data); -} -opts.onSortColumn.call(_501,opts.sortName,opts.sortOrder); -} -}).bind("dblclick.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); -if(cond){ -var _50c=$(this).parent().attr("field"); -var col=_4ff(_501,_50c); -if(col.resizable==false){ -return; -} -$(_501).datagrid("autoSizeColumn",_50c); -col.auto=false; -} -}); -var _50d=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); -_505.each(function(){ -$(this).resizable({handles:_50d,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ -_502.resizing=true; -_504.css("cursor",$("body").css("cursor")); -if(!_502.proxy){ -_502.proxy=$("
                                                                                                                            ").appendTo(dc.view); -} -_502.proxy.css({left:e.pageX-$(_503).offset().left-1,display:"none"}); -setTimeout(function(){ -if(_502.proxy){ -_502.proxy.show(); -} -},500); -},onResize:function(e){ -_502.proxy.css({left:e.pageX-$(_503).offset().left-1,display:"block"}); -return false; -},onStopResize:function(e){ -_504.css("cursor",""); -$(this).css("height",""); -var _50e=$(this).parent().attr("field"); -var col=_4ff(_501,_50e); -col.width=$(this)._outerWidth(); -col.boxWidth=parseInt(this.style.width); -col.auto=undefined; -_4e8(_501,_50e); -_502.proxy.remove(); -_502.proxy=null; -if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ -_4bf(_501); -} -_518(_501); -opts.onResizeColumn.call(_501,_50e,col.width); -setTimeout(function(){ -_502.resizing=false; -},0); -}}); -}); -dc.body1.add(dc.body2).unbind().bind("mouseover",function(e){ -if(_502.resizing){ -return; -} -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _510=_511(tr); -_55f(_501,_510); -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _512=_511(tr); -opts.finder.getTr(_501,_512).removeClass("datagrid-row-over"); -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _513=_511(tr); -if(tt.parent().hasClass("datagrid-cell-check")){ -if(opts.singleSelect&&opts.selectOnCheck){ -if(!opts.checkOnSelect){ -_57d(_501,true); -} -_56a(_501,_513); -}else{ -if(tt.is(":checked")){ -_56a(_501,_513); -}else{ -_571(_501,_513); -} -} -}else{ -var row=opts.finder.getRow(_501,_513); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _514=td.attr("field"); -opts.onClickCell.call(_501,_513,_514,row[_514]); -} -if(opts.singleSelect==true){ -_563(_501,_513); -}else{ -if(tr.hasClass("datagrid-row-selected")){ -_56b(_501,_513); -}else{ -_563(_501,_513); -} -} -opts.onClickRow.call(_501,_513,row); -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _515=_511(tr); -var row=opts.finder.getRow(_501,_515); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _516=td.attr("field"); -opts.onDblClickCell.call(_501,_515,_516,row[_516]); -} -opts.onDblClickRow.call(_501,_515,row); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_50f(tr)){ -return; -} -var _517=_511(tr); -var row=opts.finder.getRow(_501,_517); -opts.onRowContextMenu.call(_501,e,_517,row); -e.stopPropagation(); -}); -dc.body2.bind("scroll",function(){ -var b1=dc.view1.children("div.datagrid-body"); -b1.scrollTop($(this).scrollTop()); -var c1=dc.body1.children(":first"); -var c2=dc.body2.children(":first"); -if(c1.length&&c2.length){ -var top1=c1.offset().top; -var top2=c2.offset().top; -if(top1!=top2){ -b1.scrollTop(b1.scrollTop()+top1-top2); -} -} -dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); -dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); -}); -function _511(tr){ -if(tr.attr("datagrid-row-index")){ -return parseInt(tr.attr("datagrid-row-index")); -}else{ -return tr.attr("node-id"); -} -}; -function _50f(tr){ -return tr.length&&tr.parent().length; -}; -}; -function _518(_519){ -var opts=$.data(_519,"datagrid").options; -var dc=$.data(_519,"datagrid").dc; -dc.body2.css("overflow-x",opts.fitColumns?"hidden":""); -if(!opts.fitColumns){ -return; -} -var _51a=dc.view2.children("div.datagrid-header"); -var _51b=0; -var _51c; -var _51d=_4fe(_519,false); -for(var i=0;i<_51d.length;i++){ -var col=_4ff(_519,_51d[i]); -if(_51e(col)){ -_51b+=col.width; -_51c=col; -} -} -var _51f=_51a.children("div.datagrid-header-inner").show(); -var _520=_51a.width()-_51a.find("table").width()-opts.scrollbarSize; -var rate=_520/_51b; -if(!opts.showHeader){ -_51f.hide(); -} -for(var i=0;i<_51d.length;i++){ -var col=_4ff(_519,_51d[i]); -if(_51e(col)){ -var _521=Math.floor(col.width*rate); -_522(col,_521); -_520-=_521; -} -} -if(_520&&_51c){ -_522(_51c,_520); -} -_4e8(_519); -function _522(col,_523){ -col.width+=_523; -col.boxWidth+=_523; -_51a.find("td[field=\""+col.field+"\"] div.datagrid-cell").width(col.boxWidth); -}; -function _51e(col){ -if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ -return true; -} -}; -}; -function _524(_525,_526){ -var opts=$.data(_525,"datagrid").options; -var dc=$.data(_525,"datagrid").dc; -if(_526){ -_4bb(_526); -if(opts.fitColumns){ -_4bf(_525); -_518(_525); -} -}else{ -var _527=false; -var _528=_4fe(_525,true).concat(_4fe(_525,false)); -for(var i=0;i<_528.length;i++){ -var _526=_528[i]; -var col=_4ff(_525,_526); -if(col.auto){ -_4bb(_526); -_527=true; -} -} -if(_527&&opts.fitColumns){ -_4bf(_525); -_518(_525); -} -} -function _4bb(_529){ -var _52a=dc.view.find("div.datagrid-header td[field=\""+_529+"\"] div.datagrid-cell"); -_52a.css("width",""); -var col=$(_525).datagrid("getColumnOption",_529); -col.width=undefined; -col.boxWidth=undefined; -col.auto=true; -$(_525).datagrid("fixColumnSize",_529); -var _52b=Math.max(_52a._outerWidth(),_52c("allbody"),_52c("allfooter")); -_52a._outerWidth(_52b); -col.width=_52b; -col.boxWidth=parseInt(_52a[0].style.width); -$(_525).datagrid("fixColumnSize",_529); -opts.onResizeColumn.call(_525,_529,col.width); -function _52c(type){ -var _52d=0; -opts.finder.getTr(_525,0,type).find("td[field=\""+_529+"\"] div.datagrid-cell").each(function(){ -var w=$(this)._outerWidth(); -if(_52db?1:-1); -}; -r=_549(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -} -if(opts.view.onBeforeRender){ -opts.view.onBeforeRender.call(opts.view,_545,data.rows); -} -opts.view.render.call(opts.view,_545,dc.body2,false); -opts.view.render.call(opts.view,_545,dc.body1,true); -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,_545,dc.footer2,false); -opts.view.renderFooter.call(opts.view,_545,dc.footer1,true); -} -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,_545); -} -_546.ss.clean(); -opts.onLoadSuccess.call(_545,data); -var _54a=$(_545).datagrid("getPager"); -if(_54a.length){ -var _54b=_54a.pagination("options"); -if(_54b.total!=data.total){ -_54a.pagination("refresh",{total:data.total}); -if(opts.pageNumber!=_54b.pageNumber){ -opts.pageNumber=_54b.pageNumber; -_5dc(_545); -} -} -} -_4cc(_545); -dc.body2.triggerHandler("scroll"); -_54c(); -$(_545).datagrid("autoSizeColumn"); -function _54c(){ -if(opts.idField){ -for(var i=0;i_55d.height()-18){ -_55d.scrollTop(_55d.scrollTop()+top+tr._outerHeight()-_55d.height()+18); -} -} -} -}; -function _55f(_560,_561){ -var _562=$.data(_560,"datagrid"); -var opts=_562.options; -opts.finder.getTr(_560,_562.highlightIndex).removeClass("datagrid-row-over"); -opts.finder.getTr(_560,_561).addClass("datagrid-row-over"); -_562.highlightIndex=_561; -}; -function _563(_564,_565,_566){ -var _567=$.data(_564,"datagrid"); -var dc=_567.dc; -var opts=_567.options; -var _568=_567.selectedRows; -if(opts.singleSelect){ -_569(_564); -_568.splice(0,_568.length); -} -if(!_566&&opts.checkOnSelect){ -_56a(_564,_565,true); -} -var row=opts.finder.getRow(_564,_565); -if(opts.idField){ -_4ad(_568,opts.idField,row); -} -opts.finder.getTr(_564,_565).addClass("datagrid-row-selected"); -opts.onSelect.call(_564,_565,row); -_558(_564,_565); -}; -function _56b(_56c,_56d,_56e){ -var _56f=$.data(_56c,"datagrid"); -var dc=_56f.dc; -var opts=_56f.options; -var _570=$.data(_56c,"datagrid").selectedRows; -if(!_56e&&opts.checkOnSelect){ -_571(_56c,_56d,true); -} -opts.finder.getTr(_56c,_56d).removeClass("datagrid-row-selected"); -var row=opts.finder.getRow(_56c,_56d); -if(opts.idField){ -_4ab(_570,opts.idField,row[opts.idField]); -} -opts.onUnselect.call(_56c,_56d,row); -}; -function _572(_573,_574){ -var _575=$.data(_573,"datagrid"); -var opts=_575.options; -var rows=_575.data.rows; -var _576=$.data(_573,"datagrid").selectedRows; -if(!_574&&opts.checkOnSelect){ -_577(_573,true); -} -opts.finder.getTr(_573,"","allbody").addClass("datagrid-row-selected"); -if(opts.idField){ -for(var _578=0;_578"); -cell.children("table").bind("click dblclick contextmenu",function(e){ -e.stopPropagation(); -}); -$.data(cell[0],"datagrid.editor",{actions:_5ad,target:_5ad.init(cell.find("td"),_5ac),field:_5aa,type:_5ab,oldHtml:_5ae}); -} -} -}); -_4cc(_5a8,_5a9,true); -}; -function _59f(_5b0,_5b1){ -var opts=$.data(_5b0,"datagrid").options; -var tr=opts.finder.getTr(_5b0,_5b1); -tr.children("td").each(function(){ -var cell=$(this).find("div.datagrid-editable"); -if(cell.length){ -var ed=$.data(cell[0],"datagrid.editor"); -if(ed.actions.destroy){ -ed.actions.destroy(ed.target); -} -cell.html(ed.oldHtml); -$.removeData(cell[0],"datagrid.editor"); -cell.removeClass("datagrid-editable"); -cell.css("width",""); -} -}); -}; -function _594(_5b2,_5b3){ -var tr=$.data(_5b2,"datagrid").options.finder.getTr(_5b2,_5b3); -if(!tr.hasClass("datagrid-row-editing")){ -return true; -} -var vbox=tr.find(".validatebox-text"); -vbox.validatebox("validate"); -vbox.trigger("mouseleave"); -var _5b4=tr.find(".validatebox-invalid"); -return _5b4.length==0; -}; -function _5b5(_5b6,_5b7){ -var _5b8=$.data(_5b6,"datagrid").insertedRows; -var _5b9=$.data(_5b6,"datagrid").deletedRows; -var _5ba=$.data(_5b6,"datagrid").updatedRows; -if(!_5b7){ -var rows=[]; -rows=rows.concat(_5b8); -rows=rows.concat(_5b9); -rows=rows.concat(_5ba); -return rows; -}else{ -if(_5b7=="inserted"){ -return _5b8; -}else{ -if(_5b7=="deleted"){ -return _5b9; -}else{ -if(_5b7=="updated"){ -return _5ba; -} -} -} -} -return []; -}; -function _5bb(_5bc,_5bd){ -var _5be=$.data(_5bc,"datagrid"); -var opts=_5be.options; -var data=_5be.data; -var _5bf=_5be.insertedRows; -var _5c0=_5be.deletedRows; -$(_5bc).datagrid("cancelEdit",_5bd); -var row=data.rows[_5bd]; -if(_4aa(_5bf,row)>=0){ -_4ab(_5bf,row); -}else{ -_5c0.push(row); -} -_4ab(_5be.selectedRows,opts.idField,data.rows[_5bd][opts.idField]); -_4ab(_5be.checkedRows,opts.idField,data.rows[_5bd][opts.idField]); -opts.view.deleteRow.call(opts.view,_5bc,_5bd); -if(opts.height=="auto"){ -_4cc(_5bc); -} -$(_5bc).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c1(_5c2,_5c3){ -var data=$.data(_5c2,"datagrid").data; -var view=$.data(_5c2,"datagrid").options.view; -var _5c4=$.data(_5c2,"datagrid").insertedRows; -view.insertRow.call(view,_5c2,_5c3.index,_5c3.row); -_5c4.push(_5c3.row); -$(_5c2).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c5(_5c6,row){ -var data=$.data(_5c6,"datagrid").data; -var view=$.data(_5c6,"datagrid").options.view; -var _5c7=$.data(_5c6,"datagrid").insertedRows; -view.insertRow.call(view,_5c6,null,row); -_5c7.push(row); -$(_5c6).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _5c8(_5c9){ -var _5ca=$.data(_5c9,"datagrid"); -var data=_5ca.data; -var rows=data.rows; -var _5cb=[]; -for(var i=0;i=0){ -(_5d8=="s"?_563:_56a)(_5cf,_5d9,true); -} -} -}; -for(var i=0;i0){ -_544(this,data); -_5c8(this); -} -} -_4bb(this); -_5dc(this); -_500(this); -}); -}; -var _5ea={text:{init:function(_5eb,_5ec){ -var _5ed=$("").appendTo(_5eb); -return _5ed; -},getValue:function(_5ee){ -return $(_5ee).val(); -},setValue:function(_5ef,_5f0){ -$(_5ef).val(_5f0); -},resize:function(_5f1,_5f2){ -$(_5f1)._outerWidth(_5f2)._outerHeight(22); -}},textarea:{init:function(_5f3,_5f4){ -var _5f5=$("").appendTo(_5f3); -return _5f5; -},getValue:function(_5f6){ -return $(_5f6).val(); -},setValue:function(_5f7,_5f8){ -$(_5f7).val(_5f8); -},resize:function(_5f9,_5fa){ -$(_5f9)._outerWidth(_5fa); -}},checkbox:{init:function(_5fb,_5fc){ -var _5fd=$("").appendTo(_5fb); -_5fd.val(_5fc.on); -_5fd.attr("offval",_5fc.off); -return _5fd; -},getValue:function(_5fe){ -if($(_5fe).is(":checked")){ -return $(_5fe).val(); -}else{ -return $(_5fe).attr("offval"); -} -},setValue:function(_5ff,_600){ -var _601=false; -if($(_5ff).val()==_600){ -_601=true; -} -$(_5ff)._propAttr("checked",_601); -}},numberbox:{init:function(_602,_603){ -var _604=$("").appendTo(_602); -_604.numberbox(_603); -return _604; -},destroy:function(_605){ -$(_605).numberbox("destroy"); -},getValue:function(_606){ -$(_606).blur(); -return $(_606).numberbox("getValue"); -},setValue:function(_607,_608){ -$(_607).numberbox("setValue",_608); -},resize:function(_609,_60a){ -$(_609)._outerWidth(_60a)._outerHeight(22); -}},validatebox:{init:function(_60b,_60c){ -var _60d=$("").appendTo(_60b); -_60d.validatebox(_60c); -return _60d; -},destroy:function(_60e){ -$(_60e).validatebox("destroy"); -},getValue:function(_60f){ -return $(_60f).val(); -},setValue:function(_610,_611){ -$(_610).val(_611); -},resize:function(_612,_613){ -$(_612)._outerWidth(_613)._outerHeight(22); -}},datebox:{init:function(_614,_615){ -var _616=$("").appendTo(_614); -_616.datebox(_615); -return _616; -},destroy:function(_617){ -$(_617).datebox("destroy"); -},getValue:function(_618){ -return $(_618).datebox("getValue"); -},setValue:function(_619,_61a){ -$(_619).datebox("setValue",_61a); -},resize:function(_61b,_61c){ -$(_61b).datebox("resize",_61c); -}},combobox:{init:function(_61d,_61e){ -var _61f=$("").appendTo(_61d); -_61f.combobox(_61e||{}); -return _61f; -},destroy:function(_620){ -$(_620).combobox("destroy"); -},getValue:function(_621){ -var opts=$(_621).combobox("options"); -if(opts.multiple){ -return $(_621).combobox("getValues").join(opts.separator); -}else{ -return $(_621).combobox("getValue"); -} -},setValue:function(_622,_623){ -var opts=$(_622).combobox("options"); -if(opts.multiple){ -if(_623){ -$(_622).combobox("setValues",_623.split(opts.separator)); -}else{ -$(_622).combobox("clear"); -} -}else{ -$(_622).combobox("setValue",_623); -} -},resize:function(_624,_625){ -$(_624).combobox("resize",_625); -}},combotree:{init:function(_626,_627){ -var _628=$("").appendTo(_626); -_628.combotree(_627); -return _628; -},destroy:function(_629){ -$(_629).combotree("destroy"); -},getValue:function(_62a){ -return $(_62a).combotree("getValue"); -},setValue:function(_62b,_62c){ -$(_62b).combotree("setValue",_62c); -},resize:function(_62d,_62e){ -$(_62d).combotree("resize",_62e); -}}}; -$.fn.datagrid.methods={options:function(jq){ -var _62f=$.data(jq[0],"datagrid").options; -var _630=$.data(jq[0],"datagrid").panel.panel("options"); -var opts=$.extend(_62f,{width:_630.width,height:_630.height,closed:_630.closed,collapsed:_630.collapsed,minimized:_630.minimized,maximized:_630.maximized}); -return opts; -},getPanel:function(jq){ -return $.data(jq[0],"datagrid").panel; -},getPager:function(jq){ -return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); -},getColumnFields:function(jq,_631){ -return _4fe(jq[0],_631); -},getColumnOption:function(jq,_632){ -return _4ff(jq[0],_632); -},resize:function(jq,_633){ -return jq.each(function(){ -_4bb(this,_633); -}); -},load:function(jq,_634){ -return jq.each(function(){ -var opts=$(this).datagrid("options"); -opts.pageNumber=1; -var _635=$(this).datagrid("getPager"); -_635.pagination("refresh",{pageNumber:1}); -_5dc(this,_634); -}); -},reload:function(jq,_636){ -return jq.each(function(){ -_5dc(this,_636); -}); -},reloadFooter:function(jq,_637){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -var dc=$.data(this,"datagrid").dc; -if(_637){ -$.data(this,"datagrid").footer=_637; -} -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,this,dc.footer2,false); -opts.view.renderFooter.call(opts.view,this,dc.footer1,true); -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,this); -} -$(this).datagrid("fixRowHeight"); -} -}); -},loading:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -$(this).datagrid("getPager").pagination("loading"); -if(opts.loadMsg){ -var _638=$(this).datagrid("getPanel"); -if(!_638.children("div.datagrid-mask").length){ -$("
                                                                                                                            ").appendTo(_638); -var msg=$("
                                                                                                                            ").html(opts.loadMsg).appendTo(_638); -msg.css("marginLeft",-msg.outerWidth()/2); -} -} -}); -},loaded:function(jq){ -return jq.each(function(){ -$(this).datagrid("getPager").pagination("loaded"); -var _639=$(this).datagrid("getPanel"); -_639.children("div.datagrid-mask-msg").remove(); -_639.children("div.datagrid-mask").remove(); -}); -},fitColumns:function(jq){ -return jq.each(function(){ -_518(this); -}); -},fixColumnSize:function(jq,_63a){ -return jq.each(function(){ -_4e8(this,_63a); -}); -},fixRowHeight:function(jq,_63b){ -return jq.each(function(){ -_4cc(this,_63b); -}); -},freezeRow:function(jq,_63c){ -return jq.each(function(){ -_4d9(this,_63c); -}); -},autoSizeColumn:function(jq,_63d){ -return jq.each(function(){ -_524(this,_63d); -}); -},loadData:function(jq,data){ -return jq.each(function(){ -_544(this,data); -_5c8(this); -}); -},getData:function(jq){ -return $.data(jq[0],"datagrid").data; -},getRows:function(jq){ -return $.data(jq[0],"datagrid").data.rows; -},getFooterRows:function(jq){ -return $.data(jq[0],"datagrid").footer; -},getRowIndex:function(jq,id){ -return _54e(jq[0],id); -},getChecked:function(jq){ -return _555(jq[0]); -},getSelected:function(jq){ -var rows=_551(jq[0]); -return rows.length>0?rows[0]:null; -},getSelections:function(jq){ -return _551(jq[0]); -},clearSelections:function(jq){ -return jq.each(function(){ -var _63e=$.data(this,"datagrid").selectedRows; -_63e.splice(0,_63e.length); -_569(this); -}); -},clearChecked:function(jq){ -return jq.each(function(){ -var _63f=$.data(this,"datagrid").checkedRows; -_63f.splice(0,_63f.length); -_57d(this); -}); -},scrollTo:function(jq,_640){ -return jq.each(function(){ -_558(this,_640); -}); -},highlightRow:function(jq,_641){ -return jq.each(function(){ -_55f(this,_641); -_558(this,_641); -}); -},selectAll:function(jq){ -return jq.each(function(){ -_572(this); -}); -},unselectAll:function(jq){ -return jq.each(function(){ -_569(this); -}); -},selectRow:function(jq,_642){ -return jq.each(function(){ -_563(this,_642); -}); -},selectRecord:function(jq,id){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -if(opts.idField){ -var _643=_54e(this,id); -if(_643>=0){ -$(this).datagrid("selectRow",_643); -} -} -}); -},unselectRow:function(jq,_644){ -return jq.each(function(){ -_56b(this,_644); -}); -},checkRow:function(jq,_645){ -return jq.each(function(){ -_56a(this,_645); -}); -},uncheckRow:function(jq,_646){ -return jq.each(function(){ -_571(this,_646); -}); -},checkAll:function(jq){ -return jq.each(function(){ -_577(this); -}); -},uncheckAll:function(jq){ -return jq.each(function(){ -_57d(this); -}); -},beginEdit:function(jq,_647){ -return jq.each(function(){ -_58f(this,_647); -}); -},endEdit:function(jq,_648){ -return jq.each(function(){ -_595(this,_648,false); -}); -},cancelEdit:function(jq,_649){ -return jq.each(function(){ -_595(this,_649,true); -}); -},getEditors:function(jq,_64a){ -return _5a0(jq[0],_64a); -},getEditor:function(jq,_64b){ -return _5a4(jq[0],_64b); -},refreshRow:function(jq,_64c){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.refreshRow.call(opts.view,this,_64c); -}); -},validateRow:function(jq,_64d){ -return _594(jq[0],_64d); -},updateRow:function(jq,_64e){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.updateRow.call(opts.view,this,_64e.index,_64e.row); -}); -},appendRow:function(jq,row){ -return jq.each(function(){ -_5c5(this,row); -}); -},insertRow:function(jq,_64f){ -return jq.each(function(){ -_5c1(this,_64f); -}); -},deleteRow:function(jq,_650){ -return jq.each(function(){ -_5bb(this,_650); -}); -},getChanges:function(jq,_651){ -return _5b5(jq[0],_651); -},acceptChanges:function(jq){ -return jq.each(function(){ -_5cc(this); -}); -},rejectChanges:function(jq){ -return jq.each(function(){ -_5ce(this); -}); -},mergeCells:function(jq,_652){ -return jq.each(function(){ -_5e2(this,_652); -}); -},showColumn:function(jq,_653){ -return jq.each(function(){ -var _654=$(this).datagrid("getPanel"); -_654.find("td[field=\""+_653+"\"]").show(); -$(this).datagrid("getColumnOption",_653).hidden=false; -$(this).datagrid("fitColumns"); -}); -},hideColumn:function(jq,_655){ -return jq.each(function(){ -var _656=$(this).datagrid("getPanel"); -_656.find("td[field=\""+_655+"\"]").hide(); -$(this).datagrid("getColumnOption",_655).hidden=true; -$(this).datagrid("fitColumns"); -}); -}}; -$.fn.datagrid.parseOptions=function(_657){ -var t=$(_657); -return $.extend({},$.fn.panel.parseOptions(_657),$.parser.parseOptions(_657,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); -}; -$.fn.datagrid.parseData=function(_658){ -var t=$(_658); -var data={total:0,rows:[]}; -var _659=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); -t.find("tbody tr").each(function(){ -data.total++; -var row={}; -$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); -for(var i=0;i<_659.length;i++){ -row[_659[i]]=$(this).find("td:eq("+i+")").html(); -} -data.rows.push(row); -}); -return data; -}; -var _65a={render:function(_65b,_65c,_65d){ -var _65e=$.data(_65b,"datagrid"); -var opts=_65e.options; -var rows=_65e.data.rows; -var _65f=$(_65b).datagrid("getColumnFields",_65d); -if(_65d){ -if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ -return; -} -} -var _660=[""]; -for(var i=0;i"); -_660.push(this.renderRow.call(this,_65b,_65f,_65d,i,rows[i])); -_660.push(""); -} -_660.push("
                                                                                                                            "); -$(_65c).html(_660.join("")); -},renderFooter:function(_665,_666,_667){ -var opts=$.data(_665,"datagrid").options; -var rows=$.data(_665,"datagrid").footer||[]; -var _668=$(_665).datagrid("getColumnFields",_667); -var _669=[""]; -for(var i=0;i"); -_669.push(this.renderRow.call(this,_665,_668,_667,i,rows[i])); -_669.push(""); -} -_669.push("
                                                                                                                            "); -$(_666).html(_669.join("")); -},renderRow:function(_66a,_66b,_66c,_66d,_66e){ -var opts=$.data(_66a,"datagrid").options; -var cc=[]; -if(_66c&&opts.rownumbers){ -var _66f=_66d+1; -if(opts.pagination){ -_66f+=(opts.pageNumber-1)*opts.pageSize; -} -cc.push("
                                                                                                                            "+_66f+"
                                                                                                                            "); -} -for(var i=0;i<_66b.length;i++){ -var _670=_66b[i]; -var col=$(_66a).datagrid("getColumnOption",_670); -if(col){ -var _671=_66e[_670]; -var css=col.styler?(col.styler(_671,_66e,_66d)||""):""; -var _672=""; -var _673=""; -if(typeof css=="string"){ -_673=css; -}else{ -if(cc){ -_672=css["class"]||""; -_673=css["style"]||""; -} -} -var cls=_672?"class=\""+_672+"\"":""; -var _674=col.hidden?"style=\"display:none;"+_673+"\"":(_673?"style=\""+_673+"\"":""); -cc.push(""); -if(col.checkbox){ -var _674=""; -}else{ -var _674=_673; -if(col.align){ -_674+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_674+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_674+=";height:auto;"; -} -} -} -cc.push("
                                                                                                                            "); -if(col.checkbox){ -cc.push(""); -}else{ -if(col.formatter){ -cc.push(col.formatter(_671,_66e,_66d)); -}else{ -cc.push(_671); -} -} -cc.push("
                                                                                                                            "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_675,_676){ -this.updateRow.call(this,_675,_676,{}); -},updateRow:function(_677,_678,row){ -var opts=$.data(_677,"datagrid").options; -var rows=$(_677).datagrid("getRows"); -$.extend(rows[_678],row); -var css=opts.rowStyler?opts.rowStyler.call(_677,_678,rows[_678]):""; -var _679=""; -var _67a=""; -if(typeof css=="string"){ -_67a=css; -}else{ -if(css){ -_679=css["class"]||""; -_67a=css["style"]||""; -} -} -var _679="datagrid-row "+(_678%2&&opts.striped?"datagrid-row-alt ":" ")+_679; -function _67b(_67c){ -var _67d=$(_677).datagrid("getColumnFields",_67c); -var tr=opts.finder.getTr(_677,_678,"body",(_67c?1:2)); -var _67e=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow.call(this,_677,_67d,_67c,_678,rows[_678])); -tr.attr("style",_67a).attr("class",_679); -if(_67e){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_67b.call(this,true); -_67b.call(this,false); -$(_677).datagrid("fixRowHeight",_678); -},insertRow:function(_67f,_680,row){ -var _681=$.data(_67f,"datagrid"); -var opts=_681.options; -var dc=_681.dc; -var data=_681.data; -if(_680==undefined||_680==null){ -_680=data.rows.length; -} -if(_680>data.rows.length){ -_680=data.rows.length; -} -function _682(_683){ -var _684=_683?1:2; -for(var i=data.rows.length-1;i>=_680;i--){ -var tr=opts.finder.getTr(_67f,i,"body",_684); -tr.attr("datagrid-row-index",i+1); -tr.attr("id",_681.rowIdPrefix+"-"+_684+"-"+(i+1)); -if(_683&&opts.rownumbers){ -var _685=i+2; -if(opts.pagination){ -_685+=(opts.pageNumber-1)*opts.pageSize; -} -tr.find("div.datagrid-cell-rownumber").html(_685); -} -if(opts.striped){ -tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); -} -} -}; -function _686(_687){ -var _688=_687?1:2; -var _689=$(_67f).datagrid("getColumnFields",_687); -var _68a=_681.rowIdPrefix+"-"+_688+"-"+_680; -var tr=""; -if(_680>=data.rows.length){ -if(data.rows.length){ -opts.finder.getTr(_67f,"","last",_688).after(tr); -}else{ -var cc=_687?dc.body1:dc.body2; -cc.html(""+tr+"
                                                                                                                            "); -} -}else{ -opts.finder.getTr(_67f,_680+1,"body",_688).before(tr); -} -}; -_682.call(this,true); -_682.call(this,false); -_686.call(this,true); -_686.call(this,false); -data.total+=1; -data.rows.splice(_680,0,row); -this.refreshRow.call(this,_67f,_680); -},deleteRow:function(_68b,_68c){ -var _68d=$.data(_68b,"datagrid"); -var opts=_68d.options; -var data=_68d.data; -function _68e(_68f){ -var _690=_68f?1:2; -for(var i=_68c+1;itable>tbody>tr[datagrid-row-index="+_69b+"]"); -} -return tr; -}else{ -if(type=="footer"){ -return (_69c==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_69b+"]"); -}else{ -if(type=="selected"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); -}else{ -if(type=="highlight"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); -}else{ -if(type=="checked"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row:has(div.datagrid-cell-check input:checked)"); -}else{ -if(type=="last"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); -}else{ -if(type=="allbody"){ -return (_69c==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); -}else{ -if(type=="allfooter"){ -return (_69c==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); -} -} -} -} -} -} -} -} -} -},getRow:function(_69e,p){ -var _69f=(typeof p=="object")?p.attr("datagrid-row-index"):p; -return $.data(_69e,"datagrid").data.rows[parseInt(_69f)]; -}},view:_65a,onBeforeLoad:function(_6a0){ -},onLoadSuccess:function(){ -},onLoadError:function(){ -},onClickRow:function(_6a1,_6a2){ -},onDblClickRow:function(_6a3,_6a4){ -},onClickCell:function(_6a5,_6a6,_6a7){ -},onDblClickCell:function(_6a8,_6a9,_6aa){ -},onSortColumn:function(sort,_6ab){ -},onResizeColumn:function(_6ac,_6ad){ -},onSelect:function(_6ae,_6af){ -},onUnselect:function(_6b0,_6b1){ -},onSelectAll:function(rows){ -},onUnselectAll:function(rows){ -},onCheck:function(_6b2,_6b3){ -},onUncheck:function(_6b4,_6b5){ -},onCheckAll:function(rows){ -},onUncheckAll:function(rows){ -},onBeforeEdit:function(_6b6,_6b7){ -},onAfterEdit:function(_6b8,_6b9,_6ba){ -},onCancelEdit:function(_6bb,_6bc){ -},onHeaderContextMenu:function(e,_6bd){ -},onRowContextMenu:function(e,_6be,_6bf){ -}}); -})(jQuery); -(function($){ -var _6c0; -function _6c1(_6c2){ -var _6c3=$.data(_6c2,"propertygrid"); -var opts=$.data(_6c2,"propertygrid").options; -$(_6c2).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?_6c4:undefined),onClickRow:function(_6c5,row){ -if(_6c0!=this){ -_6c6(_6c0); -_6c0=this; -} -if(opts.editIndex!=_6c5&&row.editor){ -var col=$(this).datagrid("getColumnOption","value"); -col.editor=row.editor; -_6c6(_6c0); -$(this).datagrid("beginEdit",_6c5); -$(this).datagrid("getEditors",_6c5)[0].target.focus(); -opts.editIndex=_6c5; -} -opts.onClickRow.call(_6c2,_6c5,row); -},loadFilter:function(data){ -_6c6(this); -return opts.loadFilter.call(this,data); -},onLoadSuccess:function(data){ -$(_6c2).datagrid("getPanel").find("div.datagrid-group").attr("style",""); -opts.onLoadSuccess.call(_6c2,data); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_6c6(_6c0); -_6c0=undefined; -}); -}; -function _6c6(_6c7){ -var t=$(_6c7); -if(!t.length){ -return; -} -var opts=$.data(_6c7,"propertygrid").options; -var _6c8=opts.editIndex; -if(_6c8==undefined){ -return; -} -var ed=t.datagrid("getEditors",_6c8)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_6c8)){ -t.datagrid("endEdit",_6c8); -}else{ -t.datagrid("cancelEdit",_6c8); -} -} -opts.editIndex=undefined; -}; -$.fn.propertygrid=function(_6c9,_6ca){ -if(typeof _6c9=="string"){ -var _6cb=$.fn.propertygrid.methods[_6c9]; -if(_6cb){ -return _6cb(this,_6ca); -}else{ -return this.datagrid(_6c9,_6ca); -} -} -_6c9=_6c9||{}; -return this.each(function(){ -var _6cc=$.data(this,"propertygrid"); -if(_6cc){ -$.extend(_6cc.options,_6c9); -}else{ -var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_6c9); -opts.frozenColumns=$.extend(true,[],opts.frozenColumns); -opts.columns=$.extend(true,[],opts.columns); -$.data(this,"propertygrid",{options:opts}); -} -_6c1(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_6cd){ -var t=$(_6cd); -return $.extend({},$.fn.datagrid.parseOptions(_6cd),$.parser.parseOptions(_6cd,[{showGroup:"boolean"}])); -}; -var _6c4=$.extend({},$.fn.datagrid.defaults.view,{render:function(_6ce,_6cf,_6d0){ -var _6d1=$.data(_6ce,"datagrid"); -var opts=_6d1.options; -var rows=_6d1.data.rows; -var _6d2=$(_6ce).datagrid("getColumnFields",_6d0); -var _6d3=[]; -var _6d4=0; -var _6d5=this.groups; -for(var i=0;i<_6d5.length;i++){ -var _6d6=_6d5[i]; -_6d3.push("
                                                                                                                            "); -_6d3.push(""); -_6d3.push(""); -_6d3.push(""); -_6d3.push(""); -_6d3.push("
                                                                                                                            "); -if(!_6d0){ -_6d3.push(""); -_6d3.push(opts.groupFormatter.call(_6ce,_6d6.fvalue,_6d6.rows)); -_6d3.push(""); -} -_6d3.push("
                                                                                                                            "); -_6d3.push("
                                                                                                                            "); -_6d3.push(""); -for(var j=0;j<_6d6.rows.length;j++){ -var cls=(_6d4%2&&opts.striped)?"class=\"datagrid-row datagrid-row-alt\"":"class=\"datagrid-row\""; -var _6d7=opts.rowStyler?opts.rowStyler.call(_6ce,_6d4,_6d6.rows[j]):""; -var _6d8=_6d7?"style=\""+_6d7+"\"":""; -var _6d9=_6d1.rowIdPrefix+"-"+(_6d0?1:2)+"-"+_6d4; -_6d3.push(""); -_6d3.push(this.renderRow.call(this,_6ce,_6d2,_6d0,_6d4,_6d6.rows[j])); -_6d3.push(""); -_6d4++; -} -_6d3.push("
                                                                                                                            "); -} -$(_6cf).html(_6d3.join("")); -},onAfterRender:function(_6da){ -var opts=$.data(_6da,"datagrid").options; -var dc=$.data(_6da,"datagrid").dc; -var view=dc.view; -var _6db=dc.view1; -var _6dc=dc.view2; -$.fn.datagrid.defaults.view.onAfterRender.call(this,_6da); -if(opts.rownumbers||opts.frozenColumns.length){ -var _6dd=_6db.find("div.datagrid-group"); -}else{ -var _6dd=_6dc.find("div.datagrid-group"); -} -$(" ").insertBefore(_6dd.find("td")); -view.find("div.datagrid-group").each(function(){ -var _6de=$(this).attr("group-index"); -$(this).find("span.datagrid-row-expander").bind("click",{groupIndex:_6de},function(e){ -if($(this).hasClass("datagrid-row-collapse")){ -$(_6da).datagrid("collapseGroup",e.data.groupIndex); -}else{ -$(_6da).datagrid("expandGroup",e.data.groupIndex); -} -}); -}); -},onBeforeRender:function(_6df,rows){ -var opts=$.data(_6df,"datagrid").options; -var _6e0=[]; -for(var i=0;i"+""+"
                                                                                                                            "+""+"").insertAfter(tr); -}; -}; -function _71c(_71d,_71e,data,_71f){ -var _720=$.data(_71d,"treegrid"); -var opts=_720.options; -var dc=_720.dc; -data=opts.loadFilter.call(_71d,data,_71e); -var node=find(_71d,_71e); -if(node){ -var _721=opts.finder.getTr(_71d,_71e,"body",1); -var _722=opts.finder.getTr(_71d,_71e,"body",2); -var cc1=_721.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_722.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_71f){ -node.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_71f){ -_720.data=[]; -} -} -if(!_71f){ -cc1.empty(); -cc2.empty(); -} -if(opts.view.onBeforeRender){ -opts.view.onBeforeRender.call(opts.view,_71d,_71e,data); -} -opts.view.render.call(opts.view,_71d,cc1,true); -opts.view.render.call(opts.view,_71d,cc2,false); -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,_71d,dc.footer1,true); -opts.view.renderFooter.call(opts.view,_71d,dc.footer2,false); -} -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,_71d); -} -opts.onLoadSuccess.call(_71d,node,data); -if(!_71e&&opts.pagination){ -var _723=$.data(_71d,"treegrid").total; -var _724=$(_71d).datagrid("getPager"); -if(_724.pagination("options").total!=_723){ -_724.pagination({total:_723}); -} -} -_707(_71d); -_70f(_71d); -$(_71d).treegrid("autoSizeColumn"); -}; -function _706(_725,_726,_727,_728,_729){ -var opts=$.data(_725,"treegrid").options; -var body=$(_725).datagrid("getPanel").find("div.datagrid-body"); -if(_727){ -opts.queryParams=_727; -} -var _72a=$.extend({},opts.queryParams); -if(opts.pagination){ -$.extend(_72a,{page:opts.pageNumber,rows:opts.pageSize}); -} -if(opts.sortName){ -$.extend(_72a,{sort:opts.sortName,order:opts.sortOrder}); -} -var row=find(_725,_726); -if(opts.onBeforeLoad.call(_725,row,_72a)==false){ -return; -} -var _72b=body.find("tr[node-id=\""+_726+"\"] span.tree-folder"); -_72b.addClass("tree-loading"); -$(_725).treegrid("loading"); -var _72c=opts.loader.call(_725,_72a,function(data){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -_71c(_725,_726,data,_728); -if(_729){ -_729(); -} -},function(){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -opts.onLoadError.apply(_725,arguments); -if(_729){ -_729(); -} -}); -if(_72c==false){ -_72b.removeClass("tree-loading"); -$(_725).treegrid("loaded"); -} -}; -function _72d(_72e){ -var rows=_72f(_72e); -if(rows.length){ -return rows[0]; -}else{ -return null; -} -}; -function _72f(_730){ -return $.data(_730,"treegrid").data; -}; -function _731(_732,_733){ -var row=find(_732,_733); -if(row._parentId){ -return find(_732,row._parentId); -}else{ -return null; -} -}; -function _70b(_734,_735){ -var opts=$.data(_734,"treegrid").options; -var body=$(_734).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _736=[]; -if(_735){ -_737(_735); -}else{ -var _738=_72f(_734); -for(var i=0;i<_738.length;i++){ -_736.push(_738[i]); -_737(_738[i][opts.idField]); -} -} -function _737(_739){ -var _73a=find(_734,_739); -if(_73a&&_73a.children){ -for(var i=0,len=_73a.children.length;i").insertBefore(_75f); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_71c(_75d,_75e.parent,_75e.data,true); -}; -function _760(_761,_762){ -var ref=_762.before||_762.after; -var opts=$.data(_761,"treegrid").options; -var _763=_731(_761,ref); -_75c(_761,{parent:(_763?_763[opts.idField]:null),data:[_762.data]}); -_764(true); -_764(false); -_70f(_761); -function _764(_765){ -var _766=_765?1:2; -var tr=opts.finder.getTr(_761,_762.data[opts.idField],"body",_766); -var _767=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var dest=opts.finder.getTr(_761,ref,"body",_766); -if(_762.before){ -tr.insertBefore(dest); -}else{ -var sub=dest.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:dest); -} -_767.remove(); -}; -}; -function _768(_769,_76a){ -var opts=$.data(_769,"treegrid").options; -var tr=opts.finder.getTr(_769,_76a); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _76b=del(_76a); -if(_76b){ -if(_76b.children.length==0){ -tr=opts.finder.getTr(_769,_76b[opts.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); -cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -cell.find(".tree-hit").remove(); -$("").prependTo(cell); -} -} -_70f(_769); -function del(id){ -var cc; -var _76c=_731(_769,_76a); -if(_76c){ -cc=_76c.children; -}else{ -cc=$(_769).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_785.length;i++){ -var row=_785[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=opts.rowStyler?opts.rowStyler.call(_77b,row):""; -var _787=""; -var _788=""; -if(typeof css=="string"){ -_788=css; -}else{ -if(css){ -_787=css["class"]||""; -_788=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_780++%2&&opts.striped?"datagrid-row-alt ":" ")+_787+"\""; -var _789=_788?"style=\""+_788+"\"":""; -var _78a=_77f+"-"+(_783?1:2)+"-"+row[opts.idField]; -_786.push(""); -_786=_786.concat(view.renderRow.call(view,_77b,_77e,_783,_784,row)); -_786.push(""); -if(row.children&&row.children.length){ -var tt=_782(_783,_784+1,row.children); -var v=row.state=="closed"?"none":"block"; -_786.push("
                                                                                                                            "); -_786=_786.concat(tt); -_786.push("
                                                                                                                            "); -} -} -_786.push(""); -return _786; -}; -},renderFooter:function(_78b,_78c,_78d){ -var opts=$.data(_78b,"treegrid").options; -var rows=$.data(_78b,"treegrid").footer||[]; -var _78e=$(_78b).datagrid("getColumnFields",_78d); -var _78f=[""]; -for(var i=0;i"); -_78f.push(this.renderRow.call(this,_78b,_78e,_78d,0,row)); -_78f.push(""); -} -_78f.push("
                                                                                                                            "); -$(_78c).html(_78f.join("")); -},renderRow:function(_790,_791,_792,_793,row){ -var opts=$.data(_790,"treegrid").options; -var cc=[]; -if(_792&&opts.rownumbers){ -cc.push("
                                                                                                                            0
                                                                                                                            "); -} -for(var i=0;i<_791.length;i++){ -var _794=_791[i]; -var col=$(_790).datagrid("getColumnOption",_794); -if(col){ -var css=col.styler?(col.styler(row[_794],row)||""):""; -var _795=""; -var _796=""; -if(typeof css=="string"){ -_796=css; -}else{ -if(cc){ -_795=css["class"]||""; -_796=css["style"]||""; -} -} -var cls=_795?"class=\""+_795+"\"":""; -var _797=col.hidden?"style=\"display:none;"+_796+"\"":(_796?"style=\""+_796+"\"":""); -cc.push(""); -if(col.checkbox){ -var _797=""; -}else{ -var _797=_796; -if(col.align){ -_797+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_797+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_797+=";height:auto;"; -} -} -} -cc.push("
                                                                                                                            "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_794],row); -}else{ -val=row[_794]; -} -if(_794==opts.treeField){ -for(var j=0;j<_793;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                                                                                                            "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_798,id){ -this.updateRow.call(this,_798,id,{}); -},updateRow:function(_799,id,row){ -var opts=$.data(_799,"treegrid").options; -var _79a=$(_799).treegrid("find",id); -$.extend(_79a,row); -var _79b=$(_799).treegrid("getLevel",id)-1; -var _79c=opts.rowStyler?opts.rowStyler.call(_799,_79a):""; -function _79d(_79e){ -var _79f=$(_799).treegrid("getColumnFields",_79e); -var tr=opts.finder.getTr(_799,id,"body",(_79e?1:2)); -var _7a0=tr.find("div.datagrid-cell-rownumber").html(); -var _7a1=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_799,_79f,_79e,_79b,_79a)); -tr.attr("style",_79c||""); -tr.find("div.datagrid-cell-rownumber").html(_7a0); -if(_7a1){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_79d.call(this,true); -_79d.call(this,false); -$(_799).treegrid("fixRowHeight",id); -},onBeforeRender:function(_7a2,_7a3,data){ -if($.isArray(_7a3)){ -data={total:_7a3.length,rows:_7a3}; -_7a3=null; -} -if(!data){ -return false; -} -var _7a4=$.data(_7a2,"treegrid"); -var opts=_7a4.options; -if(data.length==undefined){ -if(data.footer){ -_7a4.footer=data.footer; -} -if(data.total){ -_7a4.total=data.total; -} -data=this.transfer(_7a2,_7a3,data.rows); -}else{ -function _7a5(_7a6,_7a7){ -for(var i=0;i<_7a6.length;i++){ -var row=_7a6[i]; -row._parentId=_7a7; -if(row.children&&row.children.length){ -_7a5(row.children,row[opts.idField]); -} -} -}; -_7a5(data,_7a3); -} -var node=find(_7a2,_7a3); -if(node){ -if(node.children){ -node.children=node.children.concat(data); -}else{ -node.children=data; -} -}else{ -_7a4.data=_7a4.data.concat(data); -} -this.sort(_7a2,data); -this.treeNodes=data; -this.treeLevel=$(_7a2).treegrid("getLevel",_7a3); -},sort:function(_7a8,data){ -var opts=$.data(_7a8,"treegrid").options; -if(!opts.remoteSort&&opts.sortName){ -var _7a9=opts.sortName.split(","); -var _7aa=opts.sortOrder.split(","); -_7ab(data); -} -function _7ab(rows){ -rows.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_7a9.length;i++){ -var sn=_7a9[i]; -var so=_7aa[i]; -var col=$(_7a8).treegrid("getColumnOption",sn); -var _7ac=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_7ac(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i"+""+""+""+"").insertAfter(_7c5); -var _7c6=$("
                                                                                                                            ").appendTo("body"); -_7c6.panel({doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ -$(this).panel("resize"); -},onClose:function(){ -var _7c7=$.data(_7c5,"combo"); -if(_7c7){ -_7c7.options.onHidePanel.call(_7c5); -} -}}); -var name=$(_7c5).attr("name"); -if(name){ -span.find("input.combo-value").attr("name",name); -$(_7c5).removeAttr("name").attr("comboName",name); -} -return {combo:span,panel:_7c6}; -}; -function _7c8(_7c9){ -var _7ca=$.data(_7c9,"combo"); -var opts=_7ca.options; -var _7cb=_7ca.combo; -if(opts.hasDownArrow){ -_7cb.find(".combo-arrow").show(); -}else{ -_7cb.find(".combo-arrow").hide(); -} -_7cc(_7c9,opts.disabled); -_7cd(_7c9,opts.readonly); -}; -function _7ce(_7cf){ -var _7d0=$.data(_7cf,"combo"); -var _7d1=_7d0.combo.find("input.combo-text"); -_7d1.validatebox("destroy"); -_7d0.panel.panel("destroy"); -_7d0.combo.remove(); -$(_7cf).remove(); -}; -function _7d2(_7d3){ -var _7d4=$.data(_7d3,"combo"); -var opts=_7d4.options; -var _7d5=_7d4.panel; -var _7d6=_7d4.combo; -var _7d7=_7d6.find(".combo-text"); -var _7d8=_7d6.find(".combo-arrow"); -$(document).unbind(".combo").bind("mousedown.combo",function(e){ -var p=$(e.target).closest("span.combo,div.combo-panel"); -if(p.length){ -return; -} -$("body>div.combo-p>div.combo-panel:visible").panel("close"); -}); -_7d7.unbind(".combo"); -_7d8.unbind(".combo"); -if(!opts.disabled&&!opts.readonly){ -_7d7.bind("mousedown.combo",function(e){ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel").not(_7d5).not(p).panel("close"); -e.stopPropagation(); -}).bind("keydown.combo",function(e){ -switch(e.keyCode){ -case 38: -opts.keyHandler.up.call(_7d3); -break; -case 40: -opts.keyHandler.down.call(_7d3); -break; -case 37: -opts.keyHandler.left.call(_7d3); -break; -case 39: -opts.keyHandler.right.call(_7d3); -break; -case 13: -e.preventDefault(); -opts.keyHandler.enter.call(_7d3); -return false; -case 9: -case 27: -_7df(_7d3); -break; -default: -if(opts.editable){ -if(_7d4.timer){ -clearTimeout(_7d4.timer); -} -_7d4.timer=setTimeout(function(){ -var q=_7d7.val(); -if(_7d4.previousValue!=q){ -_7d4.previousValue=q; -$(_7d3).combo("showPanel"); -opts.keyHandler.query.call(_7d3,_7d7.val()); -$(_7d3).combo("validate"); -} -},opts.delay); -} -} -}); -_7d8.bind("click.combo",function(){ -if(_7d5.is(":visible")){ -_7df(_7d3); -}else{ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel:visible").not(p).panel("close"); -$(_7d3).combo("showPanel"); -} -_7d7.focus(); -}).bind("mouseenter.combo",function(){ -$(this).addClass("combo-arrow-hover"); -}).bind("mouseleave.combo",function(){ -$(this).removeClass("combo-arrow-hover"); -}); -} -}; -function _7d9(_7da){ -var opts=$.data(_7da,"combo").options; -var _7db=$.data(_7da,"combo").combo; -var _7dc=$.data(_7da,"combo").panel; -if($.fn.window){ -_7dc.panel("panel").css("z-index",$.fn.window.defaults.zIndex++); -} -_7dc.panel("move",{left:_7db.offset().left,top:_7dd()}); -if(_7dc.panel("options").closed){ -_7dc.panel("open"); -opts.onShowPanel.call(_7da); -} -(function(){ -if(_7dc.is(":visible")){ -_7dc.panel("move",{left:_7de(),top:_7dd()}); -setTimeout(arguments.callee,200); -} -})(); -function _7de(){ -var left=_7db.offset().left; -if(left+_7dc._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ -left=$(window)._outerWidth()+$(document).scrollLeft()-_7dc._outerWidth(); -} -if(left<0){ -left=0; -} -return left; -}; -function _7dd(){ -var top=_7db.offset().top+_7db._outerHeight(); -if(top+_7dc._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=_7db.offset().top-_7dc._outerHeight(); -} -if(top<$(document).scrollTop()){ -top=_7db.offset().top+_7db._outerHeight(); -} -return top; -}; -}; -function _7df(_7e0){ -var _7e1=$.data(_7e0,"combo").panel; -_7e1.panel("close"); -}; -function _7e2(_7e3){ -var opts=$.data(_7e3,"combo").options; -var _7e4=$(_7e3).combo("textbox"); -_7e4.validatebox($.extend({},opts,{deltaX:(opts.hasDownArrow?opts.deltaX:(opts.deltaX>0?1:-1))})); -}; -function _7cc(_7e5,_7e6){ -var _7e7=$.data(_7e5,"combo"); -var opts=_7e7.options; -var _7e8=_7e7.combo; -if(_7e6){ -opts.disabled=true; -$(_7e5).attr("disabled",true); -_7e8.find(".combo-value").attr("disabled",true); -_7e8.find(".combo-text").attr("disabled",true); -}else{ -opts.disabled=false; -$(_7e5).removeAttr("disabled"); -_7e8.find(".combo-value").removeAttr("disabled"); -_7e8.find(".combo-text").removeAttr("disabled"); -} -}; -function _7cd(_7e9,mode){ -var _7ea=$.data(_7e9,"combo"); -var opts=_7ea.options; -opts.readonly=mode==undefined?true:mode; -_7ea.combo.find(".combo-text").attr("readonly",opts.readonly?true:(!opts.editable)); -}; -function _7eb(_7ec){ -var _7ed=$.data(_7ec,"combo"); -var opts=_7ed.options; -var _7ee=_7ed.combo; -if(opts.multiple){ -_7ee.find("input.combo-value").remove(); -}else{ -_7ee.find("input.combo-value").val(""); -} -_7ee.find("input.combo-text").val(""); -}; -function _7ef(_7f0){ -var _7f1=$.data(_7f0,"combo").combo; -return _7f1.find("input.combo-text").val(); -}; -function _7f2(_7f3,text){ -var _7f4=$.data(_7f3,"combo"); -var _7f5=_7f4.combo.find("input.combo-text"); -if(_7f5.val()!=text){ -_7f5.val(text); -$(_7f3).combo("validate"); -_7f4.previousValue=text; -} -}; -function _7f6(_7f7){ -var _7f8=[]; -var _7f9=$.data(_7f7,"combo").combo; -_7f9.find("input.combo-value").each(function(){ -_7f8.push($(this).val()); -}); -return _7f8; -}; -function _7fa(_7fb,_7fc){ -var opts=$.data(_7fb,"combo").options; -var _7fd=_7f6(_7fb); -var _7fe=$.data(_7fb,"combo").combo; -_7fe.find("input.combo-value").remove(); -var name=$(_7fb).attr("comboName"); -for(var i=0;i<_7fc.length;i++){ -var _7ff=$("").appendTo(_7fe); -if(name){ -_7ff.attr("name",name); -} -_7ff.val(_7fc[i]); -} -var tmp=[]; -for(var i=0;i<_7fd.length;i++){ -tmp[i]=_7fd[i]; -} -var aa=[]; -for(var i=0;i<_7fc.length;i++){ -for(var j=0;j_818.height()){ -var h=_818.scrollTop()+item.position().top+item.outerHeight()-_818.height(); -_818.scrollTop(h); -} -} -} -}; -function nav(_819,dir){ -var opts=$(_819).combobox("options"); -var _81a=$(_819).combobox("panel"); -var item=_81a.children("div.combobox-item-hover"); -if(!item.length){ -item=_81a.children("div.combobox-item-selected"); -} -item.removeClass("combobox-item-hover"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:"+(dir=="next"?"first":"last")); -}else{ -if(dir=="next"){ -item=item.nextAll("div.combobox-item:visible:first"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:first"); -} -}else{ -item=item.prevAll("div.combobox-item:visible:first"); -if(!item.length){ -item=_81a.children("div.combobox-item:visible:last"); -} -} -} -if(item.length){ -item.addClass("combobox-item-hover"); -_815(_819,item.attr("value")); -if(opts.selectOnNavigation){ -_81b(_819,item.attr("value")); -} -} -}; -function _81b(_81c,_81d){ -var opts=$.data(_81c,"combobox").options; -var data=$.data(_81c,"combobox").data; -if(opts.multiple){ -var _81e=$(_81c).combo("getValues"); -for(var i=0;i<_81e.length;i++){ -if(_81e[i]==_81d){ -return; -} -} -_81e.push(_81d); -_81f(_81c,_81e); -}else{ -_81f(_81c,[_81d]); -} -var item=_813(data,opts.valueField,_81d); -if(item){ -opts.onSelect.call(_81c,item); -} -}; -function _820(_821,_822){ -var _823=$.data(_821,"combobox"); -var opts=_823.options; -var _824=$(_821).combo("getValues"); -var _825=$.inArray(_822+"",_824); -if(_825>=0){ -_824.splice(_825,1); -_81f(_821,_824); -} -var item=_813(_823.data,opts.valueField,_822); -if(item){ -opts.onUnselect.call(_821,item); -} -}; -function _81f(_826,_827,_828){ -var opts=$.data(_826,"combobox").options; -var data=$.data(_826,"combobox").data; -var _829=$(_826).combo("panel"); -_829.find("div.combobox-item-selected").removeClass("combobox-item-selected"); -var vv=[],ss=[]; -for(var i=0;i<_827.length;i++){ -var v=_827[i]; -var s=v; -var item=_813(data,opts.valueField,v); -if(item){ -s=item[opts.textField]; -} -vv.push(v); -ss.push(s); -_829.find("div.combobox-item[value=\""+v+"\"]").addClass("combobox-item-selected"); -} -$(_826).combo("setValues",vv); -if(!_828){ -$(_826).combo("setText",ss.join(opts.separator)); -} -}; -function _82a(_82b,data,_82c){ -var _82d=$.data(_82b,"combobox"); -var opts=_82d.options; -_82d.data=opts.loadFilter.call(_82b,data); -data=_82d.data; -var _82e=$(_82b).combobox("getValues"); -var dd=[]; -var _82f=undefined; -for(var i=0;i"); -dd.push(opts.groupFormatter?opts.groupFormatter.call(_82b,g):g); -dd.push("
                                                                                                                            "); -} -}else{ -_82f=undefined; -} -dd.push("
                                                                                                                            "); -dd.push(opts.formatter?opts.formatter.call(_82b,item):s); -dd.push("
                                                                                                                            "); -if(item["selected"]){ -(function(){ -for(var i=0;i<_82e.length;i++){ -if(v==_82e[i]){ -return; -} -} -_82e.push(v); -})(); -} -} -$(_82b).combo("panel").html(dd.join("")); -if(opts.multiple){ -_81f(_82b,_82e,_82c); -}else{ -if(_82e.length){ -_81f(_82b,[_82e[_82e.length-1]],_82c); -}else{ -_81f(_82b,[],_82c); -} -} -opts.onLoadSuccess.call(_82b,data); -}; -function _830(_831,url,_832,_833){ -var opts=$.data(_831,"combobox").options; -if(url){ -opts.url=url; -} -_832=_832||{}; -if(opts.onBeforeLoad.call(_831,_832)==false){ -return; -} -opts.loader.call(_831,_832,function(data){ -_82a(_831,data,_833); -},function(){ -opts.onLoadError.apply(this,arguments); -}); -}; -function _834(_835,q){ -var _836=$.data(_835,"combobox"); -var opts=_836.options; -if(opts.multiple&&!q){ -_81f(_835,[],true); -}else{ -_81f(_835,[q],true); -} -if(opts.mode=="remote"){ -_830(_835,null,{q:q},true); -}else{ -var _837=$(_835).combo("panel"); -_837.find("div.combobox-item,div.combobox-group").hide(); -var data=_836.data; -var _838=undefined; -for(var i=0;i").appendTo(_858); -$.data(_857,"combotree").tree=tree; -} -tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ -var _859=$(_857).combotree("getValues"); -if(opts.multiple){ -var _85a=tree.tree("getChecked"); -for(var i=0;i<_85a.length;i++){ -var id=_85a[i].id; -(function(){ -for(var i=0;i<_859.length;i++){ -if(id==_859[i]){ -return; -} -} -_859.push(id); -})(); -} -} -$(_857).combotree("setValues",_859); -opts.onLoadSuccess.call(this,node,data); -},onClick:function(node){ -_85c(_857); -$(_857).combo("hidePanel"); -opts.onClick.call(this,node); -},onCheck:function(node,_85b){ -_85c(_857); -opts.onCheck.call(this,node,_85b); -}})); -}; -function _85c(_85d){ -var opts=$.data(_85d,"combotree").options; -var tree=$.data(_85d,"combotree").tree; -var vv=[],ss=[]; -if(opts.multiple){ -var _85e=tree.tree("getChecked"); -for(var i=0;i<_85e.length;i++){ -vv.push(_85e[i].id); -ss.push(_85e[i].text); -} -}else{ -var node=tree.tree("getSelected"); -if(node){ -vv.push(node.id); -ss.push(node.text); -} -} -$(_85d).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -function _85f(_860,_861){ -var opts=$.data(_860,"combotree").options; -var tree=$.data(_860,"combotree").tree; -tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); -var vv=[],ss=[]; -for(var i=0;i<_861.length;i++){ -var v=_861[i]; -var s=v; -var node=tree.tree("find",v); -if(node){ -s=node.text; -tree.tree("check",node.target); -tree.tree("select",node.target); -} -vv.push(v); -ss.push(s); -} -$(_860).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -$.fn.combotree=function(_862,_863){ -if(typeof _862=="string"){ -var _864=$.fn.combotree.methods[_862]; -if(_864){ -return _864(this,_863); -}else{ -return this.combo(_862,_863); -} -} -_862=_862||{}; -return this.each(function(){ -var _865=$.data(this,"combotree"); -if(_865){ -$.extend(_865.options,_862); -}else{ -$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_862)}); -} -_856(this); -}); -}; -$.fn.combotree.methods={options:function(jq){ -var _866=jq.combo("options"); -return $.extend($.data(jq[0],"combotree").options,{originalValue:_866.originalValue,disabled:_866.disabled,readonly:_866.readonly}); -},tree:function(jq){ -return $.data(jq[0],"combotree").tree; -},loadData:function(jq,data){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -opts.data=data; -var tree=$.data(this,"combotree").tree; -tree.tree("loadData",data); -}); -},reload:function(jq,url){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -var tree=$.data(this,"combotree").tree; -if(url){ -opts.url=url; -} -tree.tree({url:opts.url}); -}); -},setValues:function(jq,_867){ -return jq.each(function(){ -_85f(this,_867); -}); -},setValue:function(jq,_868){ -return jq.each(function(){ -_85f(this,[_868]); -}); -},clear:function(jq){ -return jq.each(function(){ -var tree=$.data(this,"combotree").tree; -tree.find("div.tree-node-selected").removeClass("tree-node-selected"); -var cc=tree.tree("getChecked"); -for(var i=0;i").appendTo(_86d); -_86c.grid=grid; -} -grid.datagrid($.extend({},opts,{border:false,fit:true,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ -var _86e=$(_86b).combo("getValues"); -var _86f=opts.onSelect; -opts.onSelect=function(){ -}; -_879(_86b,_86e,_86c.remainText); -opts.onSelect=_86f; -opts.onLoadSuccess.apply(_86b,arguments); -},onClickRow:_870,onSelect:function(_871,row){ -_872(); -opts.onSelect.call(this,_871,row); -},onUnselect:function(_873,row){ -_872(); -opts.onUnselect.call(this,_873,row); -},onSelectAll:function(rows){ -_872(); -opts.onSelectAll.call(this,rows); -},onUnselectAll:function(rows){ -if(opts.multiple){ -_872(); -} -opts.onUnselectAll.call(this,rows); -}})); -function _870(_874,row){ -_86c.remainText=false; -_872(); -if(!opts.multiple){ -$(_86b).combo("hidePanel"); -} -opts.onClickRow.call(this,_874,row); -}; -function _872(){ -var rows=grid.datagrid("getSelections"); -var vv=[],ss=[]; -for(var i=0;i=_877){ -_878=0; -} -} -grid.datagrid("highlightRow",_878); -if(opts.selectOnNavigation){ -_876.remainText=false; -grid.datagrid("selectRow",_878); -} -}; -function _879(_87a,_87b,_87c){ -var _87d=$.data(_87a,"combogrid"); -var opts=_87d.options; -var grid=_87d.grid; -var rows=grid.datagrid("getRows"); -var ss=[]; -var _87e=$(_87a).combo("getValues"); -var _87f=$(_87a).combo("options"); -var _880=_87f.onChange; -_87f.onChange=function(){ -}; -grid.datagrid("clearSelections"); -for(var i=0;i<_87b.length;i++){ -var _881=grid.datagrid("getRowIndex",_87b[i]); -if(_881>=0){ -grid.datagrid("selectRow",_881); -ss.push(rows[_881][opts.textField]); -}else{ -ss.push(_87b[i]); -} -} -$(_87a).combo("setValues",_87e); -_87f.onChange=_880; -$(_87a).combo("setValues",_87b); -if(!_87c){ -var s=ss.join(opts.separator); -if($(_87a).combo("getText")!=s){ -$(_87a).combo("setText",s); -} -} -}; -function _882(_883,q){ -var _884=$.data(_883,"combogrid"); -var opts=_884.options; -var grid=_884.grid; -_884.remainText=true; -if(opts.multiple&&!q){ -_879(_883,[],true); -}else{ -_879(_883,[q],true); -} -if(opts.mode=="remote"){ -grid.datagrid("clearSelections"); -grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); -}else{ -if(!q){ -return; -} -var rows=grid.datagrid("getRows"); -for(var i=0;i
                                                                                                                            ").appendTo(_896).wrap("
                                                                                                                            "); -_893.calendar.calendar({fit:true,border:false,onSelect:function(date){ -var _897=opts.formatter(date); -_89f(_892,_897); -$(_892).combo("hidePanel"); -opts.onSelect.call(_892,date); -}}); -_89f(_892,opts.value); -var _898=$("
                                                                                                                            ").appendTo(_896); -var _899=$("").html(opts.currentText).appendTo(_898); -var _89a=$("").html(opts.closeText).appendTo(_898); -_899.click(function(){ -_893.calendar.calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -}); -_89a.click(function(){ -$(_892).combo("hidePanel"); -}); -}; -function _894(){ -if(opts.panelHeight!="auto"){ -var _89b=$(_892).combo("panel"); -var ci=_89b.children("div.datebox-calendar-inner"); -var _89c=_89b.height(); -_89b.children().not(ci).each(function(){ -_89c-=$(this).outerHeight(); -}); -ci._outerHeight(_89c); -} -_893.calendar.calendar("resize"); -}; -}; -function _89d(_89e,q){ -_89f(_89e,q); -}; -function _8a0(_8a1){ -var _8a2=$.data(_8a1,"datebox"); -var opts=_8a2.options; -var c=_8a2.calendar; -var _8a3=opts.formatter(c.calendar("options").current); -_89f(_8a1,_8a3); -$(_8a1).combo("hidePanel"); -}; -function _89f(_8a4,_8a5){ -var _8a6=$.data(_8a4,"datebox"); -var opts=_8a6.options; -$(_8a4).combo("setValue",_8a5).combo("setText",_8a5); -_8a6.calendar.calendar("moveTo",opts.parser(_8a5)); -}; -$.fn.datebox=function(_8a7,_8a8){ -if(typeof _8a7=="string"){ -var _8a9=$.fn.datebox.methods[_8a7]; -if(_8a9){ -return _8a9(this,_8a8); -}else{ -return this.combo(_8a7,_8a8); -} -} -_8a7=_8a7||{}; -return this.each(function(){ -var _8aa=$.data(this,"datebox"); -if(_8aa){ -$.extend(_8aa.options,_8a7); -}else{ -$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_8a7)}); -} -_891(this); -}); -}; -$.fn.datebox.methods={options:function(jq){ -var _8ab=jq.combo("options"); -return $.extend($.data(jq[0],"datebox").options,{originalValue:_8ab.originalValue,disabled:_8ab.disabled,readonly:_8ab.readonly}); -},calendar:function(jq){ -return $.data(jq[0],"datebox").calendar; -},setValue:function(jq,_8ac){ -return jq.each(function(){ -_89f(this,_8ac); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datebox("options"); -$(this).datebox("setValue",opts.originalValue); -}); -}}; -$.fn.datebox.parseOptions=function(_8ad){ -var t=$(_8ad); -return $.extend({},$.fn.combo.parseOptions(_8ad),{}); -}; -$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",keyHandler:{up:function(){ -},down:function(){ -},enter:function(){ -_8a0(this); -},query:function(q){ -_89d(this,q); -}},currentText:"Today",closeText:"Close",okText:"Ok",formatter:function(date){ -var y=date.getFullYear(); -var m=date.getMonth()+1; -var d=date.getDate(); -return m+"/"+d+"/"+y; -},parser:function(s){ -var t=Date.parse(s); -if(!isNaN(t)){ -return new Date(t); -}else{ -return new Date(); -} -},onSelect:function(date){ -}}); -})(jQuery); -(function($){ -function _8ae(_8af){ -var _8b0=$.data(_8af,"datetimebox"); -var opts=_8b0.options; -$(_8af).datebox($.extend({},opts,{onShowPanel:function(){ -var _8b1=$(_8af).datetimebox("getValue"); -_8b4(_8af,_8b1,true); -opts.onShowPanel.call(_8af); -},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); -$(_8af).removeClass("datebox-f").addClass("datetimebox-f"); -$(_8af).datebox("calendar").calendar({onSelect:function(date){ -opts.onSelect.call(_8af,date); -}}); -var _8b2=$(_8af).datebox("panel"); -if(!_8b0.spinner){ -var p=$("
                                                                                                                            ").insertAfter(_8b2.children("div.datebox-calendar-inner")); -_8b0.spinner=p.children("input"); -var _8b3=_8b2.children("div.datebox-button"); -var ok=$("").html(opts.okText).appendTo(_8b3); -ok.click(function(){ -_8b9(_8af); -}); -} -_8b0.spinner.timespinner({showSeconds:opts.showSeconds,separator:opts.timeSeparator}).unbind(".datetimebox").bind("mousedown.datetimebox",function(e){ -e.stopPropagation(); -}); -_8b4(_8af,opts.value); -}; -function _8b5(_8b6){ -var c=$(_8b6).datetimebox("calendar"); -var t=$(_8b6).datetimebox("spinner"); -var date=c.calendar("options").current; -return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); -}; -function _8b7(_8b8,q){ -_8b4(_8b8,q,true); -}; -function _8b9(_8ba){ -var opts=$.data(_8ba,"datetimebox").options; -var date=_8b5(_8ba); -_8b4(_8ba,opts.formatter.call(_8ba,date)); -$(_8ba).combo("hidePanel"); -}; -function _8b4(_8bb,_8bc,_8bd){ -var opts=$.data(_8bb,"datetimebox").options; -$(_8bb).combo("setValue",_8bc); -if(!_8bd){ -if(_8bc){ -var date=opts.parser.call(_8bb,_8bc); -$(_8bb).combo("setValue",opts.formatter.call(_8bb,date)); -$(_8bb).combo("setText",opts.formatter.call(_8bb,date)); -}else{ -$(_8bb).combo("setText",_8bc); -} -} -var date=opts.parser.call(_8bb,_8bc); -$(_8bb).datetimebox("calendar").calendar("moveTo",date); -$(_8bb).datetimebox("spinner").timespinner("setValue",_8be(date)); -function _8be(date){ -function _8bf(_8c0){ -return (_8c0<10?"0":"")+_8c0; -}; -var tt=[_8bf(date.getHours()),_8bf(date.getMinutes())]; -if(opts.showSeconds){ -tt.push(_8bf(date.getSeconds())); -} -return tt.join($(_8bb).datetimebox("spinner").timespinner("options").separator); -}; -}; -$.fn.datetimebox=function(_8c1,_8c2){ -if(typeof _8c1=="string"){ -var _8c3=$.fn.datetimebox.methods[_8c1]; -if(_8c3){ -return _8c3(this,_8c2); -}else{ -return this.datebox(_8c1,_8c2); -} -} -_8c1=_8c1||{}; -return this.each(function(){ -var _8c4=$.data(this,"datetimebox"); -if(_8c4){ -$.extend(_8c4.options,_8c1); -}else{ -$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_8c1)}); -} -_8ae(this); -}); -}; -$.fn.datetimebox.methods={options:function(jq){ -var _8c5=jq.datebox("options"); -return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_8c5.originalValue,disabled:_8c5.disabled,readonly:_8c5.readonly}); -},spinner:function(jq){ -return $.data(jq[0],"datetimebox").spinner; -},setValue:function(jq,_8c6){ -return jq.each(function(){ -_8b4(this,_8c6); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datetimebox("options"); -$(this).datetimebox("setValue",opts.originalValue); -}); -}}; -$.fn.datetimebox.parseOptions=function(_8c7){ -var t=$(_8c7); -return $.extend({},$.fn.datebox.parseOptions(_8c7),$.parser.parseOptions(_8c7,["timeSeparator",{showSeconds:"boolean"}])); -}; -$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{showSeconds:true,timeSeparator:":",keyHandler:{up:function(){ -},down:function(){ -},enter:function(){ -_8b9(this); -},query:function(q){ -_8b7(this,q); -}},formatter:function(date){ -var h=date.getHours(); -var M=date.getMinutes(); -var s=date.getSeconds(); -function _8c8(_8c9){ -return (_8c9<10?"0":"")+_8c9; -}; -var _8ca=$(this).datetimebox("spinner").timespinner("options").separator; -var r=$.fn.datebox.defaults.formatter(date)+" "+_8c8(h)+_8ca+_8c8(M); -if($(this).datetimebox("options").showSeconds){ -r+=_8ca+_8c8(s); -} -return r; -},parser:function(s){ -if($.trim(s)==""){ -return new Date(); -} -var dt=s.split(" "); -var d=$.fn.datebox.defaults.parser(dt[0]); -if(dt.length<2){ -return d; -} -var _8cb=$(this).datetimebox("spinner").timespinner("options").separator; -var tt=dt[1].split(_8cb); -var hour=parseInt(tt[0],10)||0; -var _8cc=parseInt(tt[1],10)||0; -var _8cd=parseInt(tt[2],10)||0; -return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_8cc,_8cd); -}}); -})(jQuery); -(function($){ -function init(_8ce){ -var _8cf=$("
                                                                                                                            "+"
                                                                                                                            "+""+""+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+""+"
                                                                                                                            ").insertAfter(_8ce); -var name=$(_8ce).hide().attr("name"); -if(name){ -_8cf.find("input.slider-value").attr("name",name); -$(_8ce).removeAttr("name").attr("sliderName",name); -} -return _8cf; -}; -function _8d0(_8d1,_8d2){ -var _8d3=$.data(_8d1,"slider"); -var opts=_8d3.options; -var _8d4=_8d3.slider; -if(_8d2){ -if(_8d2.width){ -opts.width=_8d2.width; -} -if(_8d2.height){ -opts.height=_8d2.height; -} -} -if(opts.mode=="h"){ -_8d4.css("height",""); -_8d4.children("div").css("height",""); -if(!isNaN(opts.width)){ -_8d4.width(opts.width); -} -}else{ -_8d4.css("width",""); -_8d4.children("div").css("width",""); -if(!isNaN(opts.height)){ -_8d4.height(opts.height); -_8d4.find("div.slider-rule").height(opts.height); -_8d4.find("div.slider-rulelabel").height(opts.height); -_8d4.find("div.slider-inner")._outerHeight(opts.height); -} -} -_8d5(_8d1); -}; -function _8d6(_8d7){ -var _8d8=$.data(_8d7,"slider"); -var opts=_8d8.options; -var _8d9=_8d8.slider; -var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); -if(opts.reversed){ -aa=aa.slice(0).reverse(); -} -_8da(aa); -function _8da(aa){ -var rule=_8d9.find("div.slider-rule"); -var _8db=_8d9.find("div.slider-rulelabel"); -rule.empty(); -_8db.empty(); -for(var i=0;i").appendTo(rule); -span.css((opts.mode=="h"?"left":"top"),_8dc); -if(aa[i]!="|"){ -span=$("").appendTo(_8db); -span.html(aa[i]); -if(opts.mode=="h"){ -span.css({left:_8dc,marginLeft:-Math.round(span.outerWidth()/2)}); -}else{ -span.css({top:_8dc,marginTop:-Math.round(span.outerHeight()/2)}); -} -} -} -}; -}; -function _8dd(_8de){ -var _8df=$.data(_8de,"slider"); -var opts=_8df.options; -var _8e0=_8df.slider; -_8e0.removeClass("slider-h slider-v slider-disabled"); -_8e0.addClass(opts.mode=="h"?"slider-h":"slider-v"); -_8e0.addClass(opts.disabled?"slider-disabled":""); -_8e0.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ -var left=e.data.left; -var _8e1=_8e0.width(); -if(opts.mode!="h"){ -left=e.data.top; -_8e1=_8e0.height(); -} -if(left<0||left>_8e1){ -return false; -}else{ -var _8e2=_8f4(_8de,left); -_8e3(_8e2); -return false; -} -},onBeforeDrag:function(){ -_8df.isDragging=true; -},onStartDrag:function(){ -opts.onSlideStart.call(_8de,opts.value); -},onStopDrag:function(e){ -var _8e4=_8f4(_8de,(opts.mode=="h"?e.data.left:e.data.top)); -_8e3(_8e4); -opts.onSlideEnd.call(_8de,opts.value); -opts.onComplete.call(_8de,opts.value); -_8df.isDragging=false; -}}); -_8e0.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_8df.isDragging){ -return; -} -var pos=$(this).offset(); -var _8e5=_8f4(_8de,(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_8e3(_8e5); -opts.onComplete.call(_8de,opts.value); -}); -function _8e3(_8e6){ -var s=Math.abs(_8e6%opts.step); -if(sopts.max){ -_8e9=opts.max; -} -opts.value=_8e9; -$(_8e8).val(_8e9); -_8eb.find("input.slider-value").val(_8e9); -var pos=_8ed(_8e8,_8e9); -var tip=_8eb.find(".slider-tip"); -if(opts.showTip){ -tip.show(); -tip.html(opts.tipFormatter.call(_8e8,opts.value)); -}else{ -tip.hide(); -} -if(opts.mode=="h"){ -var _8ee="left:"+pos+"px;"; -_8eb.find(".slider-handle").attr("style",_8ee); -tip.attr("style",_8ee+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _8ee="top:"+pos+"px;"; -_8eb.find(".slider-handle").attr("style",_8ee); -tip.attr("style",_8ee+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_8ec!=_8e9){ -opts.onChange.call(_8e8,_8e9,_8ec); -} -}; -function _8d5(_8ef){ -var opts=$.data(_8ef,"slider").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_8e7(_8ef,opts.value); -opts.onChange=fn; -}; -function _8ed(_8f0,_8f1){ -var _8f2=$.data(_8f0,"slider"); -var opts=_8f2.options; -var _8f3=_8f2.slider; -if(opts.mode=="h"){ -var pos=(_8f1-opts.min)/(opts.max-opts.min)*_8f3.width(); -if(opts.reversed){ -pos=_8f3.width()-pos; -} -}else{ -var pos=_8f3.height()-(_8f1-opts.min)/(opts.max-opts.min)*_8f3.height(); -if(opts.reversed){ -pos=_8f3.height()-pos; -} -} -return pos.toFixed(0); -}; -function _8f4(_8f5,pos){ -var _8f6=$.data(_8f5,"slider"); -var opts=_8f6.options; -var _8f7=_8f6.slider; -if(opts.mode=="h"){ -var _8f8=opts.min+(opts.max-opts.min)*(pos/_8f7.width()); -}else{ -var _8f8=opts.min+(opts.max-opts.min)*((_8f7.height()-pos)/_8f7.height()); -} -return opts.reversed?opts.max-_8f8.toFixed(0):_8f8.toFixed(0); -}; -$.fn.slider=function(_8f9,_8fa){ -if(typeof _8f9=="string"){ -return $.fn.slider.methods[_8f9](this,_8fa); -} -_8f9=_8f9||{}; -return this.each(function(){ -var _8fb=$.data(this,"slider"); -if(_8fb){ -$.extend(_8fb.options,_8f9); -}else{ -_8fb=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_8f9),slider:init(this)}); -$(this).removeAttr("disabled"); -} -var opts=_8fb.options; -opts.min=parseFloat(opts.min); -opts.max=parseFloat(opts.max); -opts.value=parseFloat(opts.value); -opts.step=parseFloat(opts.step); -_8dd(this); -_8d6(this); -_8d0(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_8fc){ -return jq.each(function(){ -_8d0(this,_8fc); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_8fd){ -return jq.each(function(){ -_8e7(this,_8fd); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_8dd(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_8dd(this); -}); -}}; -$.fn.slider.parseOptions=function(_8fe){ -var t=$(_8fe); -return $.extend({},$.parser.parseOptions(_8fe,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_8ff){ -return _8ff; -},onChange:function(_900,_901){ -},onSlideStart:function(_902){ -},onSlideEnd:function(_903){ -},onComplete:function(_904){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/jquery.min.js b/J6/src/examples/devfw.web/framework/assets/easyui/jquery.min.js deleted file mode 100644 index ab28a24..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
                                                                                                                            ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; -if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
                                                                                                                            a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
                                                                                                                            ","
                                                                                                                            "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                                                                                                                            "],tr:[2,"","
                                                                                                                            "],col:[2,"","
                                                                                                                            "],td:[3,"","
                                                                                                                            "],_default:k.htmlSerialize?[0,"",""]:[1,"X
                                                                                                                            ","
                                                                                                                            "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=_5.attr("target"),a=_5.attr("action"); -_5.attr("target",_6); -var _8=$(); -try{ -_7.appendTo("body"); -_7.bind("load",cb); -for(var n in _4){ -var f=$("").val(_4[n]).appendTo(_5); -_8=_8.add(f); -} -_5[0].submit(); -} -finally{ -_5.attr("action",a); -t?_5.attr("target",t):_5.removeAttr("target"); -_8.remove(); -} -var _9=10; -function cb(){ -_7.unbind(); -var _a=$("#"+_6).contents().find("body"); -var _b=_a.html(); -if(_b==""){ -if(--_9){ -setTimeout(cb,100); -return; -} -return; -} -var ta=_a.find(">textarea"); -if(ta.length){ -_b=ta.val(); -}else{ -var _c=_a.find(">pre"); -if(_c.length){ -_b=_c.html(); -} -} -if(_3.success){ -_3.success(_b); -} -setTimeout(function(){ -_7.unbind(); -_7.remove(); -},100); -}; -}; -function _d(_e,_f){ -if(!$.data(_e,"form")){ -$.data(_e,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var _10=$.data(_e,"form").options; -if(typeof _f=="string"){ -var _11={}; -if(_10.onBeforeLoad.call(_e,_11)==false){ -return; -} -$.ajax({url:_f,data:_11,dataType:"json",success:function(_12){ -_13(_12); -},error:function(){ -_10.onLoadError.apply(_e,arguments); -}}); -}else{ -_13(_f); -} -function _13(_14){ -var _15=$(_e); -for(var _16 in _14){ -var val=_14[_16]; -var rr=_17(_16,val); -if(!rr.length){ -var f=_15.find("input[numberboxName=\""+_16+"\"]"); -if(f.length){ -f.numberbox("setValue",val); -}else{ -$("input[name=\""+_16+"\"]",_15).val(val); -$("textarea[name=\""+_16+"\"]",_15).val(val); -$("select[name=\""+_16+"\"]",_15).val(val); -} -} -_18(_16,val); -} -_10.onLoadSuccess.call(_e,_14); -_20(_e); -}; -function _17(_19,val){ -var rr=$(_e).find("input[name=\""+_19+"\"][type=radio], input[name=\""+_19+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),val)>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _18(_1a,val){ -var _1b=$(_e); -var cc=["combobox","combotree","combogrid","datetimebox","datebox","combo"]; -var c=_1b.find("[comboName=\""+_1a+"\"]"); -if(c.length){ -for(var i=0;i=0){ -_1b(_16,_18,this); -} -}); -}; -cc.children("form").length?_17(cc.children("form")):_17(cc); -cc.append("
                                                                                                                            "); -cc.bind("_resize",function(e,_19){ -var _1a=$.data(_16,"layout").options; -if(_1a.fit==true||_19){ -_2(_16); -} -return false; -}); -}; -function _1b(_1c,_1d,el){ -_1d.region=_1d.region||"center"; -var _1e=$.data(_1c,"layout").panels; -var cc=$(_1c); -var dir=_1d.region; -if(_1e[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
                                                                                                                            ").appendTo(cc); -} -var _1f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var _20=$(this).panel("header").children("div.panel-tool"); -_20.children("a.panel-tool-collapse").hide(); -var _21={north:"up",south:"down",east:"right",west:"left"}; -if(!_21[dir]){ -return; -} -var _22="layout-button-"+_21[dir]; -var t=_20.children("a."+_22); -if(!t.length){ -t=$("").addClass(_22).appendTo(_20); -t.bind("click",{dir:dir},function(e){ -_2f(_1c,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_1d); -pp.panel(_1f); -_1e[dir]=pp; -if(pp.panel("options").split){ -var _23=pp.panel("panel"); -_23.addClass("layout-split-"+dir); -var _24=""; -if(dir=="north"){ -_24="s"; -} -if(dir=="south"){ -_24="n"; -} -if(dir=="east"){ -_24="w"; -} -if(dir=="west"){ -_24="e"; -} -_23.resizable($.extend({},{handles:_24,onStartResize:function(e){ -_1=true; -if(dir=="north"||dir=="south"){ -var _25=$(">div.layout-split-proxy-v",_1c); -}else{ -var _25=$(">div.layout-split-proxy-h",_1c); -} -var top=0,_26=0,_27=0,_28=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_23.css("top"))+_23.outerHeight()-_25.height(); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_23.css("top")); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=parseInt(_23.css("left"))||0; -pos.width=_25.width(); -pos.height=_23.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=_23.outerWidth()-_25.width(); -pos.width=_25.width(); -pos.height=_23.outerHeight(); -} -} -} -} -_25.css(pos); -$("
                                                                                                                            ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _29=$(">div.layout-split-proxy-v",_1c); -_29.css("top",e.pageY-$(_1c).offset().top-_29.height()/2); -}else{ -var _29=$(">div.layout-split-proxy-h",_1c); -_29.css("left",e.pageX-$(_1c).offset().left-_29.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_2(_1c); -_1=false; -cc.find(">div.layout-mask").remove(); -}},_1d)); -} -}; -function _2a(_2b,_2c){ -var _2d=$.data(_2b,"layout").panels; -if(_2d[_2c].length){ -_2d[_2c].panel("destroy"); -_2d[_2c]=$(); -var _2e="expand"+_2c.substring(0,1).toUpperCase()+_2c.substring(1); -if(_2d[_2e]){ -_2d[_2e].panel("destroy"); -_2d[_2e]=undefined; -} -} -}; -function _2f(_30,_31,_32){ -if(_32==undefined){ -_32="normal"; -} -var _33=$.data(_30,"layout").panels; -var p=_33[_31]; -if(p.panel("options").onBeforeCollapse.call(p)==false){ -return; -} -var _34="expand"+_31.substring(0,1).toUpperCase()+_31.substring(1); -if(!_33[_34]){ -_33[_34]=_35(_31); -_33[_34].panel("panel").bind("click",function(){ -var _36=_37(); -p.panel("expand",false).panel("open").panel("resize",_36.collapse); -p.panel("panel").animate(_36.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_31},function(e){ -if(_1==true){ -return; -} -_2f(_30,e.data.region); -}); -}); -return false; -}); -} -var _38=_37(); -if(!_14(_33[_34])){ -_33.center.panel("resize",_38.resizeC); -} -p.panel("panel").animate(_38.collapse,_32,function(){ -p.panel("collapse",false).panel("close"); -_33[_34].panel("open").panel("resize",_38.expandP); -$(this).unbind(".layout"); -}); -function _35(dir){ -var _39; -if(dir=="east"){ -_39="layout-button-left"; -}else{ -if(dir=="west"){ -_39="layout-button-right"; -}else{ -if(dir=="north"){ -_39="layout-button-down"; -}else{ -if(dir=="south"){ -_39="layout-button-up"; -} -} -} -} -var _3a=$.extend({},$.fn.layout.paneldefaults,{cls:"layout-expand",title:" ",closed:true,doSize:false,tools:[{iconCls:_39,handler:function(){ -_3e(_30,_31); -return false; -}}]}); -var p=$("
                                                                                                                            ").appendTo(_30).panel(_3a); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _37(){ -var cc=$(_30); -var _3b=_33.center.panel("options"); -if(_31=="east"){ -var _3c=_33["east"].panel("options"); -return {resizeC:{width:_3b.width+_3c.width-28},expand:{left:cc.width()-_3c.width},expandP:{top:_3b.top,left:cc.width()-28,width:28,height:_3b.height},collapse:{left:cc.width(),top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="west"){ -var _3d=_33["west"].panel("options"); -return {resizeC:{width:_3b.width+_3d.width-28,left:28},expand:{left:0},expandP:{left:0,top:_3b.top,width:28,height:_3b.height},collapse:{left:-_3d.width,top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="north"){ -var hh=cc.height()-28; -if(_14(_33.expandSouth)){ -hh-=_33.expandSouth.panel("options").height; -}else{ -if(_14(_33.south)){ -hh-=_33.south.panel("options").height; -} -} -_33.east.panel("resize",{top:28,height:hh}); -_33.west.panel("resize",{top:28,height:hh}); -if(_14(_33.expandEast)){ -_33.expandEast.panel("resize",{top:28,height:hh}); -} -if(_14(_33.expandWest)){ -_33.expandWest.panel("resize",{top:28,height:hh}); -} -return {resizeC:{top:28,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_33["north"].panel("options").height,width:cc.width()}}; -}else{ -if(_31=="south"){ -var hh=cc.height()-28; -if(_14(_33.expandNorth)){ -hh-=_33.expandNorth.panel("options").height; -}else{ -if(_14(_33.north)){ -hh-=_33.north.panel("options").height; -} -} -_33.east.panel("resize",{height:hh}); -_33.west.panel("resize",{height:hh}); -if(_14(_33.expandEast)){ -_33.expandEast.panel("resize",{height:hh}); -} -if(_14(_33.expandWest)){ -_33.expandWest.panel("resize",{height:hh}); -} -return {resizeC:{height:hh},expand:{top:cc.height()-_33["south"].panel("options").height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _3e(_3f,_40){ -var _41=$.data(_3f,"layout").panels; -var _42=_43(); -var p=_41[_40]; -if(p.panel("options").onBeforeExpand.call(p)==false){ -return; -} -var _44="expand"+_40.substring(0,1).toUpperCase()+_40.substring(1); -_41[_44].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_42.collapse); -p.panel("panel").animate(_42.expand,function(){ -_2(_3f); -}); -function _43(){ -var cc=$(_3f); -var _45=_41.center.panel("options"); -if(_40=="east"&&_41.expandEast){ -return {collapse:{left:cc.width(),top:_45.top,height:_45.height},expand:{left:cc.width()-_41["east"].panel("options").width}}; -}else{ -if(_40=="west"&&_41.expandWest){ -return {collapse:{left:-_41["west"].panel("options").width,top:_45.top,height:_45.height},expand:{left:0}}; -}else{ -if(_40=="north"&&_41.expandNorth){ -return {collapse:{top:-_41["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_40=="south"&&_41.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_41["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _14(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _46(_47){ -var _48=$.data(_47,"layout").panels; -if(_48.east.length&&_48.east.panel("options").collapsed){ -_2f(_47,"east",0); -} -if(_48.west.length&&_48.west.panel("options").collapsed){ -_2f(_47,"west",0); -} -if(_48.north.length&&_48.north.panel("options").collapsed){ -_2f(_47,"north",0); -} -if(_48.south.length&&_48.south.panel("options").collapsed){ -_2f(_47,"south",0); -} -}; -$.fn.layout=function(_49,_4a){ -if(typeof _49=="string"){ -return $.fn.layout.methods[_49](this,_4a); -} -_49=_49||{}; -return this.each(function(){ -var _4b=$.data(this,"layout"); -if(_4b){ -$.extend(_4b.options,_49); -}else{ -var _4c=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_49); -$.data(this,"layout",{options:_4c,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -_15(this); -} -_2(this); -_46(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_2(this); -}); -},panel:function(jq,_4d){ -return $.data(jq[0],"layout").panels[_4d]; -},collapse:function(jq,_4e){ -return jq.each(function(){ -_2f(this,_4e); -}); -},expand:function(jq,_4f){ -return jq.each(function(){ -_3e(this,_4f); -}); -},add:function(jq,_50){ -return jq.each(function(){ -_1b(this,_50); -_2(this); -if($(this).layout("panel",_50.region).panel("options").collapsed){ -_2f(this,_50.region,0); -} -}); -},remove:function(jq,_51){ -return jq.each(function(){ -_2a(this,_51); -_2(this); -}); -}}; -$.fn.layout.parseOptions=function(_52){ -return $.extend({},$.parser.parseOptions(_52,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_53){ -var t=$(_53); -return $.extend({},$.fn.panel.parseOptions(_53),$.parser.parseOptions(_53,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.linkbutton.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.linkbutton.js deleted file mode 100644 index 676dc05..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.linkbutton.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"linkbutton").options; -var t=$(_2); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_3.plain){ -t.addClass("l-btn-plain"); -} -if(_3.selected){ -t.addClass(_3.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_3.group||""); -t.attr("id",_3.id||""); -t.html(""+""+""); -if(_3.text){ -t.find(".l-btn-text").html(_3.text); -if(_3.iconCls){ -t.find(".l-btn-text").addClass(_3.iconCls).addClass(_3.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_3.iconCls){ -t.find(".l-btn-empty").addClass(_3.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_3.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_3.toggle&&!_3.disabled){ -t.bind("click.linkbutton",function(){ -if(_3.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_4(_2,_3.selected); -_5(_2,_3.disabled); -}; -function _4(_6,_7){ -var _8=$.data(_6,"linkbutton").options; -if(_7){ -if(_8.group){ -$("a.l-btn[group=\""+_8.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_6).addClass(_8.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_8.selected=true; -}else{ -if(!_8.group){ -$(_6).removeClass("l-btn-selected l-btn-plain-selected"); -_8.selected=false; -} -} -}; -function _5(_9,_a){ -var _b=$.data(_9,"linkbutton"); -var _c=_b.options; -$(_9).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_a){ -_c.disabled=true; -var _d=$(_9).attr("href"); -if(_d){ -_b.href=_d; -$(_9).attr("href","javascript:void(0)"); -} -if(_9.onclick){ -_b.onclick=_9.onclick; -_9.onclick=null; -} -_c.plain?$(_9).addClass("l-btn-disabled l-btn-plain-disabled"):$(_9).addClass("l-btn-disabled"); -}else{ -_c.disabled=false; -if(_b.href){ -$(_9).attr("href",_b.href); -} -if(_b.onclick){ -_9.onclick=_b.onclick; -} -} -}; -$.fn.linkbutton=function(_e,_f){ -if(typeof _e=="string"){ -return $.fn.linkbutton.methods[_e](this,_f); -} -_e=_e||{}; -return this.each(function(){ -var _10=$.data(this,"linkbutton"); -if(_10){ -$.extend(_10.options,_e); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_e)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_5(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_4(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_4(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_11){ -var t=$(_11); -return $.extend({},$.parser.parseOptions(_11,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.menu.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.menu.js deleted file mode 100644 index 12b0014..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.menu.js +++ /dev/null @@ -1,412 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).appendTo("body"); -$(_2).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _3=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_3); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _4=_5($(_2)); -for(var i=0;i<_4.length;i++){ -_6(_4[i]); -} -function _5(_7){ -var _8=[]; -_7.addClass("menu"); -_8.push(_7); -if(!_7.hasClass("menu-content")){ -_7.children("div").each(function(){ -var _9=$(this).children("div"); -if(_9.length){ -_9.insertAfter(_2); -this.submenu=_9; -var mm=_5(_9); -_8=_8.concat(mm); -} -}); -} -return _8; -}; -function _6(_a){ -var _b=$.parser.parseOptions(_a[0],["width"]).width; -if(_a.hasClass("menu-content")){ -_a[0].originalWidth=_b||_a._outerWidth(); -}else{ -_a[0].originalWidth=_b||0; -_a.children("div").each(function(){ -var _c=$(this); -if(_c.hasClass("menu-sep")){ -}else{ -var _d=$.extend({},$.parser.parseOptions(this,["name","iconCls","href"]),{disabled:(_c.attr("disabled")?true:undefined)}); -_c[0].itemName=_d.name||""; -_c[0].itemHref=_d.href||""; -var _e=_c.addClass("menu-item").html(); -_c.empty().append($("
                                                                                                                            ").html(_e)); -if(_d.iconCls){ -$("
                                                                                                                            ").addClass(_d.iconCls).appendTo(_c); -} -if(_d.disabled){ -_f(_2,_c[0],true); -} -if(_c[0].submenu){ -$("
                                                                                                                            ").appendTo(_c); -} -_10(_2,_c); -} -}); -$("
                                                                                                                            ").prependTo(_a); -} -_11(_2,_a); -_a.hide(); -_12(_2,_a); -}; -}; -function _11(_13,_14){ -var _15=$.data(_13,"menu").options; -var d=_14.css("display"); -_14.css({display:"block",left:-10000}); -var _16=0; -_14.find("div.menu-text").each(function(){ -if(_16<$(this)._outerWidth()){ -_16=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_16+=65; -_14._outerWidth(Math.max((_14[0].originalWidth||0),_16,_15.minWidth)); -_14.css("display",d); -}; -function _12(_17,_18){ -var _19=$.data(_17,"menu"); -_18.unbind(".menu").bind("mouseenter.menu",function(){ -if(_19.timer){ -clearTimeout(_19.timer); -_19.timer=null; -} -}).bind("mouseleave.menu",function(){ -_19.timer=setTimeout(function(){ -_1a(_17); -},100); -}); -}; -function _10(_1b,_1c){ -_1c.unbind(".menu"); -_1c.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_1a(_1b); -var _1d=$(this).attr("href"); -if(_1d){ -location.href=_1d; -} -} -var _1e=$(_1b).menu("getItem",this); -$.data(_1b,"menu").options.onClick.call(_1b,_1e); -}).bind("mouseenter.menu",function(e){ -_1c.siblings().each(function(){ -if(this.submenu){ -_21(this.submenu); -} -$(this).removeClass("menu-active"); -}); -_1c.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -_1c.addClass("menu-active-disabled"); -return; -} -var _1f=_1c[0].submenu; -if(_1f){ -$(_1b).menu("show",{menu:_1f,parent:_1c}); -} -}).bind("mouseleave.menu",function(e){ -_1c.removeClass("menu-active menu-active-disabled"); -var _20=_1c[0].submenu; -if(_20){ -if(e.pageX>=parseInt(_20.css("left"))){ -_1c.addClass("menu-active"); -}else{ -_21(_20); -} -}else{ -_1c.removeClass("menu-active"); -} -}); -}; -function _1a(_22){ -var _23=$.data(_22,"menu"); -if(_23){ -if($(_22).is(":visible")){ -_21($(_22)); -_23.options.onHide.call(_22); -} -} -return false; -}; -function _24(_25,_26){ -var _27,top; -_26=_26||{}; -var _28=$(_26.menu||_25); -if(_28.hasClass("menu-top")){ -var _29=$.data(_25,"menu").options; -$.extend(_29,_26); -_27=_29.left; -top=_29.top; -if(_29.alignTo){ -var at=$(_29.alignTo); -_27=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(_27+_28.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -_27=$(window)._outerWidth()+$(document).scrollLeft()-_28.outerWidth()-5; -} -if(top+_28.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top-=_28.outerHeight(); -} -}else{ -var _2a=_26.parent; -_27=_2a.offset().left+_2a.outerWidth()-2; -if(_27+_28.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -_27=_2a.offset().left-_28.outerWidth()+2; -} -var top=_2a.offset().top-3; -if(top+_28.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-_28.outerHeight()-5; -} -} -_28.css({left:_27,top:top}); -_28.show(0,function(){ -if(!_28[0].shadow){ -_28[0].shadow=$("
                                                                                                                            ").insertAfter(_28); -} -_28[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:_28.css("left"),top:_28.css("top"),width:_28.outerWidth(),height:_28.outerHeight()}); -_28.css("z-index",$.fn.menu.defaults.zIndex++); -if(_28.hasClass("menu-top")){ -$.data(_28[0],"menu").options.onShow.call(_28[0]); -} -}); -}; -function _21(_2b){ -if(!_2b){ -return; -} -_2c(_2b); -_2b.find("div.menu-item").each(function(){ -if(this.submenu){ -_21(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _2c(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _2d(_2e,_2f){ -var _30=null; -var tmp=$("
                                                                                                                            "); -function _31(_32){ -_32.children("div.menu-item").each(function(){ -var _33=$(_2e).menu("getItem",this); -var s=tmp.empty().html(_33.text).text(); -if(_2f==$.trim(s)){ -_30=_33; -}else{ -if(this.submenu&&!_30){ -_31(this.submenu); -} -} -}); -}; -_31($(_2e)); -tmp.remove(); -return _30; -}; -function _f(_34,_35,_36){ -var t=$(_35); -if(_36){ -t.addClass("menu-item-disabled"); -if(_35.onclick){ -_35.onclick1=_35.onclick; -_35.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_35.onclick1){ -_35.onclick=_35.onclick1; -_35.onclick1=null; -} -} -}; -function _37(_38,_39){ -var _3a=$(_38); -if(_39.parent){ -if(!_39.parent.submenu){ -var _3b=$("
                                                                                                                            ").appendTo("body"); -_3b.hide(); -_39.parent.submenu=_3b; -$("
                                                                                                                            ").appendTo(_39.parent); -} -_3a=_39.parent.submenu; -} -var _3c=$("
                                                                                                                            ").appendTo(_3a); -$("
                                                                                                                            ").html(_39.text).appendTo(_3c); -if(_39.iconCls){ -$("
                                                                                                                            ").addClass(_39.iconCls).appendTo(_3c); -} -if(_39.id){ -_3c.attr("id",_39.id); -} -if(_39.name){ -_3c[0].itemName=_39.name; -} -if(_39.href){ -_3c[0].itemHref=_39.href; -} -if(_39.onclick){ -if(typeof _39.onclick=="string"){ -_3c.attr("onclick",_39.onclick); -}else{ -_3c[0].onclick=eval(_39.onclick); -} -} -if(_39.handler){ -_3c[0].onclick=eval(_39.handler); -} -_10(_38,_3c); -if(_39.disabled){ -_f(_38,_3c[0],true); -} -_12(_38,_3a); -_11(_38,_3a); -}; -function _3d(_3e,_3f){ -function _40(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_40(this); -}); -var _41=el.submenu[0].shadow; -if(_41){ -_41.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_40(_3f); -}; -function _42(_43){ -$(_43).children("div.menu-item").each(function(){ -_3d(_43,this); -}); -if(_43.shadow){ -_43.shadow.remove(); -} -$(_43).remove(); -}; -$.fn.menu=function(_44,_45){ -if(typeof _44=="string"){ -return $.fn.menu.methods[_44](this,_45); -} -_44=_44||{}; -return this.each(function(){ -var _46=$.data(this,"menu"); -if(_46){ -$.extend(_46.options,_44); -}else{ -_46=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_44)}); -_1(this); -} -$(this).css({left:_46.options.left,top:_46.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_24(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_1a(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_42(this); -}); -},setText:function(jq,_47){ -return jq.each(function(){ -$(_47.target).children("div.menu-text").html(_47.text); -}); -},setIcon:function(jq,_48){ -return jq.each(function(){ -var _49=$(this).menu("getItem",_48.target); -if(_49.iconCls){ -$(_49.target).children("div.menu-icon").removeClass(_49.iconCls).addClass(_48.iconCls); -}else{ -$("
                                                                                                                            ").addClass(_48.iconCls).appendTo(_48.target); -} -}); -},getItem:function(jq,_4a){ -var t=$(_4a); -var _4b={target:_4a,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_4a.itemName,href:_4a.itemHref,onclick:_4a.onclick}; -var _4c=t.children("div.menu-icon"); -if(_4c.length){ -var cc=[]; -var aa=_4c.attr("class").split(" "); -for(var i=0;i "})); -if(_3.menu){ -$(_3.menu).menu(); -var _5=$(_3.menu).menu("options"); -var _6=_5.onShow; -var _7=_5.onHide; -$.extend(_5,{onShow:function(){ -var _8=$(this).menu("options"); -var _9=$(_8.alignTo); -var _a=_9.menubutton("options"); -_9.addClass((_a.plain==true)?_a.cls.btn2:_a.cls.btn1); -_6.call(this); -},onHide:function(){ -var _b=$(this).menu("options"); -var _c=$(_b.alignTo); -var _d=_c.menubutton("options"); -_c.removeClass((_d.plain==true)?_d.cls.btn2:_d.cls.btn1); -_7.call(this); -}}); -} -_e(_2,_3.disabled); -}; -function _e(_f,_10){ -var _11=$.data(_f,"menubutton").options; -_11.disabled=_10; -var btn=$(_f); -var t=btn.find("."+_11.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_10){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _12=null; -t.bind("click.menubutton",function(){ -_13(_f); -return false; -}).bind("mouseenter.menubutton",function(){ -_12=setTimeout(function(){ -_13(_f); -},_11.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_12){ -clearTimeout(_12); -} -}); -} -}; -function _13(_14){ -var _15=$.data(_14,"menubutton").options; -if(_15.disabled||!_15.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_14); -var mm=$(_15.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_16,_17){ -if(typeof _16=="string"){ -var _18=$.fn.menubutton.methods[_16]; -if(_18){ -return _18(this,_17); -}else{ -return this.linkbutton(_16,_17); -} -} -_16=_16||{}; -return this.each(function(){ -var _19=$.data(this,"menubutton"); -if(_19){ -$.extend(_19.options,_16); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_16)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _1a=jq.linkbutton("options"); -var _1b=$.data(jq[0],"menubutton").options; -_1b.toggle=_1a.toggle; -_1b.selected=_1a.selected; -return _1b; -},enable:function(jq){ -return jq.each(function(){ -_e(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_e(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var _1c=$(this).menubutton("options"); -if(_1c.menu){ -$(_1c.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_1d){ -var t=$(_1d); -return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.messager.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.messager.js deleted file mode 100644 index ef6fad1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.messager.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(el,_2,_3,_4){ -var _5=$(el).window("window"); -if(!_5){ -return; -} -switch(_2){ -case null: -_5.show(); -break; -case "slide": -_5.slideDown(_3); -break; -case "fade": -_5.fadeIn(_3); -break; -case "show": -_5.show(_3); -break; -} -var _6=null; -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -_5.hover(function(){ -if(_6){ -clearTimeout(_6); -} -},function(){ -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -}); -}; -function _7(el,_8,_9){ -if(el.locked==true){ -return; -} -el.locked=true; -var _a=$(el).window("window"); -if(!_a){ -return; -} -switch(_8){ -case null: -_a.hide(); -break; -case "slide": -_a.slideUp(_9); -break; -case "fade": -_a.fadeOut(_9); -break; -case "show": -_a.hide(_9); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_9); -}; -function _b(_c){ -var _d=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -_1(this,_d.showType,_d.showSpeed,_d.timeout); -return false; -},onBeforeClose:function(){ -_7(this,_d.showType,_d.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_c); -_d.style.zIndex=$.fn.window.defaults.zIndex++; -var _e=$("
                                                                                                                            ").html(_d.msg).appendTo("body"); -_e.window(_d); -_e.window("window").css(_d.style); -_e.window("open"); -return _e; -}; -function _f(_10,_11,_12){ -var win=$("
                                                                                                                            ").appendTo("body"); -win.append(_11); -if(_12){ -var tb=$("
                                                                                                                            ").appendTo(win); -for(var _13 in _12){ -$("").attr("href","javascript:void(0)").text(_13).css("margin-left",10).bind("click",eval(_12[_13])).appendTo(tb).linkbutton(); -} -} -win.window({title:_10,noheader:(_10?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_14){ -return _b(_14); -},alert:function(_15,msg,_16,fn){ -var _17="
                                                                                                                            "+msg+"
                                                                                                                            "; -switch(_16){ -case "error": -_17="
                                                                                                                            "+_17; -break; -case "info": -_17="
                                                                                                                            "+_17; -break; -case "question": -_17="
                                                                                                                            "+_17; -break; -case "warning": -_17="
                                                                                                                            "+_17; -break; -} -_17+="
                                                                                                                            "; -var _18={}; -_18[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_15,_17,_18); -return win; -},confirm:function(_19,msg,fn){ -var _1a="
                                                                                                                            "+"
                                                                                                                            "+msg+"
                                                                                                                            "+"
                                                                                                                            "; -var _1b={}; -_1b[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_1b[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_f(_19,_1a,_1b); -return win; -},prompt:function(_1c,msg,fn){ -var _1d="
                                                                                                                            "+"
                                                                                                                            "+msg+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "; -var _1e={}; -_1e[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_1e[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_1c,_1d,_1e); -win.children("input.messager-input").focus(); -return win; -},progress:function(_1f){ -var _20={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _1f=="string"){ -var _21=_20[_1f]; -return _21(); -} -var _22=$.extend({title:"",msg:"",text:undefined,interval:300},_1f||{}); -var _23="
                                                                                                                            "; -var win=_f(_22.title,_23,null); -win.find("div.messager-p-msg").html(_22.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:_22.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(_22.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},_22.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.numberbox.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.numberbox.js deleted file mode 100644 index d8dd192..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.numberbox.js +++ /dev/null @@ -1,224 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberbox-f"); -var v=$("").insertAfter(_2); -var _3=$(_2).attr("name"); -if(_3){ -v.attr("name",_3); -$(_2).removeAttr("name").attr("numberboxName",_3); -} -return v; -}; -function _4(_5){ -var _6=$.data(_5,"numberbox").options; -var fn=_6.onChange; -_6.onChange=function(){ -}; -_7(_5,_6.parser.call(_5,_6.value)); -_6.onChange=fn; -_6.originalValue=_8(_5); -}; -function _8(_9){ -return $.data(_9,"numberbox").field.val(); -}; -function _7(_a,_b){ -var _c=$.data(_a,"numberbox"); -var _d=_c.options; -var _e=_8(_a); -_b=_d.parser.call(_a,_b); -_d.value=_b; -_c.field.val(_b); -$(_a).val(_d.formatter.call(_a,_b)); -if(_e!=_b){ -_d.onChange.call(_a,_b,_e); -} -}; -function _f(_10){ -var _11=$.data(_10,"numberbox").options; -$(_10).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return _11.filter.call(_10,e); -}).bind("blur.numberbox",function(){ -_7(_10,$(this).val()); -$(this).val(_11.formatter.call(_10,_8(_10))); -}).bind("focus.numberbox",function(){ -var vv=_8(_10); -if(vv!=_11.parser.call(_10,$(this).val())){ -$(this).val(_11.formatter.call(_10,vv)); -} -}); -}; -function _12(_13){ -if($.fn.validatebox){ -var _14=$.data(_13,"numberbox").options; -$(_13).validatebox(_14); -} -}; -function _15(_16,_17){ -var _18=$.data(_16,"numberbox").options; -if(_17){ -_18.disabled=true; -$(_16).attr("disabled",true); -}else{ -_18.disabled=false; -$(_16).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_19,_1a){ -if(typeof _19=="string"){ -var _1b=$.fn.numberbox.methods[_19]; -if(_1b){ -return _1b(this,_1a); -}else{ -return this.validatebox(_19,_1a); -} -} -_19=_19||{}; -return this.each(function(){ -var _1c=$.data(this,"numberbox"); -if(_1c){ -$.extend(_1c.options,_19); -}else{ -_1c=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_19),field:_1(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_15(this,_1c.options.disabled); -_f(this); -_12(this); -_4(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_15(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_15(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_7(this,$(this).val()); -}); -},setValue:function(jq,_1d){ -return jq.each(function(){ -_7(this,_1d); -}); -},getValue:function(jq){ -return _8(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _1e=$.data(this,"numberbox"); -_1e.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1f=$(this).numberbox("options"); -$(this).numberbox("setValue",_1f.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_20){ -var t=$(_20); -return $.extend({},$.fn.validatebox.parseOptions(_20),$.parser.parseOptions(_20,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var _21=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==_21.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==_21.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_22){ -if(!_22){ -return _22; -} -_22=_22+""; -var _23=$(this).numberbox("options"); -var s1=_22,s2=""; -var _24=_22.indexOf("."); -if(_24>=0){ -s1=_22.substring(0,_24); -s2=_22.substring(_24+1,_22.length); -} -if(_23.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+_23.groupSeparator+"$2"); -} -} -if(s2){ -return _23.prefix+s1+_23.decimalSeparator+s2+_23.suffix; -}else{ -return _23.prefix+s1+_23.suffix; -} -},parser:function(s){ -s=s+""; -var _25=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(_25.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.prefix),"g"),"")); -} -if(_25.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.suffix),"g"),"")); -} -if(_25.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.groupSeparator,"g"),"")); -} -if(_25.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(_25.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (_25.min)=="number"&&val<_25.min){ -val=_25.min.toFixed(_25.precision); -}else{ -if(typeof (_25.max)=="number"&&val>_25.max){ -val=_25.max.toFixed(_25.precision); -} -} -} -return val; -},onChange:function(_26,_27){ -}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.numberspinner.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.numberspinner.js deleted file mode 100644 index 8674f97..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.numberspinner.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberspinner-f"); -var _3=$.data(_2,"numberspinner").options; -$(_2).spinner(_3).numberbox(_3); -}; -function _4(_5,_6){ -var _7=$.data(_5,"numberspinner").options; -var v=parseFloat($(_5).numberbox("getValue")||_7.value)||0; -if(_6==true){ -v-=_7.increment; -}else{ -v+=_7.increment; -} -$(_5).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.numberspinner.methods[_8]; -if(_a){ -return _a(this,_9); -}else{ -return this.spinner(_8,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"numberspinner"); -if(_b){ -$.extend(_b.options,_8); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_8)}); -} -_1(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var _c=$.data(jq[0],"numberspinner").options; -return $.extend(_c,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_d){ -return jq.each(function(){ -$(this).numberbox("setValue",_d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var _e=$(this).numberspinner("options"); -$(this).numberspinner("setValue",_e.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_f){ -return $.extend({},$.fn.spinner.parseOptions(_f),$.fn.numberbox.parseOptions(_f),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(_10){ -_4(this,_10); -}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.pagination.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.pagination.js deleted file mode 100644 index 22f43b3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.pagination.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"pagination"); -var _4=_3.options; -var bb=_3.bb={}; -var _5=$(_2).addClass("pagination").html("
                                                                                                                            "); -var tr=_5.find("tr"); -function _6(_7){ -var _8=_4.nav[_7]; -var a=$("").appendTo(tr); -a.wrap(""); -a.linkbutton({iconCls:_8.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -_8.handler.call(_2); -}); -return a; -}; -if(_4.showPageList){ -var ps=$(""); -ps.bind("change",function(){ -_4.pageSize=parseInt($(this).val()); -_4.onChangePageSize.call(_2,_4.pageSize); -_b(_2,_4.pageNumber); -}); -for(var i=0;i<_4.pageList.length;i++){ -$("").text(_4.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -$("
                                                                                                                            ").appendTo(tr); -} -bb.first=_6("first"); -bb.prev=_6("prev"); -$("
                                                                                                                            ").appendTo(tr); -$("").html(_4.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _9=parseInt($(this).val())||1; -_b(_2,_9); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -$("
                                                                                                                            ").appendTo(tr); -bb.next=_6("next"); -bb.last=_6("last"); -if(_4.showRefresh){ -$("
                                                                                                                            ").appendTo(tr); -bb.refresh=_6("refresh"); -} -if(_4.buttons){ -$("
                                                                                                                            ").appendTo(tr); -if($.isArray(_4.buttons)){ -for(var i=0;i<_4.buttons.length;i++){ -var _a=_4.buttons[i]; -if(_a=="-"){ -$("
                                                                                                                            ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(_a.handler||function(){ -}); -a.linkbutton($.extend({},_a,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_4.buttons).appendTo(td).show(); -} -} -$("
                                                                                                                            ").appendTo(_5); -$("
                                                                                                                            ").appendTo(_5); -}; -function _b(_c,_d){ -var _e=$.data(_c,"pagination").options; -_f(_c,{pageNumber:_d}); -_e.onSelectPage.call(_c,_e.pageNumber,_e.pageSize); -}; -function _f(_10,_11){ -var _12=$.data(_10,"pagination"); -var _13=_12.options; -var bb=_12.bb; -$.extend(_13,_11||{}); -var ps=$(_10).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_13.pageSize+""); -_13.pageSize=parseInt(ps.val()); -} -var _14=Math.ceil(_13.total/_13.pageSize)||1; -if(_13.pageNumber<1){ -_13.pageNumber=1; -} -if(_13.pageNumber>_14){ -_13.pageNumber=_14; -} -bb.num.val(_13.pageNumber); -bb.after.html(_13.afterPageText.replace(/{pages}/,_14)); -var _15=_13.displayMsg; -_15=_15.replace(/{from}/,_13.total==0?0:_13.pageSize*(_13.pageNumber-1)+1); -_15=_15.replace(/{to}/,Math.min(_13.pageSize*(_13.pageNumber),_13.total)); -_15=_15.replace(/{total}/,_13.total); -$(_10).find("div.pagination-info").html(_15); -bb.first.add(bb.prev).linkbutton({disabled:(_13.pageNumber==1)}); -bb.next.add(bb.last).linkbutton({disabled:(_13.pageNumber==_14)}); -_16(_10,_13.loading); -}; -function _16(_17,_18){ -var _19=$.data(_17,"pagination"); -var _1a=_19.options; -var bb=_19.bb; -_1a.loading=_18; -if(_1a.showRefresh){ -_19.bb.refresh.linkbutton({iconCls:(_1a.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_1b,_1c){ -if(typeof _1b=="string"){ -return $.fn.pagination.methods[_1b](this,_1c); -} -_1b=_1b||{}; -return this.each(function(){ -var _1d; -var _1e=$.data(this,"pagination"); -if(_1e){ -_1d=$.extend(_1e.options,_1b); -}else{ -_1d=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_1b); -$.data(this,"pagination",{options:_1d}); -} -_1(this); -_f(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_16(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_16(this,false); -}); -},refresh:function(jq,_1f){ -return jq.each(function(){ -_f(this,_1f); -}); -},select:function(jq,_20){ -return jq.each(function(){ -_b(this,_20); -}); -}}; -$.fn.pagination.parseOptions=function(_21){ -var t=$(_21); -return $.extend({},$.parser.parseOptions(_21,[{total:"number",pageSize:"number",pageNumber:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,onSelectPage:function(_22,_23){ -},onBeforeRefresh:function(_24,_25){ -},onRefresh:function(_26,_27){ -},onChangePageSize:function(_28){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _29=$(this).pagination("options"); -if(_29.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _2a=$(this).pagination("options"); -if(_2a.pageNumber>1){ -$(this).pagination("select",_2a.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _2b=$(this).pagination("options"); -var _2c=Math.ceil(_2b.total/_2b.pageSize); -if(_2b.pageNumber<_2c){ -$(this).pagination("select",_2b.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _2d=$(this).pagination("options"); -var _2e=Math.ceil(_2d.total/_2d.pageSize); -if(_2d.pageNumber<_2e){ -$(this).pagination("select",_2e); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _2f=$(this).pagination("options"); -if(_2f.onBeforeRefresh.call(this,_2f.pageNumber,_2f.pageSize)!=false){ -$(this).pagination("select",_2f.pageNumber); -_2f.onRefresh.call(this,_2f.pageNumber,_2f.pageSize); -} -}}}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.panel.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.panel.js deleted file mode 100644 index bf5b872..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.panel.js +++ /dev/null @@ -1,529 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1(_2){ -_2._remove(); -}; -function _3(_4,_5){ -var _6=$.data(_4,"panel").options; -var _7=$.data(_4,"panel").panel; -var _8=_7.children("div.panel-header"); -var _9=_7.children("div.panel-body"); -if(_5){ -if(_5.width){ -_6.width=_5.width; -} -if(_5.height){ -_6.height=_5.height; -} -if(_5.left!=null){ -_6.left=_5.left; -} -if(_5.top!=null){ -_6.top=_5.top; -} -} -_6.fit?$.extend(_6,_7._fit()):_7._fit(false); -_7.css({left:_6.left,top:_6.top}); -if(!isNaN(_6.width)){ -_7._outerWidth(_6.width); -}else{ -_7.width("auto"); -} -_8.add(_9)._outerWidth(_7.width()); -if(!isNaN(_6.height)){ -_7._outerHeight(_6.height); -_9._outerHeight(_7.height()-_8._outerHeight()); -}else{ -_9.height("auto"); -} -_7.css("height",""); -_6.onResize.apply(_4,[_6.width,_6.height]); -_7.find(">div.panel-body>div").triggerHandler("_resize"); -}; -function _a(_b,_c){ -var _d=$.data(_b,"panel").options; -var _e=$.data(_b,"panel").panel; -if(_c){ -if(_c.left!=null){ -_d.left=_c.left; -} -if(_c.top!=null){ -_d.top=_c.top; -} -} -_e.css({left:_d.left,top:_d.top}); -_d.onMove.apply(_b,[_d.left,_d.top]); -}; -function _f(_10){ -$(_10).addClass("panel-body"); -var _11=$("
                                                                                                                            ").insertBefore(_10); -_11[0].appendChild(_10); -_11.bind("_resize",function(){ -var _12=$.data(_10,"panel").options; -if(_12.fit==true){ -_3(_10); -} -return false; -}); -return _11; -}; -function _13(_14){ -var _15=$.data(_14,"panel").options; -var _16=$.data(_14,"panel").panel; -if(_15.tools&&typeof _15.tools=="string"){ -_16.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(_15.tools); -} -_1(_16.children("div.panel-header")); -if(_15.title&&!_15.noheader){ -var _17=$("
                                                                                                                            "+_15.title+"
                                                                                                                            ").prependTo(_16); -if(_15.iconCls){ -_17.find(".panel-title").addClass("panel-with-icon"); -$("
                                                                                                                            ").addClass(_15.iconCls).appendTo(_17); -} -var _18=$("
                                                                                                                            ").appendTo(_17); -_18.bind("click",function(e){ -e.stopPropagation(); -}); -if(_15.tools){ -if(typeof _15.tools=="string"){ -$(_15.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_18); -}); -}else{ -for(var i=0;i<_15.tools.length;i++){ -var t=$("").addClass(_15.tools[i].iconCls).appendTo(_18); -if(_15.tools[i].handler){ -t.bind("click",eval(_15.tools[i].handler)); -} -} -} -} -if(_15.collapsible){ -$("").appendTo(_18).bind("click",function(){ -if(_15.collapsed==true){ -_3c(_14,true); -}else{ -_2c(_14,true); -} -return false; -}); -} -if(_15.minimizable){ -$("").appendTo(_18).bind("click",function(){ -_47(_14); -return false; -}); -} -if(_15.maximizable){ -$("").appendTo(_18).bind("click",function(){ -if(_15.maximized==true){ -_4b(_14); -}else{ -_2b(_14); -} -return false; -}); -} -if(_15.closable){ -$("").appendTo(_18).bind("click",function(){ -_19(_14); -return false; -}); -} -_16.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_16.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1a(_1b){ -var _1c=$.data(_1b,"panel"); -var _1d=_1c.options; -if(_1d.href){ -if(!_1c.isLoaded||!_1d.cache){ -if(_1d.onBeforeLoad.call(_1b)==false){ -return; -} -_1c.isLoaded=false; -_1e(_1b); -if(_1d.loadingMessage){ -$(_1b).html($("
                                                                                                                            ").html(_1d.loadingMessage)); -} -$.ajax({url:_1d.href,cache:false,dataType:"html",success:function(_1f){ -_20(_1d.extractor.call(_1b,_1f)); -_1d.onLoad.apply(_1b,arguments); -_1c.isLoaded=true; -}}); -} -}else{ -if(_1d.content){ -if(!_1c.isLoaded){ -_1e(_1b); -_20(_1d.content); -_1c.isLoaded=true; -} -} -} -function _20(_21){ -$(_1b).html(_21); -if($.parser){ -$.parser.parse($(_1b)); -} -}; -}; -function _1e(_22){ -var t=$(_22); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").tooltip("destroy"); -}; -function _23(_24){ -$(_24).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _25(_26,_27){ -var _28=$.data(_26,"panel").options; -var _29=$.data(_26,"panel").panel; -if(_27!=true){ -if(_28.onBeforeOpen.call(_26)==false){ -return; -} -} -_29.show(); -_28.closed=false; -_28.minimized=false; -var _2a=_29.children("div.panel-header").find("a.panel-tool-restore"); -if(_2a.length){ -_28.maximized=true; -} -_28.onOpen.call(_26); -if(_28.maximized==true){ -_28.maximized=false; -_2b(_26); -} -if(_28.collapsed==true){ -_28.collapsed=false; -_2c(_26); -} -if(!_28.collapsed){ -_1a(_26); -_23(_26); -} -}; -function _19(_2d,_2e){ -var _2f=$.data(_2d,"panel").options; -var _30=$.data(_2d,"panel").panel; -if(_2e!=true){ -if(_2f.onBeforeClose.call(_2d)==false){ -return; -} -} -_30._fit(false); -_30.hide(); -_2f.closed=true; -_2f.onClose.call(_2d); -}; -function _31(_32,_33){ -var _34=$.data(_32,"panel").options; -var _35=$.data(_32,"panel").panel; -if(_33!=true){ -if(_34.onBeforeDestroy.call(_32)==false){ -return; -} -} -_1e(_32); -_1(_35); -_34.onDestroy.call(_32); -}; -function _2c(_36,_37){ -var _38=$.data(_36,"panel").options; -var _39=$.data(_36,"panel").panel; -var _3a=_39.children("div.panel-body"); -var _3b=_39.children("div.panel-header").find("a.panel-tool-collapse"); -if(_38.collapsed==true){ -return; -} -_3a.stop(true,true); -if(_38.onBeforeCollapse.call(_36)==false){ -return; -} -_3b.addClass("panel-tool-expand"); -if(_37==true){ -_3a.slideUp("normal",function(){ -_38.collapsed=true; -_38.onCollapse.call(_36); -}); -}else{ -_3a.hide(); -_38.collapsed=true; -_38.onCollapse.call(_36); -} -}; -function _3c(_3d,_3e){ -var _3f=$.data(_3d,"panel").options; -var _40=$.data(_3d,"panel").panel; -var _41=_40.children("div.panel-body"); -var _42=_40.children("div.panel-header").find("a.panel-tool-collapse"); -if(_3f.collapsed==false){ -return; -} -_41.stop(true,true); -if(_3f.onBeforeExpand.call(_3d)==false){ -return; -} -_42.removeClass("panel-tool-expand"); -if(_3e==true){ -_41.slideDown("normal",function(){ -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -}); -}else{ -_41.show(); -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -} -}; -function _2b(_43){ -var _44=$.data(_43,"panel").options; -var _45=$.data(_43,"panel").panel; -var _46=_45.children("div.panel-header").find("a.panel-tool-max"); -if(_44.maximized==true){ -return; -} -_46.addClass("panel-tool-restore"); -if(!$.data(_43,"panel").original){ -$.data(_43,"panel").original={width:_44.width,height:_44.height,left:_44.left,top:_44.top,fit:_44.fit}; -} -_44.left=0; -_44.top=0; -_44.fit=true; -_3(_43); -_44.minimized=false; -_44.maximized=true; -_44.onMaximize.call(_43); -}; -function _47(_48){ -var _49=$.data(_48,"panel").options; -var _4a=$.data(_48,"panel").panel; -_4a._fit(false); -_4a.hide(); -_49.minimized=true; -_49.maximized=false; -_49.onMinimize.call(_48); -}; -function _4b(_4c){ -var _4d=$.data(_4c,"panel").options; -var _4e=$.data(_4c,"panel").panel; -var _4f=_4e.children("div.panel-header").find("a.panel-tool-max"); -if(_4d.maximized==false){ -return; -} -_4e.show(); -_4f.removeClass("panel-tool-restore"); -$.extend(_4d,$.data(_4c,"panel").original); -_3(_4c); -_4d.minimized=false; -_4d.maximized=false; -$.data(_4c,"panel").original=null; -_4d.onRestore.call(_4c); -}; -function _50(_51){ -var _52=$.data(_51,"panel").options; -var _53=$.data(_51,"panel").panel; -var _54=$(_51).panel("header"); -var _55=$(_51).panel("body"); -_53.css(_52.style); -_53.addClass(_52.cls); -if(_52.border){ -_54.removeClass("panel-header-noborder"); -_55.removeClass("panel-body-noborder"); -}else{ -_54.addClass("panel-header-noborder"); -_55.addClass("panel-body-noborder"); -} -_54.addClass(_52.headerCls); -_55.addClass(_52.bodyCls); -if(_52.id){ -$(_51).attr("id",_52.id); -}else{ -$(_51).attr("id",""); -} -}; -function _56(_57,_58){ -$.data(_57,"panel").options.title=_58; -$(_57).panel("header").find("div.panel-title").html(_58); -}; -var TO=false; -var _59=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_59){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_59=false; -var _5a=$("body.layout"); -if(_5a.length){ -_5a.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_59=true; -TO=false; -},200); -}); -$.fn.panel=function(_5b,_5c){ -if(typeof _5b=="string"){ -return $.fn.panel.methods[_5b](this,_5c); -} -_5b=_5b||{}; -return this.each(function(){ -var _5d=$.data(this,"panel"); -var _5e; -if(_5d){ -_5e=$.extend(_5d.options,_5b); -_5d.isLoaded=false; -}else{ -_5e=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_5b); -$(this).attr("title",""); -_5d=$.data(this,"panel",{options:_5e,panel:_f(this),isLoaded:false}); -} -_13(this); -_50(this); -if(_5e.doSize==true){ -_5d.panel.css("display","block"); -_3(this); -} -if(_5e.closed==true||_5e.minimized==true){ -_5d.panel.hide(); -}else{ -_25(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_5f){ -return jq.each(function(){ -_56(this,_5f); -}); -},open:function(jq,_60){ -return jq.each(function(){ -_25(this,_60); -}); -},close:function(jq,_61){ -return jq.each(function(){ -_19(this,_61); -}); -},destroy:function(jq,_62){ -return jq.each(function(){ -_31(this,_62); -}); -},refresh:function(jq,_63){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(_63){ -$.data(this,"panel").options.href=_63; -} -_1a(this); -}); -},resize:function(jq,_64){ -return jq.each(function(){ -_3(this,_64); -}); -},move:function(jq,_65){ -return jq.each(function(){ -_a(this,_65); -}); -},maximize:function(jq){ -return jq.each(function(){ -_2b(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_47(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_4b(this); -}); -},collapse:function(jq,_66){ -return jq.each(function(){ -_2c(this,_66); -}); -},expand:function(jq,_67){ -return jq.each(function(){ -_3c(this,_67); -}); -}}; -$.fn.panel.parseOptions=function(_68){ -var t=$(_68); -return $.extend({},$.parser.parseOptions(_68,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(_69){ -var _6a=/]*>((.|[\n\r])*)<\/body>/im; -var _6b=_6a.exec(_69); -if(_6b){ -return _6b[1]; -}else{ -return _69; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_6c,_6d){ -},onMove:function(_6e,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.parser.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.parser.js deleted file mode 100644 index 78f61ac..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.parser.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.parser={auto:true,onComplete:function(_1){ -},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","combobox","combotree","combogrid","numberbox","validatebox","searchbox","numberspinner","timespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","tabs","accordion","window","dialog"],parse:function(_2){ -var aa=[]; -for(var i=0;i<$.parser.plugins.length;i++){ -var _3=$.parser.plugins[i]; -var r=$(".easyui-"+_3,_2); -if(r.length){ -if(r[_3]){ -r[_3](); -}else{ -aa.push({name:_3,jq:r}); -} -} -} -if(aa.length&&window.easyloader){ -var _4=[]; -for(var i=0;i
                                                                                                                            ").appendTo("body"); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.progressbar.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.progressbar.js deleted file mode 100644 index 0693d53..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.progressbar.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("progressbar"); -$(_2).html("
                                                                                                                            "); -return $(_2); -}; -function _3(_4,_5){ -var _6=$.data(_4,"progressbar").options; -var _7=$.data(_4,"progressbar").bar; -if(_5){ -_6.width=_5; -} -_7._outerWidth(_6.width)._outerHeight(_6.height); -_7.find("div.progressbar-text").width(_7.width()); -_7.find("div.progressbar-text,div.progressbar-value").css({height:_7.height()+"px",lineHeight:_7.height()+"px"}); -}; -$.fn.progressbar=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.progressbar.methods[_8]; -if(_a){ -return _a(this,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"progressbar"); -if(_b){ -$.extend(_b.options,_8); -}else{ -_b=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_8),bar:_1(this)}); -} -$(this).progressbar("setValue",_b.options.value); -_3(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_c){ -return jq.each(function(){ -_3(this,_c); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_d){ -if(_d<0){ -_d=0; -} -if(_d>100){ -_d=100; -} -return jq.each(function(){ -var _e=$.data(this,"progressbar").options; -var _f=_e.text.replace(/{value}/,_d); -var _10=_e.value; -_e.value=_d; -$(this).find("div.progressbar-value").width(_d+"%"); -$(this).find("div.progressbar-text").html(_f); -if(_10!=_d){ -_e.onChange.call(this,_d,_10); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_11){ -return $.extend({},$.parser.parseOptions(_11,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_12,_13){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.propertygrid.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.propertygrid.js deleted file mode 100644 index 2df4863..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.propertygrid.js +++ /dev/null @@ -1,225 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -var _1; -function _2(_3){ -var _4=$.data(_3,"propertygrid"); -var _5=$.data(_3,"propertygrid").options; -$(_3).datagrid($.extend({},_5,{cls:"propertygrid",view:(_5.showGroup?_6:undefined),onClickRow:function(_7,_8){ -if(_1!=this){ -_c(_1); -_1=this; -} -if(_5.editIndex!=_7&&_8.editor){ -var _9=$(this).datagrid("getColumnOption","value"); -_9.editor=_8.editor; -_c(_1); -$(this).datagrid("beginEdit",_7); -$(this).datagrid("getEditors",_7)[0].target.focus(); -_5.editIndex=_7; -} -_5.onClickRow.call(_3,_7,_8); -},loadFilter:function(_a){ -_c(this); -return _5.loadFilter.call(this,_a); -},onLoadSuccess:function(_b){ -$(_3).datagrid("getPanel").find("div.datagrid-group").attr("style",""); -_5.onLoadSuccess.call(_3,_b); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_c(_1); -_1=undefined; -}); -}; -function _c(_d){ -var t=$(_d); -if(!t.length){ -return; -} -var _e=$.data(_d,"propertygrid").options; -var _f=_e.editIndex; -if(_f==undefined){ -return; -} -var ed=t.datagrid("getEditors",_f)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_f)){ -t.datagrid("endEdit",_f); -}else{ -t.datagrid("cancelEdit",_f); -} -} -_e.editIndex=undefined; -}; -$.fn.propertygrid=function(_10,_11){ -if(typeof _10=="string"){ -var _12=$.fn.propertygrid.methods[_10]; -if(_12){ -return _12(this,_11); -}else{ -return this.datagrid(_10,_11); -} -} -_10=_10||{}; -return this.each(function(){ -var _13=$.data(this,"propertygrid"); -if(_13){ -$.extend(_13.options,_10); -}else{ -var _14=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_10); -_14.frozenColumns=$.extend(true,[],_14.frozenColumns); -_14.columns=$.extend(true,[],_14.columns); -$.data(this,"propertygrid",{options:_14}); -} -_2(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_15){ -var t=$(_15); -return $.extend({},$.fn.datagrid.parseOptions(_15),$.parser.parseOptions(_15,[{showGroup:"boolean"}])); -}; -var _6=$.extend({},$.fn.datagrid.defaults.view,{render:function(_16,_17,_18){ -var _19=$.data(_16,"datagrid"); -var _1a=_19.options; -var _1b=_19.data.rows; -var _1c=$(_16).datagrid("getColumnFields",_18); -var _1d=[]; -var _1e=0; -var _1f=this.groups; -for(var i=0;i<_1f.length;i++){ -var _20=_1f[i]; -_1d.push("
                                                                                                                            "); -_1d.push(""); -_1d.push(""); -_1d.push(""); -_1d.push(""); -_1d.push("
                                                                                                                            "); -if(!_18){ -_1d.push(""); -_1d.push(_1a.groupFormatter.call(_16,_20.fvalue,_20.rows)); -_1d.push(""); -} -_1d.push("
                                                                                                                            "); -_1d.push("
                                                                                                                            "); -_1d.push(""); -for(var j=0;j<_20.rows.length;j++){ -var cls=(_1e%2&&_1a.striped)?"class=\"datagrid-row datagrid-row-alt\"":"class=\"datagrid-row\""; -var _21=_1a.rowStyler?_1a.rowStyler.call(_16,_1e,_20.rows[j]):""; -var _22=_21?"style=\""+_21+"\"":""; -var _23=_19.rowIdPrefix+"-"+(_18?1:2)+"-"+_1e; -_1d.push(""); -_1d.push(this.renderRow.call(this,_16,_1c,_18,_1e,_20.rows[j])); -_1d.push(""); -_1e++; -} -_1d.push("
                                                                                                                            "); -} -$(_17).html(_1d.join("")); -},onAfterRender:function(_24){ -var _25=$.data(_24,"datagrid").options; -var dc=$.data(_24,"datagrid").dc; -var _26=dc.view; -var _27=dc.view1; -var _28=dc.view2; -$.fn.datagrid.defaults.view.onAfterRender.call(this,_24); -if(_25.rownumbers||_25.frozenColumns.length){ -var _29=_27.find("div.datagrid-group"); -}else{ -var _29=_28.find("div.datagrid-group"); -} -$(" ").insertBefore(_29.find("td")); -_26.find("div.datagrid-group").each(function(){ -var _2a=$(this).attr("group-index"); -$(this).find("span.datagrid-row-expander").bind("click",{groupIndex:_2a},function(e){ -if($(this).hasClass("datagrid-row-collapse")){ -$(_24).datagrid("collapseGroup",e.data.groupIndex); -}else{ -$(_24).datagrid("expandGroup",e.data.groupIndex); -} -}); -}); -},onBeforeRender:function(_2b,_2c){ -var _2d=$.data(_2b,"datagrid").options; -var _2e=[]; -for(var i=0;i<_2c.length;i++){ -var row=_2c[i]; -var _2f=_30(row[_2d.groupField]); -if(!_2f){ -_2f={fvalue:row[_2d.groupField],rows:[row],startRow:i}; -_2e.push(_2f); -}else{ -_2f.rows.push(row); -} -} -function _30(_31){ -for(var i=0;i<_2e.length;i++){ -var _32=_2e[i]; -if(_32.fvalue==_31){ -return _32; -} -} -return null; -}; -this.groups=_2e; -var _33=[]; -for(var i=0;i<_2e.length;i++){ -var _2f=_2e[i]; -for(var j=0;j<_2f.rows.length;j++){ -_33.push(_2f.rows[j]); -} -} -$.data(_2b,"datagrid").data.rows=_33; -}}); -$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_34){ -return jq.each(function(){ -var _35=$.data(this,"datagrid").dc.view; -if(_34!=undefined){ -var _36=_35.find("div.datagrid-group[group-index=\""+_34+"\"]"); -}else{ -var _36=_35.find("div.datagrid-group"); -} -var _37=_36.find("span.datagrid-row-expander"); -if(_37.hasClass("datagrid-row-expand")){ -_37.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); -_36.next("table").show(); -} -$(this).datagrid("fixRowHeight"); -}); -},collapseGroup:function(jq,_38){ -return jq.each(function(){ -var _39=$.data(this,"datagrid").dc.view; -if(_38!=undefined){ -var _3a=_39.find("div.datagrid-group[group-index=\""+_38+"\"]"); -}else{ -var _3a=_39.find("div.datagrid-group"); -} -var _3b=_3a.find("span.datagrid-row-expander"); -if(_3b.hasClass("datagrid-row-collapse")){ -_3b.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); -_3a.next("table").hide(); -} -$(this).datagrid("fixRowHeight"); -}); -}}); -$.fn.propertygrid.defaults=$.extend({},$.fn.datagrid.defaults,{singleSelect:true,remoteSort:false,fitColumns:true,loadMsg:"",frozenColumns:[[{field:"f",width:16,resizable:false}]],columns:[[{field:"name",title:"Name",width:100,sortable:true},{field:"value",title:"Value",width:100,resizable:false}]],showGroup:false,groupField:"group",groupFormatter:function(_3c,_3d){ -return _3c; -}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.resizable.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.resizable.js deleted file mode 100644 index e5b820d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.resizable.js +++ /dev/null @@ -1,172 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn.resizable=function(_1,_2){ -if(typeof _1=="string"){ -return $.fn.resizable.methods[_1](this,_2); -} -function _3(e){ -var _4=e.data; -var _5=$.data(_4.target,"resizable").options; -if(_4.dir.indexOf("e")!=-1){ -var _6=_4.startWidth+e.pageX-_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -} -if(_4.dir.indexOf("s")!=-1){ -var _7=_4.startHeight+e.pageY-_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -} -if(_4.dir.indexOf("w")!=-1){ -var _6=_4.startWidth-e.pageX+_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -_4.left=_4.startLeft+_4.startWidth-_4.width; -} -if(_4.dir.indexOf("n")!=-1){ -var _7=_4.startHeight-e.pageY+_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -_4.top=_4.startTop+_4.startHeight-_4.height; -} -}; -function _8(e){ -var _9=e.data; -var t=$(_9.target); -t.css({left:_9.left,top:_9.top}); -if(t.outerWidth()!=_9.width){ -t._outerWidth(_9.width); -} -if(t.outerHeight()!=_9.height){ -t._outerHeight(_9.height); -} -}; -function _a(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _b(e){ -_3(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_8(e); -} -return false; -}; -function _c(e){ -$.fn.resizable.isResizing=false; -_3(e,true); -_8(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _d=null; -var _e=$.data(this,"resizable"); -if(_e){ -$(this).unbind(".resizable"); -_d=$.extend(_e.options,_1||{}); -}else{ -_d=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_1||{}); -$.data(this,"resizable",{options:_d}); -} -if(_d.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var _f=_10(e); -if(_f==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",_f+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_10(e); -if(dir==""){ -return; -} -function _11(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _12={target:e.data.target,dir:dir,startLeft:_11("left"),startTop:_11("top"),left:_11("left"),top:_11("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_12,_a); -$(document).bind("mousemove.resizable",_12,_b); -$(document).bind("mouseup.resizable",_12,_c); -$("body").css("cursor",dir+"-resize"); -}); -function _10(e){ -var tt=$(e.data.target); -var dir=""; -var _13=tt.offset(); -var _14=tt.outerWidth(); -var _15=tt.outerHeight(); -var _16=_d.edge; -if(e.pageY>_13.top&&e.pageY<_13.top+_16){ -dir+="n"; -}else{ -if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){ -dir+="s"; -} -} -if(e.pageX>_13.left&&e.pageX<_13.left+_16){ -dir+="w"; -}else{ -if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){ -dir+="e"; -} -} -var _17=_d.handles.split(","); -for(var i=0;i<_17.length;i++){ -var _18=_17[i].replace(/(^\s*)|(\s*$)/g,""); -if(_18=="all"||_18==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_19){ -var t=$(_19); -return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.searchbox.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.searchbox.js deleted file mode 100644 index d2d6091..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.searchbox.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).hide(); -var _3=$("").insertAfter(_2); -var _4=$("").appendTo(_3); -$("").appendTo(_3); -var _5=$(_2).attr("name"); -if(_5){ -_4.attr("name",_5); -$(_2).removeAttr("name").attr("searchboxName",_5); -} -return _3; -}; -function _6(_7,_8){ -var _9=$.data(_7,"searchbox").options; -var sb=$.data(_7,"searchbox").searchbox; -if(_8){ -_9.width=_8; -} -sb.appendTo("body"); -if(isNaN(_9.width)){ -_9.width=sb._outerWidth(); -} -var _a=sb.find("span.searchbox-button"); -var _b=sb.find("a.searchbox-menu"); -var _c=sb.find("input.searchbox-text"); -sb._outerWidth(_9.width)._outerHeight(_9.height); -_c._outerWidth(sb.width()-_b._outerWidth()-_a._outerWidth()); -_c.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -_b._outerHeight(sb.height()); -_a._outerHeight(sb.height()); -var _d=_b.find("span.l-btn-left"); -_d._outerHeight(sb.height()); -_d.find("span.l-btn-text,span.m-btn-downarrow").css({height:_d.height()+"px",lineHeight:_d.height()+"px"}); -sb.insertAfter(_7); -}; -function _e(_f){ -var _10=$.data(_f,"searchbox"); -var _11=_10.options; -if(_11.menu){ -_10.menu=$(_11.menu).menu({onClick:function(_12){ -_13(_12); -}}); -var _14=_10.menu.children("div.menu-item:first"); -_10.menu.children("div.menu-item").each(function(){ -var _15=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_15.selected){ -_14=$(this); -return false; -} -}); -_14.triggerHandler("click"); -}else{ -_10.searchbox.find("a.searchbox-menu").remove(); -_10.menu=null; -} -function _13(_16){ -_10.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(_16.text); -mb.prependTo(_10.searchbox).menubutton({menu:_10.menu,iconCls:_16.iconCls}); -_10.searchbox.find("input.searchbox-text").attr("name",$(_16.target).attr("name")||_16.text); -_6(_f); -}; -}; -function _17(_18){ -var _19=$.data(_18,"searchbox"); -var _1a=_19.options; -var _1b=_19.searchbox.find("input.searchbox-text"); -var _1c=_19.searchbox.find(".searchbox-button"); -_1b.unbind(".searchbox").bind("blur.searchbox",function(e){ -_1a.value=$(this).val(); -if(_1a.value==""){ -$(this).val(_1a.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=_1a.value){ -$(this).val(_1a.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -var _1d=$.fn.prop?_1b.prop("name"):_1b.attr("name"); -_1a.value=$(this).val(); -_1a.searcher.call(_18,_1a.value,_1d); -return false; -} -}); -_1c.unbind(".searchbox").bind("click.searchbox",function(){ -var _1e=$.fn.prop?_1b.prop("name"):_1b.attr("name"); -_1a.searcher.call(_18,_1a.value,_1e); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _1f(_20){ -var _21=$.data(_20,"searchbox"); -var _22=_21.options; -var _23=_21.searchbox.find("input.searchbox-text"); -if(_22.value==""){ -_23.val(_22.prompt); -_23.addClass("searchbox-prompt"); -}else{ -_23.val(_22.value); -_23.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_24,_25){ -if(typeof _24=="string"){ -return $.fn.searchbox.methods[_24](this,_25); -} -_24=_24||{}; -return this.each(function(){ -var _26=$.data(this,"searchbox"); -if(_26){ -$.extend(_26.options,_24); -}else{ -_26=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_24),searchbox:_1(this)}); -} -_e(this); -_1f(this); -_17(this); -_6(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_27){ -return jq.each(function(){ -$(this).searchbox("options").value=_27; -$(this).searchbox("textbox").val(_27); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,_28){ -return jq.each(function(){ -var _29=$.data(this,"searchbox").menu; -if(_29){ -_29.children("div.menu-item[name=\""+_28+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var _2a=$(this).searchbox("menu"); -if(_2a){ -_2a.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_2b){ -return jq.each(function(){ -_6(this,_2b); -}); -}}; -$.fn.searchbox.parseOptions=function(_2c){ -var t=$(_2c); -return $.extend({},$.parser.parseOptions(_2c,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_2d,_2e){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.slider.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.slider.js deleted file mode 100644 index 1f7941a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.slider.js +++ /dev/null @@ -1,267 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$("
                                                                                                                            "+"
                                                                                                                            "+""+""+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+""+"
                                                                                                                            ").insertAfter(_2); -var _4=$(_2).hide().attr("name"); -if(_4){ -_3.find("input.slider-value").attr("name",_4); -$(_2).removeAttr("name").attr("sliderName",_4); -} -return _3; -}; -function _5(_6,_7){ -var _8=$.data(_6,"slider"); -var _9=_8.options; -var _a=_8.slider; -if(_7){ -if(_7.width){ -_9.width=_7.width; -} -if(_7.height){ -_9.height=_7.height; -} -} -if(_9.mode=="h"){ -_a.css("height",""); -_a.children("div").css("height",""); -if(!isNaN(_9.width)){ -_a.width(_9.width); -} -}else{ -_a.css("width",""); -_a.children("div").css("width",""); -if(!isNaN(_9.height)){ -_a.height(_9.height); -_a.find("div.slider-rule").height(_9.height); -_a.find("div.slider-rulelabel").height(_9.height); -_a.find("div.slider-inner")._outerHeight(_9.height); -} -} -_b(_6); -}; -function _c(_d){ -var _e=$.data(_d,"slider"); -var _f=_e.options; -var _10=_e.slider; -var aa=_f.mode=="h"?_f.rule:_f.rule.slice(0).reverse(); -if(_f.reversed){ -aa=aa.slice(0).reverse(); -} -_11(aa); -function _11(aa){ -var _12=_10.find("div.slider-rule"); -var _13=_10.find("div.slider-rulelabel"); -_12.empty(); -_13.empty(); -for(var i=0;i").appendTo(_12); -_15.css((_f.mode=="h"?"left":"top"),_14); -if(aa[i]!="|"){ -_15=$("").appendTo(_13); -_15.html(aa[i]); -if(_f.mode=="h"){ -_15.css({left:_14,marginLeft:-Math.round(_15.outerWidth()/2)}); -}else{ -_15.css({top:_14,marginTop:-Math.round(_15.outerHeight()/2)}); -} -} -} -}; -}; -function _16(_17){ -var _18=$.data(_17,"slider"); -var _19=_18.options; -var _1a=_18.slider; -_1a.removeClass("slider-h slider-v slider-disabled"); -_1a.addClass(_19.mode=="h"?"slider-h":"slider-v"); -_1a.addClass(_19.disabled?"slider-disabled":""); -_1a.find("a.slider-handle").draggable({axis:_19.mode,cursor:"pointer",disabled:_19.disabled,onDrag:function(e){ -var _1b=e.data.left; -var _1c=_1a.width(); -if(_19.mode!="h"){ -_1b=e.data.top; -_1c=_1a.height(); -} -if(_1b<0||_1b>_1c){ -return false; -}else{ -var _1d=_32(_17,_1b); -_1e(_1d); -return false; -} -},onBeforeDrag:function(){ -_18.isDragging=true; -},onStartDrag:function(){ -_19.onSlideStart.call(_17,_19.value); -},onStopDrag:function(e){ -var _1f=_32(_17,(_19.mode=="h"?e.data.left:e.data.top)); -_1e(_1f); -_19.onSlideEnd.call(_17,_19.value); -_19.onComplete.call(_17,_19.value); -_18.isDragging=false; -}}); -_1a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_18.isDragging){ -return; -} -var pos=$(this).offset(); -var _20=_32(_17,(_19.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_1e(_20); -_19.onComplete.call(_17,_19.value); -}); -function _1e(_21){ -var s=Math.abs(_21%_19.step); -if(s<_19.step/2){ -_21-=s; -}else{ -_21=_21-s+_19.step; -} -_22(_17,_21); -}; -}; -function _22(_23,_24){ -var _25=$.data(_23,"slider"); -var _26=_25.options; -var _27=_25.slider; -var _28=_26.value; -if(_24<_26.min){ -_24=_26.min; -} -if(_24>_26.max){ -_24=_26.max; -} -_26.value=_24; -$(_23).val(_24); -_27.find("input.slider-value").val(_24); -var pos=_29(_23,_24); -var tip=_27.find(".slider-tip"); -if(_26.showTip){ -tip.show(); -tip.html(_26.tipFormatter.call(_23,_26.value)); -}else{ -tip.hide(); -} -if(_26.mode=="h"){ -var _2a="left:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _2a="top:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_28!=_24){ -_26.onChange.call(_23,_24,_28); -} -}; -function _b(_2b){ -var _2c=$.data(_2b,"slider").options; -var fn=_2c.onChange; -_2c.onChange=function(){ -}; -_22(_2b,_2c.value); -_2c.onChange=fn; -}; -function _29(_2d,_2e){ -var _2f=$.data(_2d,"slider"); -var _30=_2f.options; -var _31=_2f.slider; -if(_30.mode=="h"){ -var pos=(_2e-_30.min)/(_30.max-_30.min)*_31.width(); -if(_30.reversed){ -pos=_31.width()-pos; -} -}else{ -var pos=_31.height()-(_2e-_30.min)/(_30.max-_30.min)*_31.height(); -if(_30.reversed){ -pos=_31.height()-pos; -} -} -return pos.toFixed(0); -}; -function _32(_33,pos){ -var _34=$.data(_33,"slider"); -var _35=_34.options; -var _36=_34.slider; -if(_35.mode=="h"){ -var _37=_35.min+(_35.max-_35.min)*(pos/_36.width()); -}else{ -var _37=_35.min+(_35.max-_35.min)*((_36.height()-pos)/_36.height()); -} -return _35.reversed?_35.max-_37.toFixed(0):_37.toFixed(0); -}; -$.fn.slider=function(_38,_39){ -if(typeof _38=="string"){ -return $.fn.slider.methods[_38](this,_39); -} -_38=_38||{}; -return this.each(function(){ -var _3a=$.data(this,"slider"); -if(_3a){ -$.extend(_3a.options,_38); -}else{ -_3a=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_38),slider:_1(this)}); -$(this).removeAttr("disabled"); -} -var _3b=_3a.options; -_3b.min=parseFloat(_3b.min); -_3b.max=parseFloat(_3b.max); -_3b.value=parseFloat(_3b.value); -_3b.step=parseFloat(_3b.step); -_16(this); -_c(this); -_5(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_3c){ -return jq.each(function(){ -_5(this,_3c); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_3d){ -return jq.each(function(){ -_22(this,_3d); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_16(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_16(this); -}); -}}; -$.fn.slider.parseOptions=function(_3e){ -var t=$(_3e); -return $.extend({},$.parser.parseOptions(_3e,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_3f){ -return _3f; -},onChange:function(_40,_41){ -},onSlideStart:function(_42){ -},onSlideEnd:function(_43){ -},onComplete:function(_44){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.spinner.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.spinner.js deleted file mode 100644 index 3885be3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.spinner.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(""+""+""+""+""+"").insertAfter(_2); -$(_2).addClass("spinner-text spinner-f").prependTo(_3); -return _3; -}; -function _4(_5,_6){ -var _7=$.data(_5,"spinner").options; -var _8=$.data(_5,"spinner").spinner; -if(_6){ -_7.width=_6; -} -var _9=$("
                                                                                                                            ").insertBefore(_8); -_8.appendTo("body"); -if(isNaN(_7.width)){ -_7.width=$(_5).outerWidth(); -} -var _a=_8.find(".spinner-arrow"); -_8._outerWidth(_7.width)._outerHeight(_7.height); -$(_5)._outerWidth(_8.width()-_a.outerWidth()); -$(_5).css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); -_a._outerHeight(_8.height()); -_a.find("span")._outerHeight(_a.height()/2); -_8.insertAfter(_9); -_9.remove(); -}; -function _b(_c){ -var _d=$.data(_c,"spinner").options; -var _e=$.data(_c,"spinner").spinner; -_e.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!_d.disabled){ -_e.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,false); -_d.onSpinUp.call(_c); -$(_c).validatebox("validate"); -}); -_e.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,true); -_d.onSpinDown.call(_c); -$(_c).validatebox("validate"); -}); -} -}; -function _f(_10,_11){ -var _12=$.data(_10,"spinner").options; -if(_11){ -_12.disabled=true; -$(_10).attr("disabled",true); -}else{ -_12.disabled=false; -$(_10).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_13,_14){ -if(typeof _13=="string"){ -var _15=$.fn.spinner.methods[_13]; -if(_15){ -return _15(this,_14); -}else{ -return this.validatebox(_13,_14); -} -} -_13=_13||{}; -return this.each(function(){ -var _16=$.data(this,"spinner"); -if(_16){ -$.extend(_16.options,_13); -}else{ -_16=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_13),spinner:_1(this)}); -$(this).removeAttr("disabled"); -} -_16.options.originalValue=_16.options.value; -$(this).val(_16.options.value); -$(this).attr("readonly",!_16.options.editable); -_f(this,_16.options.disabled); -_4(this); -$(this).validatebox(_16.options); -_b(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var _17=$.data(jq[0],"spinner").options; -return $.extend(_17,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _18=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_18.remove(); -}); -},resize:function(jq,_19){ -return jq.each(function(){ -_4(this,_19); -}); -},enable:function(jq){ -return jq.each(function(){ -_f(this,false); -_b(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_f(this,true); -_b(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_1a){ -return jq.each(function(){ -var _1b=$.data(this,"spinner").options; -_1b.value=_1a; -$(this).val(_1a); -}); -},clear:function(jq){ -return jq.each(function(){ -var _1c=$.data(this,"spinner").options; -_1c.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1d=$(this).spinner("options"); -$(this).spinner("setValue",_1d.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_1e){ -var t=$(_1e); -return $.extend({},$.fn.validatebox.parseOptions(_1e),$.parser.parseOptions(_1e,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(_1f){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.splitbutton.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.splitbutton.js deleted file mode 100644 index f668698..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.splitbutton.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"splitbutton").options; -$(_2).menubutton(_3); -}; -$.fn.splitbutton=function(_4,_5){ -if(typeof _4=="string"){ -var _6=$.fn.splitbutton.methods[_4]; -if(_6){ -return _6(this,_5); -}else{ -return this.menubutton(_4,_5); -} -} -_4=_4||{}; -return this.each(function(){ -var _7=$.data(this,"splitbutton"); -if(_7){ -$.extend(_7.options,_4); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _8=jq.menubutton("options"); -var _9=$.data(jq[0],"splitbutton").options; -$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); -return _9; -}}; -$.fn.splitbutton.parseOptions=function(_a){ -var t=$(_a); -return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.tabs.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.tabs.js deleted file mode 100644 index a0c1ca3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.tabs.js +++ /dev/null @@ -1,550 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"tabs").options; -if(_3.tabPosition=="left"||_3.tabPosition=="right"){ -return; -} -var _4=$(_2).children("div.tabs-header"); -var _5=_4.children("div.tabs-tool"); -var _6=_4.children("div.tabs-scroller-left"); -var _7=_4.children("div.tabs-scroller-right"); -var _8=_4.children("div.tabs-wrap"); -var _9=_4.outerHeight(); -if(_3.plain){ -_9-=_9-_4.height(); -} -_5._outerHeight(_9); -var _a=0; -$("ul.tabs li",_4).each(function(){ -_a+=$(this).outerWidth(true); -}); -var _b=_4.width()-_5._outerWidth(); -if(_a>_b){ -_6.add(_7).show()._outerHeight(_9); -if(_3.toolPosition=="left"){ -_5.css({left:_6.outerWidth(),right:""}); -_8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -}else{ -_5.css({left:"",right:_7.outerWidth()}); -_8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -} -}else{ -_6.add(_7).hide(); -if(_3.toolPosition=="left"){ -_5.css({left:0,right:""}); -_8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b}); -}else{ -_5.css({left:"",right:0}); -_8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b}); -} -} -}; -function _c(_d){ -var _e=$.data(_d,"tabs").options; -var _f=$(_d).children("div.tabs-header"); -if(_e.tools){ -if(typeof _e.tools=="string"){ -$(_e.tools).addClass("tabs-tool").appendTo(_f); -$(_e.tools).show(); -}else{ -_f.children("div.tabs-tool").remove(); -var _10=$("
                                                                                                                            ").appendTo(_f); -var tr=_10.find("tr"); -for(var i=0;i<_e.tools.length;i++){ -var td=$("").appendTo(tr); -var _11=$("").appendTo(td); -_11[0].onclick=eval(_e.tools[i].handler||function(){ -}); -_11.linkbutton($.extend({},_e.tools[i],{plain:true})); -} -} -}else{ -_f.children("div.tabs-tool").remove(); -} -}; -function _12(_13){ -var _14=$.data(_13,"tabs"); -var _15=_14.options; -var cc=$(_13); -_15.fit?$.extend(_15,cc._fit()):cc._fit(false); -cc.width(_15.width).height(_15.height); -var _16=$(_13).children("div.tabs-header"); -var _17=$(_13).children("div.tabs-panels"); -var _18=_16.find("div.tabs-wrap"); -var ul=_18.find(".tabs"); -for(var i=0;i<_14.tabs.length;i++){ -var _19=_14.tabs[i].panel("options"); -var p_t=_19.tab.find("a.tabs-inner"); -var _1a=parseInt(_19.tabWidth||_15.tabWidth)||undefined; -if(_1a){ -p_t._outerWidth(_1a); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(_15.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(_15.tabPosition=="left"||_15.tabPosition=="right"){ -_16._outerWidth(_15.headerWidth); -_17._outerWidth(cc.width()-_15.headerWidth); -_16.add(_17)._outerHeight(_15.height); -_18._outerWidth(_16.width()); -ul._outerWidth(_18.width()).css("height",""); -}else{ -_16._outerWidth(_15.width).css("height",""); -ul._outerHeight(_15.tabHeight).css("width",""); -_1(_13); -var _1b=_15.height; -if(!isNaN(_1b)){ -_17._outerHeight(_1b-_16.outerHeight()); -}else{ -_17.height("auto"); -} -var _1a=_15.width; -if(!isNaN(_1a)){ -_17._outerWidth(_1a); -}else{ -_17.width("auto"); -} -} -}; -function _1c(_1d){ -var _1e=$.data(_1d,"tabs").options; -var tab=_1f(_1d); -if(tab){ -var _20=$(_1d).children("div.tabs-panels"); -var _21=_1e.width=="auto"?"auto":_20.width(); -var _22=_1e.height=="auto"?"auto":_20.height(); -tab.panel("resize",{width:_21,height:_22}); -} -}; -function _23(_24){ -var _25=$.data(_24,"tabs").tabs; -var cc=$(_24); -cc.addClass("tabs-container"); -var pp=$("
                                                                                                                            ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                            "+"
                                                                                                                              "+"
                                                                                                                              "+"
                                                                                                                              ").prependTo(_24); -cc.children("div.tabs-panels").children("div").each(function(i){ -var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_25.push(pp); -_33(_24,pp,_26); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_27){ -var _28=$.data(_24,"tabs").options; -if(_28.fit==true||_27){ -_12(_24); -_1c(_24); -} -return false; -}); -}; -function _29(_2a){ -var _2b=$.data(_2a,"tabs").options; -$(_2a).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2a).tabs("scrollBy",-_2b.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2a).tabs("scrollBy",_2b.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_49(_2a,_2c(li)); -}else{ -if(li.length){ -_3e(_2a,_2c(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -_2b.onContextMenu.call(_2a,e,li.find("span.tabs-title").html(),_2c(li)); -} -}); -function _2c(li){ -var _2d=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2d=i; -return false; -} -}); -return _2d; -}; -}; -function _2e(_2f){ -var _30=$.data(_2f,"tabs").options; -var _31=$(_2f).children("div.tabs-header"); -var _32=$(_2f).children("div.tabs-panels"); -_31.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_32.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(_30.tabPosition=="top"){ -_31.insertBefore(_32); -}else{ -if(_30.tabPosition=="bottom"){ -_31.insertAfter(_32); -_31.addClass("tabs-header-bottom"); -_32.addClass("tabs-panels-top"); -}else{ -if(_30.tabPosition=="left"){ -_31.addClass("tabs-header-left"); -_32.addClass("tabs-panels-right"); -}else{ -if(_30.tabPosition=="right"){ -_31.addClass("tabs-header-right"); -_32.addClass("tabs-panels-left"); -} -} -} -} -if(_30.plain==true){ -_31.addClass("tabs-header-plain"); -}else{ -_31.removeClass("tabs-header-plain"); -} -if(_30.border==true){ -_31.removeClass("tabs-header-noborder"); -_32.removeClass("tabs-panels-noborder"); -}else{ -_31.addClass("tabs-header-noborder"); -_32.addClass("tabs-panels-noborder"); -} -}; -function _33(_34,pp,_35){ -var _36=$.data(_34,"tabs"); -_35=_35||{}; -pp.panel($.extend({},_35,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_35.icon?_35.icon:undefined),onLoad:function(){ -if(_35.onLoad){ -_35.onLoad.call(this,arguments); -} -_36.options.onLoad.call(_34,$(this)); -}})); -var _37=pp.panel("options"); -var _38=$(_34).children("div.tabs-header").find("ul.tabs"); -_37.tab=$("
                                                                                                                            • ").appendTo(_38); -_37.tab.append(""+""+""+""); -$(_34).tabs("update",{tab:pp,options:_37}); -}; -function _39(_3a,_3b){ -var _3c=$.data(_3a,"tabs").options; -var _3d=$.data(_3a,"tabs").tabs; -if(_3b.selected==undefined){ -_3b.selected=true; -} -var pp=$("
                                                                                                                              ").appendTo($(_3a).children("div.tabs-panels")); -_3d.push(pp); -_33(_3a,pp,_3b); -_3c.onAdd.call(_3a,_3b.title,_3d.length-1); -_12(_3a); -if(_3b.selected){ -_3e(_3a,_3d.length-1); -} -}; -function _3f(_40,_41){ -var _42=$.data(_40,"tabs").selectHis; -var pp=_41.tab; -var _43=pp.panel("options").title; -pp.panel($.extend({},_41.options,{iconCls:(_41.options.icon?_41.options.icon:undefined)})); -var _44=pp.panel("options"); -var tab=_44.tab; -var _45=tab.find("span.tabs-title"); -var _46=tab.find("span.tabs-icon"); -_45.html(_44.title); -_46.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(_44.closable){ -_45.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_45.removeClass("tabs-closable"); -} -if(_44.iconCls){ -_45.addClass("tabs-with-icon"); -_46.addClass(_44.iconCls); -}else{ -_45.removeClass("tabs-with-icon"); -} -if(_43!=_44.title){ -for(var i=0;i<_42.length;i++){ -if(_42[i]==_43){ -_42[i]=_44.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(_44.tools){ -var _47=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(_44.tools)){ -for(var i=0;i<_44.tools.length;i++){ -var t=$("").appendTo(_47); -t.addClass(_44.tools[i].iconCls); -if(_44.tools[i].handler){ -t.bind("click",{handler:_44.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(_44.tools).children().appendTo(_47); -} -var pr=_47.children().length*12; -if(_44.closable){ -pr+=8; -}else{ -pr-=3; -_47.css("right","5px"); -} -_45.css("padding-right",pr+"px"); -} -_12(_40); -$.data(_40,"tabs").options.onUpdate.call(_40,_44.title,_48(_40,pp)); -}; -function _49(_4a,_4b){ -var _4c=$.data(_4a,"tabs").options; -var _4d=$.data(_4a,"tabs").tabs; -var _4e=$.data(_4a,"tabs").selectHis; -if(!_4f(_4a,_4b)){ -return; -} -var tab=_50(_4a,_4b); -var _51=tab.panel("options").title; -var _52=_48(_4a,tab); -if(_4c.onBeforeClose.call(_4a,_51,_52)==false){ -return; -} -var tab=_50(_4a,_4b,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -_4c.onClose.call(_4a,_51,_52); -_12(_4a); -for(var i=0;i<_4e.length;i++){ -if(_4e[i]==_51){ -_4e.splice(i,1); -i--; -} -} -var _53=_4e.pop(); -if(_53){ -_3e(_4a,_53); -}else{ -if(_4d.length){ -_3e(_4a,0); -} -} -}; -function _50(_54,_55,_56){ -var _57=$.data(_54,"tabs").tabs; -if(typeof _55=="number"){ -if(_55<0||_55>=_57.length){ -return null; -}else{ -var tab=_57[_55]; -if(_56){ -_57.splice(_55,1); -} -return tab; -} -} -for(var i=0;i<_57.length;i++){ -var tab=_57[i]; -if(tab.panel("options").title==_55){ -if(_56){ -_57.splice(i,1); -} -return tab; -} -} -return null; -}; -function _48(_58,tab){ -var _59=$.data(_58,"tabs").tabs; -for(var i=0;i<_59.length;i++){ -if(_59[i][0]==$(tab)[0]){ -return i; -} -} -return -1; -}; -function _1f(_5a){ -var _5b=$.data(_5a,"tabs").tabs; -for(var i=0;i<_5b.length;i++){ -var tab=_5b[i]; -if(tab.panel("options").closed==false){ -return tab; -} -} -return null; -}; -function _5c(_5d){ -var _5e=$.data(_5d,"tabs").tabs; -for(var i=0;i<_5e.length;i++){ -if(_5e[i].panel("options").selected){ -_3e(_5d,i); -return; -} -} -if(_5e.length){ -_3e(_5d,0); -} -}; -function _3e(_5f,_60){ -var _61=$.data(_5f,"tabs").options; -var _62=$.data(_5f,"tabs").tabs; -var _63=$.data(_5f,"tabs").selectHis; -if(_62.length==0){ -return; -} -var _64=_50(_5f,_60); -if(!_64){ -return; -} -var _65=_1f(_5f); -if(_65){ -_65.panel("close"); -_65.panel("options").tab.removeClass("tabs-selected"); -} -_64.panel("open"); -var _66=_64.panel("options").title; -_63.push(_66); -var tab=_64.panel("options").tab; -tab.addClass("tabs-selected"); -var _67=$(_5f).find(">div.tabs-header>div.tabs-wrap"); -var _68=tab.position().left; -var _69=_68+tab.outerWidth(); -if(_68<0||_69>_67.width()){ -var _6a=_68-(_67.width()-tab.width())/2; -$(_5f).tabs("scrollBy",_6a); -}else{ -$(_5f).tabs("scrollBy",0); -} -_1c(_5f); -_61.onSelect.call(_5f,_66,_48(_5f,_64)); -}; -function _4f(_6b,_6c){ -return _50(_6b,_6c)!=null; -}; -$.fn.tabs=function(_6d,_6e){ -if(typeof _6d=="string"){ -return $.fn.tabs.methods[_6d](this,_6e); -} -_6d=_6d||{}; -return this.each(function(){ -var _6f=$.data(this,"tabs"); -var _70; -if(_6f){ -_70=$.extend(_6f.options,_6d); -_6f.options=_70; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_6d),tabs:[],selectHis:[]}); -_23(this); -} -_c(this); -_2e(this); -_12(this); -_29(this); -_5c(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_12(this); -_1c(this); -}); -},add:function(jq,_71){ -return jq.each(function(){ -_39(this,_71); -}); -},close:function(jq,_72){ -return jq.each(function(){ -_49(this,_72); -}); -},getTab:function(jq,_73){ -return _50(jq[0],_73); -},getTabIndex:function(jq,tab){ -return _48(jq[0],tab); -},getSelected:function(jq){ -return _1f(jq[0]); -},select:function(jq,_74){ -return jq.each(function(){ -_3e(this,_74); -}); -},exists:function(jq,_75){ -return _4f(jq[0],_75); -},update:function(jq,_76){ -return jq.each(function(){ -_3f(this,_76); -}); -},enableTab:function(jq,_77){ -return jq.each(function(){ -$(this).tabs("getTab",_77).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_78){ -return jq.each(function(){ -$(this).tabs("getTab",_78).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_79){ -return jq.each(function(){ -var _7a=$(this).tabs("options"); -var _7b=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(_7b._scrollLeft()+_79,_7c()); -_7b.animate({scrollLeft:pos},_7a.scrollDuration); -function _7c(){ -var w=0; -var ul=_7b.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-_7b.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_7d){ -return $.extend({},$.parser.parseOptions(_7d,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_7e){ -},onSelect:function(_7f,_80){ -},onBeforeClose:function(_81,_82){ -},onClose:function(_83,_84){ -},onAdd:function(_85,_86){ -},onUpdate:function(_87,_88){ -},onContextMenu:function(e,_89,_8a){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.timespinner.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.timespinner.js deleted file mode 100644 index f78a389..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.timespinner.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"timespinner").options; -$(_2).addClass("timespinner-f"); -$(_2).spinner(_3); -$(_2).unbind(".timespinner"); -$(_2).bind("click.timespinner",function(){ -var _4=0; -if(this.selectionStart!=null){ -_4=this.selectionStart; -}else{ -if(this.createTextRange){ -var _5=_2.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_5); -_4=s.text.length; -} -} -if(_4>=0&&_4<=2){ -_3.highlight=0; -}else{ -if(_4>=3&&_4<=5){ -_3.highlight=1; -}else{ -if(_4>=6&&_4<=8){ -_3.highlight=2; -} -} -} -_7(_2); -}).bind("blur.timespinner",function(){ -_6(_2); -}); -}; -function _7(_8){ -var _9=$.data(_8,"timespinner").options; -var _a=0,_b=0; -if(_9.highlight==0){ -_a=0; -_b=2; -}else{ -if(_9.highlight==1){ -_a=3; -_b=5; -}else{ -if(_9.highlight==2){ -_a=6; -_b=8; -} -} -} -if(_8.selectionStart!=null){ -_8.setSelectionRange(_a,_b); -}else{ -if(_8.createTextRange){ -var _c=_8.createTextRange(); -_c.collapse(); -_c.moveEnd("character",_b); -_c.moveStart("character",_a); -_c.select(); -} -} -$(_8).focus(); -}; -function _d(_e,_f){ -var _10=$.data(_e,"timespinner").options; -if(!_f){ -return null; -} -var vv=_f.split(_10.separator); -for(var i=0;i_14){ -_14=_15; -} -if(_16&&_16<_14){ -_14=_16; -} -var tt=[_17(_14.getHours()),_17(_14.getMinutes())]; -if(_12.showSeconds){ -tt.push(_17(_14.getSeconds())); -} -var val=tt.join(_12.separator); -_12.value=val; -$(_11).val(val); -function _17(_18){ -return (_18<10?"0":"")+_18; -}; -}; -function _19(_1a,_1b){ -var _1c=$.data(_1a,"timespinner").options; -var val=$(_1a).val(); -if(val==""){ -val=[0,0,0].join(_1c.separator); -} -var vv=val.split(_1c.separator); -for(var i=0;i"+"
                                                                                                                              "+"
                                                                                                                              "+"
                                                                                                                              "+"").appendTo("body"); -_12.tip=tip; -_14(_11); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_13.position); -_7(_11); -_12.showTimer=setTimeout(function(){ -_6(_11); -tip.show(); -_13.onShow.call(_11,e); -var _15=tip.children(".tooltip-arrow-outer"); -var _16=tip.children(".tooltip-arrow"); -var bc="border-"+_13.position+"-color"; -_15.add(_16).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_15.css(bc,tip.css(bc)); -_16.css(bc,tip.css("backgroundColor")); -},_13.showDelay); -}; -function _17(_18,e){ -var _19=$.data(_18,"tooltip"); -if(_19&&_19.tip){ -_7(_18); -_19.hideTimer=setTimeout(function(){ -_19.tip.hide(); -_19.options.onHide.call(_18,e); -},_19.options.hideDelay); -} -}; -function _14(_1a,_1b){ -var _1c=$.data(_1a,"tooltip"); -var _1d=_1c.options; -if(_1b){ -_1d.content=_1b; -} -if(!_1c.tip){ -return; -} -var cc=typeof _1d.content=="function"?_1d.content.call(_1a):_1d.content; -_1c.tip.children(".tooltip-content").html(cc); -_1d.onUpdate.call(_1a,cc); -}; -function _1e(_1f){ -var _20=$.data(_1f,"tooltip"); -if(_20){ -_7(_1f); -var _21=_20.options; -if(_20.tip){ -_20.tip.remove(); -} -if(_21._title){ -$(_1f).attr("title",_21._title); -} -$.removeData(_1f,"tooltip"); -$(_1f).unbind(".tooltip").removeClass("tooltip-f"); -_21.onDestroy.call(_1f); -} -}; -$.fn.tooltip=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.tooltip.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24=$.data(this,"tooltip"); -if(_24){ -$.extend(_24.options,_22); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_22)}); -_1(this); -} -_3(this); -_14(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_10(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_17(this,e); -}); -},update:function(jq,_25){ -return jq.each(function(){ -_14(this,_25); -}); -},reposition:function(jq){ -return jq.each(function(){ -_6(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1e(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_26){ -var t=$(_26); -var _27=$.extend({},$.parser.parseOptions(_26,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!_27.content){ -_27.content=_27._title; -} -return _27; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_28){ -},onPosition:function(_29,top){ -},onDestroy:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.tree.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.tree.js deleted file mode 100644 index c33f22f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.tree.js +++ /dev/null @@ -1,1148 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(_2); -_3.addClass("tree"); -return _3; -}; -function _4(_5){ -var _6=[]; -_7(_6,$(_5)); -function _7(aa,_8){ -_8.children("li").each(function(){ -var _9=$(this); -var _a=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_9.attr("checked")?true:undefined)}); -_a.text=_9.children("span").html(); -if(!_a.text){ -_a.text=_9.html(); -} -var _b=_9.children("ul"); -if(_b.length){ -_a.children=[]; -_7(_a.children,_b); -} -aa.push(_a); -}); -}; -return _6; -}; -function _c(_d){ -var _e=$.data(_d,"tree").options; -$(_d).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _f=tt.closest("div.tree-node"); -if(!_f.length){ -return; -} -_f.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _10=tt.closest("div.tree-node"); -if(!_10.length){ -return; -} -_10.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _11=tt.closest("div.tree-node"); -if(!_11.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_86(_d,_11[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_39(_d,_11[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_d8(_d,_11[0]); -_e.onClick.call(_d,_14(_d,_11[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _12=$(e.target).closest("div.tree-node"); -if(!_12.length){ -return; -} -_d8(_d,_12[0]); -_e.onDblClick.call(_d,_14(_d,_12[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _13=$(e.target).closest("div.tree-node"); -if(!_13.length){ -return; -} -_e.onContextMenu.call(_d,e,_14(_d,_13[0])); -e.stopPropagation(); -}); -}; -function _15(_16){ -var _17=$(_16).find("div.tree-node"); -_17.draggable("disable"); -_17.css("cursor","pointer"); -}; -function _18(_19){ -var _1a=$.data(_19,"tree"); -var _1b=_1a.options; -var _1c=_1a.tree; -_1a.disabledNodes=[]; -_1c.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_1d){ -var p=$("
                                                                                                                              ").appendTo("body"); -p.html(" "+$(_1d).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_1b.onBeforeDrag.call(_19,_14(_19,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _1e=$(this).find("span.tree-indent"); -if(_1e.length){ -e.data.offsetWidth-=_1e.length*_1e.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_1b.onStartDrag.call(_19,_14(_19,this)); -var _1f=_14(_19,this); -if(_1f.id==undefined){ -_1f.id="easyui_tree_node_id_temp"; -_cb(_19,_1f); -} -_1a.draggingNodeId=_1f.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_1a.disabledNodes.length;i++){ -$(_1a.disabledNodes[i]).droppable("enable"); -} -_1a.disabledNodes=[]; -var _20=_d5(_19,_1a.draggingNodeId); -if(_20&&_20.id=="easyui_tree_node_id_temp"){ -_20.id=""; -_cb(_19,_20); -} -_1b.onStopDrag.call(_19,_20); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_21){ -if(_1b.onDragEnter.call(_19,this,_14(_19,_21))==false){ -_22(_21,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragOver:function(e,_23){ -if($(this).droppable("options").disabled){ -return; -} -var _24=_23.pageY; -var top=$(this).offset().top; -var _25=top+$(this).outerHeight(); -_22(_23,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_24>top+(_25-top)/2){ -if(_25-_24<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_24-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_1b.onDragOver.call(_19,this,_14(_19,_23))==false){ -_22(_23,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragLeave:function(e,_26){ -_22(_26,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_1b.onDragLeave.call(_19,this,_14(_19,_26)); -},onDrop:function(e,_27){ -var _28=this; -var _29,_2a; -if($(this).hasClass("tree-node-append")){ -_29=_2b; -_2a="append"; -}else{ -_29=_2c; -_2a=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_1b.onBeforeDrop.call(_19,_28,_c4(_19,_27),_2a)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_29(_27,_28,_2a); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _22(_2d,_2e){ -var _2f=$(_2d).draggable("proxy").find("span.tree-dnd-icon"); -_2f.removeClass("tree-dnd-yes tree-dnd-no").addClass(_2e?"tree-dnd-yes":"tree-dnd-no"); -}; -function _2b(_30,_31){ -if(_14(_19,_31).state=="closed"){ -_7a(_19,_31,function(){ -_32(); -}); -}else{ -_32(); -} -function _32(){ -var _33=$(_19).tree("pop",_30); -$(_19).tree("append",{parent:_31,data:[_33]}); -_1b.onDrop.call(_19,_31,_33,"append"); -}; -}; -function _2c(_34,_35,_36){ -var _37={}; -if(_36=="top"){ -_37.before=_35; -}else{ -_37.after=_35; -} -var _38=$(_19).tree("pop",_34); -_37.data=_38; -$(_19).tree("insert",_37); -_1b.onDrop.call(_19,_35,_38,_36); -}; -}; -function _39(_3a,_3b,_3c){ -var _3d=$.data(_3a,"tree").options; -if(!_3d.checkbox){ -return; -} -var _3e=_14(_3a,_3b); -if(_3d.onBeforeCheck.call(_3a,_3e,_3c)==false){ -return; -} -var _3f=$(_3b); -var ck=_3f.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_3c){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_3d.cascadeCheck){ -_40(_3f); -_41(_3f); -} -_3d.onCheck.call(_3a,_3e,_3c); -function _41(_42){ -var _43=_42.next().find(".tree-checkbox"); -_43.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_42.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_43.addClass("tree-checkbox1"); -}else{ -_43.addClass("tree-checkbox0"); -} -}; -function _40(_44){ -var _45=_91(_3a,_44[0]); -if(_45){ -var ck=$(_45.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_46(_44)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_47(_44)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_40($(_45.target)); -} -function _46(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _47(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _48(_49,_4a){ -var _4b=$.data(_49,"tree").options; -var _4c=$(_4a); -if(_4d(_49,_4a)){ -var ck=_4c.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -_39(_49,_4a,false); -} -}else{ -if(_4b.onlyLeafCheck){ -$("").insertBefore(_4c.find(".tree-title")); -} -} -}else{ -var ck=_4c.find(".tree-checkbox"); -if(_4b.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _4e=true; -var _4f=true; -var _50=_51(_49,_4a); -for(var i=0;i<_50.length;i++){ -if(_50[i].checked){ -_4f=false; -}else{ -_4e=false; -} -} -if(_4e){ -_39(_49,_4a,true); -} -if(_4f){ -_39(_49,_4a,false); -} -} -} -} -} -}; -function _52(_53,ul,_54,_55){ -var _56=$.data(_53,"tree").options; -_54=_56.loadFilter.call(_53,_54,$(ul).prev("div.tree-node")[0]); -if(!_55){ -$(ul).empty(); -} -var _57=[]; -var _58=[]; -var _59=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_5a(ul,_54,_59); -if(_56.dnd){ -_18(_53); -}else{ -_15(_53); -} -if(_57.length){ -_39(_53,_57[0],false); -} -for(var i=0;i<_58.length;i++){ -_39(_53,_58[i],true); -} -setTimeout(function(){ -_62(_53,_53); -},0); -var _5b=null; -if(_53!=ul){ -var _5c=$(ul).prev(); -_5b=_14(_53,_5c[0]); -} -_56.onLoadSuccess.call(_53,_5b,_54); -function _5a(ul,_5d,_5e){ -for(var i=0;i<_5d.length;i++){ -var li=$("
                                                                                                                            • ").appendTo(ul); -var _5f=_5d[i]; -if(_5f.state!="open"&&_5f.state!="closed"){ -_5f.state="open"; -} -var _60=$("
                                                                                                                              ").appendTo(li); -_60.attr("node-id",_5f.id); -$.data(_60[0],"tree-node",{id:_5f.id,text:_5f.text,iconCls:_5f.iconCls,attributes:_5f.attributes}); -$("").html(_56.formatter.call(_53,_5f)).appendTo(_60); -if(_56.checkbox){ -if(_56.onlyLeafCheck){ -if(_5f.state=="open"&&(!_5f.children||!_5f.children.length)){ -if(_5f.checked){ -$("").prependTo(_60); -}else{ -$("").prependTo(_60); -} -} -}else{ -if(_5f.checked){ -$("").prependTo(_60); -_58.push(_60[0]); -}else{ -$("").prependTo(_60); -if(_5d==_54){ -_57.push(_60[0]); -} -} -} -} -if(_5f.children&&_5f.children.length){ -var _61=$("
                                                                                                                                ").appendTo(li); -if(_5f.state=="open"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -_61.css("display","none"); -} -_5a(_61,_5f.children,_5e+1); -}else{ -if(_5f.state=="closed"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -} -} -for(var j=0;j<_5e;j++){ -$("").prependTo(_60); -} -} -}; -}; -function _62(_63,ul,_64){ -var _65=$.data(_63,"tree").options; -if(!_65.lines){ -return; -} -if(!_64){ -_64=true; -$(_63).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_63).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _66=$(_63).tree("getRoots"); -if(_66.length>1){ -$(_66[0].target).addClass("tree-root-first"); -}else{ -if(_66.length==1){ -$(_66[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var _67=$(this).children("div.tree-node"); -var ul=_67.next("ul"); -if(ul.length){ -if($(this).next().length){ -_68(_67); -} -_62(_63,ul,_64); -}else{ -_69(_67); -} -}); -var _6a=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_6a.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _69(_6b,_6c){ -var _6d=_6b.find("span.tree-icon"); -_6d.prev("span.tree-indent").addClass("tree-join"); -}; -function _68(_6e){ -var _6f=_6e.find("span.tree-indent, span.tree-hit").length; -_6e.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_6f-1)+")").addClass("tree-line"); -}); -}; -}; -function _70(_71,ul,_72,_73){ -var _74=$.data(_71,"tree").options; -_72=_72||{}; -var _75=null; -if(_71!=ul){ -var _76=$(ul).prev(); -_75=_14(_71,_76[0]); -} -if(_74.onBeforeLoad.call(_71,_75,_72)==false){ -return; -} -var _77=$(ul).prev().children("span.tree-folder"); -_77.addClass("tree-loading"); -var _78=_74.loader.call(_71,_72,function(_79){ -_77.removeClass("tree-loading"); -_52(_71,ul,_79); -if(_73){ -_73(); -} -},function(){ -_77.removeClass("tree-loading"); -_74.onLoadError.apply(_71,arguments); -if(_73){ -_73(); -} -}); -if(_78==false){ -_77.removeClass("tree-loading"); -} -}; -function _7a(_7b,_7c,_7d){ -var _7e=$.data(_7b,"tree").options; -var hit=$(_7c).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var _7f=_14(_7b,_7c); -if(_7e.onBeforeExpand.call(_7b,_7f)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_7c).next(); -if(ul.length){ -if(_7e.animate){ -ul.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -ul.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}else{ -var _80=$("
                                                                                                                                  ").insertAfter(_7c); -_70(_7b,_80[0],{id:_7f.id},function(){ -if(_80.is(":empty")){ -_80.remove(); -} -if(_7e.animate){ -_80.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -_80.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}); -} -}; -function _81(_82,_83){ -var _84=$.data(_82,"tree").options; -var hit=$(_83).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var _85=_14(_82,_83); -if(_84.onBeforeCollapse.call(_82,_85)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_83).next(); -if(_84.animate){ -ul.slideUp("normal",function(){ -_84.onCollapse.call(_82,_85); -}); -}else{ -ul.css("display","none"); -_84.onCollapse.call(_82,_85); -} -}; -function _86(_87,_88){ -var hit=$(_88).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_81(_87,_88); -}else{ -_7a(_87,_88); -} -}; -function _89(_8a,_8b){ -var _8c=_51(_8a,_8b); -if(_8b){ -_8c.unshift(_14(_8a,_8b)); -} -for(var i=0;i<_8c.length;i++){ -_7a(_8a,_8c[i].target); -} -}; -function _8d(_8e,_8f){ -var _90=[]; -var p=_91(_8e,_8f); -while(p){ -_90.unshift(p); -p=_91(_8e,p.target); -} -for(var i=0;i<_90.length;i++){ -_7a(_8e,_90[i].target); -} -}; -function _92(_93,_94){ -var c=$(_93).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_94); -var _95=n.offset().top; -if(c[0].tagName!="BODY"){ -var _96=c.offset().top; -if(_95<_96){ -c.scrollTop(c.scrollTop()+_95-_96); -}else{ -if(_95+n.outerHeight()>_96+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+_95+n.outerHeight()-_96-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(_95); -} -}; -function _97(_98,_99){ -var _9a=_51(_98,_99); -if(_99){ -_9a.unshift(_14(_98,_99)); -} -for(var i=0;i<_9a.length;i++){ -_81(_98,_9a[i].target); -} -}; -function _9b(_9c){ -var _9d=_9e(_9c); -if(_9d.length){ -return _9d[0]; -}else{ -return null; -} -}; -function _9e(_9f){ -var _a0=[]; -$(_9f).children("li").each(function(){ -var _a1=$(this).children("div.tree-node"); -_a0.push(_14(_9f,_a1[0])); -}); -return _a0; -}; -function _51(_a2,_a3){ -var _a4=[]; -if(_a3){ -_a5($(_a3)); -}else{ -var _a6=_9e(_a2); -for(var i=0;i<_a6.length;i++){ -_a4.push(_a6[i]); -_a5($(_a6[i].target)); -} -} -function _a5(_a7){ -_a7.next().find("div.tree-node").each(function(){ -_a4.push(_14(_a2,this)); -}); -}; -return _a4; -}; -function _91(_a8,_a9){ -var ul=$(_a9).parent().parent(); -if(ul[0]==_a8){ -return null; -}else{ -return _14(_a8,ul.prev()[0]); -} -}; -function _aa(_ab,_ac){ -_ac=_ac||"checked"; -if(!$.isArray(_ac)){ -_ac=[_ac]; -} -var _ad=[]; -for(var i=0;i<_ac.length;i++){ -var s=_ac[i]; -if(s=="checked"){ -_ad.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_ad.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_ad.push("span.tree-checkbox2"); -} -} -} -} -var _ae=[]; -$(_ab).find(_ad.join(",")).each(function(){ -var _af=$(this).parent(); -_ae.push(_14(_ab,_af[0])); -}); -return _ae; -}; -function _b0(_b1){ -var _b2=$(_b1).find("div.tree-node-selected"); -if(_b2.length){ -return _14(_b1,_b2[0]); -}else{ -return null; -} -}; -function _b3(_b4,_b5){ -var _b6=$(_b5.parent); -var _b7=_b5.data; -if(!_b7){ -return; -} -_b7=$.isArray(_b7)?_b7:[_b7]; -if(!_b7.length){ -return; -} -var ul; -if(_b6.length==0){ -ul=$(_b4); -}else{ -if(_4d(_b4,_b6[0])){ -var _b8=_b6.find("span.tree-icon"); -_b8.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_b8); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=_b6.next(); -if(!ul.length){ -ul=$("
                                                                                                                                    ").insertAfter(_b6); -} -} -_52(_b4,ul[0],_b7,true); -_48(_b4,ul.prev()); -}; -function _b9(_ba,_bb){ -var ref=_bb.before||_bb.after; -var _bc=_91(_ba,ref); -var _bd=_bb.data; -if(!_bd){ -return; -} -_bd=$.isArray(_bd)?_bd:[_bd]; -if(!_bd.length){ -return; -} -_b3(_ba,{parent:(_bc?_bc.target:null),data:_bd}); -var li=$(); -var _be=_bc?$(_bc.target).next().children("li:last"):$(_ba).children("li:last"); -for(var i=0;i<_bd.length;i++){ -li=_be.add(li); -_be=_be.prev(); -} -if(_bb.before){ -li.insertBefore($(ref).parent()); -}else{ -li.insertAfter($(ref).parent()); -} -}; -function _bf(_c0,_c1){ -var _c2=_91(_c0,_c1); -var _c3=$(_c1); -var li=_c3.parent(); -var ul=li.parent(); -li.remove(); -if(ul.children("li").length==0){ -var _c3=ul.prev(); -_c3.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_c3.find(".tree-hit").remove(); -$("").prependTo(_c3); -if(ul[0]!=_c0){ -ul.remove(); -} -} -if(_c2){ -_48(_c0,_c2.target); -} -_62(_c0,_c0); -}; -function _c4(_c5,_c6){ -function _c7(aa,ul){ -ul.children("li").each(function(){ -var _c8=$(this).children("div.tree-node"); -var _c9=_14(_c5,_c8[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_c9.children=[]; -_c7(_c9.children,sub); -} -aa.push(_c9); -}); -}; -if(_c6){ -var _ca=_14(_c5,_c6); -_ca.children=[]; -_c7(_ca.children,$(_c6).next()); -return _ca; -}else{ -return null; -} -}; -function _cb(_cc,_cd){ -var _ce=$.data(_cc,"tree").options; -var _cf=$(_cd.target); -var _d0=_14(_cc,_cd.target); -if(_d0.iconCls){ -_cf.find(".tree-icon").removeClass(_d0.iconCls); -} -var _d1=$.extend({},_d0,_cd); -$.data(_cd.target,"tree-node",_d1); -_cf.attr("node-id",_d1.id); -_cf.find(".tree-title").html(_ce.formatter.call(_cc,_d1)); -if(_d1.iconCls){ -_cf.find(".tree-icon").addClass(_d1.iconCls); -} -if(_d0.checked!=_d1.checked){ -_39(_cc,_cd.target,_d1.checked); -} -}; -function _14(_d2,_d3){ -var _d4=$.extend({},$.data(_d3,"tree-node"),{target:_d3,checked:$(_d3).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_4d(_d2,_d3)){ -_d4.state=$(_d3).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return _d4; -}; -function _d5(_d6,id){ -var _d7=$(_d6).find("div.tree-node[node-id=\""+id+"\"]"); -if(_d7.length){ -return _14(_d6,_d7[0]); -}else{ -return null; -} -}; -function _d8(_d9,_da){ -var _db=$.data(_d9,"tree").options; -var _dc=_14(_d9,_da); -if(_db.onBeforeSelect.call(_d9,_dc)==false){ -return; -} -$("div.tree-node-selected",_d9).removeClass("tree-node-selected"); -$(_da).addClass("tree-node-selected"); -_db.onSelect.call(_d9,_dc); -}; -function _4d(_dd,_de){ -var _df=$(_de); -var hit=_df.children("span.tree-hit"); -return hit.length==0; -}; -function _e0(_e1,_e2){ -var _e3=$.data(_e1,"tree").options; -var _e4=_14(_e1,_e2); -if(_e3.onBeforeEdit.call(_e1,_e4)==false){ -return; -} -$(_e2).css("position","relative"); -var nt=$(_e2).find(".tree-title"); -var _e5=nt.outerWidth(); -nt.empty(); -var _e6=$("").appendTo(nt); -_e6.val(_e4.text).focus(); -_e6.width(_e5+20); -_e6.height(document.compatMode=="CSS1Compat"?(18-(_e6.outerHeight()-_e6.height())):18); -_e6.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_e7(_e1,_e2); -return false; -}else{ -if(e.keyCode==27){ -_ed(_e1,_e2); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_e7(_e1,_e2); -}); -}; -function _e7(_e8,_e9){ -var _ea=$.data(_e8,"tree").options; -$(_e9).css("position",""); -var _eb=$(_e9).find("input.tree-editor"); -var val=_eb.val(); -_eb.remove(); -var _ec=_14(_e8,_e9); -_ec.text=val; -_cb(_e8,_ec); -_ea.onAfterEdit.call(_e8,_ec); -}; -function _ed(_ee,_ef){ -var _f0=$.data(_ee,"tree").options; -$(_ef).css("position",""); -$(_ef).find("input.tree-editor").remove(); -var _f1=_14(_ee,_ef); -_cb(_ee,_f1); -_f0.onCancelEdit.call(_ee,_f1); -}; -$.fn.tree=function(_f2,_f3){ -if(typeof _f2=="string"){ -return $.fn.tree.methods[_f2](this,_f3); -} -var _f2=_f2||{}; -return this.each(function(){ -var _f4=$.data(this,"tree"); -var _f5; -if(_f4){ -_f5=$.extend(_f4.options,_f2); -_f4.options=_f5; -}else{ -_f5=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f2); -$.data(this,"tree",{options:_f5,tree:_1(this)}); -var _f6=_4(this); -if(_f6.length&&!_f5.data){ -_f5.data=_f6; -} -} -_c(this); -if(_f5.lines){ -$(this).addClass("tree-lines"); -} -if(_f5.data){ -_52(this,this,_f5.data); -}else{ -if(_f5.dnd){ -_18(this); -}else{ -_15(this); -} -} -_70(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,_f7){ -return jq.each(function(){ -_52(this,this,_f7); -}); -},getNode:function(jq,_f8){ -return _14(jq[0],_f8); -},getData:function(jq,_f9){ -return _c4(jq[0],_f9); -},reload:function(jq,_fa){ -return jq.each(function(){ -if(_fa){ -var _fb=$(_fa); -var hit=_fb.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -_fb.next().remove(); -_7a(this,_fa); -}else{ -$(this).empty(); -_70(this,this); -} -}); -},getRoot:function(jq){ -return _9b(jq[0]); -},getRoots:function(jq){ -return _9e(jq[0]); -},getParent:function(jq,_fc){ -return _91(jq[0],_fc); -},getChildren:function(jq,_fd){ -return _51(jq[0],_fd); -},getChecked:function(jq,_fe){ -return _aa(jq[0],_fe); -},getSelected:function(jq){ -return _b0(jq[0]); -},isLeaf:function(jq,_ff){ -return _4d(jq[0],_ff); -},find:function(jq,id){ -return _d5(jq[0],id); -},select:function(jq,_100){ -return jq.each(function(){ -_d8(this,_100); -}); -},check:function(jq,_101){ -return jq.each(function(){ -_39(this,_101,true); -}); -},uncheck:function(jq,_102){ -return jq.each(function(){ -_39(this,_102,false); -}); -},collapse:function(jq,_103){ -return jq.each(function(){ -_81(this,_103); -}); -},expand:function(jq,_104){ -return jq.each(function(){ -_7a(this,_104); -}); -},collapseAll:function(jq,_105){ -return jq.each(function(){ -_97(this,_105); -}); -},expandAll:function(jq,_106){ -return jq.each(function(){ -_89(this,_106); -}); -},expandTo:function(jq,_107){ -return jq.each(function(){ -_8d(this,_107); -}); -},scrollTo:function(jq,_108){ -return jq.each(function(){ -_92(this,_108); -}); -},toggle:function(jq,_109){ -return jq.each(function(){ -_86(this,_109); -}); -},append:function(jq,_10a){ -return jq.each(function(){ -_b3(this,_10a); -}); -},insert:function(jq,_10b){ -return jq.each(function(){ -_b9(this,_10b); -}); -},remove:function(jq,_10c){ -return jq.each(function(){ -_bf(this,_10c); -}); -},pop:function(jq,_10d){ -var node=jq.tree("getData",_10d); -jq.tree("remove",_10d); -return node; -},update:function(jq,_10e){ -return jq.each(function(){ -_cb(this,_10e); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_18(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_15(this); -}); -},beginEdit:function(jq,_10f){ -return jq.each(function(){ -_e0(this,_10f); -}); -},endEdit:function(jq,_110){ -return jq.each(function(){ -_e7(this,_110); -}); -},cancelEdit:function(jq,_111){ -return jq.each(function(){ -_ed(this,_111); -}); -}}; -$.fn.tree.parseOptions=function(_112){ -var t=$(_112); -return $.extend({},$.parser.parseOptions(_112,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_113,_114,_115){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_113,dataType:"json",success:function(data){ -_114(data); -},error:function(){ -_115.apply(this,arguments); -}}); -},loadFilter:function(data,_116){ -return data; -},onBeforeLoad:function(node,_117){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_118){ -},onCheck:function(node,_119){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_11a,_11b){ -},onDragOver:function(_11c,_11d){ -},onDragLeave:function(_11e,_11f){ -},onBeforeDrop:function(_120,_121,_122){ -},onDrop:function(_123,_124,_125){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.treegrid.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.treegrid.js deleted file mode 100644 index 9aee2c6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.treegrid.js +++ /dev/null @@ -1,1100 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"treegrid"); -var _4=_3.options; -$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ -return false; -},onBeforeLoad:function(){ -return false; -},onLoadSuccess:function(){ -},onResizeColumn:function(_5,_6){ -_20(_2); -_4.onResizeColumn.call(_2,_5,_6); -},onSortColumn:function(_7,_8){ -_4.sortName=_7; -_4.sortOrder=_8; -if(_4.remoteSort){ -_1f(_2); -}else{ -var _9=$(_2).treegrid("getData"); -_39(_2,0,_9); -} -_4.onSortColumn.call(_2,_7,_8); -},onBeforeEdit:function(_a,_b){ -if(_4.onBeforeEdit.call(_2,_b)==false){ -return false; -} -},onAfterEdit:function(_c,_d,_e){ -_4.onAfterEdit.call(_2,_d,_e); -},onCancelEdit:function(_f,row){ -_4.onCancelEdit.call(_2,row); -},onSelect:function(_10){ -_4.onSelect.call(_2,_41(_2,_10)); -},onUnselect:function(_11){ -_4.onUnselect.call(_2,_41(_2,_11)); -},onSelectAll:function(){ -_4.onSelectAll.call(_2,$.data(_2,"treegrid").data); -},onUnselectAll:function(){ -_4.onUnselectAll.call(_2,$.data(_2,"treegrid").data); -},onCheck:function(_12){ -_4.onCheck.call(_2,_41(_2,_12)); -},onUncheck:function(_13){ -_4.onUncheck.call(_2,_41(_2,_13)); -},onCheckAll:function(){ -_4.onCheckAll.call(_2,$.data(_2,"treegrid").data); -},onUncheckAll:function(){ -_4.onUncheckAll.call(_2,$.data(_2,"treegrid").data); -},onClickRow:function(_14){ -_4.onClickRow.call(_2,_41(_2,_14)); -},onDblClickRow:function(_15){ -_4.onDblClickRow.call(_2,_41(_2,_15)); -},onClickCell:function(_16,_17){ -_4.onClickCell.call(_2,_17,_41(_2,_16)); -},onDblClickCell:function(_18,_19){ -_4.onDblClickCell.call(_2,_19,_41(_2,_18)); -},onRowContextMenu:function(e,_1a){ -_4.onContextMenu.call(_2,e,_41(_2,_1a)); -}})); -if(!_4.columns){ -var _1b=$.data(_2,"datagrid").options; -_4.columns=_1b.columns; -_4.frozenColumns=_1b.frozenColumns; -} -_3.dc=$.data(_2,"datagrid").dc; -if(_4.pagination){ -var _1c=$(_2).datagrid("getPager"); -_1c.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_1d,_1e){ -_4.pageNumber=_1d; -_4.pageSize=_1e; -_1f(_2); -}}); -_4.pageSize=_1c.pagination("options").pageSize; -} -}; -function _20(_21,_22){ -var _23=$.data(_21,"datagrid").options; -var dc=$.data(_21,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!_23.nowrap||_23.autoRowHeight)){ -if(_22!=undefined){ -var _24=_25(_21,_22); -for(var i=0;i<_24.length;i++){ -_26(_24[i][_23.idField]); -} -} -} -$(_21).datagrid("fixRowHeight",_22); -function _26(_27){ -var tr1=_23.finder.getTr(_21,_27,"body",1); -var tr2=_23.finder.getTr(_21,_27,"body",2); -tr1.css("height",""); -tr2.css("height",""); -var _28=Math.max(tr1.height(),tr2.height()); -tr1.css("height",_28); -tr2.css("height",_28); -}; -}; -function _29(_2a){ -var dc=$.data(_2a,"datagrid").dc; -var _2b=$.data(_2a,"treegrid").options; -if(!_2b.rownumbers){ -return; -} -dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ -$(this).html(i+1); -}); -}; -function _2c(_2d){ -var dc=$.data(_2d,"datagrid").dc; -var _2e=dc.body1.add(dc.body2); -var _2f=($.data(_2e[0],"events")||$._data(_2e[0],"events")).click[0].handler; -dc.body1.add(dc.body2).bind("mouseover",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.addClass("tree-expanded-hover"):tt.addClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.removeClass("tree-expanded-hover"):tt.removeClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).unbind("click").bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_30(_2d,tr.attr("node-id")); -}else{ -_2f(e); -} -e.stopPropagation(); -}); -}; -function _31(_32,_33){ -var _34=$.data(_32,"treegrid").options; -var tr1=_34.finder.getTr(_32,_33,"body",1); -var tr2=_34.finder.getTr(_32,_33,"body",2); -var _35=$(_32).datagrid("getColumnFields",true).length+(_34.rownumbers?1:0); -var _36=$(_32).datagrid("getColumnFields",false).length; -_37(tr1,_35); -_37(tr2,_36); -function _37(tr,_38){ -$(""+""+"
                                                                                                                                    "+""+"").insertAfter(tr); -}; -}; -function _39(_3a,_3b,_3c,_3d){ -var _3e=$.data(_3a,"treegrid"); -var _3f=_3e.options; -var dc=_3e.dc; -_3c=_3f.loadFilter.call(_3a,_3c,_3b); -var _40=_41(_3a,_3b); -if(_40){ -var _42=_3f.finder.getTr(_3a,_3b,"body",1); -var _43=_3f.finder.getTr(_3a,_3b,"body",2); -var cc1=_42.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_43.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_3d){ -_40.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_3d){ -_3e.data=[]; -} -} -if(!_3d){ -cc1.empty(); -cc2.empty(); -} -if(_3f.view.onBeforeRender){ -_3f.view.onBeforeRender.call(_3f.view,_3a,_3b,_3c); -} -_3f.view.render.call(_3f.view,_3a,cc1,true); -_3f.view.render.call(_3f.view,_3a,cc2,false); -if(_3f.showFooter){ -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer1,true); -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer2,false); -} -if(_3f.view.onAfterRender){ -_3f.view.onAfterRender.call(_3f.view,_3a); -} -_3f.onLoadSuccess.call(_3a,_40,_3c); -if(!_3b&&_3f.pagination){ -var _44=$.data(_3a,"treegrid").total; -var _45=$(_3a).datagrid("getPager"); -if(_45.pagination("options").total!=_44){ -_45.pagination({total:_44}); -} -} -_20(_3a); -_29(_3a); -$(_3a).treegrid("autoSizeColumn"); -}; -function _1f(_46,_47,_48,_49,_4a){ -var _4b=$.data(_46,"treegrid").options; -var _4c=$(_46).datagrid("getPanel").find("div.datagrid-body"); -if(_48){ -_4b.queryParams=_48; -} -var _4d=$.extend({},_4b.queryParams); -if(_4b.pagination){ -$.extend(_4d,{page:_4b.pageNumber,rows:_4b.pageSize}); -} -if(_4b.sortName){ -$.extend(_4d,{sort:_4b.sortName,order:_4b.sortOrder}); -} -var row=_41(_46,_47); -if(_4b.onBeforeLoad.call(_46,row,_4d)==false){ -return; -} -var _4e=_4c.find("tr[node-id=\""+_47+"\"] span.tree-folder"); -_4e.addClass("tree-loading"); -$(_46).treegrid("loading"); -var _4f=_4b.loader.call(_46,_4d,function(_50){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_39(_46,_47,_50,_49); -if(_4a){ -_4a(); -} -},function(){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_4b.onLoadError.apply(_46,arguments); -if(_4a){ -_4a(); -} -}); -if(_4f==false){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -} -}; -function _51(_52){ -var _53=_54(_52); -if(_53.length){ -return _53[0]; -}else{ -return null; -} -}; -function _54(_55){ -return $.data(_55,"treegrid").data; -}; -function _56(_57,_58){ -var row=_41(_57,_58); -if(row._parentId){ -return _41(_57,row._parentId); -}else{ -return null; -} -}; -function _25(_59,_5a){ -var _5b=$.data(_59,"treegrid").options; -var _5c=$(_59).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _5d=[]; -if(_5a){ -_5e(_5a); -}else{ -var _5f=_54(_59); -for(var i=0;i<_5f.length;i++){ -_5d.push(_5f[i]); -_5e(_5f[i][_5b.idField]); -} -} -function _5e(_60){ -var _61=_41(_59,_60); -if(_61&&_61.children){ -for(var i=0,len=_61.children.length;i").insertBefore(_96); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_39(_92,_93.parent,_93.data,true); -}; -function _97(_98,_99){ -var ref=_99.before||_99.after; -var _9a=$.data(_98,"treegrid").options; -var _9b=_56(_98,ref); -_91(_98,{parent:(_9b?_9b[_9a.idField]:null),data:[_99.data]}); -_9c(true); -_9c(false); -_29(_98); -function _9c(_9d){ -var _9e=_9d?1:2; -var tr=_9a.finder.getTr(_98,_99.data[_9a.idField],"body",_9e); -var _9f=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var _a0=_9a.finder.getTr(_98,ref,"body",_9e); -if(_99.before){ -tr.insertBefore(_a0); -}else{ -var sub=_a0.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:_a0); -} -_9f.remove(); -}; -}; -function _a1(_a2,_a3){ -var _a4=$.data(_a2,"treegrid").options; -var tr=_a4.finder.getTr(_a2,_a3); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _a5=del(_a3); -if(_a5){ -if(_a5.children.length==0){ -tr=_a4.finder.getTr(_a2,_a5[_a4.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var _a6=tr.children("td[field=\""+_a4.treeField+"\"]").children("div.datagrid-cell"); -_a6.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_a6.find(".tree-hit").remove(); -$("").prependTo(_a6); -} -} -_29(_a2); -function del(id){ -var cc; -var _a7=_56(_a2,_a3); -if(_a7){ -cc=_a7.children; -}else{ -cc=$(_a2).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_c9.length;i++){ -var row=_c9[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=_c0.rowStyler?_c0.rowStyler.call(_bd,row):""; -var _cb=""; -var _cc=""; -if(typeof css=="string"){ -_cc=css; -}else{ -if(css){ -_cb=css["class"]||""; -_cc=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_c3++%2&&_c0.striped?"datagrid-row-alt ":" ")+_cb+"\""; -var _cd=_cc?"style=\""+_cc+"\"":""; -var _ce=_c2+"-"+(_c7?1:2)+"-"+row[_c0.idField]; -_ca.push(""); -_ca=_ca.concat(_c4.renderRow.call(_c4,_bd,_c1,_c7,_c8,row)); -_ca.push(""); -if(row.children&&row.children.length){ -var tt=_c6(_c7,_c8+1,row.children); -var v=row.state=="closed"?"none":"block"; -_ca.push("
                                                                                                                                    "); -_ca=_ca.concat(tt); -_ca.push("
                                                                                                                                    "); -} -} -_ca.push(""); -return _ca; -}; -},renderFooter:function(_cf,_d0,_d1){ -var _d2=$.data(_cf,"treegrid").options; -var _d3=$.data(_cf,"treegrid").footer||[]; -var _d4=$(_cf).datagrid("getColumnFields",_d1); -var _d5=[""]; -for(var i=0;i<_d3.length;i++){ -var row=_d3[i]; -row[_d2.idField]=row[_d2.idField]||("foot-row-id"+i); -_d5.push(""); -_d5.push(this.renderRow.call(this,_cf,_d4,_d1,0,row)); -_d5.push(""); -} -_d5.push("
                                                                                                                                    "); -$(_d0).html(_d5.join("")); -},renderRow:function(_d6,_d7,_d8,_d9,row){ -var _da=$.data(_d6,"treegrid").options; -var cc=[]; -if(_d8&&_da.rownumbers){ -cc.push("
                                                                                                                                    0
                                                                                                                                    "); -} -for(var i=0;i<_d7.length;i++){ -var _db=_d7[i]; -var col=$(_d6).datagrid("getColumnOption",_db); -if(col){ -var css=col.styler?(col.styler(row[_db],row)||""):""; -var _dc=""; -var _dd=""; -if(typeof css=="string"){ -_dd=css; -}else{ -if(cc){ -_dc=css["class"]||""; -_dd=css["style"]||""; -} -} -var cls=_dc?"class=\""+_dc+"\"":""; -var _de=col.hidden?"style=\"display:none;"+_dd+"\"":(_dd?"style=\""+_dd+"\"":""); -cc.push(""); -if(col.checkbox){ -var _de=""; -}else{ -var _de=_dd; -if(col.align){ -_de+=";text-align:"+col.align+";"; -} -if(!_da.nowrap){ -_de+=";white-space:normal;height:auto;"; -}else{ -if(_da.autoRowHeight){ -_de+=";height:auto;"; -} -} -} -cc.push("
                                                                                                                                    "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_db],row); -}else{ -val=row[_db]; -} -if(_db==_da.treeField){ -for(var j=0;j<_d9;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                                                                                                                    "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_df,id){ -this.updateRow.call(this,_df,id,{}); -},updateRow:function(_e0,id,row){ -var _e1=$.data(_e0,"treegrid").options; -var _e2=$(_e0).treegrid("find",id); -$.extend(_e2,row); -var _e3=$(_e0).treegrid("getLevel",id)-1; -var _e4=_e1.rowStyler?_e1.rowStyler.call(_e0,_e2):""; -function _e5(_e6){ -var _e7=$(_e0).treegrid("getColumnFields",_e6); -var tr=_e1.finder.getTr(_e0,id,"body",(_e6?1:2)); -var _e8=tr.find("div.datagrid-cell-rownumber").html(); -var _e9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_e0,_e7,_e6,_e3,_e2)); -tr.attr("style",_e4||""); -tr.find("div.datagrid-cell-rownumber").html(_e8); -if(_e9){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_e5.call(this,true); -_e5.call(this,false); -$(_e0).treegrid("fixRowHeight",id); -},onBeforeRender:function(_ea,_eb,_ec){ -if($.isArray(_eb)){ -_ec={total:_eb.length,rows:_eb}; -_eb=null; -} -if(!_ec){ -return false; -} -var _ed=$.data(_ea,"treegrid"); -var _ee=_ed.options; -if(_ec.length==undefined){ -if(_ec.footer){ -_ed.footer=_ec.footer; -} -if(_ec.total){ -_ed.total=_ec.total; -} -_ec=this.transfer(_ea,_eb,_ec.rows); -}else{ -function _ef(_f0,_f1){ -for(var i=0;i<_f0.length;i++){ -var row=_f0[i]; -row._parentId=_f1; -if(row.children&&row.children.length){ -_ef(row.children,row[_ee.idField]); -} -} -}; -_ef(_ec,_eb); -} -var _f2=_41(_ea,_eb); -if(_f2){ -if(_f2.children){ -_f2.children=_f2.children.concat(_ec); -}else{ -_f2.children=_ec; -} -}else{ -_ed.data=_ed.data.concat(_ec); -} -this.sort(_ea,_ec); -this.treeNodes=_ec; -this.treeLevel=$(_ea).treegrid("getLevel",_eb); -},sort:function(_f3,_f4){ -var _f5=$.data(_f3,"treegrid").options; -if(!_f5.remoteSort&&_f5.sortName){ -var _f6=_f5.sortName.split(","); -var _f7=_f5.sortOrder.split(","); -_f8(_f4); -} -function _f8(_f9){ -_f9.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_f6.length;i++){ -var sn=_f6[i]; -var so=_f7[i]; -var col=$(_f3).treegrid("getColumnOption",sn); -var _fa=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_fa(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i<_f9.length;i++){ -var _fb=_f9[i].children; -if(_fb&&_fb.length){ -_f8(_fb); -} -} -}; -},transfer:function(_fc,_fd,_fe){ -var _ff=$.data(_fc,"treegrid").options; -var rows=[]; -for(var i=0;i<_fe.length;i++){ -rows.push(_fe[i]); -} -var _100=[]; -for(var i=0;i=_2b[0]&&len<=_2b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_2c,_2d){ -var _2e={}; -_2e[_2d[1]]=_2c; -var _2f=$.ajax({url:_2d[0],dataType:"json",data:_2e,async:false,cache:false,type:"post"}).responseText; -return _2f=="true"; -},message:"Please fix this field."}}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.window.js b/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.window.js deleted file mode 100644 index 38d05d1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/plugins/jquery.window.js +++ /dev/null @@ -1,288 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -var _4=$.data(_2,"window").options; -if(_3){ -if(_3.width){ -_4.width=_3.width; -} -if(_3.height){ -_4.height=_3.height; -} -if(_3.left!=null){ -_4.left=_3.left; -} -if(_3.top!=null){ -_4.top=_3.top; -} -} -$(_2).panel("resize",_4); -}; -function _5(_6,_7){ -var _8=$.data(_6,"window"); -if(_7){ -if(_7.left!=null){ -_8.options.left=_7.left; -} -if(_7.top!=null){ -_8.options.top=_7.top; -} -} -$(_6).panel("move",_8.options); -if(_8.shadow){ -_8.shadow.css({left:_8.options.left,top:_8.options.top}); -} -}; -function _9(_a,_b){ -var _c=$.data(_a,"window"); -var _d=_c.options; -var _e=_d.width; -if(isNaN(_e)){ -_e=_c.window._outerWidth(); -} -if(_d.inline){ -var _f=_c.window.parent(); -_d.left=(_f.width()-_e)/2+_f.scrollLeft(); -}else{ -_d.left=($(window)._outerWidth()-_e)/2+$(document).scrollLeft(); -} -if(_b){ -_5(_a); -} -}; -function _10(_11,_12){ -var _13=$.data(_11,"window"); -var _14=_13.options; -var _15=_14.height; -if(isNaN(_15)){ -_15=_13.window._outerHeight(); -} -if(_14.inline){ -var _16=_13.window.parent(); -_14.top=(_16.height()-_15)/2+_16.scrollTop(); -}else{ -_14.top=($(window)._outerHeight()-_15)/2+$(document).scrollTop(); -} -if(_12){ -_5(_11); -} -}; -function _17(_18){ -var _19=$.data(_18,"window"); -var win=$(_18).panel($.extend({},_19.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_19.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_19.options.onBeforeDestroy.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.mask){ -_19.mask.remove(); -} -},onClose:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onClose.call(_18); -},onOpen:function(){ -if(_19.mask){ -_19.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_19.shadow){ -_19.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.window.css("z-index",$.fn.window.defaults.zIndex++); -_19.options.onOpen.call(_18); -},onResize:function(_1a,_1b){ -var _1c=$(this).panel("options"); -$.extend(_19.options,{width:_1c.width,height:_1c.height,left:_1c.left,top:_1c.top}); -if(_19.shadow){ -_19.shadow.css({left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.options.onResize.call(_18,_1a,_1b); -},onMinimize:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onMinimize.call(_18); -},onBeforeCollapse:function(){ -if(_19.options.onBeforeCollapse.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.hide(); -} -},onExpand:function(){ -if(_19.shadow){ -_19.shadow.show(); -} -_19.options.onExpand.call(_18); -}})); -_19.window=win.panel("panel"); -if(_19.mask){ -_19.mask.remove(); -} -if(_19.options.modal==true){ -_19.mask=$("
                                                                                                                                    ").insertAfter(_19.window); -_19.mask.css({width:(_19.options.inline?_19.mask.parent().width():_1d().width),height:(_19.options.inline?_19.mask.parent().height():_1d().height),display:"none"}); -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.options.shadow==true){ -_19.shadow=$("
                                                                                                                                    ").insertAfter(_19.window); -_19.shadow.css({display:"none"}); -} -if(_19.options.left==null){ -_9(_18); -} -if(_19.options.top==null){ -_10(_18); -} -_5(_18); -if(_19.options.closed==false){ -win.window("open"); -} -}; -function _1e(_1f){ -var _20=$.data(_1f,"window"); -_20.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_20.options.draggable==false,onStartDrag:function(e){ -if(_20.mask){ -_20.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_20.shadow){ -_20.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_20.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_20.proxy){ -_20.proxy=$("
                                                                                                                                    ").insertAfter(_20.window); -} -_20.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(_20.window._outerWidth()); -_20.proxy._outerHeight(_20.window._outerHeight()); -setTimeout(function(){ -if(_20.proxy){ -_20.proxy.show(); -} -},500); -},onDrag:function(e){ -_20.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_20.options.left=e.data.left; -_20.options.top=e.data.top; -$(_1f).window("move"); -_20.proxy.remove(); -_20.proxy=null; -}}); -_20.window.resizable({disabled:_20.options.resizable==false,onStartResize:function(e){ -_20.pmask=$("
                                                                                                                                    ").insertAfter(_20.window); -_20.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_20.window._outerWidth(),height:_20.window._outerHeight()}); -if(!_20.proxy){ -_20.proxy=$("
                                                                                                                                    ").insertAfter(_20.window); -} -_20.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_20.proxy.css({left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_20.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_1(_1f); -_20.pmask.remove(); -_20.pmask=null; -_20.proxy.remove(); -_20.proxy=null; -}}); -}; -function _1d(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_1d().width,height:_1d().height}); -},50); -}); -$.fn.window=function(_21,_22){ -if(typeof _21=="string"){ -var _23=$.fn.window.methods[_21]; -if(_23){ -return _23(this,_22); -}else{ -return this.panel(_21,_22); -} -} -_21=_21||{}; -return this.each(function(){ -var _24=$.data(this,"window"); -if(_24){ -$.extend(_24.options,_21); -}else{ -_24=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_21)}); -if(!_24.options.inline){ -document.body.appendChild(this); -} -} -_17(this); -_1e(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _25=jq.panel("options"); -var _26=$.data(jq[0],"window").options; -return $.extend(_26,{closed:_25.closed,collapsed:_25.collapsed,minimized:_25.minimized,maximized:_25.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_27){ -return jq.each(function(){ -_1(this,_27); -}); -},move:function(jq,_28){ -return jq.each(function(){ -_5(this,_28); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_9(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_10(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_9(this); -_10(this); -_5(this); -}); -}}; -$.fn.window.parseOptions=function(_29){ -return $.extend({},$.fn.panel.parseOptions(_29),$.parser.parseOptions(_29,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/accordion.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/accordion.css deleted file mode 100644 index a0f6ddc..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/calendar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/calendar.css deleted file mode 100644 index 514f3e3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/combo.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/combo.css deleted file mode 100644 index d0af3b7..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/combobox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/combobox.css deleted file mode 100644 index 9c55f28..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/datagrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/datagrid.css deleted file mode 100644 index 2a616fb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/datebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/datebox.css deleted file mode 100644 index e368f64..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/dialog.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/dialog.css deleted file mode 100644 index 4ee224a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/easyui.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/easyui.css deleted file mode 100644 index 8e20555..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/easyui.css +++ /dev/null @@ -1,2292 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/Thumbs.db b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/accordion_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/accordion_arrows.png deleted file mode 100644 index 45fd44a..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/blank.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/calendar_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/combo_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/combo_arrow.png deleted file mode 100644 index ac58921..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/datagrid_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/datagrid_icons.png deleted file mode 100644 index bdf87e3..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/datebox_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/layout_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/layout_arrows.png deleted file mode 100644 index 19c611f..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/linkbutton_bg.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/loading.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/menu_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/menu_arrows.png deleted file mode 100644 index 2a98494..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/messager_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/pagination_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/pagination_icons.png deleted file mode 100644 index b3315fa..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/panel_tools.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/panel_tools.png deleted file mode 100644 index f97761e..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/searchbox_button.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/slider_handle.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/spinner_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/spinner_arrows.png deleted file mode 100644 index 25ee848..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/tabs_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/tabs_icons.png deleted file mode 100644 index 732b123..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/tree_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/tree_icons.png deleted file mode 100644 index 2b4fd20..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/validatebox_warning.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/layout.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/layout.css deleted file mode 100644 index 31190da..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/linkbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/linkbutton.css deleted file mode 100644 index 69de8e2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/menu.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/menu.css deleted file mode 100644 index 9e89ea5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/menubutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/menubutton.css deleted file mode 100644 index b936c02..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/messager.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/messager.css deleted file mode 100644 index f378f2a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/pagination.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/pagination.css deleted file mode 100644 index 92fa015..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/panel.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/panel.css deleted file mode 100644 index 0197324..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/progressbar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/progressbar.css deleted file mode 100644 index 79fcf62..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/propertygrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/propertygrid.css deleted file mode 100644 index d71ce7c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/searchbox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/searchbox.css deleted file mode 100644 index a502652..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/slider.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/slider.css deleted file mode 100644 index da31fd6..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/spinner.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/spinner.css deleted file mode 100644 index 18ea2a9..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/splitbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/splitbutton.css deleted file mode 100644 index 3391b9c..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tabs.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tabs.css deleted file mode 100644 index 40ba8f1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tooltip.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tooltip.css deleted file mode 100644 index 8dfbfed..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tree.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tree.css deleted file mode 100644 index ea955cb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/validatebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/window.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/window.css deleted file mode 100644 index 1277273..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/black/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/accordion.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/accordion.css deleted file mode 100644 index 6b80dc2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/calendar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/calendar.css deleted file mode 100644 index 83458b2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/combo.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/combo.css deleted file mode 100644 index 42b913a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/combobox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/combobox.css deleted file mode 100644 index 0ad3cb7..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/datagrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/datagrid.css deleted file mode 100644 index 7826541..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/datebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/datebox.css deleted file mode 100644 index 6225a0d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/dialog.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/dialog.css deleted file mode 100644 index 77552bb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/easyui.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/easyui.css deleted file mode 100644 index ea7ef8f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/easyui.css +++ /dev/null @@ -1,2265 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; - border: none; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/Thumbs.db b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/accordion_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/blank.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/calendar_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/combo_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/datagrid_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/datebox_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/layout_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/linkbutton_bg.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/loading.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/menu_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/messager_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/pagination_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/panel_tools.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/panel_tools.png deleted file mode 100644 index 19ecc94..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/searchbox_button.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/slider_handle.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/spinner_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/tabs_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/tree_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/validatebox_warning.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/layout.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/layout.css deleted file mode 100644 index 0292cf5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/linkbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/linkbutton.css deleted file mode 100644 index 6a79c55..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/menu.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/menu.css deleted file mode 100644 index c6089d5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/menubutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/menubutton.css deleted file mode 100644 index 9246499..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/messager.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/messager.css deleted file mode 100644 index 3ed98c7..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/pagination.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/pagination.css deleted file mode 100644 index 3df2050..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/panel.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/panel.css deleted file mode 100644 index 2600688..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/progressbar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/progressbar.css deleted file mode 100644 index db80e3a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/propertygrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/propertygrid.css deleted file mode 100644 index 5f5fbb3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/searchbox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/searchbox.css deleted file mode 100644 index b13708d..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/slider.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/slider.css deleted file mode 100644 index a4db046..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/spinner.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/spinner.css deleted file mode 100644 index 1a28f8a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/splitbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/splitbutton.css deleted file mode 100644 index 61635c3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tabs.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tabs.css deleted file mode 100644 index 2978394..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tooltip.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tooltip.css deleted file mode 100644 index 2881b70..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tree.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tree.css deleted file mode 100644 index af7e273..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/validatebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/window.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/window.css deleted file mode 100644 index b22024a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/default/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/accordion.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/accordion.css deleted file mode 100644 index 3cb451b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/calendar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/calendar.css deleted file mode 100644 index d087f25..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/combo.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/combo.css deleted file mode 100644 index 1fdf982..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/combobox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/combobox.css deleted file mode 100644 index 71b9470..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/datagrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/datagrid.css deleted file mode 100644 index 2bad00a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/datebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/datebox.css deleted file mode 100644 index 8c41350..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/dialog.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/dialog.css deleted file mode 100644 index fcd00ad..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/easyui.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/easyui.css deleted file mode 100644 index 89660cb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/easyui.css +++ /dev/null @@ -1,2264 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/Thumbs.db b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/accordion_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/accordion_arrows.png deleted file mode 100644 index a0b8769..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/blank.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/calendar_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/combo_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/combo_arrow.png deleted file mode 100644 index 04f4ba0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/datagrid_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/datagrid_icons.png deleted file mode 100644 index 73c4e88..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/datebox_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/layout_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/layout_arrows.png deleted file mode 100644 index bf7929f..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/linkbutton_bg.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/loading.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/menu_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/messager_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/pagination_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/pagination_icons.png deleted file mode 100644 index e0f1b07..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/panel_tools.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/panel_tools.png deleted file mode 100644 index f33f8c9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/searchbox_button.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/slider_handle.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/spinner_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/spinner_arrows.png deleted file mode 100644 index dba62bb..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/tabs_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/tabs_icons.png deleted file mode 100644 index dfa10f7..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/tree_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/validatebox_warning.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/layout.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/layout.css deleted file mode 100644 index d26772e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/linkbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/linkbutton.css deleted file mode 100644 index fd725e1..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/menu.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/menu.css deleted file mode 100644 index 51c2cff..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/menubutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/menubutton.css deleted file mode 100644 index dc61b34..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/messager.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/messager.css deleted file mode 100644 index 9b3aed2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/pagination.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/pagination.css deleted file mode 100644 index 2fc3d1f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/panel.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/panel.css deleted file mode 100644 index f38009a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/progressbar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/progressbar.css deleted file mode 100644 index 93818e3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/propertygrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/propertygrid.css deleted file mode 100644 index 90e4520..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/searchbox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/searchbox.css deleted file mode 100644 index a98939a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/slider.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/slider.css deleted file mode 100644 index 38e4e5b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/spinner.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/spinner.css deleted file mode 100644 index 0d9f2b0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/splitbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/splitbutton.css deleted file mode 100644 index f2bbb87..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tabs.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tabs.css deleted file mode 100644 index 7a48b33..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tooltip.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tooltip.css deleted file mode 100644 index 51c5b83..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tree.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tree.css deleted file mode 100644 index c705f39..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/validatebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/window.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/window.css deleted file mode 100644 index b06cfc0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/gray/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icon.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icon.css deleted file mode 100644 index 11e0642..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icon.css +++ /dev/null @@ -1,64 +0,0 @@ -.icon-blank{ - background:url('icons/blank.gif') no-repeat center center; -} -.icon-add{ - background:url('icons/edit_add.png') no-repeat center center; -} -.icon-edit{ - background:url('icons/pencil.png') no-repeat center center; -} -.icon-remove{ - background:url('icons/edit_remove.png') no-repeat center center; -} -.icon-save{ - background:url('icons/filesave.png') no-repeat center center; -} -.icon-cut{ - background:url('icons/cut.png') no-repeat center center; -} -.icon-ok{ - background:url('icons/ok.png') no-repeat center center; -} -.icon-no{ - background:url('icons/no.png') no-repeat center center; -} -.icon-cancel{ - background:url('icons/cancel.png') no-repeat center center; -} -.icon-reload{ - background:url('icons/reload.png') no-repeat center center; -} -.icon-search{ - background:url('icons/search.png') no-repeat center center; -} -.icon-print{ - background:url('icons/print.png') no-repeat center center; -} -.icon-help{ - background:url('icons/help.png') no-repeat center center; -} -.icon-undo{ - background:url('icons/undo.png') no-repeat center center; -} -.icon-redo{ - background:url('icons/redo.png') no-repeat center center; -} -.icon-back{ - background:url('icons/back.png') no-repeat center center; -} -.icon-sum{ - background:url('icons/sum.png') no-repeat center center; -} -.icon-tip{ - background:url('icons/tip.png') no-repeat center center; -} - -.icon-mini-add{ - background:url('icons/mini_add.png') no-repeat center center; -} -.icon-mini-edit{ - background:url('icons/mini_edit.png') no-repeat center center; -} -.icon-mini-refresh{ - background:url('icons/mini_refresh.png') no-repeat center center; -} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/back.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/back.png deleted file mode 100644 index 3fe8b17..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/back.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/blank.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/cancel.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/cancel.png deleted file mode 100644 index a432b49..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/cancel.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/cut.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/cut.png deleted file mode 100644 index 21fdb4d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/cut.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/edit_add.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/edit_add.png deleted file mode 100644 index e948508..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/edit_add.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/edit_remove.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/edit_remove.png deleted file mode 100644 index d555d92..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/edit_remove.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/filesave.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/filesave.png deleted file mode 100644 index fd0048d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/filesave.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/help.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/help.png deleted file mode 100644 index 28a0f9e..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/help.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_add.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_add.png deleted file mode 100644 index fd82b92..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_add.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_edit.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_edit.png deleted file mode 100644 index db9221a..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_edit.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_refresh.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_refresh.png deleted file mode 100644 index 6cdd016..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/mini_refresh.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/no.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/no.png deleted file mode 100644 index 37a7c74..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/no.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/ok.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/ok.png deleted file mode 100644 index 5b0f6a6..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/ok.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/pencil.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/pencil.png deleted file mode 100644 index 5b8cc89..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/pencil.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/print.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/print.png deleted file mode 100644 index fdf67a1..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/print.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/redo.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/redo.png deleted file mode 100644 index f1e45cf..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/redo.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/reload.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/reload.png deleted file mode 100644 index f51cab8..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/reload.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/search.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/search.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/search.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/sum.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/sum.png deleted file mode 100644 index fd7b32e..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/sum.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/tip.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/tip.png deleted file mode 100644 index 845e110..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/tip.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/undo.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/undo.png deleted file mode 100644 index 6129fa0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/icons/undo.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/accordion.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/accordion.css deleted file mode 100644 index 31d6079..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/calendar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/calendar.css deleted file mode 100644 index 798ed97..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/combo.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/combo.css deleted file mode 100644 index 8922f8e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/combobox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/combobox.css deleted file mode 100644 index 97205d3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/datagrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/datagrid.css deleted file mode 100644 index 7d0445a..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/datagrid.css +++ /dev/null @@ -1,252 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/datebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/datebox.css deleted file mode 100644 index b0f71e2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/dialog.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/dialog.css deleted file mode 100644 index 316cdc4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/easyui.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/easyui.css deleted file mode 100644 index 6403e3f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/easyui.css +++ /dev/null @@ -1,2238 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/Thumbs.db b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/accordion_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/blank.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/calendar_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/combo_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/datagrid_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/datebox_arrow.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/layout_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/linkbutton_bg.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/loading.gif b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/menu_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/messager_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/pagination_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/panel_tools.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/panel_tools.png deleted file mode 100644 index fe682ef..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/searchbox_button.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/slider_handle.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/spinner_arrows.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/tabs_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/tree_icons.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/validatebox_warning.png b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/layout.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/layout.css deleted file mode 100644 index 7057fb2..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/linkbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/linkbutton.css deleted file mode 100644 index 9bf5dc5..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/menu.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/menu.css deleted file mode 100644 index 5012a50..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/menubutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/menubutton.css deleted file mode 100644 index 53d830e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/messager.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/messager.css deleted file mode 100644 index 3b9ac40..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/pagination.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/pagination.css deleted file mode 100644 index cf3268f..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/panel.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/panel.css deleted file mode 100644 index f71d5e8..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/panel.css +++ /dev/null @@ -1,119 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/progressbar.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/progressbar.css deleted file mode 100644 index 7721f1b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/propertygrid.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/propertygrid.css deleted file mode 100644 index f5ae0c4..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/searchbox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/searchbox.css deleted file mode 100644 index 4e01696..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/slider.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/slider.css deleted file mode 100644 index a0907f3..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/spinner.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/spinner.css deleted file mode 100644 index 8676724..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/splitbutton.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/splitbutton.css deleted file mode 100644 index d98239b..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tabs.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tabs.css deleted file mode 100644 index 7c95798..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tabs.css +++ /dev/null @@ -1,320 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tooltip.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tooltip.css deleted file mode 100644 index 8382539..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tree.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tree.css deleted file mode 100644 index a2ec693..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/validatebox.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/window.css b/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/window.css deleted file mode 100644 index 6d2f911..0000000 --- a/J6/src/examples/devfw.web/framework/assets/easyui/themes/metro/window.css +++ /dev/null @@ -1,81 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} diff --git a/J6/src/examples/devfw.web/framework/assets/editor/handler/file_manager_json.ashx b/J6/src/examples/devfw.web/framework/assets/editor/handler/file_manager_json.ashx deleted file mode 100644 index 9b7c8a0..0000000 --- a/J6/src/examples/devfw.web/framework/assets/editor/handler/file_manager_json.ashx +++ /dev/null @@ -1 +0,0 @@ -<%@ webhandler Language="C#" class="Ops.Cms.EditorFileManager" %> \ No newline at end of file diff --git a/J6/src/examples/devfw.web/framework/assets/editor/handler/upload_json.ashx b/J6/src/examples/devfw.web/framework/assets/editor/handler/upload_json.ashx deleted file mode 100644 index f46b8fb..0000000 --- a/J6/src/examples/devfw.web/framework/assets/editor/handler/upload_json.ashx +++ /dev/null @@ -1,2 +0,0 @@ -<%@ webhandler Language="C#" class="Ops.Cms.EditorUploadHandler" %> - diff --git a/J6/src/examples/devfw.web/framework/assets/editor/minpack.js b/J6/src/examples/devfw.web/framework/assets/editor/minpack.js deleted file mode 100644 index f41c42e..0000000 --- a/J6/src/examples/devfw.web/framework/assets/editor/minpack.js +++ /dev/null @@ -1,404 +0,0 @@ -(function(z,m){function W(a){if(!a)return!1;return Object.prototype.toString.call(a)==="[object Array]"}function cb(a){if(!a)return!1;return Object.prototype.toString.call(a)==="[object Function]"}function M(a,b){for(var c=0,d=b.length;c=0}function r(a){return a&&/^\d+$/.test(a)?a+"px":a}function s(a){var b;return a&&(b=/(\d+)/.exec(a))?parseInt(b[1],10):0}function D(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function Fa(a){return a.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function da(a){var b=a.split("-"),a="";k(b,function(b,d){a+=b>0?d.charAt(0).toUpperCase()+d.substr(1): -d});return a}function sa(a){function b(a){a=parseInt(a,10).toString(16).toUpperCase();return a.length>1?a:"0"+a}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig,function(a,d,e,g){return"#"+b(d)+b(e)+b(g)})}function u(a,b){var b=b===m?",":b,c={},d=W(a)?a:a.split(b),e;k(d,function(a,b){if(e=/^(\d+)\.\.(\d+)$/.exec(b))for(var d=parseInt(e[1],10);d<=parseInt(e[2],10);d++)c[d.toString()]=!0;else c[b]=!0});return c}function Ga(a,b){return Array.prototype.slice.call(a,b||0)}function n(a, -b){return a===m?b:a}function F(a,b,c){c||(c=b,b=null);var d;if(b){var e=function(){};e.prototype=b.prototype;d=new e;k(c,function(a,b){d[a]=b})}else d=c;d.constructor=a;a.prototype=d;a.parent=b?b.prototype:null}function db(a){var b;if(b=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(a))a=b[0];b=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;b.lastIndex=0;b.test(a)&&(a=a.replace(b,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})); -if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+a+")");throw"JSON parse error";}function Qb(a,b,c){a.addEventListener?a.addEventListener(b,c,eb):a.attachEvent&&a.attachEvent("on"+b,c)}function ta(a,b,c){a.removeEventListener?a.removeEventListener(b,c,eb):a.detachEvent&&a.detachEvent("on"+b,c)}function fb(a,b){this.init(a,b)}function gb(a){try{delete a[X]}catch(b){a.removeAttribute&& -a.removeAttribute(X)}}function Y(a,b,c){if(b.indexOf(",")>=0)k(b.split(","),function(){Y(a,this,c)});else{var d=a[X]||null;d||(a[X]=++hb,d=hb);v[d]===m&&(v[d]={});var e=v[d][b];e&&e.length>0?ta(a,b,e[0]):(v[d][b]=[],v[d].el=a);e=v[d][b];e.length===0&&(e[0]=function(b){var c=b?new fb(a,b):m;k(e,function(b,d){b>0&&d&&d.call(a,c)})});M(c,e)<0&&e.push(c);Qb(a,b,e[0])}}function ea(a,b,c){if(b&&b.indexOf(",")>=0)k(b.split(","),function(){ea(a,this,c)});else{var d=a[X]||null;if(d)if(b===m)d in v&&(k(v[d], -function(b,c){b!="el"&&c.length>0&&ta(a,b,c[0])}),delete v[d],gb(a));else if(v[d]){var e=v[d][b];if(e&&e.length>0){c===m?(ta(a,b,e[0]),delete v[d][b]):(k(e,function(a,b){a>0&&b===c&&e.splice(a,1)}),e.length==1&&(ta(a,b,e[0]),delete v[d][b]));var g=0;k(v[d],function(){g++});g<2&&(delete v[d],gb(a))}}}}function ib(a,b){if(b.indexOf(",")>=0)k(b.split(","),function(){ib(a,this)});else{var c=a[X]||null;if(c){var d=v[c][b];if(v[c]&&d&&d.length>0)d[0]()}}}function Ha(a,b,c){b=/^\d{2,}$/.test(b)?b:b.toUpperCase().charCodeAt(0); -Y(a,"keydown",function(d){d.ctrlKey&&d.which==b&&!d.shiftKey&&!d.altKey&&(c.call(a),d.stop())})}function fa(a){for(var b={},c=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g,d;d=c.exec(a);){var e=A(d[1].toLowerCase());d=A(sa(d[2]));b[e]=d}return b}function J(a){for(var b={},c=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g,d;d=c.exec(a);){var e=(d[1]||d[2]||d[4]||d[6]).toLowerCase();b[e]=(d[2]?d[3]:d[4]?d[5]:d[7])||""}return b}function Rb(a,b){return a= -/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,d,e,g){return(" "+e+" ").indexOf(" "+b+" ")<0?e===""?d+b+g:d+e+" "+b+g:a}):a.substr(0,a.length-1)+' class="'+b+'">'}function Sb(a){var b="";k(fa(a),function(a,d){b+=a+":"+d+";"});return b}function ua(a,b,c,d){function e(a){for(var a=a.split("/"),b=[],c=0,d=a.length;c0&&b.pop():e!==""&&e!="."&&b.push(e)}return"/"+b.join("/")}function g(b,c){if(a.substr(0,b.length)===b){for(var e=[], -h=0;h0&&(h+="/"+e.join("/"));d=="/"&&(h+="/");return h+a.substr(b.length)}else if(f=/^(.*)\//.exec(b))return g(f[1],++c)}b=n(b,"").toLowerCase();a.substr(0,5)!="data:"&&(a=a.replace(/([^:])\/\//g,"$1/"));if(M(b,["absolute","relative","domain"])<0)return a;c=c||location.protocol+"//"+location.host;if(d===m)var h=location.pathname.match(/^(\/.*)\//),d=h?h[1]:"";var f;if(f=/^(\w+:\/\/[^\/]*)/.exec(a)){if(f[1]!==c)return a}else if(/^\w+:/.test(a))return a;/^\//.test(a)? -a=c+e(a.substr(1)):/^\w+:\/\//.test(a)||(a=c+e(d+"/"+a));b==="relative"?a=g(c+d,0).substr(2):b==="absolute"&&a.substr(0,c.length)===c&&(a=a.substr(c.length));return a}function R(a,b,c,d,e){var c=c||"",d=n(d,!1),e=n(e,"\t"),g="xx-small,x-small,small,medium,large,x-large,xx-large".split(","),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function(a,b,c,d){return b+c.replace(/<(?:br|br\s[^>]*)>/ig,"\n")+d}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig,"

                                                                                                                                    "),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig, -"$1
                                                                                                                                    $2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"©"),h={};b&&(k(b,function(a,b){for(var c=a.split(","),d=0,e=c.length;d]*)>)([\s\S]*?)(<\/script>)/ig,"")),h.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig,"")));var f=[],a=a.replace(/([ \t\n\r]*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>([ \t\n\r]*)/g,function(a, -l,p,t,va,E,G){var l=l||"",p=p||"",m=t.toLowerCase(),n=va||"",t=E?" "+E:"",G=G||"";if(b&&!h[m])return"";t===""&&jb[m]&&(t=" /");kb[m]&&(l&&(l=" "),G&&(G=" "));Ia[m]&&(p?G="\n":l="\n");d&&m=="br"&&(G="\n");if(lb[m]&&!Ia[m])if(d){p&&f.length>0&&f[f.length-1]===m?f.pop():f.push(m);G=l="\n";va=0;for(E=p?f.length:f.length-1;va=0&&(w[a]=ua(d,c));(b&&a!=="style"&&!h[m]["*"]&&!h[m][a]||m==="body"&&a==="contenteditable"||/^kindeditor_\d+$/.test(a))&&delete w[a];if(a==="style"&&d!==""){var e=fa(d);k(e,function(a){b&&!h[m].style&&!h[m]["."+a]&&delete e[a]});var g= -"";k(e,function(a,b){g+=a+":"+b+";"});w.style=g}});n="";k(w,function(a,b){a==="style"&&b===""||(b=b.replace(/"/g,"""),n+=" "+a+'="'+b+'"')})}m==="font"&&(m="span");return l+"<"+p+m+n+t+">"+G}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function(a,b,c,d){return b+c.replace(/\n/g,'\n')+d}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/\n/g,"\n");return A(a)}function mb(a,b){a=a.replace(//ig,"").replace(//ig, -"").replace(/]*>[\s\S]*?<\/style>/ig,"").replace(/]*>[\s\S]*?<\/script>/ig,"").replace(/]+>[\s\S]*?<\/w:[^>]+>/ig,"").replace(/]+>[\s\S]*?<\/o:[^>]+>/ig,"").replace(/[\s\S]*?<\/xml>/ig,"").replace(/<(?:table|td)[^>]*>/ig,function(a){return a.replace(/border-bottom:([#\w\s]+)/ig,"border:$1")});return R(a,b)}function nb(a){if(/\.(rm|rmvb)(\?|$)/i.test(a))return"audio/x-pn-realaudio-plugin";if(/\.(swf|flv)(\?|$)/i.test(a))return"application/x-shockwave-flash";return"video/x-ms-asf-plugin"} -function ob(a){return J(unescape(a))}function Ja(a){var b="0&&(h+="width:"+c+"px;");d>0&&(h+="height:"+d+"px;");c=/realaudio/i.test(e)?"ke-rm":/flash/i.test(e)?"ke-flash":"ke-media";c='';return c}function xa(a,b){if(a.nodeType==9&&b.nodeType!=9)return!0;for(;b= -b.parentNode;)if(b==a)return!0;return!1}function ya(a,b){var b=b.toLowerCase(),c=null;if(!Ub&&a.nodeName.toLowerCase()!="script"){var d=a.ownerDocument.createElement("div");d.appendChild(a.cloneNode(!1));d=J(Fa(d.innerHTML));b in d&&(c=d[b])}else try{c=a.getAttribute(b,2)}catch(e){c=a.getAttribute(b,1)}b==="style"&&c!==null&&(c=Sb(c));return c}function za(a,b){function c(a){if(typeof a!="string")return a;return a.replace(/([^\w\-])/g,"\\$1")}function d(a,b){return a==="*"||a.toLowerCase()===c(b.toLowerCase())} -function e(a,b,c){var e=[];(a=(c.ownerDocument||c).getElementById(a.replace(/\\/g,"")))&&d(b,a.nodeName)&&xa(c,a)&&e.push(a);return e}function g(a,b,c){var e=c.ownerDocument||c,g=[],h,f,i;if(c.getElementsByClassName){e=c.getElementsByClassName(a.replace(/\\/g,""));h=0;for(f=e.length;h-1&&g.push(i)}return g}function h(a,b,d,e){for(var g=[],d=e.getElementsByTagName(d),h=0,f=d.length;h])+)/.exec(a))?i[1]:"*";if(i=/#((?:[\w\-]|\\.)+)$/.exec(a))c=e(i[1],j,b);else if(i=/\.((?:[\w\-]|\\.)+)$/.exec(a))c=g(i[1],j,b);else if(i=/\[((?:[\w\-]|\\.)+)\]/.exec(a))c= -h(i[1].toLowerCase(),null,j,b);else if(i=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(a)){c=i[1].toLowerCase();i=i[2];if(c==="id")j=e(i,j,b);else if(c==="class")j=g(i,j,b);else if(c==="name"){c=[];i=(b.ownerDocument||b).getElementsByName(i.replace(/\\/g,""));for(var l,p=0,t=i.length;p1){var l=[];k(j,function(){k(za(this,b),function(){M(this,l)<0&&l.push(this)})});return l}for(var b=b||document,j=[],p,t=/((?:\\.|[^\s>])+|[\s>])/g;p=t.exec(a);)p[1]!==" "&&j.push(p[1]);p=[];if(j.length==1)return f(j[0],b);var t=!1,m,E,n,o,q,w,wa,H,r,s;w=0;for(lenth=j.length;w")t=!0;else{if(w>0){E=[];wa=0;for(r=p.length;wa").appendTo(_12); -_15.css((_f.mode=="h"?"left":"top"),_14); -if(aa[i]!="|"){ -_15=$("").appendTo(_13); -_15.html(aa[i]); -if(_f.mode=="h"){ -_15.css({left:_14,marginLeft:-Math.round(_15.outerWidth()/2)}); -}else{ -_15.css({top:_14,marginTop:-Math.round(_15.outerHeight()/2)}); -} -} -} -}; -}; -function _16(_17){ -var _18=$.data(_17,"slider"); -var _19=_18.options; -var _1a=_18.slider; -_1a.removeClass("slider-h slider-v slider-disabled"); -_1a.addClass(_19.mode=="h"?"slider-h":"slider-v"); -_1a.addClass(_19.disabled?"slider-disabled":""); -_1a.find("a.slider-handle").draggable({axis:_19.mode,cursor:"pointer",disabled:_19.disabled,onDrag:function(e){ -var _1b=e.data.left; -var _1c=_1a.width(); -if(_19.mode!="h"){ -_1b=e.data.top; -_1c=_1a.height(); -} -if(_1b<0||_1b>_1c){ -return false; -}else{ -var _1d=_32(_17,_1b); -_1e(_1d); -return false; -} -},onBeforeDrag:function(){ -_18.isDragging=true; -},onStartDrag:function(){ -_19.onSlideStart.call(_17,_19.value); -},onStopDrag:function(e){ -var _1f=_32(_17,(_19.mode=="h"?e.data.left:e.data.top)); -_1e(_1f); -_19.onSlideEnd.call(_17,_19.value); -_19.onComplete.call(_17,_19.value); -_18.isDragging=false; -}}); -_1a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_18.isDragging){ -return; -} -var pos=$(this).offset(); -var _20=_32(_17,(_19.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_1e(_20); -_19.onComplete.call(_17,_19.value); -}); -function _1e(_21){ -var s=Math.abs(_21%_19.step); -if(s<_19.step/2){ -_21-=s; -}else{ -_21=_21-s+_19.step; -} -_22(_17,_21); -}; -}; -function _22(_23,_24){ -var _25=$.data(_23,"slider"); -var _26=_25.options; -var _27=_25.slider; -var _28=_26.value; -if(_24<_26.min){ -_24=_26.min; -} -if(_24>_26.max){ -_24=_26.max; -} -_26.value=_24; -$(_23).val(_24); -_27.find("input.slider-value").val(_24); -var pos=_29(_23,_24); -var tip=_27.find(".slider-tip"); -if(_26.showTip){ -tip.show(); -tip.html(_26.tipFormatter.call(_23,_26.value)); -}else{ -tip.hide(); -} -if(_26.mode=="h"){ -var _2a="left:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _2a="top:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_28!=_24){ -_26.onChange.call(_23,_24,_28); -} -}; -function _b(_2b){ -var _2c=$.data(_2b,"slider").options; -var fn=_2c.onChange; -_2c.onChange=function(){ -}; -_22(_2b,_2c.value); -_2c.onChange=fn; -}; -function _29(_2d,_2e){ -var _2f=$.data(_2d,"slider"); -var _30=_2f.options; -var _31=_2f.slider; -if(_30.mode=="h"){ -var pos=(_2e-_30.min)/(_30.max-_30.min)*_31.width(); -if(_30.reversed){ -pos=_31.width()-pos; -} -}else{ -var pos=_31.height()-(_2e-_30.min)/(_30.max-_30.min)*_31.height(); -if(_30.reversed){ -pos=_31.height()-pos; -} -} -return pos.toFixed(0); -}; -function _32(_33,pos){ -var _34=$.data(_33,"slider"); -var _35=_34.options; -var _36=_34.slider; -if(_35.mode=="h"){ -var _37=_35.min+(_35.max-_35.min)*(pos/_36.width()); -}else{ -var _37=_35.min+(_35.max-_35.min)*((_36.height()-pos)/_36.height()); -} -return _35.reversed?_35.max-_37.toFixed(0):_37.toFixed(0); -}; -$.fn.slider=function(_38,_39){ -if(typeof _38=="string"){ -return $.fn.slider.methods[_38](this,_39); -} -_38=_38||{}; -return this.each(function(){ -var _3a=$.data(this,"slider"); -if(_3a){ -$.extend(_3a.options,_38); -}else{ -_3a=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_38),slider:_1(this)}); -$(this).removeAttr("disabled"); -} -var _3b=_3a.options; -_3b.min=parseFloat(_3b.min); -_3b.max=parseFloat(_3b.max); -_3b.value=parseFloat(_3b.value); -_3b.step=parseFloat(_3b.step); -_16(this); -_c(this); -_5(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_3c){ -return jq.each(function(){ -_5(this,_3c); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_3d){ -return jq.each(function(){ -_22(this,_3d); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_16(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_16(this); -}); -}}; -$.fn.slider.parseOptions=function(_3e){ -var t=$(_3e); -return $.extend({},$.parser.parseOptions(_3e,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_3f){ -return _3f; -},onChange:function(_40,_41){ -},onSlideStart:function(_42){ -},onSlideEnd:function(_43){ -},onComplete:function(_44){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.spinner.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.spinner.js deleted file mode 100644 index 3885be3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.spinner.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(""+""+""+""+""+"").insertAfter(_2); -$(_2).addClass("spinner-text spinner-f").prependTo(_3); -return _3; -}; -function _4(_5,_6){ -var _7=$.data(_5,"spinner").options; -var _8=$.data(_5,"spinner").spinner; -if(_6){ -_7.width=_6; -} -var _9=$("
                                                                                                                                    ").insertBefore(_8); -_8.appendTo("body"); -if(isNaN(_7.width)){ -_7.width=$(_5).outerWidth(); -} -var _a=_8.find(".spinner-arrow"); -_8._outerWidth(_7.width)._outerHeight(_7.height); -$(_5)._outerWidth(_8.width()-_a.outerWidth()); -$(_5).css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); -_a._outerHeight(_8.height()); -_a.find("span")._outerHeight(_a.height()/2); -_8.insertAfter(_9); -_9.remove(); -}; -function _b(_c){ -var _d=$.data(_c,"spinner").options; -var _e=$.data(_c,"spinner").spinner; -_e.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!_d.disabled){ -_e.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,false); -_d.onSpinUp.call(_c); -$(_c).validatebox("validate"); -}); -_e.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,true); -_d.onSpinDown.call(_c); -$(_c).validatebox("validate"); -}); -} -}; -function _f(_10,_11){ -var _12=$.data(_10,"spinner").options; -if(_11){ -_12.disabled=true; -$(_10).attr("disabled",true); -}else{ -_12.disabled=false; -$(_10).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_13,_14){ -if(typeof _13=="string"){ -var _15=$.fn.spinner.methods[_13]; -if(_15){ -return _15(this,_14); -}else{ -return this.validatebox(_13,_14); -} -} -_13=_13||{}; -return this.each(function(){ -var _16=$.data(this,"spinner"); -if(_16){ -$.extend(_16.options,_13); -}else{ -_16=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_13),spinner:_1(this)}); -$(this).removeAttr("disabled"); -} -_16.options.originalValue=_16.options.value; -$(this).val(_16.options.value); -$(this).attr("readonly",!_16.options.editable); -_f(this,_16.options.disabled); -_4(this); -$(this).validatebox(_16.options); -_b(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var _17=$.data(jq[0],"spinner").options; -return $.extend(_17,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _18=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_18.remove(); -}); -},resize:function(jq,_19){ -return jq.each(function(){ -_4(this,_19); -}); -},enable:function(jq){ -return jq.each(function(){ -_f(this,false); -_b(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_f(this,true); -_b(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_1a){ -return jq.each(function(){ -var _1b=$.data(this,"spinner").options; -_1b.value=_1a; -$(this).val(_1a); -}); -},clear:function(jq){ -return jq.each(function(){ -var _1c=$.data(this,"spinner").options; -_1c.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1d=$(this).spinner("options"); -$(this).spinner("setValue",_1d.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_1e){ -var t=$(_1e); -return $.extend({},$.fn.validatebox.parseOptions(_1e),$.parser.parseOptions(_1e,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(_1f){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.splitbutton.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.splitbutton.js deleted file mode 100644 index f668698..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.splitbutton.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"splitbutton").options; -$(_2).menubutton(_3); -}; -$.fn.splitbutton=function(_4,_5){ -if(typeof _4=="string"){ -var _6=$.fn.splitbutton.methods[_4]; -if(_6){ -return _6(this,_5); -}else{ -return this.menubutton(_4,_5); -} -} -_4=_4||{}; -return this.each(function(){ -var _7=$.data(this,"splitbutton"); -if(_7){ -$.extend(_7.options,_4); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _8=jq.menubutton("options"); -var _9=$.data(jq[0],"splitbutton").options; -$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); -return _9; -}}; -$.fn.splitbutton.parseOptions=function(_a){ -var t=$(_a); -return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.tabs.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.tabs.js deleted file mode 100644 index a0c1ca3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.tabs.js +++ /dev/null @@ -1,550 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"tabs").options; -if(_3.tabPosition=="left"||_3.tabPosition=="right"){ -return; -} -var _4=$(_2).children("div.tabs-header"); -var _5=_4.children("div.tabs-tool"); -var _6=_4.children("div.tabs-scroller-left"); -var _7=_4.children("div.tabs-scroller-right"); -var _8=_4.children("div.tabs-wrap"); -var _9=_4.outerHeight(); -if(_3.plain){ -_9-=_9-_4.height(); -} -_5._outerHeight(_9); -var _a=0; -$("ul.tabs li",_4).each(function(){ -_a+=$(this).outerWidth(true); -}); -var _b=_4.width()-_5._outerWidth(); -if(_a>_b){ -_6.add(_7).show()._outerHeight(_9); -if(_3.toolPosition=="left"){ -_5.css({left:_6.outerWidth(),right:""}); -_8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -}else{ -_5.css({left:"",right:_7.outerWidth()}); -_8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -} -}else{ -_6.add(_7).hide(); -if(_3.toolPosition=="left"){ -_5.css({left:0,right:""}); -_8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b}); -}else{ -_5.css({left:"",right:0}); -_8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b}); -} -} -}; -function _c(_d){ -var _e=$.data(_d,"tabs").options; -var _f=$(_d).children("div.tabs-header"); -if(_e.tools){ -if(typeof _e.tools=="string"){ -$(_e.tools).addClass("tabs-tool").appendTo(_f); -$(_e.tools).show(); -}else{ -_f.children("div.tabs-tool").remove(); -var _10=$("
                                                                                                                                    ").appendTo(_f); -var tr=_10.find("tr"); -for(var i=0;i<_e.tools.length;i++){ -var td=$("").appendTo(tr); -var _11=$("").appendTo(td); -_11[0].onclick=eval(_e.tools[i].handler||function(){ -}); -_11.linkbutton($.extend({},_e.tools[i],{plain:true})); -} -} -}else{ -_f.children("div.tabs-tool").remove(); -} -}; -function _12(_13){ -var _14=$.data(_13,"tabs"); -var _15=_14.options; -var cc=$(_13); -_15.fit?$.extend(_15,cc._fit()):cc._fit(false); -cc.width(_15.width).height(_15.height); -var _16=$(_13).children("div.tabs-header"); -var _17=$(_13).children("div.tabs-panels"); -var _18=_16.find("div.tabs-wrap"); -var ul=_18.find(".tabs"); -for(var i=0;i<_14.tabs.length;i++){ -var _19=_14.tabs[i].panel("options"); -var p_t=_19.tab.find("a.tabs-inner"); -var _1a=parseInt(_19.tabWidth||_15.tabWidth)||undefined; -if(_1a){ -p_t._outerWidth(_1a); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(_15.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(_15.tabPosition=="left"||_15.tabPosition=="right"){ -_16._outerWidth(_15.headerWidth); -_17._outerWidth(cc.width()-_15.headerWidth); -_16.add(_17)._outerHeight(_15.height); -_18._outerWidth(_16.width()); -ul._outerWidth(_18.width()).css("height",""); -}else{ -_16._outerWidth(_15.width).css("height",""); -ul._outerHeight(_15.tabHeight).css("width",""); -_1(_13); -var _1b=_15.height; -if(!isNaN(_1b)){ -_17._outerHeight(_1b-_16.outerHeight()); -}else{ -_17.height("auto"); -} -var _1a=_15.width; -if(!isNaN(_1a)){ -_17._outerWidth(_1a); -}else{ -_17.width("auto"); -} -} -}; -function _1c(_1d){ -var _1e=$.data(_1d,"tabs").options; -var tab=_1f(_1d); -if(tab){ -var _20=$(_1d).children("div.tabs-panels"); -var _21=_1e.width=="auto"?"auto":_20.width(); -var _22=_1e.height=="auto"?"auto":_20.height(); -tab.panel("resize",{width:_21,height:_22}); -} -}; -function _23(_24){ -var _25=$.data(_24,"tabs").tabs; -var cc=$(_24); -cc.addClass("tabs-container"); -var pp=$("
                                                                                                                                    ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
                                                                                                                                    "+"
                                                                                                                                    "+"
                                                                                                                                    "+"
                                                                                                                                    "+"
                                                                                                                                      "+"
                                                                                                                                      "+"
                                                                                                                                      ").prependTo(_24); -cc.children("div.tabs-panels").children("div").each(function(i){ -var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_25.push(pp); -_33(_24,pp,_26); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_27){ -var _28=$.data(_24,"tabs").options; -if(_28.fit==true||_27){ -_12(_24); -_1c(_24); -} -return false; -}); -}; -function _29(_2a){ -var _2b=$.data(_2a,"tabs").options; -$(_2a).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2a).tabs("scrollBy",-_2b.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2a).tabs("scrollBy",_2b.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_49(_2a,_2c(li)); -}else{ -if(li.length){ -_3e(_2a,_2c(li)); -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -_2b.onContextMenu.call(_2a,e,li.find("span.tabs-title").html(),_2c(li)); -} -}); -function _2c(li){ -var _2d=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_2d=i; -return false; -} -}); -return _2d; -}; -}; -function _2e(_2f){ -var _30=$.data(_2f,"tabs").options; -var _31=$(_2f).children("div.tabs-header"); -var _32=$(_2f).children("div.tabs-panels"); -_31.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_32.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(_30.tabPosition=="top"){ -_31.insertBefore(_32); -}else{ -if(_30.tabPosition=="bottom"){ -_31.insertAfter(_32); -_31.addClass("tabs-header-bottom"); -_32.addClass("tabs-panels-top"); -}else{ -if(_30.tabPosition=="left"){ -_31.addClass("tabs-header-left"); -_32.addClass("tabs-panels-right"); -}else{ -if(_30.tabPosition=="right"){ -_31.addClass("tabs-header-right"); -_32.addClass("tabs-panels-left"); -} -} -} -} -if(_30.plain==true){ -_31.addClass("tabs-header-plain"); -}else{ -_31.removeClass("tabs-header-plain"); -} -if(_30.border==true){ -_31.removeClass("tabs-header-noborder"); -_32.removeClass("tabs-panels-noborder"); -}else{ -_31.addClass("tabs-header-noborder"); -_32.addClass("tabs-panels-noborder"); -} -}; -function _33(_34,pp,_35){ -var _36=$.data(_34,"tabs"); -_35=_35||{}; -pp.panel($.extend({},_35,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_35.icon?_35.icon:undefined),onLoad:function(){ -if(_35.onLoad){ -_35.onLoad.call(this,arguments); -} -_36.options.onLoad.call(_34,$(this)); -}})); -var _37=pp.panel("options"); -var _38=$(_34).children("div.tabs-header").find("ul.tabs"); -_37.tab=$("
                                                                                                                                    • ").appendTo(_38); -_37.tab.append(""+""+""+""); -$(_34).tabs("update",{tab:pp,options:_37}); -}; -function _39(_3a,_3b){ -var _3c=$.data(_3a,"tabs").options; -var _3d=$.data(_3a,"tabs").tabs; -if(_3b.selected==undefined){ -_3b.selected=true; -} -var pp=$("
                                                                                                                                      ").appendTo($(_3a).children("div.tabs-panels")); -_3d.push(pp); -_33(_3a,pp,_3b); -_3c.onAdd.call(_3a,_3b.title,_3d.length-1); -_12(_3a); -if(_3b.selected){ -_3e(_3a,_3d.length-1); -} -}; -function _3f(_40,_41){ -var _42=$.data(_40,"tabs").selectHis; -var pp=_41.tab; -var _43=pp.panel("options").title; -pp.panel($.extend({},_41.options,{iconCls:(_41.options.icon?_41.options.icon:undefined)})); -var _44=pp.panel("options"); -var tab=_44.tab; -var _45=tab.find("span.tabs-title"); -var _46=tab.find("span.tabs-icon"); -_45.html(_44.title); -_46.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(_44.closable){ -_45.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_45.removeClass("tabs-closable"); -} -if(_44.iconCls){ -_45.addClass("tabs-with-icon"); -_46.addClass(_44.iconCls); -}else{ -_45.removeClass("tabs-with-icon"); -} -if(_43!=_44.title){ -for(var i=0;i<_42.length;i++){ -if(_42[i]==_43){ -_42[i]=_44.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(_44.tools){ -var _47=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(_44.tools)){ -for(var i=0;i<_44.tools.length;i++){ -var t=$("").appendTo(_47); -t.addClass(_44.tools[i].iconCls); -if(_44.tools[i].handler){ -t.bind("click",{handler:_44.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(_44.tools).children().appendTo(_47); -} -var pr=_47.children().length*12; -if(_44.closable){ -pr+=8; -}else{ -pr-=3; -_47.css("right","5px"); -} -_45.css("padding-right",pr+"px"); -} -_12(_40); -$.data(_40,"tabs").options.onUpdate.call(_40,_44.title,_48(_40,pp)); -}; -function _49(_4a,_4b){ -var _4c=$.data(_4a,"tabs").options; -var _4d=$.data(_4a,"tabs").tabs; -var _4e=$.data(_4a,"tabs").selectHis; -if(!_4f(_4a,_4b)){ -return; -} -var tab=_50(_4a,_4b); -var _51=tab.panel("options").title; -var _52=_48(_4a,tab); -if(_4c.onBeforeClose.call(_4a,_51,_52)==false){ -return; -} -var tab=_50(_4a,_4b,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -_4c.onClose.call(_4a,_51,_52); -_12(_4a); -for(var i=0;i<_4e.length;i++){ -if(_4e[i]==_51){ -_4e.splice(i,1); -i--; -} -} -var _53=_4e.pop(); -if(_53){ -_3e(_4a,_53); -}else{ -if(_4d.length){ -_3e(_4a,0); -} -} -}; -function _50(_54,_55,_56){ -var _57=$.data(_54,"tabs").tabs; -if(typeof _55=="number"){ -if(_55<0||_55>=_57.length){ -return null; -}else{ -var tab=_57[_55]; -if(_56){ -_57.splice(_55,1); -} -return tab; -} -} -for(var i=0;i<_57.length;i++){ -var tab=_57[i]; -if(tab.panel("options").title==_55){ -if(_56){ -_57.splice(i,1); -} -return tab; -} -} -return null; -}; -function _48(_58,tab){ -var _59=$.data(_58,"tabs").tabs; -for(var i=0;i<_59.length;i++){ -if(_59[i][0]==$(tab)[0]){ -return i; -} -} -return -1; -}; -function _1f(_5a){ -var _5b=$.data(_5a,"tabs").tabs; -for(var i=0;i<_5b.length;i++){ -var tab=_5b[i]; -if(tab.panel("options").closed==false){ -return tab; -} -} -return null; -}; -function _5c(_5d){ -var _5e=$.data(_5d,"tabs").tabs; -for(var i=0;i<_5e.length;i++){ -if(_5e[i].panel("options").selected){ -_3e(_5d,i); -return; -} -} -if(_5e.length){ -_3e(_5d,0); -} -}; -function _3e(_5f,_60){ -var _61=$.data(_5f,"tabs").options; -var _62=$.data(_5f,"tabs").tabs; -var _63=$.data(_5f,"tabs").selectHis; -if(_62.length==0){ -return; -} -var _64=_50(_5f,_60); -if(!_64){ -return; -} -var _65=_1f(_5f); -if(_65){ -_65.panel("close"); -_65.panel("options").tab.removeClass("tabs-selected"); -} -_64.panel("open"); -var _66=_64.panel("options").title; -_63.push(_66); -var tab=_64.panel("options").tab; -tab.addClass("tabs-selected"); -var _67=$(_5f).find(">div.tabs-header>div.tabs-wrap"); -var _68=tab.position().left; -var _69=_68+tab.outerWidth(); -if(_68<0||_69>_67.width()){ -var _6a=_68-(_67.width()-tab.width())/2; -$(_5f).tabs("scrollBy",_6a); -}else{ -$(_5f).tabs("scrollBy",0); -} -_1c(_5f); -_61.onSelect.call(_5f,_66,_48(_5f,_64)); -}; -function _4f(_6b,_6c){ -return _50(_6b,_6c)!=null; -}; -$.fn.tabs=function(_6d,_6e){ -if(typeof _6d=="string"){ -return $.fn.tabs.methods[_6d](this,_6e); -} -_6d=_6d||{}; -return this.each(function(){ -var _6f=$.data(this,"tabs"); -var _70; -if(_6f){ -_70=$.extend(_6f.options,_6d); -_6f.options=_70; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_6d),tabs:[],selectHis:[]}); -_23(this); -} -_c(this); -_2e(this); -_12(this); -_29(this); -_5c(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -return $.data(jq[0],"tabs").options; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_12(this); -_1c(this); -}); -},add:function(jq,_71){ -return jq.each(function(){ -_39(this,_71); -}); -},close:function(jq,_72){ -return jq.each(function(){ -_49(this,_72); -}); -},getTab:function(jq,_73){ -return _50(jq[0],_73); -},getTabIndex:function(jq,tab){ -return _48(jq[0],tab); -},getSelected:function(jq){ -return _1f(jq[0]); -},select:function(jq,_74){ -return jq.each(function(){ -_3e(this,_74); -}); -},exists:function(jq,_75){ -return _4f(jq[0],_75); -},update:function(jq,_76){ -return jq.each(function(){ -_3f(this,_76); -}); -},enableTab:function(jq,_77){ -return jq.each(function(){ -$(this).tabs("getTab",_77).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_78){ -return jq.each(function(){ -$(this).tabs("getTab",_78).panel("options").tab.addClass("tabs-disabled"); -}); -},scrollBy:function(jq,_79){ -return jq.each(function(){ -var _7a=$(this).tabs("options"); -var _7b=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(_7b._scrollLeft()+_79,_7c()); -_7b.animate({scrollLeft:pos},_7a.scrollDuration); -function _7c(){ -var w=0; -var ul=_7b.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-_7b.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_7d){ -return $.extend({},$.parser.parseOptions(_7d,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_7e){ -},onSelect:function(_7f,_80){ -},onBeforeClose:function(_81,_82){ -},onClose:function(_83,_84){ -},onAdd:function(_85,_86){ -},onUpdate:function(_87,_88){ -},onContextMenu:function(e,_89,_8a){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.timespinner.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.timespinner.js deleted file mode 100644 index f78a389..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.timespinner.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"timespinner").options; -$(_2).addClass("timespinner-f"); -$(_2).spinner(_3); -$(_2).unbind(".timespinner"); -$(_2).bind("click.timespinner",function(){ -var _4=0; -if(this.selectionStart!=null){ -_4=this.selectionStart; -}else{ -if(this.createTextRange){ -var _5=_2.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_5); -_4=s.text.length; -} -} -if(_4>=0&&_4<=2){ -_3.highlight=0; -}else{ -if(_4>=3&&_4<=5){ -_3.highlight=1; -}else{ -if(_4>=6&&_4<=8){ -_3.highlight=2; -} -} -} -_7(_2); -}).bind("blur.timespinner",function(){ -_6(_2); -}); -}; -function _7(_8){ -var _9=$.data(_8,"timespinner").options; -var _a=0,_b=0; -if(_9.highlight==0){ -_a=0; -_b=2; -}else{ -if(_9.highlight==1){ -_a=3; -_b=5; -}else{ -if(_9.highlight==2){ -_a=6; -_b=8; -} -} -} -if(_8.selectionStart!=null){ -_8.setSelectionRange(_a,_b); -}else{ -if(_8.createTextRange){ -var _c=_8.createTextRange(); -_c.collapse(); -_c.moveEnd("character",_b); -_c.moveStart("character",_a); -_c.select(); -} -} -$(_8).focus(); -}; -function _d(_e,_f){ -var _10=$.data(_e,"timespinner").options; -if(!_f){ -return null; -} -var vv=_f.split(_10.separator); -for(var i=0;i_14){ -_14=_15; -} -if(_16&&_16<_14){ -_14=_16; -} -var tt=[_17(_14.getHours()),_17(_14.getMinutes())]; -if(_12.showSeconds){ -tt.push(_17(_14.getSeconds())); -} -var val=tt.join(_12.separator); -_12.value=val; -$(_11).val(val); -function _17(_18){ -return (_18<10?"0":"")+_18; -}; -}; -function _19(_1a,_1b){ -var _1c=$.data(_1a,"timespinner").options; -var val=$(_1a).val(); -if(val==""){ -val=[0,0,0].join(_1c.separator); -} -var vv=val.split(_1c.separator); -for(var i=0;i"+"
                                                                                                                                      "+"
                                                                                                                                      "+"
                                                                                                                                      "+"").appendTo("body"); -_12.tip=tip; -_14(_11); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_13.position); -_7(_11); -_12.showTimer=setTimeout(function(){ -_6(_11); -tip.show(); -_13.onShow.call(_11,e); -var _15=tip.children(".tooltip-arrow-outer"); -var _16=tip.children(".tooltip-arrow"); -var bc="border-"+_13.position+"-color"; -_15.add(_16).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_15.css(bc,tip.css(bc)); -_16.css(bc,tip.css("backgroundColor")); -},_13.showDelay); -}; -function _17(_18,e){ -var _19=$.data(_18,"tooltip"); -if(_19&&_19.tip){ -_7(_18); -_19.hideTimer=setTimeout(function(){ -_19.tip.hide(); -_19.options.onHide.call(_18,e); -},_19.options.hideDelay); -} -}; -function _14(_1a,_1b){ -var _1c=$.data(_1a,"tooltip"); -var _1d=_1c.options; -if(_1b){ -_1d.content=_1b; -} -if(!_1c.tip){ -return; -} -var cc=typeof _1d.content=="function"?_1d.content.call(_1a):_1d.content; -_1c.tip.children(".tooltip-content").html(cc); -_1d.onUpdate.call(_1a,cc); -}; -function _1e(_1f){ -var _20=$.data(_1f,"tooltip"); -if(_20){ -_7(_1f); -var _21=_20.options; -if(_20.tip){ -_20.tip.remove(); -} -if(_21._title){ -$(_1f).attr("title",_21._title); -} -$.removeData(_1f,"tooltip"); -$(_1f).unbind(".tooltip").removeClass("tooltip-f"); -_21.onDestroy.call(_1f); -} -}; -$.fn.tooltip=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.tooltip.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24=$.data(this,"tooltip"); -if(_24){ -$.extend(_24.options,_22); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_22)}); -_1(this); -} -_3(this); -_14(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_10(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_17(this,e); -}); -},update:function(jq,_25){ -return jq.each(function(){ -_14(this,_25); -}); -},reposition:function(jq){ -return jq.each(function(){ -_6(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1e(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_26){ -var t=$(_26); -var _27=$.extend({},$.parser.parseOptions(_26,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!_27.content){ -_27.content=_27._title; -} -return _27; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_28){ -},onPosition:function(_29,top){ -},onDestroy:function(){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.tree.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.tree.js deleted file mode 100644 index c33f22f..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.tree.js +++ /dev/null @@ -1,1148 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(_2); -_3.addClass("tree"); -return _3; -}; -function _4(_5){ -var _6=[]; -_7(_6,$(_5)); -function _7(aa,_8){ -_8.children("li").each(function(){ -var _9=$(this); -var _a=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_9.attr("checked")?true:undefined)}); -_a.text=_9.children("span").html(); -if(!_a.text){ -_a.text=_9.html(); -} -var _b=_9.children("ul"); -if(_b.length){ -_a.children=[]; -_7(_a.children,_b); -} -aa.push(_a); -}); -}; -return _6; -}; -function _c(_d){ -var _e=$.data(_d,"tree").options; -$(_d).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _f=tt.closest("div.tree-node"); -if(!_f.length){ -return; -} -_f.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _10=tt.closest("div.tree-node"); -if(!_10.length){ -return; -} -_10.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _11=tt.closest("div.tree-node"); -if(!_11.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_86(_d,_11[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_39(_d,_11[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_d8(_d,_11[0]); -_e.onClick.call(_d,_14(_d,_11[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _12=$(e.target).closest("div.tree-node"); -if(!_12.length){ -return; -} -_d8(_d,_12[0]); -_e.onDblClick.call(_d,_14(_d,_12[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _13=$(e.target).closest("div.tree-node"); -if(!_13.length){ -return; -} -_e.onContextMenu.call(_d,e,_14(_d,_13[0])); -e.stopPropagation(); -}); -}; -function _15(_16){ -var _17=$(_16).find("div.tree-node"); -_17.draggable("disable"); -_17.css("cursor","pointer"); -}; -function _18(_19){ -var _1a=$.data(_19,"tree"); -var _1b=_1a.options; -var _1c=_1a.tree; -_1a.disabledNodes=[]; -_1c.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_1d){ -var p=$("
                                                                                                                                      ").appendTo("body"); -p.html(" "+$(_1d).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_1b.onBeforeDrag.call(_19,_14(_19,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _1e=$(this).find("span.tree-indent"); -if(_1e.length){ -e.data.offsetWidth-=_1e.length*_1e.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_1b.onStartDrag.call(_19,_14(_19,this)); -var _1f=_14(_19,this); -if(_1f.id==undefined){ -_1f.id="easyui_tree_node_id_temp"; -_cb(_19,_1f); -} -_1a.draggingNodeId=_1f.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_1a.disabledNodes.length;i++){ -$(_1a.disabledNodes[i]).droppable("enable"); -} -_1a.disabledNodes=[]; -var _20=_d5(_19,_1a.draggingNodeId); -if(_20&&_20.id=="easyui_tree_node_id_temp"){ -_20.id=""; -_cb(_19,_20); -} -_1b.onStopDrag.call(_19,_20); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_21){ -if(_1b.onDragEnter.call(_19,this,_14(_19,_21))==false){ -_22(_21,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragOver:function(e,_23){ -if($(this).droppable("options").disabled){ -return; -} -var _24=_23.pageY; -var top=$(this).offset().top; -var _25=top+$(this).outerHeight(); -_22(_23,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_24>top+(_25-top)/2){ -if(_25-_24<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_24-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_1b.onDragOver.call(_19,this,_14(_19,_23))==false){ -_22(_23,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_1a.disabledNodes.push(this); -} -},onDragLeave:function(e,_26){ -_22(_26,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_1b.onDragLeave.call(_19,this,_14(_19,_26)); -},onDrop:function(e,_27){ -var _28=this; -var _29,_2a; -if($(this).hasClass("tree-node-append")){ -_29=_2b; -_2a="append"; -}else{ -_29=_2c; -_2a=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_1b.onBeforeDrop.call(_19,_28,_c4(_19,_27),_2a)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_29(_27,_28,_2a); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _22(_2d,_2e){ -var _2f=$(_2d).draggable("proxy").find("span.tree-dnd-icon"); -_2f.removeClass("tree-dnd-yes tree-dnd-no").addClass(_2e?"tree-dnd-yes":"tree-dnd-no"); -}; -function _2b(_30,_31){ -if(_14(_19,_31).state=="closed"){ -_7a(_19,_31,function(){ -_32(); -}); -}else{ -_32(); -} -function _32(){ -var _33=$(_19).tree("pop",_30); -$(_19).tree("append",{parent:_31,data:[_33]}); -_1b.onDrop.call(_19,_31,_33,"append"); -}; -}; -function _2c(_34,_35,_36){ -var _37={}; -if(_36=="top"){ -_37.before=_35; -}else{ -_37.after=_35; -} -var _38=$(_19).tree("pop",_34); -_37.data=_38; -$(_19).tree("insert",_37); -_1b.onDrop.call(_19,_35,_38,_36); -}; -}; -function _39(_3a,_3b,_3c){ -var _3d=$.data(_3a,"tree").options; -if(!_3d.checkbox){ -return; -} -var _3e=_14(_3a,_3b); -if(_3d.onBeforeCheck.call(_3a,_3e,_3c)==false){ -return; -} -var _3f=$(_3b); -var ck=_3f.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_3c){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_3d.cascadeCheck){ -_40(_3f); -_41(_3f); -} -_3d.onCheck.call(_3a,_3e,_3c); -function _41(_42){ -var _43=_42.next().find(".tree-checkbox"); -_43.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_42.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_43.addClass("tree-checkbox1"); -}else{ -_43.addClass("tree-checkbox0"); -} -}; -function _40(_44){ -var _45=_91(_3a,_44[0]); -if(_45){ -var ck=$(_45.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_46(_44)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_47(_44)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_40($(_45.target)); -} -function _46(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _47(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _48(_49,_4a){ -var _4b=$.data(_49,"tree").options; -var _4c=$(_4a); -if(_4d(_49,_4a)){ -var ck=_4c.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -_39(_49,_4a,false); -} -}else{ -if(_4b.onlyLeafCheck){ -$("").insertBefore(_4c.find(".tree-title")); -} -} -}else{ -var ck=_4c.find(".tree-checkbox"); -if(_4b.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_39(_49,_4a,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _4e=true; -var _4f=true; -var _50=_51(_49,_4a); -for(var i=0;i<_50.length;i++){ -if(_50[i].checked){ -_4f=false; -}else{ -_4e=false; -} -} -if(_4e){ -_39(_49,_4a,true); -} -if(_4f){ -_39(_49,_4a,false); -} -} -} -} -} -}; -function _52(_53,ul,_54,_55){ -var _56=$.data(_53,"tree").options; -_54=_56.loadFilter.call(_53,_54,$(ul).prev("div.tree-node")[0]); -if(!_55){ -$(ul).empty(); -} -var _57=[]; -var _58=[]; -var _59=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -_5a(ul,_54,_59); -if(_56.dnd){ -_18(_53); -}else{ -_15(_53); -} -if(_57.length){ -_39(_53,_57[0],false); -} -for(var i=0;i<_58.length;i++){ -_39(_53,_58[i],true); -} -setTimeout(function(){ -_62(_53,_53); -},0); -var _5b=null; -if(_53!=ul){ -var _5c=$(ul).prev(); -_5b=_14(_53,_5c[0]); -} -_56.onLoadSuccess.call(_53,_5b,_54); -function _5a(ul,_5d,_5e){ -for(var i=0;i<_5d.length;i++){ -var li=$("
                                                                                                                                    • ").appendTo(ul); -var _5f=_5d[i]; -if(_5f.state!="open"&&_5f.state!="closed"){ -_5f.state="open"; -} -var _60=$("
                                                                                                                                      ").appendTo(li); -_60.attr("node-id",_5f.id); -$.data(_60[0],"tree-node",{id:_5f.id,text:_5f.text,iconCls:_5f.iconCls,attributes:_5f.attributes}); -$("").html(_56.formatter.call(_53,_5f)).appendTo(_60); -if(_56.checkbox){ -if(_56.onlyLeafCheck){ -if(_5f.state=="open"&&(!_5f.children||!_5f.children.length)){ -if(_5f.checked){ -$("").prependTo(_60); -}else{ -$("").prependTo(_60); -} -} -}else{ -if(_5f.checked){ -$("").prependTo(_60); -_58.push(_60[0]); -}else{ -$("").prependTo(_60); -if(_5d==_54){ -_57.push(_60[0]); -} -} -} -} -if(_5f.children&&_5f.children.length){ -var _61=$("
                                                                                                                                        ").appendTo(li); -if(_5f.state=="open"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -_61.css("display","none"); -} -_5a(_61,_5f.children,_5e+1); -}else{ -if(_5f.state=="closed"){ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -}else{ -$("").addClass(_5f.iconCls).prependTo(_60); -$("").prependTo(_60); -} -} -for(var j=0;j<_5e;j++){ -$("").prependTo(_60); -} -} -}; -}; -function _62(_63,ul,_64){ -var _65=$.data(_63,"tree").options; -if(!_65.lines){ -return; -} -if(!_64){ -_64=true; -$(_63).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_63).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _66=$(_63).tree("getRoots"); -if(_66.length>1){ -$(_66[0].target).addClass("tree-root-first"); -}else{ -if(_66.length==1){ -$(_66[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var _67=$(this).children("div.tree-node"); -var ul=_67.next("ul"); -if(ul.length){ -if($(this).next().length){ -_68(_67); -} -_62(_63,ul,_64); -}else{ -_69(_67); -} -}); -var _6a=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_6a.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _69(_6b,_6c){ -var _6d=_6b.find("span.tree-icon"); -_6d.prev("span.tree-indent").addClass("tree-join"); -}; -function _68(_6e){ -var _6f=_6e.find("span.tree-indent, span.tree-hit").length; -_6e.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_6f-1)+")").addClass("tree-line"); -}); -}; -}; -function _70(_71,ul,_72,_73){ -var _74=$.data(_71,"tree").options; -_72=_72||{}; -var _75=null; -if(_71!=ul){ -var _76=$(ul).prev(); -_75=_14(_71,_76[0]); -} -if(_74.onBeforeLoad.call(_71,_75,_72)==false){ -return; -} -var _77=$(ul).prev().children("span.tree-folder"); -_77.addClass("tree-loading"); -var _78=_74.loader.call(_71,_72,function(_79){ -_77.removeClass("tree-loading"); -_52(_71,ul,_79); -if(_73){ -_73(); -} -},function(){ -_77.removeClass("tree-loading"); -_74.onLoadError.apply(_71,arguments); -if(_73){ -_73(); -} -}); -if(_78==false){ -_77.removeClass("tree-loading"); -} -}; -function _7a(_7b,_7c,_7d){ -var _7e=$.data(_7b,"tree").options; -var hit=$(_7c).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var _7f=_14(_7b,_7c); -if(_7e.onBeforeExpand.call(_7b,_7f)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_7c).next(); -if(ul.length){ -if(_7e.animate){ -ul.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -ul.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}else{ -var _80=$("
                                                                                                                                          ").insertAfter(_7c); -_70(_7b,_80[0],{id:_7f.id},function(){ -if(_80.is(":empty")){ -_80.remove(); -} -if(_7e.animate){ -_80.slideDown("normal",function(){ -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -}); -}else{ -_80.css("display","block"); -_7e.onExpand.call(_7b,_7f); -if(_7d){ -_7d(); -} -} -}); -} -}; -function _81(_82,_83){ -var _84=$.data(_82,"tree").options; -var hit=$(_83).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var _85=_14(_82,_83); -if(_84.onBeforeCollapse.call(_82,_85)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_83).next(); -if(_84.animate){ -ul.slideUp("normal",function(){ -_84.onCollapse.call(_82,_85); -}); -}else{ -ul.css("display","none"); -_84.onCollapse.call(_82,_85); -} -}; -function _86(_87,_88){ -var hit=$(_88).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_81(_87,_88); -}else{ -_7a(_87,_88); -} -}; -function _89(_8a,_8b){ -var _8c=_51(_8a,_8b); -if(_8b){ -_8c.unshift(_14(_8a,_8b)); -} -for(var i=0;i<_8c.length;i++){ -_7a(_8a,_8c[i].target); -} -}; -function _8d(_8e,_8f){ -var _90=[]; -var p=_91(_8e,_8f); -while(p){ -_90.unshift(p); -p=_91(_8e,p.target); -} -for(var i=0;i<_90.length;i++){ -_7a(_8e,_90[i].target); -} -}; -function _92(_93,_94){ -var c=$(_93).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_94); -var _95=n.offset().top; -if(c[0].tagName!="BODY"){ -var _96=c.offset().top; -if(_95<_96){ -c.scrollTop(c.scrollTop()+_95-_96); -}else{ -if(_95+n.outerHeight()>_96+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+_95+n.outerHeight()-_96-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(_95); -} -}; -function _97(_98,_99){ -var _9a=_51(_98,_99); -if(_99){ -_9a.unshift(_14(_98,_99)); -} -for(var i=0;i<_9a.length;i++){ -_81(_98,_9a[i].target); -} -}; -function _9b(_9c){ -var _9d=_9e(_9c); -if(_9d.length){ -return _9d[0]; -}else{ -return null; -} -}; -function _9e(_9f){ -var _a0=[]; -$(_9f).children("li").each(function(){ -var _a1=$(this).children("div.tree-node"); -_a0.push(_14(_9f,_a1[0])); -}); -return _a0; -}; -function _51(_a2,_a3){ -var _a4=[]; -if(_a3){ -_a5($(_a3)); -}else{ -var _a6=_9e(_a2); -for(var i=0;i<_a6.length;i++){ -_a4.push(_a6[i]); -_a5($(_a6[i].target)); -} -} -function _a5(_a7){ -_a7.next().find("div.tree-node").each(function(){ -_a4.push(_14(_a2,this)); -}); -}; -return _a4; -}; -function _91(_a8,_a9){ -var ul=$(_a9).parent().parent(); -if(ul[0]==_a8){ -return null; -}else{ -return _14(_a8,ul.prev()[0]); -} -}; -function _aa(_ab,_ac){ -_ac=_ac||"checked"; -if(!$.isArray(_ac)){ -_ac=[_ac]; -} -var _ad=[]; -for(var i=0;i<_ac.length;i++){ -var s=_ac[i]; -if(s=="checked"){ -_ad.push("span.tree-checkbox1"); -}else{ -if(s=="unchecked"){ -_ad.push("span.tree-checkbox0"); -}else{ -if(s=="indeterminate"){ -_ad.push("span.tree-checkbox2"); -} -} -} -} -var _ae=[]; -$(_ab).find(_ad.join(",")).each(function(){ -var _af=$(this).parent(); -_ae.push(_14(_ab,_af[0])); -}); -return _ae; -}; -function _b0(_b1){ -var _b2=$(_b1).find("div.tree-node-selected"); -if(_b2.length){ -return _14(_b1,_b2[0]); -}else{ -return null; -} -}; -function _b3(_b4,_b5){ -var _b6=$(_b5.parent); -var _b7=_b5.data; -if(!_b7){ -return; -} -_b7=$.isArray(_b7)?_b7:[_b7]; -if(!_b7.length){ -return; -} -var ul; -if(_b6.length==0){ -ul=$(_b4); -}else{ -if(_4d(_b4,_b6[0])){ -var _b8=_b6.find("span.tree-icon"); -_b8.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_b8); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=_b6.next(); -if(!ul.length){ -ul=$("
                                                                                                                                            ").insertAfter(_b6); -} -} -_52(_b4,ul[0],_b7,true); -_48(_b4,ul.prev()); -}; -function _b9(_ba,_bb){ -var ref=_bb.before||_bb.after; -var _bc=_91(_ba,ref); -var _bd=_bb.data; -if(!_bd){ -return; -} -_bd=$.isArray(_bd)?_bd:[_bd]; -if(!_bd.length){ -return; -} -_b3(_ba,{parent:(_bc?_bc.target:null),data:_bd}); -var li=$(); -var _be=_bc?$(_bc.target).next().children("li:last"):$(_ba).children("li:last"); -for(var i=0;i<_bd.length;i++){ -li=_be.add(li); -_be=_be.prev(); -} -if(_bb.before){ -li.insertBefore($(ref).parent()); -}else{ -li.insertAfter($(ref).parent()); -} -}; -function _bf(_c0,_c1){ -var _c2=_91(_c0,_c1); -var _c3=$(_c1); -var li=_c3.parent(); -var ul=li.parent(); -li.remove(); -if(ul.children("li").length==0){ -var _c3=ul.prev(); -_c3.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_c3.find(".tree-hit").remove(); -$("").prependTo(_c3); -if(ul[0]!=_c0){ -ul.remove(); -} -} -if(_c2){ -_48(_c0,_c2.target); -} -_62(_c0,_c0); -}; -function _c4(_c5,_c6){ -function _c7(aa,ul){ -ul.children("li").each(function(){ -var _c8=$(this).children("div.tree-node"); -var _c9=_14(_c5,_c8[0]); -var sub=$(this).children("ul"); -if(sub.length){ -_c9.children=[]; -_c7(_c9.children,sub); -} -aa.push(_c9); -}); -}; -if(_c6){ -var _ca=_14(_c5,_c6); -_ca.children=[]; -_c7(_ca.children,$(_c6).next()); -return _ca; -}else{ -return null; -} -}; -function _cb(_cc,_cd){ -var _ce=$.data(_cc,"tree").options; -var _cf=$(_cd.target); -var _d0=_14(_cc,_cd.target); -if(_d0.iconCls){ -_cf.find(".tree-icon").removeClass(_d0.iconCls); -} -var _d1=$.extend({},_d0,_cd); -$.data(_cd.target,"tree-node",_d1); -_cf.attr("node-id",_d1.id); -_cf.find(".tree-title").html(_ce.formatter.call(_cc,_d1)); -if(_d1.iconCls){ -_cf.find(".tree-icon").addClass(_d1.iconCls); -} -if(_d0.checked!=_d1.checked){ -_39(_cc,_cd.target,_d1.checked); -} -}; -function _14(_d2,_d3){ -var _d4=$.extend({},$.data(_d3,"tree-node"),{target:_d3,checked:$(_d3).find(".tree-checkbox").hasClass("tree-checkbox1")}); -if(!_4d(_d2,_d3)){ -_d4.state=$(_d3).find(".tree-hit").hasClass("tree-expanded")?"open":"closed"; -} -return _d4; -}; -function _d5(_d6,id){ -var _d7=$(_d6).find("div.tree-node[node-id=\""+id+"\"]"); -if(_d7.length){ -return _14(_d6,_d7[0]); -}else{ -return null; -} -}; -function _d8(_d9,_da){ -var _db=$.data(_d9,"tree").options; -var _dc=_14(_d9,_da); -if(_db.onBeforeSelect.call(_d9,_dc)==false){ -return; -} -$("div.tree-node-selected",_d9).removeClass("tree-node-selected"); -$(_da).addClass("tree-node-selected"); -_db.onSelect.call(_d9,_dc); -}; -function _4d(_dd,_de){ -var _df=$(_de); -var hit=_df.children("span.tree-hit"); -return hit.length==0; -}; -function _e0(_e1,_e2){ -var _e3=$.data(_e1,"tree").options; -var _e4=_14(_e1,_e2); -if(_e3.onBeforeEdit.call(_e1,_e4)==false){ -return; -} -$(_e2).css("position","relative"); -var nt=$(_e2).find(".tree-title"); -var _e5=nt.outerWidth(); -nt.empty(); -var _e6=$("").appendTo(nt); -_e6.val(_e4.text).focus(); -_e6.width(_e5+20); -_e6.height(document.compatMode=="CSS1Compat"?(18-(_e6.outerHeight()-_e6.height())):18); -_e6.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_e7(_e1,_e2); -return false; -}else{ -if(e.keyCode==27){ -_ed(_e1,_e2); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_e7(_e1,_e2); -}); -}; -function _e7(_e8,_e9){ -var _ea=$.data(_e8,"tree").options; -$(_e9).css("position",""); -var _eb=$(_e9).find("input.tree-editor"); -var val=_eb.val(); -_eb.remove(); -var _ec=_14(_e8,_e9); -_ec.text=val; -_cb(_e8,_ec); -_ea.onAfterEdit.call(_e8,_ec); -}; -function _ed(_ee,_ef){ -var _f0=$.data(_ee,"tree").options; -$(_ef).css("position",""); -$(_ef).find("input.tree-editor").remove(); -var _f1=_14(_ee,_ef); -_cb(_ee,_f1); -_f0.onCancelEdit.call(_ee,_f1); -}; -$.fn.tree=function(_f2,_f3){ -if(typeof _f2=="string"){ -return $.fn.tree.methods[_f2](this,_f3); -} -var _f2=_f2||{}; -return this.each(function(){ -var _f4=$.data(this,"tree"); -var _f5; -if(_f4){ -_f5=$.extend(_f4.options,_f2); -_f4.options=_f5; -}else{ -_f5=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f2); -$.data(this,"tree",{options:_f5,tree:_1(this)}); -var _f6=_4(this); -if(_f6.length&&!_f5.data){ -_f5.data=_f6; -} -} -_c(this); -if(_f5.lines){ -$(this).addClass("tree-lines"); -} -if(_f5.data){ -_52(this,this,_f5.data); -}else{ -if(_f5.dnd){ -_18(this); -}else{ -_15(this); -} -} -_70(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,_f7){ -return jq.each(function(){ -_52(this,this,_f7); -}); -},getNode:function(jq,_f8){ -return _14(jq[0],_f8); -},getData:function(jq,_f9){ -return _c4(jq[0],_f9); -},reload:function(jq,_fa){ -return jq.each(function(){ -if(_fa){ -var _fb=$(_fa); -var hit=_fb.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -_fb.next().remove(); -_7a(this,_fa); -}else{ -$(this).empty(); -_70(this,this); -} -}); -},getRoot:function(jq){ -return _9b(jq[0]); -},getRoots:function(jq){ -return _9e(jq[0]); -},getParent:function(jq,_fc){ -return _91(jq[0],_fc); -},getChildren:function(jq,_fd){ -return _51(jq[0],_fd); -},getChecked:function(jq,_fe){ -return _aa(jq[0],_fe); -},getSelected:function(jq){ -return _b0(jq[0]); -},isLeaf:function(jq,_ff){ -return _4d(jq[0],_ff); -},find:function(jq,id){ -return _d5(jq[0],id); -},select:function(jq,_100){ -return jq.each(function(){ -_d8(this,_100); -}); -},check:function(jq,_101){ -return jq.each(function(){ -_39(this,_101,true); -}); -},uncheck:function(jq,_102){ -return jq.each(function(){ -_39(this,_102,false); -}); -},collapse:function(jq,_103){ -return jq.each(function(){ -_81(this,_103); -}); -},expand:function(jq,_104){ -return jq.each(function(){ -_7a(this,_104); -}); -},collapseAll:function(jq,_105){ -return jq.each(function(){ -_97(this,_105); -}); -},expandAll:function(jq,_106){ -return jq.each(function(){ -_89(this,_106); -}); -},expandTo:function(jq,_107){ -return jq.each(function(){ -_8d(this,_107); -}); -},scrollTo:function(jq,_108){ -return jq.each(function(){ -_92(this,_108); -}); -},toggle:function(jq,_109){ -return jq.each(function(){ -_86(this,_109); -}); -},append:function(jq,_10a){ -return jq.each(function(){ -_b3(this,_10a); -}); -},insert:function(jq,_10b){ -return jq.each(function(){ -_b9(this,_10b); -}); -},remove:function(jq,_10c){ -return jq.each(function(){ -_bf(this,_10c); -}); -},pop:function(jq,_10d){ -var node=jq.tree("getData",_10d); -jq.tree("remove",_10d); -return node; -},update:function(jq,_10e){ -return jq.each(function(){ -_cb(this,_10e); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_18(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_15(this); -}); -},beginEdit:function(jq,_10f){ -return jq.each(function(){ -_e0(this,_10f); -}); -},endEdit:function(jq,_110){ -return jq.each(function(){ -_e7(this,_110); -}); -},cancelEdit:function(jq,_111){ -return jq.each(function(){ -_ed(this,_111); -}); -}}; -$.fn.tree.parseOptions=function(_112){ -var t=$(_112); -return $.extend({},$.parser.parseOptions(_112,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_113,_114,_115){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_113,dataType:"json",success:function(data){ -_114(data); -},error:function(){ -_115.apply(this,arguments); -}}); -},loadFilter:function(data,_116){ -return data; -},onBeforeLoad:function(node,_117){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_118){ -},onCheck:function(node,_119){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_11a,_11b){ -},onDragOver:function(_11c,_11d){ -},onDragLeave:function(_11e,_11f){ -},onBeforeDrop:function(_120,_121,_122){ -},onDrop:function(_123,_124,_125){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.treegrid.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.treegrid.js deleted file mode 100644 index 9aee2c6..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.treegrid.js +++ /dev/null @@ -1,1100 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"treegrid"); -var _4=_3.options; -$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ -return false; -},onBeforeLoad:function(){ -return false; -},onLoadSuccess:function(){ -},onResizeColumn:function(_5,_6){ -_20(_2); -_4.onResizeColumn.call(_2,_5,_6); -},onSortColumn:function(_7,_8){ -_4.sortName=_7; -_4.sortOrder=_8; -if(_4.remoteSort){ -_1f(_2); -}else{ -var _9=$(_2).treegrid("getData"); -_39(_2,0,_9); -} -_4.onSortColumn.call(_2,_7,_8); -},onBeforeEdit:function(_a,_b){ -if(_4.onBeforeEdit.call(_2,_b)==false){ -return false; -} -},onAfterEdit:function(_c,_d,_e){ -_4.onAfterEdit.call(_2,_d,_e); -},onCancelEdit:function(_f,row){ -_4.onCancelEdit.call(_2,row); -},onSelect:function(_10){ -_4.onSelect.call(_2,_41(_2,_10)); -},onUnselect:function(_11){ -_4.onUnselect.call(_2,_41(_2,_11)); -},onSelectAll:function(){ -_4.onSelectAll.call(_2,$.data(_2,"treegrid").data); -},onUnselectAll:function(){ -_4.onUnselectAll.call(_2,$.data(_2,"treegrid").data); -},onCheck:function(_12){ -_4.onCheck.call(_2,_41(_2,_12)); -},onUncheck:function(_13){ -_4.onUncheck.call(_2,_41(_2,_13)); -},onCheckAll:function(){ -_4.onCheckAll.call(_2,$.data(_2,"treegrid").data); -},onUncheckAll:function(){ -_4.onUncheckAll.call(_2,$.data(_2,"treegrid").data); -},onClickRow:function(_14){ -_4.onClickRow.call(_2,_41(_2,_14)); -},onDblClickRow:function(_15){ -_4.onDblClickRow.call(_2,_41(_2,_15)); -},onClickCell:function(_16,_17){ -_4.onClickCell.call(_2,_17,_41(_2,_16)); -},onDblClickCell:function(_18,_19){ -_4.onDblClickCell.call(_2,_19,_41(_2,_18)); -},onRowContextMenu:function(e,_1a){ -_4.onContextMenu.call(_2,e,_41(_2,_1a)); -}})); -if(!_4.columns){ -var _1b=$.data(_2,"datagrid").options; -_4.columns=_1b.columns; -_4.frozenColumns=_1b.frozenColumns; -} -_3.dc=$.data(_2,"datagrid").dc; -if(_4.pagination){ -var _1c=$(_2).datagrid("getPager"); -_1c.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_1d,_1e){ -_4.pageNumber=_1d; -_4.pageSize=_1e; -_1f(_2); -}}); -_4.pageSize=_1c.pagination("options").pageSize; -} -}; -function _20(_21,_22){ -var _23=$.data(_21,"datagrid").options; -var dc=$.data(_21,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!_23.nowrap||_23.autoRowHeight)){ -if(_22!=undefined){ -var _24=_25(_21,_22); -for(var i=0;i<_24.length;i++){ -_26(_24[i][_23.idField]); -} -} -} -$(_21).datagrid("fixRowHeight",_22); -function _26(_27){ -var tr1=_23.finder.getTr(_21,_27,"body",1); -var tr2=_23.finder.getTr(_21,_27,"body",2); -tr1.css("height",""); -tr2.css("height",""); -var _28=Math.max(tr1.height(),tr2.height()); -tr1.css("height",_28); -tr2.css("height",_28); -}; -}; -function _29(_2a){ -var dc=$.data(_2a,"datagrid").dc; -var _2b=$.data(_2a,"treegrid").options; -if(!_2b.rownumbers){ -return; -} -dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ -$(this).html(i+1); -}); -}; -function _2c(_2d){ -var dc=$.data(_2d,"datagrid").dc; -var _2e=dc.body1.add(dc.body2); -var _2f=($.data(_2e[0],"events")||$._data(_2e[0],"events")).click[0].handler; -dc.body1.add(dc.body2).bind("mouseover",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.addClass("tree-expanded-hover"):tt.addClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.removeClass("tree-expanded-hover"):tt.removeClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).unbind("click").bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_30(_2d,tr.attr("node-id")); -}else{ -_2f(e); -} -e.stopPropagation(); -}); -}; -function _31(_32,_33){ -var _34=$.data(_32,"treegrid").options; -var tr1=_34.finder.getTr(_32,_33,"body",1); -var tr2=_34.finder.getTr(_32,_33,"body",2); -var _35=$(_32).datagrid("getColumnFields",true).length+(_34.rownumbers?1:0); -var _36=$(_32).datagrid("getColumnFields",false).length; -_37(tr1,_35); -_37(tr2,_36); -function _37(tr,_38){ -$(""+""+"
                                                                                                                                            "+""+"").insertAfter(tr); -}; -}; -function _39(_3a,_3b,_3c,_3d){ -var _3e=$.data(_3a,"treegrid"); -var _3f=_3e.options; -var dc=_3e.dc; -_3c=_3f.loadFilter.call(_3a,_3c,_3b); -var _40=_41(_3a,_3b); -if(_40){ -var _42=_3f.finder.getTr(_3a,_3b,"body",1); -var _43=_3f.finder.getTr(_3a,_3b,"body",2); -var cc1=_42.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_43.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_3d){ -_40.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_3d){ -_3e.data=[]; -} -} -if(!_3d){ -cc1.empty(); -cc2.empty(); -} -if(_3f.view.onBeforeRender){ -_3f.view.onBeforeRender.call(_3f.view,_3a,_3b,_3c); -} -_3f.view.render.call(_3f.view,_3a,cc1,true); -_3f.view.render.call(_3f.view,_3a,cc2,false); -if(_3f.showFooter){ -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer1,true); -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer2,false); -} -if(_3f.view.onAfterRender){ -_3f.view.onAfterRender.call(_3f.view,_3a); -} -_3f.onLoadSuccess.call(_3a,_40,_3c); -if(!_3b&&_3f.pagination){ -var _44=$.data(_3a,"treegrid").total; -var _45=$(_3a).datagrid("getPager"); -if(_45.pagination("options").total!=_44){ -_45.pagination({total:_44}); -} -} -_20(_3a); -_29(_3a); -$(_3a).treegrid("autoSizeColumn"); -}; -function _1f(_46,_47,_48,_49,_4a){ -var _4b=$.data(_46,"treegrid").options; -var _4c=$(_46).datagrid("getPanel").find("div.datagrid-body"); -if(_48){ -_4b.queryParams=_48; -} -var _4d=$.extend({},_4b.queryParams); -if(_4b.pagination){ -$.extend(_4d,{page:_4b.pageNumber,rows:_4b.pageSize}); -} -if(_4b.sortName){ -$.extend(_4d,{sort:_4b.sortName,order:_4b.sortOrder}); -} -var row=_41(_46,_47); -if(_4b.onBeforeLoad.call(_46,row,_4d)==false){ -return; -} -var _4e=_4c.find("tr[node-id=\""+_47+"\"] span.tree-folder"); -_4e.addClass("tree-loading"); -$(_46).treegrid("loading"); -var _4f=_4b.loader.call(_46,_4d,function(_50){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_39(_46,_47,_50,_49); -if(_4a){ -_4a(); -} -},function(){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_4b.onLoadError.apply(_46,arguments); -if(_4a){ -_4a(); -} -}); -if(_4f==false){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -} -}; -function _51(_52){ -var _53=_54(_52); -if(_53.length){ -return _53[0]; -}else{ -return null; -} -}; -function _54(_55){ -return $.data(_55,"treegrid").data; -}; -function _56(_57,_58){ -var row=_41(_57,_58); -if(row._parentId){ -return _41(_57,row._parentId); -}else{ -return null; -} -}; -function _25(_59,_5a){ -var _5b=$.data(_59,"treegrid").options; -var _5c=$(_59).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _5d=[]; -if(_5a){ -_5e(_5a); -}else{ -var _5f=_54(_59); -for(var i=0;i<_5f.length;i++){ -_5d.push(_5f[i]); -_5e(_5f[i][_5b.idField]); -} -} -function _5e(_60){ -var _61=_41(_59,_60); -if(_61&&_61.children){ -for(var i=0,len=_61.children.length;i
                                                                                                                                            ").insertBefore(_96); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_39(_92,_93.parent,_93.data,true); -}; -function _97(_98,_99){ -var ref=_99.before||_99.after; -var _9a=$.data(_98,"treegrid").options; -var _9b=_56(_98,ref); -_91(_98,{parent:(_9b?_9b[_9a.idField]:null),data:[_99.data]}); -_9c(true); -_9c(false); -_29(_98); -function _9c(_9d){ -var _9e=_9d?1:2; -var tr=_9a.finder.getTr(_98,_99.data[_9a.idField],"body",_9e); -var _9f=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var _a0=_9a.finder.getTr(_98,ref,"body",_9e); -if(_99.before){ -tr.insertBefore(_a0); -}else{ -var sub=_a0.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:_a0); -} -_9f.remove(); -}; -}; -function _a1(_a2,_a3){ -var _a4=$.data(_a2,"treegrid").options; -var tr=_a4.finder.getTr(_a2,_a3); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _a5=del(_a3); -if(_a5){ -if(_a5.children.length==0){ -tr=_a4.finder.getTr(_a2,_a5[_a4.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var _a6=tr.children("td[field=\""+_a4.treeField+"\"]").children("div.datagrid-cell"); -_a6.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_a6.find(".tree-hit").remove(); -$("").prependTo(_a6); -} -} -_29(_a2); -function del(id){ -var cc; -var _a7=_56(_a2,_a3); -if(_a7){ -cc=_a7.children; -}else{ -cc=$(_a2).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_c9.length;i++){ -var row=_c9[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=_c0.rowStyler?_c0.rowStyler.call(_bd,row):""; -var _cb=""; -var _cc=""; -if(typeof css=="string"){ -_cc=css; -}else{ -if(css){ -_cb=css["class"]||""; -_cc=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_c3++%2&&_c0.striped?"datagrid-row-alt ":" ")+_cb+"\""; -var _cd=_cc?"style=\""+_cc+"\"":""; -var _ce=_c2+"-"+(_c7?1:2)+"-"+row[_c0.idField]; -_ca.push(""); -_ca=_ca.concat(_c4.renderRow.call(_c4,_bd,_c1,_c7,_c8,row)); -_ca.push(""); -if(row.children&&row.children.length){ -var tt=_c6(_c7,_c8+1,row.children); -var v=row.state=="closed"?"none":"block"; -_ca.push("
                                                                                                                                            "); -_ca=_ca.concat(tt); -_ca.push("
                                                                                                                                            "); -} -} -_ca.push(""); -return _ca; -}; -},renderFooter:function(_cf,_d0,_d1){ -var _d2=$.data(_cf,"treegrid").options; -var _d3=$.data(_cf,"treegrid").footer||[]; -var _d4=$(_cf).datagrid("getColumnFields",_d1); -var _d5=[""]; -for(var i=0;i<_d3.length;i++){ -var row=_d3[i]; -row[_d2.idField]=row[_d2.idField]||("foot-row-id"+i); -_d5.push(""); -_d5.push(this.renderRow.call(this,_cf,_d4,_d1,0,row)); -_d5.push(""); -} -_d5.push("
                                                                                                                                            "); -$(_d0).html(_d5.join("")); -},renderRow:function(_d6,_d7,_d8,_d9,row){ -var _da=$.data(_d6,"treegrid").options; -var cc=[]; -if(_d8&&_da.rownumbers){ -cc.push("
                                                                                                                                            0
                                                                                                                                            "); -} -for(var i=0;i<_d7.length;i++){ -var _db=_d7[i]; -var col=$(_d6).datagrid("getColumnOption",_db); -if(col){ -var css=col.styler?(col.styler(row[_db],row)||""):""; -var _dc=""; -var _dd=""; -if(typeof css=="string"){ -_dd=css; -}else{ -if(cc){ -_dc=css["class"]||""; -_dd=css["style"]||""; -} -} -var cls=_dc?"class=\""+_dc+"\"":""; -var _de=col.hidden?"style=\"display:none;"+_dd+"\"":(_dd?"style=\""+_dd+"\"":""); -cc.push(""); -if(col.checkbox){ -var _de=""; -}else{ -var _de=_dd; -if(col.align){ -_de+=";text-align:"+col.align+";"; -} -if(!_da.nowrap){ -_de+=";white-space:normal;height:auto;"; -}else{ -if(_da.autoRowHeight){ -_de+=";height:auto;"; -} -} -} -cc.push("
                                                                                                                                            "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_db],row); -}else{ -val=row[_db]; -} -if(_db==_da.treeField){ -for(var j=0;j<_d9;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
                                                                                                                                            "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_df,id){ -this.updateRow.call(this,_df,id,{}); -},updateRow:function(_e0,id,row){ -var _e1=$.data(_e0,"treegrid").options; -var _e2=$(_e0).treegrid("find",id); -$.extend(_e2,row); -var _e3=$(_e0).treegrid("getLevel",id)-1; -var _e4=_e1.rowStyler?_e1.rowStyler.call(_e0,_e2):""; -function _e5(_e6){ -var _e7=$(_e0).treegrid("getColumnFields",_e6); -var tr=_e1.finder.getTr(_e0,id,"body",(_e6?1:2)); -var _e8=tr.find("div.datagrid-cell-rownumber").html(); -var _e9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_e0,_e7,_e6,_e3,_e2)); -tr.attr("style",_e4||""); -tr.find("div.datagrid-cell-rownumber").html(_e8); -if(_e9){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_e5.call(this,true); -_e5.call(this,false); -$(_e0).treegrid("fixRowHeight",id); -},onBeforeRender:function(_ea,_eb,_ec){ -if($.isArray(_eb)){ -_ec={total:_eb.length,rows:_eb}; -_eb=null; -} -if(!_ec){ -return false; -} -var _ed=$.data(_ea,"treegrid"); -var _ee=_ed.options; -if(_ec.length==undefined){ -if(_ec.footer){ -_ed.footer=_ec.footer; -} -if(_ec.total){ -_ed.total=_ec.total; -} -_ec=this.transfer(_ea,_eb,_ec.rows); -}else{ -function _ef(_f0,_f1){ -for(var i=0;i<_f0.length;i++){ -var row=_f0[i]; -row._parentId=_f1; -if(row.children&&row.children.length){ -_ef(row.children,row[_ee.idField]); -} -} -}; -_ef(_ec,_eb); -} -var _f2=_41(_ea,_eb); -if(_f2){ -if(_f2.children){ -_f2.children=_f2.children.concat(_ec); -}else{ -_f2.children=_ec; -} -}else{ -_ed.data=_ed.data.concat(_ec); -} -this.sort(_ea,_ec); -this.treeNodes=_ec; -this.treeLevel=$(_ea).treegrid("getLevel",_eb); -},sort:function(_f3,_f4){ -var _f5=$.data(_f3,"treegrid").options; -if(!_f5.remoteSort&&_f5.sortName){ -var _f6=_f5.sortName.split(","); -var _f7=_f5.sortOrder.split(","); -_f8(_f4); -} -function _f8(_f9){ -_f9.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_f6.length;i++){ -var sn=_f6[i]; -var so=_f7[i]; -var col=$(_f3).treegrid("getColumnOption",sn); -var _fa=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_fa(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i<_f9.length;i++){ -var _fb=_f9[i].children; -if(_fb&&_fb.length){ -_f8(_fb); -} -} -}; -},transfer:function(_fc,_fd,_fe){ -var _ff=$.data(_fc,"treegrid").options; -var rows=[]; -for(var i=0;i<_fe.length;i++){ -rows.push(_fe[i]); -} -var _100=[]; -for(var i=0;i=_2b[0]&&len<=_2b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_2c,_2d){ -var _2e={}; -_2e[_2d[1]]=_2c; -var _2f=$.ajax({url:_2d[0],dataType:"json",data:_2e,async:false,cache:false,type:"post"}).responseText; -return _2f=="true"; -},message:"Please fix this field."}}}; -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.window.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.window.js deleted file mode 100644 index 38d05d1..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/plugins/jquery.window.js +++ /dev/null @@ -1,288 +0,0 @@ -/** - * jQuery EasyUI 1.3.4 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -var _4=$.data(_2,"window").options; -if(_3){ -if(_3.width){ -_4.width=_3.width; -} -if(_3.height){ -_4.height=_3.height; -} -if(_3.left!=null){ -_4.left=_3.left; -} -if(_3.top!=null){ -_4.top=_3.top; -} -} -$(_2).panel("resize",_4); -}; -function _5(_6,_7){ -var _8=$.data(_6,"window"); -if(_7){ -if(_7.left!=null){ -_8.options.left=_7.left; -} -if(_7.top!=null){ -_8.options.top=_7.top; -} -} -$(_6).panel("move",_8.options); -if(_8.shadow){ -_8.shadow.css({left:_8.options.left,top:_8.options.top}); -} -}; -function _9(_a,_b){ -var _c=$.data(_a,"window"); -var _d=_c.options; -var _e=_d.width; -if(isNaN(_e)){ -_e=_c.window._outerWidth(); -} -if(_d.inline){ -var _f=_c.window.parent(); -_d.left=(_f.width()-_e)/2+_f.scrollLeft(); -}else{ -_d.left=($(window)._outerWidth()-_e)/2+$(document).scrollLeft(); -} -if(_b){ -_5(_a); -} -}; -function _10(_11,_12){ -var _13=$.data(_11,"window"); -var _14=_13.options; -var _15=_14.height; -if(isNaN(_15)){ -_15=_13.window._outerHeight(); -} -if(_14.inline){ -var _16=_13.window.parent(); -_14.top=(_16.height()-_15)/2+_16.scrollTop(); -}else{ -_14.top=($(window)._outerHeight()-_15)/2+$(document).scrollTop(); -} -if(_12){ -_5(_11); -} -}; -function _17(_18){ -var _19=$.data(_18,"window"); -var win=$(_18).panel($.extend({},_19.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_19.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_19.options.onBeforeDestroy.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.mask){ -_19.mask.remove(); -} -},onClose:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onClose.call(_18); -},onOpen:function(){ -if(_19.mask){ -_19.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_19.shadow){ -_19.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.window.css("z-index",$.fn.window.defaults.zIndex++); -_19.options.onOpen.call(_18); -},onResize:function(_1a,_1b){ -var _1c=$(this).panel("options"); -$.extend(_19.options,{width:_1c.width,height:_1c.height,left:_1c.left,top:_1c.top}); -if(_19.shadow){ -_19.shadow.css({left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.options.onResize.call(_18,_1a,_1b); -},onMinimize:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onMinimize.call(_18); -},onBeforeCollapse:function(){ -if(_19.options.onBeforeCollapse.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.hide(); -} -},onExpand:function(){ -if(_19.shadow){ -_19.shadow.show(); -} -_19.options.onExpand.call(_18); -}})); -_19.window=win.panel("panel"); -if(_19.mask){ -_19.mask.remove(); -} -if(_19.options.modal==true){ -_19.mask=$("
                                                                                                                                            ").insertAfter(_19.window); -_19.mask.css({width:(_19.options.inline?_19.mask.parent().width():_1d().width),height:(_19.options.inline?_19.mask.parent().height():_1d().height),display:"none"}); -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.options.shadow==true){ -_19.shadow=$("
                                                                                                                                            ").insertAfter(_19.window); -_19.shadow.css({display:"none"}); -} -if(_19.options.left==null){ -_9(_18); -} -if(_19.options.top==null){ -_10(_18); -} -_5(_18); -if(_19.options.closed==false){ -win.window("open"); -} -}; -function _1e(_1f){ -var _20=$.data(_1f,"window"); -_20.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_20.options.draggable==false,onStartDrag:function(e){ -if(_20.mask){ -_20.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_20.shadow){ -_20.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_20.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_20.proxy){ -_20.proxy=$("
                                                                                                                                            ").insertAfter(_20.window); -} -_20.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(_20.window._outerWidth()); -_20.proxy._outerHeight(_20.window._outerHeight()); -setTimeout(function(){ -if(_20.proxy){ -_20.proxy.show(); -} -},500); -},onDrag:function(e){ -_20.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_20.options.left=e.data.left; -_20.options.top=e.data.top; -$(_1f).window("move"); -_20.proxy.remove(); -_20.proxy=null; -}}); -_20.window.resizable({disabled:_20.options.resizable==false,onStartResize:function(e){ -_20.pmask=$("
                                                                                                                                            ").insertAfter(_20.window); -_20.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_20.window._outerWidth(),height:_20.window._outerHeight()}); -if(!_20.proxy){ -_20.proxy=$("
                                                                                                                                            ").insertAfter(_20.window); -} -_20.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_20.proxy.css({left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_20.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_1(_1f); -_20.pmask.remove(); -_20.pmask=null; -_20.proxy.remove(); -_20.proxy=null; -}}); -}; -function _1d(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_1d().width,height:_1d().height}); -},50); -}); -$.fn.window=function(_21,_22){ -if(typeof _21=="string"){ -var _23=$.fn.window.methods[_21]; -if(_23){ -return _23(this,_22); -}else{ -return this.panel(_21,_22); -} -} -_21=_21||{}; -return this.each(function(){ -var _24=$.data(this,"window"); -if(_24){ -$.extend(_24.options,_21); -}else{ -_24=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_21)}); -if(!_24.options.inline){ -document.body.appendChild(this); -} -} -_17(this); -_1e(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _25=jq.panel("options"); -var _26=$.data(jq[0],"window").options; -return $.extend(_26,{closed:_25.closed,collapsed:_25.collapsed,minimized:_25.minimized,maximized:_25.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_27){ -return jq.each(function(){ -_1(this,_27); -}); -},move:function(jq,_28){ -return jq.each(function(){ -_5(this,_28); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_9(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_10(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_9(this); -_10(this); -_5(this); -}); -}}; -$.fn.window.parseOptions=function(_29){ -return $.extend({},$.fn.panel.parseOptions(_29),$.parser.parseOptions(_29,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/accordion.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/accordion.css deleted file mode 100644 index a0f6ddc..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/calendar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/calendar.css deleted file mode 100644 index 514f3e3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/combo.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/combo.css deleted file mode 100644 index d0af3b7..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/combobox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/combobox.css deleted file mode 100644 index 9c55f28..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/datagrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/datagrid.css deleted file mode 100644 index 2a616fb..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/datebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/datebox.css deleted file mode 100644 index e368f64..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/dialog.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/dialog.css deleted file mode 100644 index 4ee224a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/easyui.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/easyui.css deleted file mode 100644 index 8e20555..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/easyui.css +++ /dev/null @@ -1,2292 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/Thumbs.db b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/accordion_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/accordion_arrows.png deleted file mode 100644 index 45fd44a..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/blank.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/calendar_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/combo_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/combo_arrow.png deleted file mode 100644 index ac58921..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/datagrid_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/datagrid_icons.png deleted file mode 100644 index bdf87e3..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/datebox_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/layout_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/layout_arrows.png deleted file mode 100644 index 19c611f..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/linkbutton_bg.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/loading.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/menu_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/menu_arrows.png deleted file mode 100644 index 2a98494..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/messager_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/pagination_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/pagination_icons.png deleted file mode 100644 index b3315fa..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/panel_tools.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/panel_tools.png deleted file mode 100644 index f97761e..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/searchbox_button.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/slider_handle.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/spinner_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/spinner_arrows.png deleted file mode 100644 index 25ee848..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/tabs_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/tabs_icons.png deleted file mode 100644 index 732b123..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/tree_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/tree_icons.png deleted file mode 100644 index 2b4fd20..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/validatebox_warning.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/layout.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/layout.css deleted file mode 100644 index 31190da..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/linkbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/linkbutton.css deleted file mode 100644 index 69de8e2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/menu.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/menu.css deleted file mode 100644 index 9e89ea5..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/menubutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/menubutton.css deleted file mode 100644 index b936c02..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/messager.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/messager.css deleted file mode 100644 index f378f2a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/pagination.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/pagination.css deleted file mode 100644 index 92fa015..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/panel.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/panel.css deleted file mode 100644 index 0197324..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/progressbar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/progressbar.css deleted file mode 100644 index 79fcf62..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/propertygrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/propertygrid.css deleted file mode 100644 index d71ce7c..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/searchbox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/searchbox.css deleted file mode 100644 index a502652..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/slider.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/slider.css deleted file mode 100644 index da31fd6..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/spinner.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/spinner.css deleted file mode 100644 index 18ea2a9..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/splitbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/splitbutton.css deleted file mode 100644 index 3391b9c..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tabs.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tabs.css deleted file mode 100644 index 40ba8f1..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tooltip.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tooltip.css deleted file mode 100644 index 8dfbfed..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tree.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tree.css deleted file mode 100644 index ea955cb..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/validatebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/window.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/window.css deleted file mode 100644 index 1277273..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/black/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/accordion.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/accordion.css deleted file mode 100644 index 6b80dc2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/calendar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/calendar.css deleted file mode 100644 index 83458b2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/combo.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/combo.css deleted file mode 100644 index 42b913a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/combobox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/combobox.css deleted file mode 100644 index 0ad3cb7..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/datagrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/datagrid.css deleted file mode 100644 index 7826541..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/datebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/datebox.css deleted file mode 100644 index 6225a0d..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/dialog.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/dialog.css deleted file mode 100644 index 77552bb..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/easyui.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/easyui.css deleted file mode 100644 index ea7ef8f..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/easyui.css +++ /dev/null @@ -1,2265 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; - border: none; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #95B8E7; -} -.accordion .accordion-header { - background: #E0ECFF; - filter: none; -} -.accordion .accordion-header-selected { - background: #FBEC88; -} -.accordion .accordion-header-selected .panel-title { - color: #000000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #F4F4F4; -} -.dialog-toolbar { - border-bottom: 1px solid #dddddd; -} -.dialog-button { - border-top: 1px solid #dddddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #95B8E7; - background-color: #ffffff; -} -.combo-arrow { - background-color: #E0ECFF; -} -.combo-arrow-hover { - background-color: #eaf2ff; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #eaf2ff; - color: #000000; -} -.combobox-item-selected { - background-color: #FBEC88; - color: #000000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #efefef; - background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); - background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #aac5e7; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #95B8E7; -} -.datagrid-toolbar, -.datagrid-pager { - background: #F4F4F4; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #dddddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #eaf2ff; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #FBEC88; - color: #000000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #95B8E7; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #95B8E7; -} -.calendar { - border-color: #95B8E7; -} -.calendar-header { - background: #E0ECFF; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #F4F4F4; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #eaf2ff; - color: #000000; -} -.calendar-hover { - border: 1px solid #b7d2ff; - padding: 0; -} -.calendar-selected { - background-color: #FBEC88; - color: #000000; - border: 1px solid #E2C608; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #F4F4F4; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/Thumbs.db b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/accordion_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/blank.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/calendar_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/combo_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/datagrid_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/datebox_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/layout_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/linkbutton_bg.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/loading.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/menu_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/messager_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/pagination_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/panel_tools.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/panel_tools.png deleted file mode 100644 index 19ecc94..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/searchbox_button.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/slider_handle.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/spinner_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/tabs_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/tree_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/validatebox_warning.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/layout.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/layout.css deleted file mode 100644 index 0292cf5..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #aac5e7; -} -.layout-split-north { - border-bottom: 5px solid #E6EEF8; -} -.layout-split-south { - border-top: 5px solid #E6EEF8; -} -.layout-split-east { - border-left: 5px solid #E6EEF8; -} -.layout-split-west { - border-right: 5px solid #E6EEF8; -} -.layout-expand { - background-color: #E0ECFF; -} -.layout-expand-over { - background-color: #E0ECFF; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/linkbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/linkbutton.css deleted file mode 100644 index 6a79c55..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #eaf2ff; - color: #000000; - border: 1px solid #b7d2ff; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/menu.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/menu.css deleted file mode 100644 index c6089d5..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #fafafa; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #fafafa; -} -.menu-active { - border-color: #b7d2ff; - color: #000000; - background: #eaf2ff; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/menubutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/menubutton.css deleted file mode 100644 index 9246499..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/messager.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/messager.css deleted file mode 100644 index 3ed98c7..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #95B8E7; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/pagination.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/pagination.css deleted file mode 100644 index 3df2050..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #95B8E7; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/panel.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/panel.css deleted file mode 100644 index 2600688..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #eaf2ff; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #95B8E7; -} -.panel-header { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #0E2D5F; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/progressbar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/progressbar.css deleted file mode 100644 index db80e3a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #95B8E7; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/propertygrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/propertygrid.css deleted file mode 100644 index 5f5fbb3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #dddddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #E0ECFF; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #dddddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #E0ECFF; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/searchbox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/searchbox.css deleted file mode 100644 index b13708d..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #95B8E7; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #E0ECFF; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/slider.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/slider.css deleted file mode 100644 index a4db046..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #95B8E7; - background: #E0ECFF; -} -.slider-rule span { - border-color: #95B8E7; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/spinner.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/spinner.css deleted file mode 100644 index 1a28f8a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #95B8E7; -} -.spinner-arrow { - background-color: #E0ECFF; -} -.spinner-arrow-hover { - background-color: #eaf2ff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/splitbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/splitbutton.css deleted file mode 100644 index 61635c3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #aac5e7; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #b7d2ff; - background-color: #eaf2ff; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tabs.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tabs.css deleted file mode 100644 index 2978394..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #eaf2ff; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #0E2D5F; - background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); - background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); - background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); -} -.tabs li a.tabs-inner { - color: #0E2D5F; - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #E0ECFF; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #95B8E7; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #eaf2ff; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tooltip.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tooltip.css deleted file mode 100644 index 2881b70..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #95B8E7; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #95B8E7; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #95B8E7; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #95B8E7; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #95B8E7; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tree.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tree.css deleted file mode 100644 index af7e273..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #95B8E7; -} -.tree-node-hover { - background: #eaf2ff; - color: #000000; -} -.tree-node-selected { - background: #FBEC88; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/validatebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/window.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/window.css deleted file mode 100644 index b22024a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/default/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #95B8E7; -} -.window { - background-color: #E0ECFF; - background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); - background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); -} -.window-proxy { - border: 1px dashed #95B8E7; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/accordion.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/accordion.css deleted file mode 100644 index 3cb451b..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/calendar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/calendar.css deleted file mode 100644 index d087f25..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/combo.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/combo.css deleted file mode 100644 index 1fdf982..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/combobox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/combobox.css deleted file mode 100644 index 71b9470..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/datagrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/datagrid.css deleted file mode 100644 index 2bad00a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/datagrid.css +++ /dev/null @@ -1,258 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/datebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/datebox.css deleted file mode 100644 index 8c41350..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/dialog.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/dialog.css deleted file mode 100644 index fcd00ad..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/easyui.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/easyui.css deleted file mode 100644 index 89660cb..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/easyui.css +++ /dev/null @@ -1,2264 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #ffffff; - border-color: #D3D3D3; -} -.accordion .accordion-header { - background: #f3f3f3; - filter: none; -} -.accordion .accordion-header-selected { - background: #0092DC; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fafafa; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #ffffff; -} -.combo { - border-color: #D3D3D3; - background-color: #ffffff; -} -.combo-arrow { - background-color: #f3f3f3; -} -.combo-arrow-hover { - background-color: #e2e2e2; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #e2e2e2; - color: #000000; -} -.combobox-item-selected { - background-color: #0092DC; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #fafafa; - background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); - background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); -} -.datagrid-cell-rownumber { - color: #000000; -} -.datagrid-resize-proxy { - background: #bfbfbf; -} -.datagrid-mask { - background: #ccc; -} -.datagrid-mask-msg { - border-color: #D3D3D3; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fafafa; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ccc; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #000000; -} -.datagrid-row-alt { - background: #fafafa; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #e2e2e2; - color: #000000; - cursor: default; -} -.datagrid-row-selected { - background: #0092DC; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #D3D3D3; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #4d4d4d; -} -.calendar-day { - color: #000000; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #D3D3D3; -} -.calendar { - border-color: #D3D3D3; -} -.calendar-header { - background: #f3f3f3; -} -.calendar-body, -.calendar-menu { - background: #ffffff; -} -.calendar-body th { - background: #fafafa; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #e2e2e2; - color: #000000; -} -.calendar-hover { - border: 1px solid #ccc; - padding: 0; -} -.calendar-selected { - background-color: #0092DC; - color: #fff; - border: 1px solid #0070a9; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fafafa; -} -.datebox-button a { - color: #444; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/Thumbs.db b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/accordion_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/accordion_arrows.png deleted file mode 100644 index a0b8769..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/blank.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/calendar_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/combo_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/combo_arrow.png deleted file mode 100644 index 04f4ba0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/datagrid_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/datagrid_icons.png deleted file mode 100644 index 73c4e88..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/datebox_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/layout_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/layout_arrows.png deleted file mode 100644 index bf7929f..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/linkbutton_bg.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/loading.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/menu_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/messager_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/pagination_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/pagination_icons.png deleted file mode 100644 index e0f1b07..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/panel_tools.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/panel_tools.png deleted file mode 100644 index f33f8c9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/searchbox_button.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/slider_handle.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/spinner_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/spinner_arrows.png deleted file mode 100644 index dba62bb..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/tabs_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/tabs_icons.png deleted file mode 100644 index dfa10f7..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/tree_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/validatebox_warning.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/layout.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/layout.css deleted file mode 100644 index d26772e..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #bfbfbf; -} -.layout-split-north { - border-bottom: 5px solid #efefef; -} -.layout-split-south { - border-top: 5px solid #efefef; -} -.layout-split-east { - border-left: 5px solid #efefef; -} -.layout-split-west { - border-right: 5px solid #efefef; -} -.layout-expand { - background-color: #f3f3f3; -} -.layout-expand-over { - background-color: #f3f3f3; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/linkbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/linkbutton.css deleted file mode 100644 index fd725e1..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/linkbutton.css +++ /dev/null @@ -1,123 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #444; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #e2e2e2; - color: #000000; - border: 1px solid #ccc; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #444; - filter: alpha(opacity=50); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/menu.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/menu.css deleted file mode 100644 index 51c2cff..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ccc; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #f3f3f3; - border-color: #D3D3D3; - color: #444; -} -.menu-content { - background: #ffffff; -} -.menu-item { - border-color: transparent; - _border-color: #f3f3f3; -} -.menu-active { - border-color: #ccc; - color: #000000; - background: #e2e2e2; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/menubutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/menubutton.css deleted file mode 100644 index dc61b34..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/messager.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/messager.css deleted file mode 100644 index 9b3aed2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #D3D3D3; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/pagination.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/pagination.css deleted file mode 100644 index 2fc3d1f..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ccc; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #D3D3D3; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/panel.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/panel.css deleted file mode 100644 index f38009a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/panel.css +++ /dev/null @@ -1,125 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #e2e2e2; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #D3D3D3; -} -.panel-header { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.panel-body { - background-color: #ffffff; - color: #000000; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #575765; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/progressbar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/progressbar.css deleted file mode 100644 index 93818e3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #D3D3D3; -} -.progressbar-text { - color: #000000; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/propertygrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/propertygrid.css deleted file mode 100644 index 90e4520..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #f3f3f3; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #f3f3f3; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/searchbox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/searchbox.css deleted file mode 100644 index a98939a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #D3D3D3; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #f3f3f3; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/slider.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/slider.css deleted file mode 100644 index 38e4e5b..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #D3D3D3; - background: #f3f3f3; -} -.slider-rule span { - border-color: #D3D3D3; -} -.slider-rulelabel span { - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/spinner.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/spinner.css deleted file mode 100644 index 0d9f2b0..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #D3D3D3; -} -.spinner-arrow { - background-color: #f3f3f3; -} -.spinner-arrow-hover { - background-color: #e2e2e2; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/splitbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/splitbutton.css deleted file mode 100644 index f2bbb87..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #bfbfbf; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ccc; - background-color: #e2e2e2; - color: #000000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tabs.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tabs.css deleted file mode 100644 index 7a48b33..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tabs.css +++ /dev/null @@ -1,356 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #e2e2e2; - color: #000000; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #ffffff; - color: #575765; - background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); - background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); - background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); -} -.tabs li a.tabs-inner { - color: #575765; - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #f3f3f3; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #D3D3D3; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #e2e2e2; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #ffffff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #ffffff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #ffffff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tooltip.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tooltip.css deleted file mode 100644 index 51c5b83..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #ffffff; - border-color: #D3D3D3; - color: #000000; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #D3D3D3; -} -.tooltip-right .tooltip-arrow { - border-right-color: #ffffff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #D3D3D3; -} -.tooltip-left .tooltip-arrow { - border-left-color: #ffffff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #D3D3D3; -} -.tooltip-top .tooltip-arrow { - border-top-color: #ffffff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #D3D3D3; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tree.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tree.css deleted file mode 100644 index c705f39..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #ffffff; - color: #000000; - border-color: #D3D3D3; -} -.tree-node-hover { - background: #e2e2e2; - color: #000000; -} -.tree-node-selected { - background: #0092DC; - color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/validatebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/window.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/window.css deleted file mode 100644 index b06cfc0..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/gray/window.css +++ /dev/null @@ -1,87 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #ccc; - -moz-box-shadow: 2px 2px 3px #cccccc; - -webkit-box-shadow: 2px 2px 3px #cccccc; - box-shadow: 2px 2px 3px #cccccc; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #D3D3D3; -} -.window { - background-color: #f3f3f3; - background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); - background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); -} -.window-proxy { - border: 1px dashed #D3D3D3; -} -.window-proxy-mask, -.window-mask { - background: #ccc; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icon.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icon.css deleted file mode 100644 index 11e0642..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icon.css +++ /dev/null @@ -1,64 +0,0 @@ -.icon-blank{ - background:url('icons/blank.gif') no-repeat center center; -} -.icon-add{ - background:url('icons/edit_add.png') no-repeat center center; -} -.icon-edit{ - background:url('icons/pencil.png') no-repeat center center; -} -.icon-remove{ - background:url('icons/edit_remove.png') no-repeat center center; -} -.icon-save{ - background:url('icons/filesave.png') no-repeat center center; -} -.icon-cut{ - background:url('icons/cut.png') no-repeat center center; -} -.icon-ok{ - background:url('icons/ok.png') no-repeat center center; -} -.icon-no{ - background:url('icons/no.png') no-repeat center center; -} -.icon-cancel{ - background:url('icons/cancel.png') no-repeat center center; -} -.icon-reload{ - background:url('icons/reload.png') no-repeat center center; -} -.icon-search{ - background:url('icons/search.png') no-repeat center center; -} -.icon-print{ - background:url('icons/print.png') no-repeat center center; -} -.icon-help{ - background:url('icons/help.png') no-repeat center center; -} -.icon-undo{ - background:url('icons/undo.png') no-repeat center center; -} -.icon-redo{ - background:url('icons/redo.png') no-repeat center center; -} -.icon-back{ - background:url('icons/back.png') no-repeat center center; -} -.icon-sum{ - background:url('icons/sum.png') no-repeat center center; -} -.icon-tip{ - background:url('icons/tip.png') no-repeat center center; -} - -.icon-mini-add{ - background:url('icons/mini_add.png') no-repeat center center; -} -.icon-mini-edit{ - background:url('icons/mini_edit.png') no-repeat center center; -} -.icon-mini-refresh{ - background:url('icons/mini_refresh.png') no-repeat center center; -} \ No newline at end of file diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/back.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/back.png deleted file mode 100644 index 3fe8b17..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/back.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/blank.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/cancel.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/cancel.png deleted file mode 100644 index a432b49..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/cancel.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/cut.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/cut.png deleted file mode 100644 index 21fdb4d..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/cut.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/edit_add.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/edit_add.png deleted file mode 100644 index e948508..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/edit_add.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/edit_remove.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/edit_remove.png deleted file mode 100644 index d555d92..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/edit_remove.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/filesave.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/filesave.png deleted file mode 100644 index fd0048d..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/filesave.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/help.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/help.png deleted file mode 100644 index 28a0f9e..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/help.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_add.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_add.png deleted file mode 100644 index fd82b92..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_add.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_edit.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_edit.png deleted file mode 100644 index db9221a..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_edit.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_refresh.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_refresh.png deleted file mode 100644 index 6cdd016..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/mini_refresh.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/no.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/no.png deleted file mode 100644 index 37a7c74..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/no.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/ok.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/ok.png deleted file mode 100644 index 5b0f6a6..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/ok.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/pencil.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/pencil.png deleted file mode 100644 index 5b8cc89..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/pencil.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/print.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/print.png deleted file mode 100644 index fdf67a1..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/print.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/redo.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/redo.png deleted file mode 100644 index f1e45cf..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/redo.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/reload.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/reload.png deleted file mode 100644 index f51cab8..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/reload.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/search.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/search.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/search.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/sum.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/sum.png deleted file mode 100644 index fd7b32e..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/sum.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/tip.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/tip.png deleted file mode 100644 index 845e110..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/tip.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/undo.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/undo.png deleted file mode 100644 index 6129fa0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/icons/undo.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/accordion.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/accordion.css deleted file mode 100644 index 31d6079..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/calendar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/calendar.css deleted file mode 100644 index 798ed97..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/combo.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/combo.css deleted file mode 100644 index 8922f8e..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/combobox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/combobox.css deleted file mode 100644 index 97205d3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/combobox.css +++ /dev/null @@ -1,20 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/datagrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/datagrid.css deleted file mode 100644 index 7d0445a..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/datagrid.css +++ /dev/null @@ -1,252 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/datebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/datebox.css deleted file mode 100644 index b0f71e2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/dialog.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/dialog.css deleted file mode 100644 index 316cdc4..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/easyui.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/easyui.css deleted file mode 100644 index 6403e3f..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/easyui.css +++ /dev/null @@ -1,2238 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #fff; - border-color: #ddd; -} -.accordion .accordion-header { - background: #ffffff; - filter: none; -} -.accordion .accordion-header-selected { - background: #CCE6FF; -} -.accordion .accordion-header-selected .panel-title { - color: #000; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #fff; -} -.dialog-toolbar { - border-bottom: 1px solid #ddd; -} -.dialog-button { - border-top: 1px solid #ddd; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #fff; -} -.combo { - border-color: #ddd; - background-color: #fff; -} -.combo-arrow { - background-color: #ffffff; -} -.combo-arrow-hover { - background-color: #E6E6E6; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #E6E6E6; - color: #444; -} -.combobox-item-selected { - background-color: #CCE6FF; - color: #000; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #fff url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #ffffff; -} -.datagrid-cell-rownumber { - color: #444; -} -.datagrid-resize-proxy { - background: #b3b3b3; -} -.datagrid-mask { - background: #eee; -} -.datagrid-mask-msg { - border-color: #ddd; -} -.datagrid-toolbar, -.datagrid-pager { - background: #fff; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #ddd; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #ddd; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #444; -} -.datagrid-row-alt { - background: #f5f5f5; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #E6E6E6; - color: #444; - cursor: default; -} -.datagrid-row-selected { - background: #CCE6FF; - color: #000; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.calendar-body th, -.calendar-menu-month { - color: #919191; -} -.calendar-day { - color: #444; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #ddd; -} -.calendar { - border-color: #ddd; -} -.calendar-header { - background: #ffffff; -} -.calendar-body, -.calendar-menu { - background: #fff; -} -.calendar-body th { - background: #fff; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #E6E6E6; - color: #444; -} -.calendar-hover { - border: 1px solid #ddd; - padding: 0; -} -.calendar-selected { - background-color: #CCE6FF; - color: #000; - border: 1px solid #99cdff; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #fff; -} -.datebox-button a { - color: #777; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/Thumbs.db b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/Thumbs.db deleted file mode 100644 index 5f257a2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/Thumbs.db and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/accordion_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/accordion_arrows.png deleted file mode 100644 index 720835f..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/accordion_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/blank.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/blank.gif deleted file mode 100644 index 1d11fa9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/blank.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/calendar_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/calendar_arrows.png deleted file mode 100644 index 430c4ad..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/calendar_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/combo_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/combo_arrow.png deleted file mode 100644 index 2e59fb9..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/combo_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/datagrid_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/datagrid_icons.png deleted file mode 100644 index 747ac4d..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/datagrid_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/datebox_arrow.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/datebox_arrow.png deleted file mode 100644 index 783c833..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/datebox_arrow.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/layout_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/layout_arrows.png deleted file mode 100644 index 6f41654..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/layout_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/linkbutton_bg.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/linkbutton_bg.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/loading.gif b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/loading.gif deleted file mode 100644 index 68f01d0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/loading.gif and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/menu_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/menu_arrows.png deleted file mode 100644 index b986842..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/menu_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/messager_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/messager_icons.png deleted file mode 100644 index 62c18c1..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/messager_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/pagination_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/pagination_icons.png deleted file mode 100644 index 616f0bd..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/pagination_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/panel_tools.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/panel_tools.png deleted file mode 100644 index fe682ef..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/panel_tools.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/searchbox_button.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/searchbox_button.png deleted file mode 100644 index 6dd1931..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/searchbox_button.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/slider_handle.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/slider_handle.png deleted file mode 100644 index b9802ba..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/slider_handle.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/spinner_arrows.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/spinner_arrows.png deleted file mode 100644 index b68592d..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/spinner_arrows.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/tabs_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/tabs_icons.png deleted file mode 100644 index 4d29966..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/tabs_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/tree_icons.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/tree_icons.png deleted file mode 100644 index e9be4f3..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/tree_icons.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/validatebox_warning.png b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f0..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/images/validatebox_warning.png and /dev/null differ diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/layout.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/layout.css deleted file mode 100644 index 7057fb2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/layout.css +++ /dev/null @@ -1,91 +0,0 @@ -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #b3b3b3; -} -.layout-split-north { - border-bottom: 5px solid #fff; -} -.layout-split-south { - border-top: 5px solid #fff; -} -.layout-split-east { - border-left: 5px solid #fff; -} -.layout-split-west { - border-right: 5px solid #fff; -} -.layout-expand { - background-color: #ffffff; -} -.layout-expand-over { - background-color: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/linkbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/linkbutton.css deleted file mode 100644 index 9bf5dc5..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/linkbutton.css +++ /dev/null @@ -1,151 +0,0 @@ -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - padding-right: 5px; - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 4px 0px 4px 18px; - line-height: 16px; - height: 16px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - display: inline-block; - vertical-align: baseline; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #777; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #ffffff; - background-repeat: repeat-x; - border: 1px solid #dddddd; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #E6E6E6; - color: #444; - border: 1px solid #ddd; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #777; - filter: alpha(opacity=50); - background: #ffffff; - color: #777; - background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); - background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #ddd; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/menu.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/menu.css deleted file mode 100644 index 5012a50..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/menu.css +++ /dev/null @@ -1,109 +0,0 @@ -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #ddd; - border-right: 1px solid #fff; -} -.menu-sep { - border-top: 1px solid #ddd; - border-bottom: 1px solid #fff; -} -.menu { - background-color: #ffffff; - border-color: #ddd; - color: #444; -} -.menu-content { - background: #fff; -} -.menu-item { - border-color: transparent; - _border-color: #ffffff; -} -.menu-active { - border-color: #ddd; - color: #444; - background: #E6E6E6; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/menubutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/menubutton.css deleted file mode 100644 index 53d830e..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/menubutton.css +++ /dev/null @@ -1,31 +0,0 @@ -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/messager.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/messager.css deleted file mode 100644 index 3b9ac40..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/messager.css +++ /dev/null @@ -1,37 +0,0 @@ -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/pagination.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/pagination.css deleted file mode 100644 index cf3268f..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/pagination.css +++ /dev/null @@ -1,66 +0,0 @@ -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #ddd; - border-right: 1px solid #fff; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 0; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px 0; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px 0; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px 0; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px 0; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #ddd; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/panel.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/panel.css deleted file mode 100644 index f71d5e8..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/panel.css +++ /dev/null @@ -1,119 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0px; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #E6E6E6; - -moz-border-radius: -2px -2px -2px -2px; - -webkit-border-radius: -2px -2px -2px -2px; - border-radius: -2px -2px -2px -2px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #ddd; -} -.panel-header { - background-color: #ffffff; -} -.panel-body { - background-color: #fff; - color: #444; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #777; - height: 16px; - line-height: 16px; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/progressbar.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/progressbar.css deleted file mode 100644 index 7721f1b..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/progressbar.css +++ /dev/null @@ -1,32 +0,0 @@ -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.progressbar { - border-color: #ddd; -} -.progressbar-text { - color: #444; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/propertygrid.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/propertygrid.css deleted file mode 100644 index f5ae0c4..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/propertygrid.css +++ /dev/null @@ -1,28 +0,0 @@ -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #ddd; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #ffffff; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #ddd; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/searchbox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/searchbox.css deleted file mode 100644 index 4e01696..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/searchbox.css +++ /dev/null @@ -1,79 +0,0 @@ -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox a.l-btn .l-btn-left { - padding: 2px 0 2px 4px; -} -.searchbox a.l-btn-plain:hover { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #ddd; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #ffffff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/slider.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/slider.css deleted file mode 100644 index a0907f3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/slider.css +++ /dev/null @@ -1,100 +0,0 @@ -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 0px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #ddd; - background: #ffffff; -} -.slider-rule span { - border-color: #ddd; -} -.slider-rulelabel span { - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/spinner.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/spinner.css deleted file mode 100644 index 8676724..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/spinner.css +++ /dev/null @@ -1,59 +0,0 @@ -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #ddd; -} -.spinner-arrow { - background-color: #ffffff; -} -.spinner-arrow-hover { - background-color: #E6E6E6; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/splitbutton.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/splitbutton.css deleted file mode 100644 index d98239b..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/splitbutton.css +++ /dev/null @@ -1,43 +0,0 @@ -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #b3b3b3; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #ddd; - background-color: #E6E6E6; - color: #444; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tabs.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tabs.css deleted file mode 100644 index 7c95798..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tabs.css +++ /dev/null @@ -1,320 +0,0 @@ -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 0px 0px 0 0; - -webkit-border-radius: 0px 0px 0 0; - border-radius: 0px 0px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 0px 0px; - -webkit-border-radius: 0 0 0px 0px; - border-radius: 0 0 0px 0px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0px 0 0 0px; - -webkit-border-radius: 0px 0 0 0px; - border-radius: 0px 0 0 0px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 0px 0px 0; - -webkit-border-radius: 0 0px 0px 0; - border-radius: 0 0px 0px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #E6E6E6; - color: #444; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #fff; - color: #777; -} -.tabs li a.tabs-inner { - color: #777; - background-color: #ffffff; -} -.tabs-header, -.tabs-tool { - background-color: #ffffff; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #ddd; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #E6E6E6; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #fff; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #fff; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #fff; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tooltip.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tooltip.css deleted file mode 100644 index 8382539..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tooltip.css +++ /dev/null @@ -1,100 +0,0 @@ -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #fff; - border-color: #ddd; - color: #444; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #ddd; -} -.tooltip-right .tooltip-arrow { - border-right-color: #fff; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #ddd; -} -.tooltip-left .tooltip-arrow { - border-left-color: #fff; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #ddd; -} -.tooltip-top .tooltip-arrow { - border-top-color: #fff; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #ddd; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #fff; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tree.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tree.css deleted file mode 100644 index a2ec693..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/tree.css +++ /dev/null @@ -1,157 +0,0 @@ -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #fff; - color: #444; - border-color: #ddd; -} -.tree-node-hover { - background: #E6E6E6; - color: #444; -} -.tree-node-selected { - background: #CCE6FF; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/validatebox.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/validatebox.css deleted file mode 100644 index 154da75..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/validatebox.css +++ /dev/null @@ -1,8 +0,0 @@ -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/window.css b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/window.css deleted file mode 100644 index 6d2f911..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/easyui/themes/metro/window.css +++ /dev/null @@ -1,81 +0,0 @@ -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 0px 0px 0px 0px; - -webkit-border-radius: 0px 0px 0px 0px; - border-radius: 0px 0px 0px 0px; -} -.window-shadow { - background: #eee; - -moz-box-shadow: 2px 2px 3px #ededed; - -webkit-box-shadow: 2px 2px 3px #ededed; - box-shadow: 2px 2px 3px #ededed; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #ddd; -} -.window { - background-color: #ffffff; -} -.window-proxy { - border: 1px dashed #ddd; -} -.window-proxy-mask, -.window-mask { - background: #eee; -} diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/export.js b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/export.js deleted file mode 100644 index 86ed543..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/js/export.js +++ /dev/null @@ -1,74 +0,0 @@ - -// -// =========================== -// 导出及查询页面通用Js -// =========================== -// 此脚本依赖于:json4html.js - -// -// 配置: -// expr.portal = '这里为导出项的类名'; -// -// expr.checkParams = function (data) { -// //这里校验参数的准确性,data为Json格式 -// return true; -// }; -// -// -// - - -if (!window.$JS) { alert('请加载json4html.js文件!'); } - -var expr = { - ele: '', - appPath: '/', - hanlderPrefix: '/wxm/Export_', - portal: '', - _getParams: function () { - return encodeURIComponent($JS.json.toString(this.ele)); - }, - - checkParams: function (data) { - return true; - }, - getDataUrl: function () { - if (this.checkParams()) { - var _appPath = window.appPath || this.appPath; - return (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'GetExportData?portal=' + this.portal - + '¶ms=' + this._getParams(); - } - return null; - }, - showExportDialog: function (title, width, height) { - if (!expr.checkParams()) return; - var _appPath = window.appPath || this.appPath; - var url = (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'Setup?portal=' + expr.portal - + '¶ms=' + expr._getParams(); - - var dia = $JS.dialog.create2(title || '导出数据'); - dia.open(url, width || 400, height || 300); - }, - search: function (id) { - $('#' + id).datagrid({ url: expr.getDataUrl() }); - }, - reload: function (id) { - $('#' + id).datagrid('reload'); - }, - bindTotalView: function (id) { - if (!expr.checkParams()) return; - var _appPath = window.appPath || this.appPath; - var url = (_appPath == '/' ? '' : _appPath) - + this.hanlderPrefix - + 'Export/GetTotalView?portal=' + expr.portal - + '¶ms=' + expr._getParams(); - - $JS.xhr.post(url, {}, function (json) { - $JS.json.bind(id || 'totalView', json); - }); - } -}; diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_item.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_item.html deleted file mode 100644 index f284f9d..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_item.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - 文本素材 - - - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            *标题:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *图片:
                                                                                                                                            -
                                                                                                                                            - - - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *排序: -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            启用:
                                                                                                                                            -
                                                                                                                                            - - - - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            备注:
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *链接:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            - - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 保存 -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - - - - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_itemlist.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_itemlist.html deleted file mode 100644 index 538d685..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_itemlist.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - 订单列表 - - - - - - - - - -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            - -
                                                                                                                                            - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_res.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_res.html deleted file mode 100644 index 945d7f2..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/article_res.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - 文本素材s - - - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *素材Key:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 保存 -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/basic_setting.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/basic_setting.html deleted file mode 100644 index 4592d77..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/basic_setting.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - 修改配置 - - - - - -
                                                                                                                                            -
                                                                                                                                            基本
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *开发者URL:
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - ${data.url} -
                                                                                                                                            - *拷贝此Url到微信后台 -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *开发者Token:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            微信API设置
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            *AppId:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            *AppSecret:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *消息解密
                                                                                                                                            AES KEY:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            如果为明文模式,则不填写。
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            其他设置
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - *欢迎语: -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            留空,则自动调用素材(key:welcome)。
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - - -
                                                                                                                                            -
                                                                                                                                            - *默认自动回复消息: -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            留空则不自动回复。
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 保存 -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/export_import.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/export_import.html deleted file mode 100644 index 8487939..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/export_import.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - 导入数据 - - - - -
                                                                                                                                            - - - - - - - - - - - - - -
                                                                                                                                            上传数据文件: - - (*.xls文件) -
                                                                                                                                            - 上传文件 -
                                                                                                                                            -
                                                                                                                                            下载数据模板: - 点击这里下载 -
                                                                                                                                            - 导入 -
                                                                                                                                            -
                                                                                                                                            - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/export_setup.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/export_setup.html deleted file mode 100644 index 83484e3..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/export_setup.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - 导出数据 - - - - - - ${export.setup} - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu.html deleted file mode 100644 index f04e57f..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - 所有栏目 - - - - -
                                                                                                                                            - - - - - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -

                                                                                                                                            操作帮助

                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - 点击生效菜单 - -
                                                                                                                                            - 微信菜单隔天生效,或重新关注可立即生效。 -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu_create.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu_create.html deleted file mode 100644 index 8b41b5c..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu_create.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - 更新栏目 - - - -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            - 添加菜单
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *名称:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            5字以内
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            *类型:
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            - - - -
                                                                                                                                            -
                                                                                                                                            *资源:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - 可以用"res:素材名称"调用素材 -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 保存 -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu_edit.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu_edit.html deleted file mode 100644 index 1bc3511..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/menu_edit.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - 更新栏目 - - - -
                                                                                                                                            - -
                                                                                                                                            - - - -
                                                                                                                                            - 修改菜单
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *名称:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            5字以内
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            *类型:
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            - - - -
                                                                                                                                            -
                                                                                                                                            *资源:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - 可以用"res:素材名称"调用素材 -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 保存 -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - -
                                                                                                                                            - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/resource_list.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/resource_list.html deleted file mode 100644 index e62b049..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/resource_list.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - 订单列表 - - - - - - - - - -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            - -
                                                                                                                                            - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/resource_list2.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/resource_list2.html deleted file mode 100644 index 37f5fff..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/resource_list2.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - 文档列表 - - - - - -
                                                                                                                                            - - - - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - - - - - - - - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/text_res.html b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/text_res.html deleted file mode 100644 index ffc7689..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/mg/text_res.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - 文本素材s - - - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            *素材Key:
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            *内容:
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 建议:使用一键排版功能可以快速生成有格式的内容。

                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - 保存 -
                                                                                                                                            -
                                                                                                                                            - - -
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/plugin.config b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/plugin.config deleted file mode 100644 index 1c31e80..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/plugin.config +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/ArticleItemList.config b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/ArticleItemList.config deleted file mode 100644 index 7e2a32d..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/ArticleItemList.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/CaseGallery.config b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/CaseGallery.config deleted file mode 100644 index 55c2a22..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/CaseGallery.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/ResourceList.config b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/ResourceList.config deleted file mode 100644 index c063ea1..0000000 --- a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/query/ResourceList.config +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/uploads/20150304/1717nvcp.jpg b/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/uploads/20150304/1717nvcp.jpg deleted file mode 100644 index 8025147..0000000 Binary files a/J6/src/examples/devfw.web/plugins/com.mapfre.weixin/uploads/20150304/1717nvcp.jpg and /dev/null differ diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs deleted file mode 100644 index b4aa9c8..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Globalization; -using System.Linq; - -namespace J6.DevFw.Toolkit.Data.Export -{ - /// - /// 数据导出入口基础类 - /// - [Serializable] - public abstract class BaseDataExportPortal : IDataExportPortal - { - private readonly DataColumnMapping[] _columnNames; - - protected BaseDataExportPortal(DataColumnMapping[] columnNames) - { - this._columnNames = columnNames; - } - - protected BaseDataExportPortal(string configPath) - { - ExportUtil.ReadExportConfigFormFile(configPath, out this._columnNames); - } - - public abstract string PortalKey { get; set; } - - public DataColumnMapping[] ColumnNames - { - get { return this._columnNames; } - } - - public abstract DataTable GetShemalAndData(Hashtable parameters, out int totalCount); - - public abstract DataRow GetTotalView(Hashtable parameters); - - public virtual IDictionary GetExportFieldAndName(String[] exportFields) - { - if (this._columnNames == null || this._columnNames.Length == 0) return null; - - IDictionary dictionary = new Dictionary(); - - foreach (string columnField in exportFields) - { - DataColumnMapping map = this._columnNames.SingleOrDefault( - a => String.Compare(a.Field, columnField, true, - CultureInfo.InvariantCulture) == 0); - - if (map.Field != null) - { - dictionary.Add(map.Field, map.Name); - } - } - return dictionary; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataColumnMapping.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataColumnMapping.cs deleted file mode 100644 index 42cc9cf..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataColumnMapping.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace J6.DevFw.Toolkit.Data.Export -{ - /// - /// 列映射 - /// - [Serializable] - public struct DataColumnMapping - { - private string _field; - private string _name; - - public DataColumnMapping(string field, string name) - { - this._field = field; - this._name = name; - } - - public DataColumnMapping(string field) : this(field, field) - { - } - - /// - /// 列的字段 (通常是列在数据源的名称) - /// - public string Field - { - get { return this._field; } - } - - /// - /// 列的名称 - /// - public string Name - { - get { return this._name; } - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataExportDirector.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataExportDirector.cs deleted file mode 100644 index daf8980..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataExportDirector.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text.RegularExpressions; - -namespace J6.DevFw.Toolkit.Data.Export -{ - public static class DataExportDirector - { - public static byte[] Export(IDataExportPortal portal, ExportParams parameters, IDataExportProvider provider) - { - int totalCount; - IDictionary dict = null; - - //获取参数的索引及名称 - if (parameters != null && parameters.ExportFields != null) - { - dict = portal.GetExportFieldAndName(parameters.ExportFields); - } - return - provider.Export( - portal.GetShemalAndData(parameters == null ? null : parameters.Parameters, out totalCount), dict); - } - - public static ExportParams GetExportParams(string paramMappings, string[] columnNames) - { - //string[] splitArr; - - //object[,] data; - //string[] paramsArr = paramMappings.Split(';'); - - //if (paramMappings == "") - //{ - // data = new object[0, 2]; - //} - //else - //{ - // data = new object[paramsArr.Length, 2]; - // //添加传入的参数 - // for (int i = 0; i < paramsArr.Length; i++) - // { - // splitArr = paramsArr[i].Split(':'); - // data[i, 0] = splitArr[0]; - // data[i, 1] = paramsArr[i].Substring(splitArr[0].Length + 1); - // } - //} - Hashtable hash = new Hashtable(); - Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); - MatchCollection mcs = regex.Matches(paramMappings); - foreach (Match m in mcs) - { - hash.Add(m.Groups[1].Value, m.Groups[2].Value); - } - - return new ExportParams(hash, columnNames); - } - - ///// - ///// 根据类名创建导出 - ///// - ///// - ///// - ///// - ///// - //public static byte[] Export(string exportPortalClassFullName, - // IDataExportProvider provider, - // ExportParams parameters) - //{ - - // IDataExportPortal portal = ExportUtil.GetNotNullPortal(exportPortalClassFullName); - - - // portal.Parameters = parameters; - // return Export(portal, provider); - //} - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportItemConfig.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportItemConfig.cs deleted file mode 100644 index 5df5bd7..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportItemConfig.cs +++ /dev/null @@ -1,42 +0,0 @@ -namespace J6.DevFw.Toolkit.Data.Export -{ - /// - /// 导入导出项目配置 - /// - public struct ExportItemConfig - { - private readonly string _columnMappingString; - private readonly string _query; - private readonly string _total; - private readonly string _import; - - public ExportItemConfig(string columnMappingString, string query, string total, string import) - { - this._columnMappingString = columnMappingString; - this._query = query; - this._total = total; - this._import = import; - } - - - public string ColumnMappingString - { - get { return this._columnMappingString; } - } - - public string Query - { - get { return this._query; } - } - - public string Total - { - get { return this._total; } - } - - public string Import - { - get { return this._import; } - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportParams.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportParams.cs deleted file mode 100644 index a82ce81..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportParams.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections; - -namespace J6.DevFw.Toolkit.Data.Export -{ - /// - /// 数据导出参数 - /// - [Serializable] - public class ExportParams : IEnumerable - { - private Hashtable _parameters; - - public ExportParams(Object[,] data, String[] exportColumnFields) : this(exportColumnFields) - { - if (data == null) return; - - if (data.GetLength(1) != 2) - { - throw new ArgumentException("参数维度应为2"); - } - - for (int i = 0; i < data.GetLength(0); i++) - { - this.Parameters.Add(data[i, 0], data[i, 1]); - } - } - - public ExportParams(Hashtable hash, String[] exportColumnFields) - : this(exportColumnFields) - { - if (hash != null) - { - this._parameters = hash; - } - } - - public ExportParams(String[] exportColumnFields) - { - this.ExportFields = exportColumnFields; - } - - /// - /// 要到导出的列(对应IDataExportPortal的ColumnNames或DataTable的Shelma - /// - public String[] ExportFields { get; private set; } - - /// - /// 参数 - /// - public Hashtable Parameters - { - get { return this._parameters ?? (this._parameters = new Hashtable()); } - } - - public IEnumerator GetEnumerator() - { - return this.Parameters.GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs deleted file mode 100644 index 66d86e0..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Data; -using System.IO; -using System.Text; - -namespace J6.DevFw.Toolkit.Data.Export.ExportProvider -{ - public class CsvExportProvider : IDataExportProvider - { - private const string split = ","; - - public byte[] Export(DataTable dt, IDictionary columns) - { - string strLine = ""; - StreamWriter sw; - MemoryStream ms = new MemoryStream(); - - bool isReColumn = !(columns == null || columns.Count == 0); - int tmpInt = 0; - sw = new StreamWriter(ms, Encoding.UTF8); - - //表头 - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - if (tmpInt++ > 0) - strLine += split; - strLine += columns[columnName]; - } - } - else - { - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - strLine += split; - strLine += dt.Columns[i].ColumnName; - } - } - strLine.Remove(strLine.Length - 1); - - sw.WriteLine(strLine); - - - //表的内容 - strLine = ""; - for (int j = 0; j < dt.Rows.Count; j++) - { - strLine = ""; - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - if (tmpInt++ != 0) - strLine += split; - if (dt.Rows[j][columnName] != null) - { - string cell = dt.Rows[j][columnName].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - else - { - int colCount = dt.Columns.Count; - for (int k = 0; k < colCount; k++) - { - if (k > 0 && k < colCount) - strLine += split; - if (dt.Rows[j][k] == null) - strLine += ""; - else - { - string cell = dt.Rows[j][k].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - sw.WriteLine(strLine); - } - - sw.Close(); - byte[] bytes = ms.ToArray(); - - ms.Dispose(); - - return bytes; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs deleted file mode 100644 index fc6df2b..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Data; -using System.IO; -using System.Text; - -namespace J6.DevFw.Toolkit.Data.Export.ExportProvider -{ - public class ExcelExportProvider : IDataExportProvider - { - private const string split = "\t"; - - public byte[] Export(DataTable dt, IDictionary columns) - { - string strLine = ""; - StreamWriter sw; - MemoryStream ms = new MemoryStream(); - - bool isReColumn = !(columns == null || columns.Count == 0); - int tmpInt = 0; - sw = new StreamWriter(ms, Encoding.UTF8); - - //表头 - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - if (tmpInt++ > 0) - strLine += split; - strLine += columns[columnName]; - } - } - else - { - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - strLine += split; - strLine += dt.Columns[i].ColumnName; - } - } - strLine.Remove(strLine.Length - 1); - - sw.WriteLine(strLine); - - - //表的内容 - strLine = ""; - for (int j = 0; j < dt.Rows.Count; j++) - { - strLine = ""; - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - if (tmpInt++ != 0) - strLine += split; - if (dt.Rows[j][columnName] != null) - { - string cell = dt.Rows[j][columnName].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - else - { - int colCount = dt.Columns.Count; - for (int k = 0; k < colCount; k++) - { - if (k > 0 && k < colCount) - strLine += split; - if (dt.Rows[j][k] == null) - strLine += ""; - else - { - string cell = dt.Rows[j][k].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - sw.WriteLine(strLine); - } - - sw.Close(); - byte[] bytes = ms.ToArray(); - - ms.Dispose(); - - return bytes; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs deleted file mode 100644 index fbc6b6a..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Data; -using System.IO; -using System.Text; - -namespace J6.DevFw.Toolkit.Data.Export.ExportProvider -{ - public sealed class TextExportProvider : IDataExportProvider - { - private const string split = " "; - - public byte[] Export(DataTable dt, IDictionary columns) - { - string strLine = ""; - StreamWriter sw; - MemoryStream ms = new MemoryStream(); - - bool isReColumn = !(columns == null || columns.Count == 0); - int tmpInt = 0; - sw = new StreamWriter(ms, Encoding.UTF8); - - //表头 - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - if (tmpInt++ > 0) - strLine += split; - strLine += columns[columnName]; - } - } - else - { - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - strLine += split; - strLine += dt.Columns[i].ColumnName; - } - } - strLine.Remove(strLine.Length - 1); - - sw.WriteLine(strLine); - - - //表的内容 - strLine = ""; - for (int j = 0; j < dt.Rows.Count; j++) - { - strLine = ""; - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - if (tmpInt++ != 0) - strLine += split; - if (dt.Rows[j][columnName] != null) - { - string cell = dt.Rows[j][columnName].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - else - { - int colCount = dt.Columns.Count; - for (int k = 0; k < colCount; k++) - { - if (k > 0 && k < colCount) - strLine += split; - if (dt.Rows[j][k] == null) - strLine += ""; - else - { - string cell = dt.Rows[j][k].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - sw.WriteLine(strLine); - } - - sw.Close(); - byte[] bytes = ms.ToArray(); - - ms.Dispose(); - - return bytes; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportUtil.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportUtil.cs deleted file mode 100644 index a6ede3f..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportUtil.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.Reflection; -using System.Text.RegularExpressions; -using System.Xml; - -namespace J6.DevFw.Toolkit.Data.Export -{ - public static class ExportUtil - { - /// - /// 通过类名来获取导出入口 - /// - /// - /// - public static IDataExportPortal GetPortal(string exportPortalClassFullName) - { - IDataExportPortal portal = null; - - Assembly[] asses = AppDomain.CurrentDomain.GetAssemblies(); - foreach (Assembly ass in asses) - { - Type type = ass.GetType(exportPortalClassFullName); - if (type != null) - { - portal = Activator.CreateInstance(type) as IDataExportPortal; - if (portal != null) break; - } - } - - return portal; - } - - /// - /// 通过类名来获取存在的导出入口 - /// - /// - /// - public static IDataExportPortal GetNotNullPortal(string exportPortalClassFullName) - { - IDataExportPortal portal = GetPortal(exportPortalClassFullName); - if (portal == null) - { - throw new ArgumentNullException(String.Format("导出类型不存在或未实现接口:IDataExportPortal!类名:{0}", - exportPortalClassFullName)); - } - return portal; - } - - /// - /// 从文件中读取导出配置 - /// - /// - /// - /// - /// - public static bool ReadExportConfigFormFile( - string filePath, - out DataColumnMapping[] columns) - { - return ReadExportConfigFormXml( - System.IO.File.ReadAllText(filePath), - null, - out columns); - } - - public static bool ReadExportConfigFormXml( - string xml, - string xpath, - out DataColumnMapping[] columns) - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(xml); - if (String.IsNullOrEmpty(xpath)) - { - xpath = "/item"; - } - XmlNode rootNode = xd.SelectSingleNode(xpath); - XmlNode node; - - if (rootNode == null) - { - throw new ArgumentNullException("xpath"); - } - - #region 获取列配置 - - node = rootNode.SelectSingleNode("column"); - if (node == null) - { - columns = null; - } - else - { - string columnMappingString = node.Attributes["mapping"].Value; - columns = GetColumnMappings(columnMappingString); - } - - #endregion - - return true; - } - - /// - /// 获取列映射数组 - /// - /// - /// - public static DataColumnMapping[] GetColumnMappings(string columnMappingString) - { - DataColumnMapping[] columns; - Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); - MatchCollection mcs = regex.Matches(columnMappingString); - columns = new DataColumnMapping[mcs.Count]; - int i = 0; - foreach (Match m in mcs) - { - columns[i++] = new DataColumnMapping(m.Groups[1].Value, m.Groups[2].Value); - } - return columns; - } - - - public static ExportItemConfig GetExportItemFormXml(string xml, string xpath) - { - string mappingString; - string query; - string import; - string total; - XmlDocument xd = new XmlDocument(); - xd.LoadXml(xml); - if (String.IsNullOrEmpty(xpath)) - { - xpath = "/item"; - } - XmlNode rootNode = xd.SelectSingleNode(xpath); - XmlNode node; - - if (rootNode == null) - { - throw new ArgumentNullException("xpath"); - } - - node = rootNode.SelectSingleNode("column"); - mappingString = node == null ? null : node.Attributes["mapping"].Value; - - node = rootNode.SelectSingleNode("query"); - query = node == null ? null : node.InnerText; - - - node = rootNode.SelectSingleNode("import"); - import = node == null ? null : node.InnerText; - - - node = rootNode.SelectSingleNode("total"); - total = node == null ? null : node.InnerText; - - return new ExportItemConfig(mappingString, query, total, import); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportPortal.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportPortal.cs deleted file mode 100644 index 178cefa..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportPortal.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; - -namespace J6.DevFw.Toolkit.Data.Export -{ - public interface IDataExportPortal - { - /// - /// 入口键 - /// - string PortalKey { get; set; } - - /// - /// 导出的列名(比如:数据表是因为列,这里我需要列出中文列) - /// - DataColumnMapping[] ColumnNames { get; } - - - /// - /// 获取要导出的数据及表结构 - /// - /// - DataTable GetShemalAndData(Hashtable parameters, out int totalCount); - - /// - /// 获取统计数据 - /// - /// - DataRow GetTotalView(Hashtable parameters); - - /// - /// 根据参数获取导出列名及导出名称 - /// - /// - IDictionary GetExportFieldAndName(String[] exportFields); - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportProvider.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportProvider.cs deleted file mode 100644 index 78098ba..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; -using System.Data; - -namespace J6.DevFw.Toolkit.Data.Export -{ - public interface IDataExportProvider - { - /// - /// 导出 - /// - /// 数据表 - /// 要导出的列名及对应导出的列名,可为空 - /// - byte[] Export(DataTable dt, IDictionary columns); - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs deleted file mode 100644 index 53c91ad..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System.Text; - -namespace J6.DevFw.Toolkit.Data.Export.UI -{ - public static class WebExportOptionUIBuilder - { - public static string BuildColumnCheckHtml(IDataExportPortal portal) - { - StringBuilder sb = new StringBuilder(); - - - //================ Output Javascript ==================// - sb.Append(@""); - - - sb.Append(@"
                                                                                                                                            "); - - - //====================== 导出格式 =====================// - - - sb.Append(@"
                                                                                                                                            选择导出格式
                                                                                                                                            -
                                                                                                                                              -
                                                                                                                                            • - -
                                                                                                                                            • -
                                                                                                                                            • - -
                                                                                                                                            • -
                                                                                                                                            • - -
                                                                                                                                            • -

                                                                                                                                            "); - - - //====================== 导出列 =======================// - if (portal.ColumnNames == null || portal.ColumnNames.Length == 0) - { - sb.Append("该导出方案不包含可选择的导出列"); - } - else - { - sb.Append(@"
                                                                                                                                            请选择要导出的列: -
                                                                                                                                              "); - - int tmpInt = 0; - foreach (DataColumnMapping column in portal.ColumnNames) - { - sb.Append( - "
                                                                                                                                            • "); - - tmpInt++; - } - - sb.Append(@"
                                                                                                                                            "); - } - - sb.Append(@" - -
                                                                                                                                            -
                                                                                                                                            "); - sb.Append(@""); - - - return sb.ToString(); - } - - public static string BuildColumnCheckHtml(string exportPortalClassFullName) - { - IDataExportPortal portal = ExportUtil.GetPortal(exportPortalClassFullName); - return BuildColumnCheckHtml(portal); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs deleted file mode 100644 index 67262b1..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs +++ /dev/null @@ -1,324 +0,0 @@ -// -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : Director.cs -// Date : 2011/8/25 -// Author : -// -// - -using System; -using System.IO; -using System.Text; -using System.Xml; - -namespace J6.DevFw.Toolkit.NetCrawl -{ - public class Collector - { - /// - /// ļ· - /// - private string configFilePath; - - - internal Collector(string configFile) - { - this.configFilePath = configFile; - } - - /// - /// µIJɼִж - /// - /// - /// - public static Collector Create(string configFile) - { - Collector dirc = new Collector(configFile); - dirc.init(); - return dirc; - } - - - /// - /// Ŀ - /// - private static Project[] projects; - - private void init() - { - if (this.configFilePath == "") throw new ArgumentException("ļΪգ"); - if (!File.Exists(configFilePath)) - { - //ļ,򴴽ʼ - File.Create(configFilePath).Dispose(); - const string initData = @" - - - - - \s+([\s\S]+?)\s+]]> - - - - \s*([\s\S]+?)\s*]]> - \s*([\s\S]+?)\s*]]> - - - -"; - - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - } - - public Project GetProject(string id) - { - foreach (Project pro in this.GetProjects()) - { - if (pro.Id == id) return pro; - } - return null; - } - - /// - /// Ŀ - /// - /// - /// - public bool CreateProject(Project project) - { - XmlNode newPrj, - propertyNode; - - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNodeList xnodelist = xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); - if (xnodelist.Count != 0) return false; - - XmlNode projectsNode = xd.SelectSingleNode("/config/projects"); - XmlAttribute xa; - - newPrj = xd.CreateElement("project"); - - xa = xd.CreateAttribute("id"); - xa.Value = project.Id; - newPrj.Attributes.Append(xa); - - xa = xd.CreateAttribute("name"); - xa.Value = project.Name; - newPrj.Attributes.Append(xa); - - xa = xd.CreateAttribute("encoding"); - xa.Value = project.RequestEncoding; - newPrj.Attributes.Append(xa); - - - //бַ - propertyNode = xd.CreateElement("listUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); - newPrj.AppendChild(propertyNode); - - //б - propertyNode = xd.CreateElement("listBlockRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); - newPrj.AppendChild(propertyNode); - - //ҳ - propertyNode = xd.CreateElement("pageUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); - newPrj.AppendChild(propertyNode); - - //˴ʹ - propertyNode = xd.CreateElement("filterWordsRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); - newPrj.AppendChild(propertyNode); - - //Թ - propertyNode = xd.CreateElement("propertyRules"); - XmlNode pn; - foreach (string pname in project.Rules) - { - pn = xd.CreateElement("add"); - - // - xa = xd.CreateAttribute("name"); - xa.Value = pname; - pn.Attributes.Append(xa); - pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); - - propertyNode.AppendChild(pn); - } - newPrj.AppendChild(propertyNode); - - projectsNode.AppendChild(newPrj); - xd.Save(configFilePath); - return true; - } - - /// - /// Ŀ - /// - /// - /// - /// - public bool SaveProject(string projectId, Project project) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode projectNode, - propertyNode; - - //ȡĿڵ - projectNode = - xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), projectId)); - - //ڵΪգ򷵻false - if (projectNode == null) return false; - - //µıѾ򷵻 - if (projectId != project.Id && - xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), project.Id)) != - null) return false; - - projectNode.Attributes["id"].Value = project.Id; - projectNode.Attributes["name"].Value = project.Name; - projectNode.Attributes["encoding"].Value = project.RequestEncoding; - - //Ƴڵ - projectNode.RemoveChild(projectNode["listUriRule"]); - projectNode.RemoveChild(projectNode["listBlockRule"]); - projectNode.RemoveChild(projectNode["pageUriRule"]); - projectNode.RemoveChild(projectNode["filterWordsRule"]); - projectNode.RemoveChild(projectNode["propertyRules"]); - - /*********** ӽڵ ***************/ - - //бַ - propertyNode = xd.CreateElement("listUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); - projectNode.AppendChild(propertyNode); - - //б - propertyNode = xd.CreateElement("listBlockRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); - projectNode.AppendChild(propertyNode); - - //ҳ - propertyNode = xd.CreateElement("pageUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); - projectNode.AppendChild(propertyNode); - - //˴ʹ - propertyNode = xd.CreateElement("filterWordsRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); - projectNode.AppendChild(propertyNode); - - //Թ - propertyNode = xd.CreateElement("propertyRules"); - XmlNode pn; - XmlAttribute xa; - foreach (string pname in project.Rules) - { - pn = xd.CreateElement("add"); - - // - xa = xd.CreateAttribute("name"); - xa.Value = pname; - pn.Attributes.Append(xa); - pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); - - propertyNode.AppendChild(pn); - } - projectNode.AppendChild(propertyNode); - - - // - xd.Save(configFilePath); - - return true; - } - - /// - /// ƳĿ - /// - /// - /// - public bool RemoveProject(Project project) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode prjsNode = xd.SelectSingleNode("/config/projects"); - XmlNode prjNode = xd.SelectSingleNode(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); - if (prjNode == null) return false; - - prjsNode.RemoveChild(prjNode); - - xd.Save(configFilePath); - return true; - } - - public Project[] GetProjects() - { - if (projects == null) - { - Project pro; - XmlNodeList propertyNodes; - - //ļ - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - //ȡĿб - XmlNodeList projectList = xd.SelectNodes("/config/projects/project"); - - projects = new Project[projectList.Count]; - - int i = 0; - - foreach (XmlNode node in projectList) - { - //ĿΪĿԹ - pro = new Project(); - pro.Rules = new PropertyRule(); - - pro.Id = node.Attributes["id"].Value; - pro.Name = node.Attributes["name"].Value; - pro.RequestEncoding = node.Attributes["encoding"].Value; - pro.ListUriRule = node["listUriRule"].InnerText; - pro.ListBlockRule = node["listBlockRule"].InnerText; - pro.PageUriRule = node["pageUriRule"].InnerText; - pro.FilterWordsRule = node["filterWordsRule"].InnerText; - - propertyNodes = - xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]/propertyRules/add", pro.Id)); - foreach (XmlNode pnode in propertyNodes) - { - pro.Rules.Add(pnode.Attributes["name"].Value, pnode.InnerText); - } - projects[i] = pro; - ++i; - } - } - return projects; - } - - - /// - /// Ŀ - /// - public void ClearProjects() - { - projects = null; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs deleted file mode 100644 index 7639649..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs +++ /dev/null @@ -1,76 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : DataPack.cs -// Date : 2011/8/25 -// Author : -// -// - -using System; -using System.Collections; -using System.Collections.Generic; - -namespace J6.DevFw.Toolkit.NetCrawl -{ - /// - /// ɼݰ - /// - public class DataPack : ICloneable, IEnumerable> - { - private PropertyRule property; - - /// - /// ݼ - /// - private IDictionary dict = new Dictionary(); - - public DataPack(PropertyRule property, string referenceUrl) - { - this.property = property; - this.ReferenceUrl = referenceUrl; - - foreach (string key in property) - { - dict.Add(key, key); - } - } - - /// - /// ɼԴַ - /// - public string ReferenceUrl { get; private set; } - - //ȡ - public string this[string key] - { - get { return dict.Keys.Contains(key) ? dict[key] : null; } - set - { - if (dict.Keys.Contains(key)) dict[key] = value; - else dict.Add(key, value); - } - } - - /// - /// ¡һµDataPack󣬲 - /// - /// - object ICloneable.Clone() - { - DataPack pack = new DataPack(property, this.ReferenceUrl); - return pack; - } - - public IEnumerator> GetEnumerator() - { - foreach (KeyValuePair pair in dict) yield return pair; - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Project.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Project.cs deleted file mode 100644 index 8dbbd6a..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Project.cs +++ /dev/null @@ -1,470 +0,0 @@ -// -// -// Copyright 2011 (C) S1N1.COM,All rights reseved. -// ----------------------------- -// Project : OPSoft.Plugin.NetCrawl -// File Name : Project.cs -// Date : 2011/8/25 -// Author : Newmin -// ----------------------------- -// 2011-09-06 [+] newmin:Ӽ·Ĺܣɼба"/news/12.html" -// -// - -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Text.RegularExpressions; -using J6.DevFw.Utils; - -namespace J6.DevFw.Toolkit.NetCrawl -{ - public delegate void DataPackFunc(DataPack datapack); - - public class Project - { - private State state = new State(); - - public bool SaveResouce; - - public string SaveResourceExtension; - - public string ResouceSavePath; - - /// - /// ·ĸ· - /// - private string basePath; - - /// - /// Եַƥʽ - /// - private static Regex absoluteUriRegex = new Regex("^(?!http)", RegexOptions.IgnoreCase); - - /// - /// Ŀ - /// - public string Id { get; set; } - - /// - /// Ŀ - /// - public string Name { get; set; } - - /// - /// Ĭ30볬ʱ - /// - public int RequestTimeOut = 30000; - - private string _formatedPageUriRule; - - /// - /// - /// - public string RequestEncoding { get; set; } - - /// - /// Ƿʹọ̈߳Ĭ϶߳ - /// - public bool UseMultiThread { get; set; } - - /// - /// - /// - private Encoding Encode - { - get - { - int codepage; - switch (RequestEncoding.ToLower()) - { - default: - codepage = 65001; - break; - case "default": - return Encoding.Default; - case "gb2312": - codepage = 936; - break; - case "big5": - codepage = 950; - break; - } - return Encoding.GetEncoding(codepage); - } - } - - /// - /// бҳURI - /// - public string ListUriRule { get; set; } - - /// - /// б,ڻȡҳURIб - /// - public string ListBlockRule { get; set; } - - /// - /// ҳURI - /// - public string PageUriRule { get; set; } - - /// - /// ʽ - /// - public string FormatedPageUriRule - { - get - { - return this._formatedPageUriRule ?? - (this._formatedPageUriRule = RuleFormat.Format(this.PageUriRule)); - } - } - - /// - /// Ҫ˵Ĵ,ᱻ滻{filter:˵Ĵ} - /// - public string FilterWordsRule { get; set; } - - /// - /// Թ - /// - public PropertyRule Rules { get; set; } - - /// - /// ɼ״̬ - /// - public State State - { - get { return state; } - } - - /// - /// ü״̬ - /// - public void ResetState() - { - state.TotalCount = 0; - state.SuccessCount = 0; - state.FailCount = 0; - } - - - /// - /// ɼбҳݼ - /// - /// - /// - public IList Collect(object listUriParameter) - { - //ReadPage(parameter); - string uri = String.Format(this.ListUriRule, listUriParameter); - IList packs = new List(); - - AnalysisListPage(uri, dp => { packs.Add(dp); }); - - -#if DEBUG - // ȡҳ - // int i=0; - // DataPack pack= GetPageData("http://news.163.com/11/0824/10/7C7DG91H00011229.html", ref i); -#endif - - return packs; - } - - /// - /// ɼбҳԲɼĽִв - /// - /// бURIеIJ"{0}"ֵ - /// - public void InvokeList(object listUriParameter, DataPackFunc func) - { - string uri = String.Format(this.ListUriRule, listUriParameter); - AnalysisListPage(uri, func); - } - - /// - /// ɼбҳԲɼĽִв - /// - /// бҳַ - /// - public void InvokeList(string listUri, DataPackFunc func) - { - AnalysisListPage(listUri, func); - } - - /// - /// ɼƪ - /// - /// - /// - public void InvokeSingle(string pageUri, DataPackFunc func) - { - int i = 0; - this.State.TotalCount = 1; - GetPageData(pageUri, ref i, func); - } - - - /// - /// бҳ,Խִлִ - /// - /// - private void AnalysisListPage(string pageUri, DataPackFunc func) - { - int taskCount = 0, - // - taskNumbers = 0; //һжǷ - - string html; //صбҳHtml - - int bufferLength = 1; - byte[] buffer = new byte[bufferLength]; //صݻ - StringBuilder sb = new StringBuilder(); //췵صĽ - MatchCollection listMatches; //бƥ估ҳַƥ - - -#if DEBUG - Console.WriteLine("ʼ:{0}...", pageUri); -#endif - - - //бҳ - HttpWebRequest request = (HttpWebRequest) WebRequest.Create(pageUri); - request.Timeout = this.RequestTimeOut; - - Stream stream = request.GetResponse().GetResponseStream(); - - - using (StreamReader sr = new StreamReader(stream, this.Encode)) - { - html = sr.ReadToEnd(); - } - -#if DEBUG - Console.WriteLine("صΪ:{0}", html); -#endif - - - //бҳ - listMatches = Regex.Matches(html, RuleFormat.Format(this.ListBlockRule)); - - - //ûҵƥ - if (listMatches.Count == 0) - { -#if DEBUG - Console.WriteLine("ûҵƥ!"); -#endif - return; - } - - - //ƥ - -#if DEBUGS - Console.WriteLine("\r\n------------------------------\r\nõƥбΪ:\r\n"); -#endif - - Regex pageUriRegex = new Regex(this.FormatedPageUriRule); - - //ʵ - IList pageUrls = new List(); - - foreach (Match m in listMatches) - { -#if DEBUG - Console.WriteLine("\r\n------------------------------------------------\r\n{0}", m.Value); -#endif - foreach (Match pm in pageUriRegex.Matches(m.Value)) - { -#if DEBUG - Console.WriteLine(pm.Value); -#endif - pageUrls.Add(pm.Value); - - - //ȡҳݣִ - - //̻߳ȡ - //if (!UseSingleThread) - //{ - // new Thread(() => - // { - // //ûִ - // GetPageData(pm.Value, ref taskNumbers, func); - // } - // ).Start(); - //} - //else //̵߳ - //{ - // //ûִ - // GetPageData(pm.Value, ref taskNumbers, func); - //} - } - } - - // - taskCount = pageUrls.Count; - - if (!this.UseMultiThread) //߳ - { - foreach (string pageUrl in pageUrls) - { - //ûִ - GetPageData(pageUrl, ref taskNumbers, func); - } - } - else - { - MultiThreadProcess mp = new MultiThreadProcess(5, taskCount); - mp.Start>(urls => - { - lock (urls) - { - //ûִ - GetPageData(urls[0], ref taskNumbers, func); - pageUrls.Remove(urls[0]); - } - }, pageUrls); - } - - // - state.TotalCount = taskCount; - - //ֱִ߳̾ϣ򷵻 - do - { - } while (taskNumbers != taskCount); - - -#if DEBUG - Console.WriteLine("....!ɼ{0}", taskCount); -#endif - } - - /// - /// ȡһҳݲ - /// - /// ҳַ - /// άһ,жǷ - /// - private DataPack GetPageData(string pageUri, ref int number, DataPackFunc func) - { - DataPack dp; - int bufferLength = 10; - byte[] buffer = new byte[bufferLength]; //صݻ - StringBuilder sb = new StringBuilder(); //췵صĽ - Match match; //ƥ - - - //ҳַҳַƥ䣡 - - if (!Regex.IsMatch(pageUri, this.FormatedPageUriRule)) - { - ++number; - state.FailCount++; - return null; - - //throw new ArgumentException("ҳַҳַƥ䣡", pageUri); - } - - //ҳַΪ· - if (absoluteUriRegex.IsMatch(pageUri)) pageUri = GetBasePath(pageUri) + pageUri; - - - //ҳHTML - string html = String.Empty; - - try - { - HttpWebRequest req = (HttpWebRequest) WebRequest.Create(pageUri); - req.Timeout = this.RequestTimeOut; - - - Stream stream = req.GetResponse().GetResponseStream(); - - html = sb.ToString(); - using (StreamReader sr = new StreamReader(stream, this.Encode)) - { - html = sr.ReadToEnd(); - } - } - catch (Exception exc) - { - state.FailCount++; - return null; - } - - //ص -#if DEBUG - Console.WriteLine("\r\n------------------------------\r\nõƥбΪ:{0}",html); -#endif - dp = new DataPack(Rules, pageUri); - - - foreach (string propertyName in this.Rules) - { - match = Regex.Match(html, this.Rules[propertyName]); - if (match != null) - { - dp[propertyName] = match.Groups[1].Value; - } - } - -#if DEBUG - Console.WriteLine("\r\n-------------------------\r\n"); - foreach (KeyValuePair pair in dp) - { - Console.WriteLine("{0}->{1}\r\n", pair.Key, pair.Value); - } -#endif - - - //¼ - ++number; - - -#if DEBUG - Console.WriteLine("flish"); -#endif - //ִлִ - if (func != null) func(dp); - - - //һɹļ - state.SuccessCount++; - - return dp; - } - - private string GetBasePath(string pageUri) - { - //Ѿ·ֱӷ - if (basePath != null) return basePath; - - //·"/"ͷ - if (pageUri.StartsWith("/")) - { - Regex reg = new Regex("^(http://[^/]+/)", RegexOptions.IgnoreCase); - if (reg.IsMatch(ListUriRule)) - { - basePath = reg.Match(ListUriRule).Groups[1].Value; - } - } - else - { - Regex reg = new Regex("([^/]+)$", RegexOptions.IgnoreCase); - if (reg.IsMatch(ListUriRule)) - { - string filePath = reg.Match(ListUriRule).Value; - basePath = ListUriRule.Replace(filePath, String.Empty); - } - } - return basePath; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/PropertyRule.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/PropertyRule.cs deleted file mode 100644 index ff0c0df..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/PropertyRule.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : PropertyRule.cs -// Date : 2011/8/25 -// Author : -// -// - -using System.Collections; -using System.Collections.Generic; - -namespace J6.DevFw.Toolkit.NetCrawl -{ - /// - /// Թʽ - /// - public class PropertyRule : IEnumerable - { - private IDictionary dict = new Dictionary(); - - public string ID { get; set; } - - /// - /// Թ - /// - /// - /// - public void Add(string key, string value) - { - dict.Add(key, value); - } - - /// - /// ȡԹ - /// - /// - /// - public string this[string key] - { - get { return dict.Keys.Contains(key) ? dict[key] : null; } - } - - public IEnumerator GetEnumerator() - { - foreach (string key in dict.Keys) yield return key; - } - - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/RuleFormat.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/RuleFormat.cs deleted file mode 100644 index 1661965..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/RuleFormat.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace J6.DevFw.Toolkit.NetCrawl -{ - internal class RuleFormat - { - public static string Format(string rule) - { - return rule.Replace("$$", "\\s*([\\s\\S]+?)\\s*"); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/State.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/State.cs deleted file mode 100644 index a4ce6a3..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/State.cs +++ /dev/null @@ -1,35 +0,0 @@ -// -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : State.cs -// Date : 2011/8/25 -// Author : -// -// - - -namespace J6.DevFw.Toolkit.NetCrawl -{ - /// - /// ɼ״̬ - /// - public class State - { - /// - /// - /// - public int TotalCount { get; internal set; } - - /// - /// ʧ - /// - public int FailCount { get; internal set; } - - /// - /// ɹ - /// - public int SuccessCount { get; internal set; } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage.cs deleted file mode 100644 index b80c365..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage.cs +++ /dev/null @@ -1,582 +0,0 @@ -using System; -using System.Reflection; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; - -namespace J6.DevFw.Toolkit.NetCrawl -{ - public class WebManage : IHttpHandler, System.Web.SessionState.IRequiresSessionState - { - private static string subtitle = "-采集管理插件 Power by OPSoft"; - private static string ct_css = ""; - private static string navigator = WebManageResource.partial_navigator; - - protected HttpRequest request; - protected HttpResponse response; - private Collector director; - - public WebManage(Collector director) - { - this.director = director; - } - - public bool IsReusable - { - get { return false; } - } - - public void ProcessRequest(HttpContext context) - { - Begin_Request(); - - string action = context.Request["action"]; - string httpMethod = context.Request.HttpMethod; - - //未指定动作,则显示欢迎页面 - if (String.IsNullOrEmpty(action)) - { - Show_WelcomePage(); - return; - } - - request = context.Request; - response = context.Response; - - Type type = this.GetType(); - MethodInfo method = type.GetMethod(String.Format("{0}_{1}", action, httpMethod), - BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (method == null) - { - context.Response.Write("执行出错"); - return; - } - context.Response.Write(method.Invoke(this, null) as string); - } - - public virtual void Begin_Request() - { - } - - /// - /// 加载样式表 - /// - protected string Css_Get() - { - return WebManageResource.webmanagestyle; - } - - protected string Show_WelcomePage() - { - return WebManageResource.welcome_page.Replace("${ct_css}", ct_css) - .Replace("${navigator}", WebManageResource.partial_navigator); - } - - protected string Help_Get() - { - return "文档整理中,请上我们官网www.ops.cc查询相关信息!"; - } - - /// - /// 项目列表 - /// - protected string List_Get() - { - string prjsListHtml, - //项目列表Html - propertyHtml; - - - StringBuilder sb = new StringBuilder(); - StringBuilder propertyStr = new StringBuilder(); - - - Project[] projects = this.director.GetProjects(); - if (projects == null) - { - sb.Append("
                                                                                                                                          • 暂无采集项目![点击添加]
                                                                                                                                          • "); - } - else - { - foreach (Project prj in projects) - { - //项目属性 - foreach (string key in prj.Rules) - { - propertyStr.Append("[").Append(key).Append("],"); - } - if (propertyStr.Length == 0) - { - propertyHtml = "无"; - } - else - { - propertyHtml = propertyStr.Remove(propertyStr.Length - 1, 1).ToString(); - propertyStr.Remove(0, propertyStr.Length); - } - - //项目基本信息 - sb.Append("

                                                                                                                                            项目名称:") - .Append(prj.Name) - .Append("(编号:") - .Append(prj.Id) - .Append(")

                                                                                                                                            编码方式:").Append(prj.RequestEncoding).Append("
                                                                                                                                            列表规则:") - .Append(prj.ListUriRule).Append("
                                                                                                                                            页面规则:") - .Append(prj.PageUriRule).Append("
                                                                                                                                            采集属性:").Append(propertyHtml) - .Append("

                                                                                                                                            开始采集 ]  [ 修改 ]  [ 删除 ]
                                                                                                                                            "); - } - } - - prjsListHtml = sb.ToString(); - - return WebManageResource.project_list - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${listHtml}", prjsListHtml); - } - - #region 创建项目 - - protected string CreateProject_Get() - { - return WebManageResource.create_project.Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator); - } - - protected string CreateProject_Post() - { - bool result; //新建项目是否成功 - - Project project = new Project(); - project.Rules = new PropertyRule(); - - string id = request.Form["id"], - name = request.Form["name"], - encoding = request.Form["encoding"], - listRule = request.Form["listRule"], - blockRule = request.Form["listBlockRule"], - pageRule = request.Form["pageRule"], - filterRule = request.Form["filterWordsRule"]; - - -#if DEBUG - response.Write(HttpContext.Current.Server.HtmlEncode(String.Format("ID:{0}
                                                                                                                                            Name:{1}\r\nListRule:{2}\r\nListBlockRule:{3}\r\nPageRule:{4}\r\nFilterRule:{5}\r\nencoding:{6}", - id, name, listRule, blockRule, pageRule, filterRule,encoding))); - - response.Write("
                                                                                                                                            "); -#endif - - if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name)) - { - return ""; - } - - - project.Id = id; - project.Name = name; - project.RequestEncoding = encoding; - project.ListUriRule = listRule; - project.ListBlockRule = blockRule; - project.PageUriRule = pageRule; - project.FilterWordsRule = filterRule; - - - //添加属性并赋值 - //客户端属性与规则匹配:p1 <-> r1 - Regex propertyNameRegex = new Regex("^p(\\d+)$"); - string propertyIndex; //属性编号 - - foreach (string key in request.Form) - { - if (propertyNameRegex.IsMatch(key)) - { - propertyIndex = propertyNameRegex.Match(key).Groups[1].Value; - - //如果值不为空,则添加属性 - if (request.Form[key] != String.Empty) - { - project.Rules.Add(request.Form[key], request.Form["r" + propertyIndex]); - } - } - } - - /* - //输出添加到的属性 - foreach (string key in project.Rules) - { - response.Write(HttpContext.Current.Server.HtmlEncode(key + "->" + project.Rules[key]+"
                                                                                                                                            ")); - } - */ - - result = this.director.CreateProject(project); - - //清除项目缓存 - this.director.ClearProjects(); - - return result - ? "" - : ""; - } - - #endregion - - #region 更新项目 - - protected string Edit_Get() - { - string projectId = request.QueryString["projectId"]; - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - return WebManageResource.error.Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${msg}", "项目不存在"); - } - - StringBuilder sb = new StringBuilder(); - int i = 0; - - foreach (string key in prj.Rules) - { - ++i; - sb.Append("

                                                                                                                                            ") - .Append( - "删除 ]

                                                                                                                                            "); - } - - return WebManageResource.update_project - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${id}", projectId) - .Replace("${name}", prj.Name) - .Replace("${encoding}", prj.RequestEncoding) - .Replace("${listUriRule}", prj.ListUriRule) - .Replace("${listBlockRule}", prj.ListBlockRule) - .Replace("${pageUriRule}", prj.PageUriRule) - .Replace("${filterWordsRule}", prj.FilterWordsRule) - .Replace("${propertiesHtml}", sb.ToString()); - } - - protected string Edit_Post() - { - string projectId = request.QueryString["projectId"]; - - - bool result; //编辑项目是否成功 - - Project project = new Project(); - project.Rules = new PropertyRule(); - - string id = request.Form["id"], - name = request.Form["name"], - encoding = request.Form["encoding"], - listRule = request.Form["listRule"], - blockRule = request.Form["listBlockRule"], - pageRule = request.Form["pageRule"], - filterRule = request.Form["filterWordsRule"]; - - -#if DEBUG - response.Write(HttpContext.Current.Server.HtmlEncode(String.Format("ID:{0}
                                                                                                                                            Name:{1}\r\nListRule:{2}\r\nListBlockRule:{3}\r\nPageRule:{4}\r\nFilterRule:{5}\r\nencoding:{6}", - id, name, listRule, blockRule, pageRule, filterRule, encoding))); - - response.Write("
                                                                                                                                            "); -#endif - - if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name)) - { - return ""; - } - - - project.Id = id; - project.Name = name; - project.RequestEncoding = encoding; - project.ListUriRule = listRule; - project.ListBlockRule = blockRule; - project.PageUriRule = pageRule; - project.FilterWordsRule = filterRule; - - - //添加属性并赋值 - //客户端属性与规则匹配:p1 <-> r1 - Regex propertyNameRegex = new Regex("^p(\\d+)$"); - string propertyIndex; //属性编号 - - foreach (string key in request.Form) - { - if (propertyNameRegex.IsMatch(key)) - { - propertyIndex = propertyNameRegex.Match(key).Groups[1].Value; - - //如果值不为空,则添加属性 - if (request.Form[key] != String.Empty) - { - project.Rules.Add(request.Form[key], request.Form["r" + propertyIndex]); - } - } - } - - /* - //输出添加到的属性 - foreach (string key in project.Rules) - { - response.Write(HttpContext.Current.Server.HtmlEncode(key + "->" + project.Rules[key]+"
                                                                                                                                            ")); - } - */ - - result = this.director.SaveProject(projectId, project); - - //清除项目缓存 - this.director.ClearProjects(); - - return result - ? "" - : ""; - } - - #endregion - - #region 删除项目 - - protected string Delete_Get() - { - string projectId = request.QueryString["projectId"]; - string confirm = request["confirm"]; - - string msg; //返回信息 - - - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - msg = "项目不存在!\">"; - } - - - if (String.IsNullOrEmpty(confirm)) - { - msg = String.Format( - "您确定删除项目:{0} 吗?
                                                                                                                                            确定 取消" - , prj.Name, projectId); - } - else - { - msg = "项目删除成功!"; - - this.director.RemoveProject(prj); - - //更新项目缓存 - this.director.ClearProjects(); - } - - - return WebManageResource.delete_project - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${msg}", msg); - } - - #endregion - - /******************************************************** - * - * 采集说明: - * - * 1.开始采集时读取继承类返回的Html代码,供重写Invoke方法读取某些参数! - * - * 2.客户端通过设置HiddenField [typeid]的值,来识别采集单页或是列表 - * [typeid]:1:采集单页,2:传递列表页参数采集,3:输入列表页参数采集 - * - * 3.通过识别采集方式,来调用继承类的采集处理代码。执行完毕,想客户端传送 - * 采集完成指令! - * - */ - - /// - /// 开始执行采集 - /// - protected string Invoke_Get() - { - string projectId = request.QueryString["projectId"]; - - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - return ""; - } - - return WebManageResource.invoke_collect - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${customHtml}", Return_InvokePageHtml()) - .Replace("${pageUriRule}", HttpContext.Current.Server.HtmlEncode(prj.PageUriRule)) - .Replace("${listUriRule}", HttpContext.Current.Server.HtmlEncode(prj.ListUriRule) - .Replace("{0}", "{0}")) - .Replace("${listBlockRule}", HttpContext.Current.Server.HtmlEncode(prj.ListBlockRule)); - } - - protected string Invoke_Post() - { - string typeID = request.Form["ct_typeid"]; - string projectId = request.QueryString["projectId"]; - - //执行采集返回的数据 - string invoke_returnData = String.Empty; - - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - return ""; - } - - switch (typeID) - { - case "1": - invoke_returnData = Invoke_SinglePage(prj, request.Form["singlePageUri"]); - break; - case "2": - invoke_returnData = Invoke_ListPage(prj, (object) request.Form["listPageParameter"]); - break; - case "3": - invoke_returnData = Invoke_ListPage(prj, request.Form["listPageUri"]); - break; - } - - return ""; - } - - /// - /// 返回一段Html代码,并呈现在采集页面上 - /// 如:返回一段分类的标签,并在采集中读取选中的分类,从而实现将采集的内容发布到指定分类中 - /// - public virtual string Return_InvokePageHtml() - { - return "您好,欢迎使用采集系统!
                                                                                                                                            "; - } - - - /// - /// 采集单页,并返回提示数据 - /// - /// - /// - public virtual string Invoke_SinglePage(Project project, string pageUri) - { - project.InvokeSingle(pageUri, dp => - { -#if DEBUG - saveLog("\r\n----------------------------------------\r\n标题:"+dp["title"] + "
                                                                                                                                            \r\n内容:" + dp["content"]+"\r\n"); -#endif - }); - - //重置计数 - project.ResetState(); - - return null; - } - - /// - ///根据列表页的地址采集页面,并返回提示数据 - /// - /// - /// - /// - public virtual string Invoke_ListPage(Project project, string listPageUri) - { - string returnData; - - int i = 0; - object obj = String.Empty; - - project.UseMultiThread = true; - - project.InvokeList(listPageUri, dp => - { - lock (obj) - { - ++i; -#if DEBUG - saveLog(String.Format("采集到第{0}条->{1}", i, dp["title"])); -#endif - } - }); - - returnData = String.Format("任务总数:{0},成功:{1},失败:{2}", project.State.TotalCount, project.State.SuccessCount, - project.State.FailCount); - - //重置计数 - project.ResetState(); - - return returnData; - } - - /// - /// 向列表页规则传递参数,并返回提示数据 - /// - /// - /// - /// - public virtual string Invoke_ListPage(Project project, object parameter) - { - string returnData; - - int i = 0; - object obj = String.Empty; - - project.UseMultiThread = true; - - project.InvokeList(parameter, dp => - { - lock (obj) - { - ++i; -#if DEBUG - saveLog(String.Format("采集到第{0}条->{1}", i, dp["title"])); -#endif - } - }); - - returnData = String.Format("任务总数:{0},成功:{1},失败:{2}", project.State.TotalCount, project.State.SuccessCount, - project.State.FailCount); - - //重置计数 - project.ResetState(); - - return returnData; - } - - protected void saveLog(string str) - { - using ( - System.IO.StreamWriter sr = - new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "collection.log", true)) - { - sr.WriteLine(str); - sr.Flush(); - sr.Dispose(); - } - } - - /// - /// 向客户端发送提示信息 - /// - /// - protected void SendTipMessage(string msg) - { - response.Write(String.Format("", msg)); - response.End(); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/invoke_collect.html b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/invoke_collect.html deleted file mode 100644 index f60faf3..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/invoke_collect.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - 开始采集-${subtitle} - ${ct_css} - - - - - -${navigator} - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - ${customHtml} -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - 根据单页地址采集 -
                                                                                                                                            页面地址规则为:${pageUriRule}
                                                                                                                                            -   输入地址: -
                                                                                                                                            - -
                                                                                                                                            - 根据列表参数采集 -
                                                                                                                                            - 列表地址规则为:${listUriRule}
                                                                                                                                            -
                                                                                                                                            参数为规则{0}部分
                                                                                                                                            -
                                                                                                                                            -   输入参数: -
                                                                                                                                            - -
                                                                                                                                            - 根据列表地址采集 -
                                                                                                                                            - 地址填写提示:直接输入包含采集内容链接的列表地址,可与列表规则完全匹配。
                                                                                                                                            -
                                                                                                                                            - 也可以输入与 - 列表块规则:${listBlockRule}匹配的页面地址。 -
                                                                                                                                            -
                                                                                                                                            - -   输入地址: -
                                                                                                                                            - -
                                                                                                                                            - -
                                                                                                                                            - - - - \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs b/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs deleted file mode 100644 index 19625a1..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs +++ /dev/null @@ -1,381 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34209 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace J6.DevFw.Toolkit.NetCrawl { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class WebManageResource { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal WebManageResource() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("J6.DevFw.Toolkit.NetCrawl.WebManageResource", typeof(WebManageResource).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>创建项目-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<span id="msg"></span> - /// - ///<form action="" target="ct_ifr" method="post" enctype="application/x-www-form-urlencoded"> /// [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string create_project { - get { - return ResourceManager.GetString("create_project", resourceCulture); - } - } - - /// - /// 查找类似 <html> - ///<head> - /// <title>删除项目-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - ///<br/> - ///<div class="delete"> - /// - /// ${msg} - /// - ///</div> - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string delete_project { - get { - return ResourceManager.GetString("delete_project", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>错误提示</title> - /// ${ct_css} - ///</head> - ///<body> - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator}<br/><br/> - ///${msg} - /// - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string error { - get { - return ResourceManager.GetString("error", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>开始采集-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<br/> - ///<form action="" method="post" target="ct_ifr" enctype="application/x-www-form-urlencoded"> - /// <input name="ct_typ [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string invoke_collect { - get { - return ResourceManager.GetString("invoke_collect", resourceCulture); - } - } - - /// - /// 查找类似 <div class="navigator"> - /// <a href="?action=createproject">创建新项目</a> | - /// <a href="?action=list">项目管理</a> | - /// <a href="?action=help">使用说明</a> - ///</div> 的本地化字符串。 - /// - internal static string partial_navigator { - get { - return ResourceManager.GetString("partial_navigator", resourceCulture); - } - } - - /// - /// 查找类似 <html> - ///<head> - /// <title>项目列表-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<div id="projectlist"> - /// - /// <!-- - /// <div class="project"> - /// - /// <h2> - /// <strong>项目名称:测试项目(编号:neteasy)</strong> - /// </h2> - /// <div class="details"> - /// [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string project_list { - get { - return ResourceManager.GetString("project_list", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>测试结果</title> - ///</head> - ///<body> - /// - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string test_result { - get { - return ResourceManager.GetString("test_result", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>修改项目-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<span id="msg"></span> - /// - ///<form action="" target="ct_ifr" method="post" enctype="application/x-www-form-urlencoded"> /// [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string update_project { - get { - return ResourceManager.GetString("update_project", resourceCulture); - } - } - - /// - /// 查找类似 body { - /// font-size: 12px; - /// color: #666; - /// font-family: arail, sans-serif; - ///} - /// - ///p { - /// text-indent: 2em; - /// margin: 0; - /// padding: 5px 0; - ///} - /// - ///a { color: #0066cc; } - /// - ///a:hover { color: #006699; } - /// - ///input, textarea, select { border: solid 1px #e5e5e5; } - /// - ///input.button { - /// border: outset 1px #e5e5e5; - /// margin-right: 5px; - /// color: #666; - /// padding: 0 8px; - ///} - /// - ///span.txt { - /// float: left; - /// padding-right: 10px; - ///} - /// - ///div.project_operate { - /// text-align: right; - /// padding-r [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string webmanagestyle { - get { - return ResourceManager.GetString("webmanagestyle", resourceCulture); - } - } - - /// - /// 查找类似 <html> - ///<head> - /// <title>欢迎使用asp.net采集插件</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - ///<p> - /// 欢迎您使用这款asp.net采集组件,本组件由奥博科技(<a href="http://www.ops.cc" target="_blank">www.ops.cc</a>)开发!<br/> - /// 如您在使用过程中遇到任何问题,或您对这款产品由好的建议,欢迎上我们网站反馈!谢谢! - ///</p> - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string welcome_page { - get { - return ResourceManager.GetString("welcome_page", resourceCulture); - } - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Define.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Define.cs deleted file mode 100644 index 8f50806..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Define.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Text.RegularExpressions; - -namespace J6.DevFw.Toolkit.Region -{ - public static class Define - { - public static string Provinces =OptXml(RegionRes.provinces); - public static string Cities = OptXml(RegionRes.cities); - public static string Districts=OptXml(RegionRes.districts); - - static string OptXml(string xmlContent) - { - xmlContent = Regex.Replace(xmlContent, "(\n|\r)\\s*", ""); - return xmlContent; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Entity.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Entity.cs deleted file mode 100644 index 102a913..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Entity.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace J6.DevFw.Toolkit.Region -{ - public struct Province - { - public int ID { get; set; } - public string Name { get; set; } - public string Text { get; set; } - } - public struct City - { - public int ID { get; set; } - public int Pid { get; set; } - public string Zip { get; set; } - public string Name { get; set; } - public string Text { get; set; } - } - - public struct District - { - public int ID { get; set; } - public int Cid { get; set; } - public string Name { get; set; } - public string Text { get; set; } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Region.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Region.cs deleted file mode 100644 index e1b6217..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Region.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System.Collections.Generic; -using System.Xml; - -namespace J6.DevFw.Toolkit.Region -{ - public static class Region - { - #region 获取基本数据 - - private static IEnumerable provinces; - public static IEnumerable Provinces - { - get - { - if (provinces == null) - { - provinces = GetProvinces(); - } - return provinces; - } - } - - private static IEnumerable cities; - public static IEnumerable Cities - { - get - { - if (cities == null) - { - cities = GetCitys(); - } - return cities; - } - } - - private static IEnumerable districts; - public static IEnumerable Districts - { - get - { - if (districts == null) - { - districts = GetDistricts(); - } - return districts; - } - } - - - private static IEnumerable GetProvinces() - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(Define.Provinces); - - string name; - - foreach (XmlNode xn in xd.SelectNodes("/items/item")) - { - name = xn.Attributes[1].Value; - yield return new Province - { - ID = int.Parse(xn.Attributes[0].Value), - Name = name, - Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() - }; - } - } - - - private static IEnumerable GetCitys() - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(Define.Cities); - - string name; - - foreach (XmlNode xn in xd.SelectNodes("/items/item")) - { - name = xn.Attributes[1].Value; - yield return new City - { - ID = int.Parse(xn.Attributes[0].Value), - Pid = int.Parse(xn.Attributes[2].Value), - Name = name, - Zip = xn.Attributes[3].Value, - Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() - }; - } - } - - private static IEnumerable GetDistricts() - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(Define.Districts); - - string name; - - foreach (XmlNode xn in xd.SelectNodes("/items/item")) - { - name = xn.Attributes[1].Value; - yield return new District - { - ID = int.Parse(xn.Attributes[0].Value), - Cid = int.Parse(xn.Attributes[2].Value), - Name = name, - Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() - }; - } - } - - #endregion - - - public static IEnumerable GetCities(int provinceID) - { - foreach (City c in Cities) - { - if (c.Pid == provinceID) - yield return c; - } - } - - public static IEnumerable GetDistricts(int cityID) - { - foreach (District d in Districts) - { - if (d.Cid == cityID) - yield return d; - } - } - - public static Province GetProvince(string provinceName) - { - foreach (Province p in Provinces) - { - if (string.Compare(p.Name, provinceName,true)==0) - { - return p; - } - } - return default(Province); - } - - public static City GetCity(string cityName) - { - foreach (City p in Cities) - { - if (string.Compare(p.Name, cityName, true) == 0) - { - return p; - } - } - return default(City); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs deleted file mode 100644 index c91bcd3..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs +++ /dev/null @@ -1,148 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34209 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace J6.DevFw.Toolkit.Region { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class RegionRes { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal RegionRes() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("J6.DevFw.Toolkit.Region.RegionRes", typeof(RegionRes).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 <?xml version="1.0" encoding="utf-8"?> - ///<items> - /// <item id="1" name="北京市" pid="1" zip="100000"></item> - /// <item id="2" name="天津市" pid="2" zip="100000"></item> - /// <item id="3" name="石家庄市" pid="3" zip="050000"></item> - /// <item id="4" name="唐山市" pid="3" zip="063000"></item> - /// <item id="5" name="秦皇岛市" pid="3" zip="066000"></item> - /// <item id="6" name="邯郸市" pid="3" zip="056000"></item> - /// <item id="7" name="邢台市" pid="3" zip="054000"></item> - /// <item id="8" name="保定市" pid="3" zip="071000"></item> - /// <item id="9 [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string cities { - get { - return ResourceManager.GetString("cities", resourceCulture); - } - } - - /// - /// 查找类似 <?xml version="1.0" encoding="utf-8"?> - ///<items> - /// <item id="1" name="东城区" cid="1"></item> - /// <item id="2" name="西城区" cid="1"></item> - /// <item id="3" name="崇文区" cid="1"></item> - /// <item id="4" name="宣武区" cid="1"></item> - /// <item id="5" name="朝阳区" cid="1"></item> - /// <item id="6" name="丰台区" cid="1"></item> - /// <item id="7" name="石景山区" cid="1"></item> - /// <item id="8" name="海淀区" cid="1"></item> - /// <item id="9" name="门头沟区" cid="1"></item> - /// <item id="10" name="房山区" cid="1"></item> - /// <item id="11" name="通州区" cid [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string districts { - get { - return ResourceManager.GetString("districts", resourceCulture); - } - } - - /// - /// 查找类似 USE [DBCT_Dev] - ///GO - ///IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[S_Province]') AND type in (N'U')) - ///BEGIN - ///CREATE TABLE [dbo].[S_Province]( - /// [ProvinceID] [bigint] IDENTITY(1,1) NOT NULL, - /// [ProvinceName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - /// [DateCreated] [datetime] NULL, - /// [DateUpdated] [datetime] NULL, - /// CONSTRAINT [PK_S_Province] PRIMARY KEY CLUSTERED - ///( - /// [ProvinceID] ASC - ///)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OF [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string pcd_AllData_V1 { - get { - return ResourceManager.GetString("pcd_AllData_V1", resourceCulture); - } - } - - /// - /// 查找类似 <?xml version="1.0" encoding="utf-8"?> - ///<items> - /// <item id="1" name="北京市"></item> - /// <item id="2" name="天津市"></item> - /// <item id="3" name="河北省"></item> - /// <item id="4" name="山西省"></item> - /// <item id="5" name="内蒙古自治区"></item> - /// <item id="6" name="辽宁省"></item> - /// <item id="7" name="吉林省"></item> - /// <item id="8" name="黑龙江省"></item> - /// <item id="9" name="上海市"></item> - /// <item id="10" name="江苏省"></item> - /// <item id="11" name="浙江省"></item> - /// <item id="12" name="安徽省"></item> - /// <item id="13" name="福建省"></item> - /// [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string provinces { - get { - return ResourceManager.GetString("provinces", resourceCulture); - } - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/HttpTags.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Tags/HttpTags.cs deleted file mode 100644 index 4f413d5..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/HttpTags.cs +++ /dev/null @@ -1,346 +0,0 @@ -using System; -using System.Data; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; - -namespace J6.DevFw.Toolkit.Tags -{ - public class HttpTags - { - private HttpRequest request; - private HttpResponse response; - - /// - /// 默认的配置路径 - /// - private static string defaultConfigPath = AppDomain.CurrentDomain.BaseDirectory + "config/tags.conf"; - - //配置路径,如果URI参数config未指定则为默认路径 - private string configPath; - - public TagsManager Tags; - - public HttpTags():this(null) - { - } - public HttpTags(string configPath) - { - this.configPath = configPath; - - //获取配置文件的路径 - if (String.IsNullOrEmpty(configPath)) - { - this.configPath = AppDomain.CurrentDomain.BaseDirectory + request.QueryString["config"]; - } - - //创建标签管理器对象 - Tags = new TagsManager(configPath); - } - - /// - /// 处理请求 - /// - /// - /// - public void ProcessRequest(HttpContext context,string pageContent) - { - request = context.Request; - response = context.Response; - - - - //获取请求方式,确定执行的方法 - string method = request.HttpMethod; - if (method == "GET") - { - string action = request.QueryString["tag.action"]; - if (String.IsNullOrEmpty(action)) - { - Dispaly_TagsList(String.IsNullOrEmpty(pageContent)?Resource.tagsmanager:pageContent); - } - else if (action == "test") - { - Invoke_TestReplace(); - } - } - else - { - string action = request.Form["tag.action"]; - - switch (action) - { - case "save": SaveTags(); break; - case "delete": DeleteTags(); break; - case "create": CreateTags(); break; - } - } - - } - - public void ProcessRequest(HttpContext context) - { - this.ProcessRequest(context, null); - } - - - private void CreateTags() - { - string msg=String.Empty; - - string name = request.Form["name"], - linkUri = request.Form["linkuri"], - description = request.Form["description"]; - - StringBuilder sb = new StringBuilder(); - //if (string.IsNullOrEmpty(id)) - //{ - // sb.Append("编号不能为空!"); - //} - //if(!Regex.IsMatch(id,"^[a-zA-Z0-9]+$")) - //{ - // sb.Append("编号必须为字母和数字"); - //} - - if (String.IsNullOrEmpty(name)) - { - sb.Append("名称不能为空!"); - } - if (sb.Length != 0) - { - msg = sb.ToString(); - goto tip; - } - - bool result =Tags.Add(new Tag - { - Name = name, - LinkUri = linkUri, - Description = description - }); - - msg = result ? "添加成功" : "已经存在相同的标签"; - tip: - response.Write(String.Format("", msg)); - - } - - /// - /// 删除Tags - /// - private void DeleteTags() - { - string msg; - - /* - if (tagsManager.Tags.Count == 1) - { - msg = "请保留至少一个标签"; goto tip; - }*/ - - Regex reg = new Regex("^(?!action|name|link|des|id|linkuri|description)[a-zA-Z0-9]+$"); - - int i = 0; - foreach (string key in request.Form) - { - if (reg.IsMatch(key)) - { - Tags.Delete(key); - i++; - } - } - msg = i == 0 ? "没选择要删除的项目!" : "删除成功"; - - tip: - response.Write(String.Format("",msg)); - } - - /// - /// 保存Tags - /// - private void SaveTags() - { - string msg; - - Regex reg = new Regex("^name_([a-zA-Z0-9]+)$"); - - int i = 0; - string id; - foreach (string key in request.Form) - { - if (reg.IsMatch(key)) - { - id = reg.Match(key).Groups[1].Value; - - Tags.Update(new Tag - { - Indent=int.Parse(id), - Name = request["name_" + id], - LinkUri = request["link_" + id], - Description = request["des_" + id] - }); - - i++; - } - } - msg = i == 0 ? "没有保存的项!" : "保存成功"; - - response.Write(String.Format("", msg)); - } - - - /// - /// 显示标签列表 - /// - private void Dispaly_TagsList(string pageContent) - { - string tagsHtml; - - int pageIndex; - - int.TryParse(request.QueryString["page"], out pageIndex); - if (pageIndex < 1) pageIndex = 1; - - StringBuilder sb = new StringBuilder(); - - Regex reg=new Regex("\\$\\{([a-zA-Z]+)\\}"); - - DataSet ds = new DataSet(); - ds.ReadXml(configPath); - - /* - //获取分页链接 - for (int i = 0; i < ps.PageCount; i++) - { - sb.Append("") - .Append((i + 1).ToString()).Append(""); - } - - pagerHtml = sb.ToString(); - sb.Remove(0, sb.Length); - */ - - if (Tags.Tags.Count > 0) - { - foreach (Tag tag in Tags.Tags) - { - sb.Append("") - .Append("").Append(tag.Name).Append("") - .Append(tag.LinkUri).Append("") - .Append(tag.Description).Append("修改"); - } - tagsHtml = sb.ToString(); - } - else - { - tagsHtml = "暂无tags!"; - } - - string html = reg.Replace(pageContent, match => - { - switch (match.Groups[1].Value) - { - default: return null; - case "css": return ReturnStyleLink(); - case "tagsHtml": return tagsHtml; - case "pagetext": return ""; - - } - }); - response.Write(html); - } - - - - private void Invoke_TestReplace() - { - TagsManager tagsManager = new TagsManager(AppDomain.CurrentDomain.BaseDirectory + "tag.xml"); - - - const string testContent = @"最近项目有需要开发一个模板的功能,在asp.net mvc项目中使用模板在不压缩代码的模板情况下,性能能提升0.02s左右(本地IIS+FF)"; - - - const string testContent2 = @"奥博建站系统是厦门奥博科技技术

                                                                                                                                            开发的一款奥博科技技术基于asp.net mvc和asp.net 模板组件的网站管理系统。程序高效,安全,功能强大。从最初的v1.0到v1.5,v1.8,v2.0,v2.2,v2.7 - - 经过无数次的改进,不仅支持模板技术,缓存,自定义路由,全站静态化,更包括一键生成文档文件!奥博建站系统包括多用户管理,和会员系统,消息系统,评论系统,同时提供接口方便二次开发。 - - 今天奥博建站系统升级到3.0了,最大的特色就是:多数据库的支持。您现在可以做为网站的数据库,同时支持数据库的切换。小型网站使用更快。

                                                                                                                                            "; - - const string testContent1 = @" 淘宝网上卖银耳的卖家很多,但是在这里面很多卖家并不是我们通江人,而且也没有我们通江的银耳,很多卖家是以袋料银耳来充通江银耳,所以买到这样的假货心里一定很不舒服吧,很多买银耳的朋友非常担心这个问题,都想买到品质优良的正宗的通江银耳,我们是通江土特产专营,为了让淘宝网上的买家买到正宗的通江银耳,我们建立了专业的网站和论坛来对通江银耳进行宣传,我们还成立了专业的银耳合作社,和农户签订了购销合同,农民采收,我们包销售,这样农民也就有了相当的积极性。我们这样做也是为保证有大量的货源,能让淘宝网上的买家更多的买到正宗的通江银耳,我们销售的银耳力争是在野生天然环境下生长的银耳,虽然产量很小,但品质优良,所以价格高大家也愿意接受。因为我们不销售假银耳,我们的银耳是正宗地通江野生银耳。"; - - - - response.Write(String.Format("测试内容为:
                                                                                                                                            {0}
                                                                                                                                            ", testContent)); - - - string x1 = tagsManager.ReplaceSingleTag(testContent); - - - - response.Write(String.Format("

                                                                                                                                            替换标签后的内容为:
                                                                                                                                            {0}", x1)); - - - string x2 = tagsManager.ReplaceSingleTag(x1); - - - response.Write(String.Format("

                                                                                                                                            再次替换后的内容为:
                                                                                                                                            {0}", x2)); - - - response.Write(String.Format("

                                                                                                                                            移除多余的Tags:
                                                                                                                                            {0}", tagsManager.RemoveAutoTags(x2))); - - - } - - /// - /// 返回样式表链接 - /// - /// - public virtual string ReturnStyleLink() - { - return String.Format("", Resource.managestyle); - } - - #region test - - /* - /// - /// 给关键字加链接,同一关键字只加一次 - /// - /// 源字符串 - /// 关键字泛型 - /// 替换后结果 - private string keyAddUrl(string src, List keys) - { - Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); - int length = 0; - string temp = string.Empty; - return reg.Replace(src, delegate(Match m) - { - temp = m.Value; - length = temp.Length; - for (int i = keys.Count - 1; i >= 0;i--) - { - temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(keys[i])), @"$1${tag}"); - if (length != temp.Length) - { - keys.Remove(keys[i]); - } - length = temp.Length; - } - return temp; - }); - } - private void test() - { - //调用 - string str1 = "我想学习c语言教程,我想看的是C语言视频教程,其它什么C语言教程,我都不想看。我喜欢C语言,还是C语言。"; - List keys = new List(new string[] { "c语言", "C语言教程", "c语言视频教程" }); - string result = keyAddUrl(str1, keys); - response.Write(result); - } - */ - #endregion - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.Designer.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.Designer.cs deleted file mode 100644 index 06304a9..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.Designer.cs +++ /dev/null @@ -1,116 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34209 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace J6.DevFw.Toolkit.Tags { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resource { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resource() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("J6.DevFw.Toolkit.Tags.Resource", typeof(Resource).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 body - ///{ - /// font-size:12px;color:#666; - ///} - ///a{color:#0066cc;} - ///a:hover{color:#006699;} - ///h1{display:none;} - ///table{background:#f0f0f0;width:100%;} - ///th{border-bottom:solid 1px #e5e5e5;background:#006699;color:White;font-size:12px;line-height:23px;} - ///td{background:white;font-size:12px;padding:2px;line-height:23px;} - ///td.center{text-align:center;} - ///input.button{border:outset 1px #f0f0f0;} - ///td input{border:solid 1px #DCE5F1;padding:1px;line-height:16px;height:20px;width:100%;color:#006699} - ///td input.ck{border:none [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string managestyle { - get { - return ResourceManager.GetString("managestyle", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - /// <head> - /// <title>标签管理</title> - /// ${css} - /// </head> - /// <body> - /// <!-- - /// - /// // - /// // Copyright 2011 @ S1N1.COM,All rights reseved. - /// // Project : 奥博网站管理系统 - /// // Name : 标签组件 - /// // Author : Newmin (newmin.net@gmail.com) - /// // Create : 2011/08/28 16:27 - /// // Product Link: http://www.ops.cc - /// // - /// - /// --> - /// - /// - /// <h1>标签管理</h1> - /// <form action="" method="post" target="tag_ifr" enctype="application/x-www-form-u [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string tagsmanager { - get { - return ResourceManager.GetString("tagsmanager", resourceCulture); - } - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Tag.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Tag.cs deleted file mode 100644 index a285f40..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Tag.cs +++ /dev/null @@ -1,42 +0,0 @@ -// -// -// Copyright 2011 (C) S1N1.COM,All rights reseved. -// -// Project : tagsplugin -// File Name : Tag.cs -// Date : 8/27/2011 -// Author : -// -// - - -namespace J6.DevFw.Toolkit.Tags -{ - - /// - /// ǩ - /// - public class Tag - { - /// - /// ʶID - /// - public int Indent { get; set; } - - /// - /// - /// - public string Name { get; set; } - - /// - /// - /// - public string Description { get; set; } - - /// - /// ӵַ - /// - public string LinkUri { get; set; } - } - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManager.cs b/J6/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManager.cs deleted file mode 100644 index df6aad0..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManager.cs +++ /dev/null @@ -1,514 +0,0 @@ -// -// -// Copyright 2011 (C) S1N1.COM,All rights reseved. -// -// Project : tagsplugin -// File Name : Tags.cs -// Date : 8/27/2011 -// Author : Newmin -// --------------------------------------------- -// 2011-09-13 newmin[+]:滻ǩReplaceSingleTag() -// [!]:޸ĿĿ -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Xml; - -namespace J6.DevFw.Toolkit.Tags -{ - public class TagsManager - { - //ļ· - private string configFilePath; - - private string[] nameArray; - - private TagsCollection tags=new TagsCollection(); - - - public class TagsCollection:IEnumerable - { - internal IDictionary dict = new Dictionary(); - - /// - /// ǩ - /// - public int Count - { - get { return dict.Count; } - } - - public IEnumerator GetEnumerator() - { - - foreach (KeyValuePair pair in dict) - { - yield return pair.Value; - } - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - } - - - public TagsManager(string configFilePath) - { - this.configFilePath = configFilePath; - if (!File.Exists(this.configFilePath)) - { - //ļ,򴴽ʼ - File.Create(this.configFilePath).Dispose(); - const string initData = "\r\n\r\n\t\r\n\t\r\n"; - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(this.configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - this.LoadAllTags(); - } - - /// - /// ǩ - /// - public TagsCollection Tags { get { return tags; } } - - - /// - /// Tags - /// - /// - private void LoadAllTags() - { - - XmlDocument xd = new XmlDocument(); - - //ļ - xd.Load(configFilePath); - - //бǩڵ - XmlNodeList tagNodes = xd.SelectNodes("/tags/list/tag"); - - // - tags.dict.Clear(); - - //ؼ - nameArray = new String[tagNodes.Count]; - - //ӹؼʵʵ䣬Ϊؼ鸳ֵ - for (int i = 0; i < tagNodes.Count; i++) - { - nameArray[i] = tagNodes[i].InnerText; - - tags.dict.Add(nameArray[i], - new Tag - { - Indent=int.Parse(tagNodes[i].Attributes["indent"].Value), - Name = tagNodes[i].InnerText, - Description = tagNodes[i].Attributes["description"].Value, - LinkUri = tagNodes[i].Attributes["linkuri"].Value - }); - } - - Array.Sort(nameArray, (a, b) => { return b.Length-a.Length; }); - - } - - /// - /// ӱǩ - /// - /// - /// - public bool Add(Tag tag) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - //ǩǷظ - if (xd.SelectSingleNode(String.Format("/tags/list/tag[@name=\"{0}\"]", tag.Name)) != null) return false; - - //ȡһڵ - XmlNode node = xd.SelectSingleNode("/tags/list/tag[last()]"); - if (node != null) - { - int tagIndex; - int.TryParse(node.Attributes["indent"].Value, out tagIndex); - tag.Indent = tagIndex + 1; - } - else - { - tag.Indent=1; - } - - - //бǩڵ - XmlNode root = xd.SelectSingleNode("/tags/list"); - - XmlNode tagNode = xd.CreateElement("tag"); - - XmlAttribute xn =xd.CreateAttribute("indent"); - xn.Value = tag.Indent.ToString(); - tagNode.Attributes.Append(xn); - - //xn = xd.CreateAttribute("name"); - //xn.Value = tag.Name; - //tagNode.Attributes.Append(xn); - - xn = xd.CreateAttribute("description"); - xn.Value = tag.Description; - tagNode.Attributes.Append(xn); - - xn = xd.CreateAttribute("linkuri"); - xn.Value = tag.LinkUri; - tagNode.Attributes.Append(xn); - - tagNode.InnerText = tag.Name; - - root.AppendChild(tagNode); - - // - xd.Save(configFilePath); - - //ݲ¼ - LoadAllTags(); - - return true; - - } - - /// - /// ȡ - /// - /// - /// - public string GetConfig(string key) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]",key)); - if (keyNode != null) - { - return keyNode.Attributes["value"].Value; - } - return null; - } - - /// - /// ޸ - /// - /// - /// - public void SetConfig(string key, string value) - { - - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]", key)); - if (keyNode != null) - { - keyNode.Attributes["value"].Value = value; - } - else - { - XmlNode rootNode = xd.SelectSingleNode("/tags/config"); - keyNode = xd.CreateElement("add"); - - XmlAttribute xa=xd.CreateAttribute("key"); - xa.Value=key; - keyNode.Attributes.Append(xa); - - xa=xd.CreateAttribute("value"); - xa.Value=value; - keyNode.Attributes.Append(xa); - - rootNode.AppendChild(keyNode); - } - - xd.Save(configFilePath); - } - - /// - /// ±ǩ - /// - /// - public void Update(Tag tag) - { - - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", tag.Indent.ToString())); - - tagNode.InnerText = tag.Name; - tagNode.Attributes["description"].Value = tag.Description; - tagNode.Attributes["linkuri"].Value = tag.LinkUri; - - // - xd.Save(configFilePath); - - //ݲ¼ - LoadAllTags(); - - } - - /// - /// ɾǩ - /// - /// - public void Delete(string id) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode root = xd.SelectSingleNode("/tags/list"); - XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", id)); - - if (tagNode != null) - { - root.RemoveChild(tagNode); - xd.Save(configFilePath); - - //ݲ¼ - LoadAllTags(); - } - } - - /// - /// ƻȡǩ - /// - /// - /// - private Tag FindByName(string name) - { - if (tags.dict.Keys.Contains(name)) return tags.dict[name]; - return null; - } - - private string Replace(string content,bool openInBlank) - { - //if (!defaultTagLinkFormat.Contains("{0}")) throw new ArgumentException("{0}ʾñǩID"); - - Tag tag; - Regex reg; - - //ǩӸʽ - string tagLinkFormat =openInBlank? - "{2}" : - "{2}"; - - - foreach (string key in nameArray) - { - tag=FindByName(key); - if(tag==null)continue; - - reg = new Regex(String.Format("]+>(?{0})|(?!]*)(?{0})(?![^<]*)", Regex.Escape(key)), RegexOptions.IgnoreCase); - - - content = reg.Replace(content, match => - { - return String.Format(tagLinkFormat, - String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, - tag.Description, - key); - }); - } - - return content; - } - - - /// - /// 滻 - /// - /// - /// - /// - /// - public string Replace(string content, bool openInBlank,bool singleMode) - { - //ȫ滻 - if (!singleMode) return Replace(content, openInBlank); - - Tag tag; - Regex reg; - - // - int _index=0; - - foreach(string key in nameArray) - { - tag = FindByName(key); - if (tag == null) continue; - - reg = new Regex(String.Format("]+>(?{0})|(?!]*)(?{0})(?![^<]*)", - Regex.Escape(key)), RegexOptions.IgnoreCase); - - - content = reg.Replace(content, match => - { - - if (++_index == 1) - { - return String.Format( - - //ǩӸʽ - openInBlank ?"{2}" : - "{2}", - - - String.IsNullOrEmpty(tag.LinkUri) ?"javascript:;":tag.LinkUri, - tag.Description, - key); - } - else - { - return match.Groups["key"].Value; - } - }); - - _index = 0; - } - return content; - } - - /// - /// ǩ滻 - /// - /// - /// - public string ReplaceSingleTag(string content) - { - return Replace(content, true, true); - } - - /// - /// ƳڵTag - /// - /// - /// - public string RemoveAutoTags(string content) - { - string linkText; - return Regex.Replace(content, "]+>(.+?)", match => - { - linkText = match.Groups[2].Value; - if (!tags.dict.Keys.Contains(linkText)) - { - return linkText; - } - return match.Value; - },RegexOptions.Multiline); - } - - - /// - /// 滻Ϊǩ - /// - /// - /// - /// - private string Replace2(string content) - { - return null; - - - - Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); - -#if DEBUG - //System.Web.HttpContext.Current.Response.Write(String.Format("

                                                                                                                                            ƥ{0}

                                                                                                                                            ",reg.IsMatch(content))); - - - - -#endif - //int length = 0; - string temp; - Tag tag; - - //Ѿӵջ,ȷֻ滻һ - Stack stack = new Stack(); - - return reg.Replace(content, m => - { - temp =Regex.Replace(m.Value,"<|>|\\/",String.Empty); - - - // System.Web.HttpContext.Current.Response.Write(String.Format("
                                                                                                                                            ({0})
                                                                                                                                            ", m.Value)); - - //length = temp.Length; - - //ؼ,ұ֤ؼвջ - for (int i = nameArray.Length - 1; i >= 0 && !stack.Contains(i); i--) - { - tag = this.FindByName(nameArray[i]); - - if (tag != null) - { - temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(tag.Name)) - , String.Format("$1{2}", - String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, //δӣʹĬϸʽ - tag.Description, "${tag}")); - } - - //ֻ֤滻һ - stack.Push(i); - - // if (length != temp.Length) - //{ - // stack.Push(i); - - // } - //length = temp.Length; - } - - return temp; - }); - } - - /// - /// ؼּӣͬһؼֻһ - /// - /// Դַ - /// ؼַ - /// - private string keyAddUrl(string content) - { - return null; - /* - Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); - int length = 0; - string temp; - Tag tag; - - return reg.Replace(content, m => - { - temp = m.Value; - length = temp.Length; - for (int i = tags.Count - 1; i >= 0; i--) - { - tag = this.FindByName(nameArray[i]); - temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(tag.Name)) - , String.Format("$1${tag}",tag.LinkUri,tag.Description)); - - if (length != temp.Length) - { - //tags.nameDict.Remove(tags.nameDict[i]); - } - length = temp.Length; - } - return temp; - });*/ - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs deleted file mode 100644 index 1cc7c6d..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs +++ /dev/null @@ -1,333 +0,0 @@ -using System; -using System.Text; - -namespace J6.DevFw.Toolkit.ThirdApi.Discuz -{ - public enum DiscuzAuthcodeMode { Encode, Decode }; - - - public class Authcode - { - private static Encoding encoding = Encoding.GetEncoding(Request.UC_CHARSET); - - /// - /// 从字符串的指定位置截取指定长度的子字符串 - /// - /// 原字符串 - /// 子字符串的起始位置 - /// 子字符串的长度 - /// 子字符串 - private static string CutString(string str, int startIndex, int length) - { - if (startIndex >= 0) - { - if (length < 0) - { - length = length * -1; - if (startIndex - length < 0) - { - length = startIndex; - startIndex = 0; - } - else - { - startIndex = startIndex - length; - } - } - - if (startIndex > str.Length) - { - return ""; - } - } - else - { - if (length < 0) - { - return ""; - } - else - { - if (length + startIndex > 0) - { - length = length + startIndex; - startIndex = 0; - } - else - { - return ""; - } - } - } - - if (str.Length - startIndex < length) - { - length = str.Length - startIndex; - } - - return str.Substring(startIndex, length); - } - - /// - /// 从字符串的指定位置开始截取到字符串结尾的了符串 - /// - /// 原字符串 - /// 子字符串的起始位置 - /// 子字符串 - private static string CutString(string str, int startIndex) - { - return CutString(str, startIndex, str.Length); - } - - /// - /// MD5函数 - /// - /// 原始字符串 - /// MD5结果 - public static string MD5(string str) - { - byte[] b = encoding.GetBytes(str); - b = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b); - string ret = ""; - for (int i = 0; i < b.Length; i++) - { - ret += b[i].ToString("x").PadLeft(2, '0'); - } - return ret; - } - - /// - /// 用于 RC4 处理密码 - /// - /// 密码字串 - /// 密钥长度,一般为 256 - /// - private static Byte[] GetKey(Byte[] pass, Int32 kLen) - { - Byte[] mBox = new Byte[kLen]; - - for (Int64 i = 0; i < kLen; i++) - { - mBox[i] = (Byte)i; - } - Int64 j = 0; - for (Int64 i = 0; i < kLen; i++) - { - j = (j + mBox[i] + pass[i % pass.Length]) % kLen; - Byte temp = mBox[i]; - mBox[i] = mBox[j]; - mBox[j] = temp; - } - return mBox; - } - - /// - /// 生成随机字符 - /// - /// 随机字符长度 - /// 随机字符 - private static string RandomString(int lens) - { - char[] CharArray = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; - int clens = CharArray.Length; - string sCode = ""; - Random random = new Random(); - for (int i = 0; i < lens; i++) - { - sCode += CharArray[random.Next(clens)]; - } - return sCode; - } - - /// - /// 使用 authcode 方法对字符串加密 - /// - /// 原始字符串 - /// 密钥 - /// 加密字串有效时间,单位是秒 - /// 加密结果 - public static string DiscuzAuthcodeEncode(string source, string key, int expiry) - { - return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Encode, expiry); - - } - - /// - /// 使用 Discuz authcode 方法对字符串加密 - /// - /// 原始字符串 - /// 密钥 - /// 加密结果 - public static string DiscuzAuthcodeEncode(string source, string key) - { - return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Encode, 0); - - } - - /// - /// 使用 Discuz authcode 方法对字符串解密 - /// - /// 原始字符串 - /// 密钥 - /// 解密结果 - public static string DiscuzAuthcodeDecode(string source, string key) - { - return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Decode, 0); - - } - - /// - /// 使用 变形的 rc4 编码方法对字符串进行加密或者解密 - /// - /// 原始字符串 - /// 密钥 - /// 操作 加密还是解密 - /// 密文有效期, 加密时候有效, 单 位 秒,0 为永久有效 - /// 加密或者解密后的字符串 - private static string DiscuzAuthcode(string source, string key, DiscuzAuthcodeMode operation, int expiry) - { - if (source == null || key == null) - { - return ""; - } - - int ckey_length = 4; - string keya, keyb, keyc, cryptkey, result; - - key = MD5(key); - keya = MD5(CutString(key, 0, 16)); - keyb = MD5(CutString(key, 16, 16)); - keyc = ckey_length > 0 ? (operation == DiscuzAuthcodeMode.Decode ? CutString(source, 0, ckey_length) : RandomString(ckey_length)) : ""; - - cryptkey = keya + MD5(keya + keyc); - - if (operation == DiscuzAuthcodeMode.Decode) - { - byte[] temp; - try - { - temp = System.Convert.FromBase64String(CutString(source, ckey_length)); - } - catch - { - try - { - temp = System.Convert.FromBase64String(CutString(source + "=", ckey_length)); - } - catch - { - try - { - temp = System.Convert.FromBase64String(CutString(source + "==", ckey_length)); - } - catch - { - return ""; - } - } - } - - result = encoding.GetString(RC4(temp, cryptkey)); - - //throw new Exception(CutString(result, 0, 10)); - long timestamp = long.Parse(CutString(result, 0, 10)); - - if ((timestamp == 0 || timestamp - UnixTimestamp() > 0) && CutString(result, 10, 16) == CutString(MD5(CutString(result, 26) + keyb), 0, 16)) - { - return CutString(result, 26); - } - else - { - return ""; - } - } - else - { - source = (expiry == 0 ? "0000000000" : (expiry + UnixTimestamp()).ToString()) + CutString(MD5(source + keyb), 0, 16) + source; - byte[] temp = RC4(encoding.GetBytes(source), cryptkey); - return keyc + System.Convert.ToBase64String(temp); - } - } - - /// - /// RC4 原始算法 - /// - /// 原始字串数组 - /// 密钥 - /// 处理后的字串数组 - private static Byte[] RC4(Byte[] input, String pass) - { - if (input == null || pass == null) return null; - - byte[] output = new Byte[input.Length]; - byte[] mBox = GetKey(encoding.GetBytes(pass), 256); - - // 加密 - Int64 i = 0; - Int64 j = 0; - for (Int64 offset = 0; offset < input.Length; offset++) - { - i = (i + 1) % mBox.Length; - j = (j + mBox[i]) % mBox.Length; - Byte temp = mBox[i]; - mBox[i] = mBox[j]; - mBox[j] = temp; - Byte a = input[offset]; - //Byte b = mBox[(mBox[i] + mBox[j] % mBox.Length) % mBox.Length]; - // mBox[j] 一定比 mBox.Length 小,不需要在取模 - Byte b = mBox[(mBox[i] + mBox[j]) % mBox.Length]; - output[offset] = (Byte)((Int32)a ^ (Int32)b); - } - - return output; - } - - - private static string AscArr2Str(byte[] b) - { - return System.Text.UnicodeEncoding.Unicode.GetString( - System.Text.ASCIIEncoding.Convert(System.Text.Encoding.ASCII, - System.Text.Encoding.Unicode, b) - ); - } - - public static long UnixTimestamp() - { - DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); - DateTime dtNow = DateTime.Parse(DateTime.Now.ToString()); - TimeSpan toNow = dtNow.Subtract(dtStart); - string timeStamp = toNow.Ticks.ToString(); - return long.Parse(timeStamp.Substring(0, timeStamp.Length - 7)); - } - - public static string urlencode(string str) - { - //php的urlencode不同于HttpUtility.UrlEncode - //return HttpUtility.UrlEncode(str); - - string tmp = string.Empty; - string strSpecial = "_-.1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - for (int i = 0; i < str.Length; i++) - { - string crt = str.Substring(i, 1); - if (strSpecial.Contains(crt)) - tmp += crt; - else - { - byte[] bts = encoding.GetBytes(crt); - foreach (byte bt in bts) - { - tmp += "%" + bt.ToString("X"); - } - } - } - return tmp; - } - - public static long time() - { - TimeSpan ts = new TimeSpan(System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks); - return (long)ts.TotalMilliseconds; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Request.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Request.cs deleted file mode 100644 index a189d7b..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Request.cs +++ /dev/null @@ -1,252 +0,0 @@ -/* - * name : Request - * author : newmin - * date : 2010/12/20 - * - */ - -using System; -using System.Configuration; -using System.IO; -using System.Net; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.Discuz -{ - public class Request - { - #region 对asp.net无用的 - /* - /// - /// 连接 UCenter 的方式 - /// mysql:MySQL 方式;空:远程方式 - /// - public const string UC_CONNECT="mysql"; - /// - ///UCenter 数据库主机 - /// - public const string UC_DBHOST="192.168.1.82"; - /// - ///UCenter 数据库用户名 - /// - public const string UC_DBUSER="root"; - /// - /// UCenter 数据库密码 - /// - public const string UC_DBPW=""; - /// - /// UCenter 数据库名称 - /// - public const string UC_DBNAME=""; - /// - /// UCenter 数据库字符集 - /// - public const string UC_DBCHARSET=""; - /// - /// UCenter 数据库表前缀 - /// - public const string UC_DBTABLEPRE=""; - /// - /// UCenter 数据库持久连接 0=关闭, 1=打开 - /// - public const string UC_DBCONNECT=""; - */ - #endregion - - - /// - /// 与 UCenter 的通信密钥, 要与 UCenter 保持一致 - /// - public static string UC_KEY; - /// - /// UCenter 服务端的 URL 地址 - /// - public static string UC_API; - /// - /// UCenter 的字符集 - /// - public static string UC_CHARSET; - /// - /// 当前应用的 ID - /// - public static string UC_APPID; - public static bool UC_RecordLog; - //匹配host的模式 - private static readonly string hostPattern; - static Request() - { - UC_APPID = ConfigurationManager.AppSettings["uc_appid"]; - UC_KEY = ConfigurationManager.AppSettings["uc_key"]; - UC_API = ConfigurationManager.AppSettings["uc_api"]; - UC_CHARSET = ConfigurationManager.AppSettings["uc_charset"] ?? "gbk"; - UC_RecordLog = ConfigurationManager.AppSettings["uc_log"] == "True"; - - hostPattern = "^(?=" + UC_API.Remove(UC_API.IndexOf("/", 7)).Replace("/", "\\/") + "|http:\\/\\/" + HttpContext.Current.Request.Url.Host + ")"; - } - - internal static object SendRequest(string path, string module, string action, string param) - { - //获取时间参数 - string time = ((DateTime.UtcNow.Ticks - new DateTime(0x7b2, 1, 1).Ticks) / 0x989680L).ToString(); - //获取agent参数 - string agent = Authcode.MD5(HttpContext.Current.Request.UserAgent); - StringBuilder sb = new StringBuilder(); - sb.Append("agent=").Append(agent).Append("&time=") - .Append(time).Append("&").Append(param); - //需要先解码 - string input = HttpContext.Current.Server.UrlEncode(Authcode.DiscuzAuthcodeEncode(sb.ToString(), UC_KEY, 0)); - - sb.Remove(0, sb.Length); - sb.Append("m=").Append(module).Append("&a=").Append(action).Append("&inajax=2&appid=") - .Append(UC_APPID).Append("&input=").Append(input); - - - HttpWebRequest request = WebRequest.Create(UC_API + path) as HttpWebRequest; - if (request == null) return "连接UCenter服务端失败!"; - request.Accept = "*/*"; - request.Method = "POST"; - request.UserAgent = HttpContext.Current.Request.UserAgent; - request.ContentType = "application/x-www-form-urlencoded"; - request.Timeout = 30000;//30秒超时 - - //发送请求 - byte[] data = Encoding.GetEncoding("GBK").GetBytes(sb.ToString()); - request.ContentLength = data.Length; - Stream requestStream = request.GetRequestStream(); - requestStream.Write(data, 0, data.Length); - requestStream.Dispose(); - - //获取响应 - HttpWebResponse response = request.GetResponse() as HttpWebResponse; - if (response.StatusCode == HttpStatusCode.OK) - { - using (StreamReader sr = new StreamReader(response.GetResponseStream())) - { - return sr.ReadToEnd(); - } - } - else - { - return "Error:" + response.StatusCode.ToString(); - } - } - /// - /// 调用UCenter API - /// - /// - /// - public static object CallUCenterAPI(HttpContext context, IUCenterAPI api) - { - //判断请求的主机 - string referer = context.Request.Headers["referer"]; - if (!Regex.IsMatch(referer, hostPattern)) return "404"; - - //因为包含+传递过来为" ",则需先转码再解码 - string query = context.Server.UrlDecode(context.Server.UrlEncode(context.Request["code"])); - //等同于以下这句 - //string query = context.Server.UrlEncode(context.Request["code"]).Replace("%2b","+").Replace("%2f","/"); - - System.Collections.Specialized.NameValueCollection parameters = HttpUtility.ParseQueryString - (Authcode.DiscuzAuthcodeDecode(query, UC_KEY)); - - #region 记录参数 - /* - StringBuilder sb = new StringBuilder(); - sb.Append(query).Append("\r\n"); - sb.Append(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)); - foreach (string s in parameters.Keys) - { - sb.Append("\r\n").Append(s).Append(":" + parameters[s]); - } - TraceLog.Record(sb.ToString()); - */ - #endregion - #region 记录日志 - /* - StringBuilder sb = new StringBuilder(); - - using (Stream stream = context.Request.InputStream) - { - byte[] buffer = new byte[100]; - int count; - if (stream.Length != 0) - { - do - { - count = stream.Read(buffer, 0, buffer.Length); - sb.Append(Encoding.Default.GetString(buffer)); - } while (count != 0); - } - } - string streamContent = sb.ToString(); - - sb.Remove(0, sb.Length); - - NameValueCollection _params = context.Request.Params; - - foreach (string a in _params.Keys) - { - sb.Append("&").Append(a).Append("=").Append(_params[a]); - } - - TraceLog.Record(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)+"\r\nMethod:"+context.Request.HttpMethod+ - "\r\nParams:"+sb.ToString()+"\r\nStream:"+streamContent+context.Request["action"]); - - */ - #endregion - - switch (parameters["action"]) - { - case "test": - TraceLog.Record("与UCenter建立通信成功!"); - return "1"; - case "addfeed": - return api.AddFeed(); - case "deleteuser": - return api.DeleteUser(parameters["ids"]); - - case "synlogin": - api.SyncLogin(parameters["username"], parameters["password"]);return ""; - - case "synlogout": - api.SyncLogout();return""; - - case "updatepw": - return api.Edit(parameters["username"], parameters["oldpw"], parameters["newpw"], parameters["email"], true); - - case "getcreditsettings": - break; - - case "gettag": - break; - - case "renameuser": - return api.RenameUser(int.Parse(parameters["uid"]), parameters["oldusername"], parameters["newusername"]); - - - - case "updateapps": - break; - - case "updatebadwords": - break; - - case "updateclient": - break; - - case "updatecredit": - break; - - case "updatecreditsettings": - break; - - case "updatehosts": - break; - } - return ""; - } - - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs deleted file mode 100644 index 3a65246..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs +++ /dev/null @@ -1,564 +0,0 @@ -/* - * Discuz UCenter - * author : newmin - * date : 2010/12/20 - * - */ - -using System; -using System.Collections; -using System.IO; -using System.Text.RegularExpressions; -using System.Web; -using System.Web.SessionState; -using System.Xml; - -namespace J6.DevFw.Toolkit.ThirdApi.Discuz -{ - /// - /// XML操作方法 - /// - public class XML - { - public static string GetInnerText(string xmlContent, string xpath) - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(xmlContent); - return xd.SelectSingleNode(xpath).InnerText; - } - } - - - public class UCenter - { - public static readonly IUCenter Client; - public static IUCenterAPI Api; - - static UCenter() - { - Client = new UCenterClient(); - Api = new UCenterApi(); - } - } - - /// - /// UCenter客户端接口 - /// - public interface IUCenter - { - /// - /// 用户登陆并返回信息 - /// - /// - /// - /// 返回数据 - /// - int Login(string username, string password, bool? isUid, bool? checkQues, int? questionId, string answer, out Hashtable ht); - - /// - /// 使用用户,密码登陆并返回信息 - /// - /// - /// - /// - int Login(string username, string password, out Hashtable ht); - - /// - /// 使用用户,密码登陆 - /// - /// - /// - /// - int Login(string username, string password); - - /// - /// 注册,返回用户ID,或错误状态码 - /// - /// - /// - /// - /// - int Register(string username, string password, string email, int? questionId, string answer, string regIp); - - /// - /// 注册,返回用户ID,或错误状态码 - /// - /// - /// - /// - /// - int Register(string username, string password, string email); - - /// - /// 修改用户资料 - /// - /// 用户名 - /// 旧密码 - /// 新密码,如不修改则传空值 - /// 邮箱,如不修改则传空值 - /// 是否忽略旧密码 - /// - int Edit(string username, string oldpwd, string newpwd, string email, bool ignoreOldPwd); - - /// - /// 同步登录 - /// - /// - /// - /// 返回一段Javascript同步代码 - string SyncLogin(string username, string password); - - /// - /// 同步退出 - /// - /// - string SyncLogout(); - - /// - /// 获取用户信息,包括:用户ID,用户名,邮箱 - /// - /// 用户名或ID - /// 是否为uid,默认为false - /// - string[] GetUser(string username, bool isuid); - - /// - /// 删除用户,多个用户用","隔开 - /// - /// 用户ID,多个用户用","隔开 - /// - bool DeleteUser(string uid); - - /// - /// 用于检查用户输入的用户名的合法性 - /// - /// - /// - int CheckName(string username); - - /// - /// 用于检查用户输入的 Email 的合法性 - /// - /// - /// - int CheckEmail(string email); - } - - /// - /// UCenterAPI - /// - public interface IUCenterAPI : IRequiresSessionState - { - /// - /// 修改用户资料 - /// - /// 用户名 - /// 旧密码 - /// 新密码,如不修改则传空值 - /// 邮箱,如不修改则传空值 - /// 是否忽略旧密码 - /// - string Edit(string username, string oldpwd, string newpwd, string email, bool ignoreOldPwd); - - /// - /// 同步登录 - /// - /// - /// - /// 返回一段Javascript同步代码 - void SyncLogin(string username, string password); - - /// - /// 同步退出 - /// - /// - void SyncLogout(); - - /// - /// 删除用户 - /// - /// - /// - bool DeleteUser(string uids); - - - string AddFeed(); - - /// - /// 修改名称 - /// - /// - /// - /// - /// - string RenameUser(int uid, string oldUserName, string newUserName); - } - - /// - /// UCenter客户端 - /// - public class UCenterClient : IUCenter - { - internal UCenterClient() - { - DateTime dt = new DateTime(2018, 10, 01); - if (DateTime.Now > dt) - { - throw new Exception("new version in ops.cc"); - } - } - - public int Login(string username, string password, bool? isUid, bool? checkQues, int? questionId, string answer, out Hashtable ht) - { - int result = -1; - XmlDocument xd = new XmlDocument(); - ht = new Hashtable(); - string xpath, uid; - - //获取内容并加载到xml中 - string xmlContent = Request.SendRequest("index.php", "user", "login", - - String.Format("isuid={0}&uid={1}&username={1}&password={2}&checkques={3}&questionid={4}&answer={5}", - isUid == true ? "1" : "0", - username, - password, - checkQues == true ? "1" : "0", - questionId, - answer - )).ToString(); - - xd.LoadXml(xmlContent); - - //UCenter 1.5使用item_0,而UCenter1.6则用了item id="0" - bool isOldVersion = Regex.IsMatch(xmlContent, "item_"); - xpath = isOldVersion ? "/root/item_0" : "/root/item[@id=0]"; - - uid = xd.SelectSingleNode(xpath).InnerText; - - - int.TryParse(uid, out result); - - if (result < 0) - { - TraceLog.Record(String.Format("用户:{0}登录失败,原因:{1}.", - username, - this.GetLoginResultDesc(result) - )); - } - else - { - //登陆成功,则返回数据表 - - ht["uid"] = uid; - - //用户名 - xpath = isOldVersion ? "/root/item_1" : "/root/item[@id=1]"; - ht["username"] = xd.SelectSingleNode(xpath).InnerText; - - //密码 - xpath = isOldVersion ? "/root/item_2" : "/root/item[@id=2]"; - ht["password"] = xd.SelectSingleNode(xpath).InnerText; - - //邮件 - xpath = isOldVersion ? "/root/item_3" : "/root/item[@id=3]"; - ht["email"] = xd.SelectSingleNode(xpath).InnerText; - - //用户名是否重名 - xpath = isOldVersion ? "/root/item_4" : "/root/item[@id=4]"; - ht["username_repeat"] = xd.SelectSingleNode(xpath).InnerText; - - - TraceLog.Record("用户:" + username + "登录成功!"); - - } - - return result; - - } - - public int Login(string username, string password, out Hashtable ht) - { - return Login(username, password, null, null, null, null, out ht); - } - - public int Login(string username, string password) - { - Hashtable ht; - return Login(username, password, null, null, null, null, out ht); - } - - public int Register(string username, string password, string email, int? questionId, string answer, string regIp) - { - string resultTag = Request.SendRequest("index.php", "user", "register", - String.Format("username={0}&password={1}&email={2}&questionid={3}&answer={4}®ip={5}", - username, password, email, questionId, answer, regIp) - ).ToString(); - - int result; - int.TryParse(resultTag, out result); - - if (result > 0) - { - TraceLog.Record("新用户" + username + "注册成功."); - } - else - { - TraceLog.Record(String.Format("注册用户:{0}未成功,原因:{1}", username, this.GetRegResultDesc(result))); - } - - - return result; - } - - public int Register(string username, string password, string email) - { - return Register(username, password, email, null, null, null); - } - - - /// - /// 同步登录 - /// - /// - /// - /// 返回一段Javascript同步代码 - public string SyncLogin(string username, string password) - { - string xmlContent = Request.SendRequest("index.php", "user", "login", "isuid=0&uid=&username=" + username + "&password=" + password).ToString(); - - string xpath = Regex.IsMatch(xmlContent, "item_") ? "/root/item_0" : "/root/item[@id=0]"; - string uid = XML.GetInnerText(xmlContent, xpath); - if (uid.StartsWith("-")) - { - TraceLog.Record("用户:" + username + "同步登录(应用->论坛)未成功"); - return String.Empty; - } - else - { - TraceLog.Record("用户:" + username + "同步登录(应用->论坛)"); - return Request.SendRequest("index.php", "user", "synlogin", "uid=" + uid).ToString(); - } - } - /// - /// 同步退出 - /// - /// - public string SyncLogout() - { - TraceLog.Record("同步退出(应用->论坛)"); - return Request.SendRequest("index.php", "user", "synlogout", "").ToString(); - } - /// - /// 修改用户资料 - /// - /// 用户名 - /// 旧密码 - /// 新密码,如不修改则传空值 - /// 邮箱,如不修改则传空值 - /// - public int Edit(string username, string oldpwd, string newpwd, string email, bool ignorePwd) - { - int result = 0; - int.TryParse(Request.SendRequest("index.php", "user", "edit", "username=" + username + "&oldpw=" + oldpwd + "&newpw=" + newpwd + "&email=" + email + "&ignoreoldpw=" + (ignorePwd ? "1" : "0")).ToString(), out result); - - - TraceLog.Record(String.Format("修改资料:用户{0},结果:{1}.", - username, - this.GetEditResultDesc(result) - )); - - return result; - } - - public string[] GetUser(string username, bool isuid) - { - string xpath; - string[] users = new string[3]; - XmlDocument xd = new XmlDocument(); - - //UCenter 1.5使用item_0,而UCenter1.6则用了item id="0" - bool isOldVersion; - - //获取内容并加载到xml中 - string xmlContent = Request.SendRequest("index.php", "user", "get_user", String.Format("isuid={0}&username={1}", isuid == true ? "1" : "0", username)).ToString(); - xd.LoadXml(xmlContent); - - - - isOldVersion = Regex.IsMatch(xmlContent, "item_"); - - //用户ID - xpath = isOldVersion ? "/root/item_0" : "/root/item[@id=0]"; - users[0] = xd.SelectSingleNode(xpath).InnerText; - - //用户名 - xpath = isOldVersion ? "/root/item_1" : "/root/item[@id=1]"; - users[1] = xd.SelectSingleNode(xpath).InnerText; - - //邮件 - xpath = isOldVersion ? "/root/item_2" : "/root/item[@id=2]"; - users[2] = xd.SelectSingleNode(xpath).InnerText; - - //Log - TraceLog.Record("获取用户:" + username + "(应用->论坛)"); - - return users; - } - - public bool DeleteUser(string uid) - { - int i = 0; - int.TryParse(Request.SendRequest("index.php", "user", "delete", "uid=" + uid).ToString(), out i); - - TraceLog.Record(String.Format("删除用户:{0},{1}(应用->论坛)", uid, i == 1 ? "成功" : "失败")); - - return i == 1; - } - - - /// - /// 获取登陆结果描述 - /// - /// - /// - public string GetLoginResultDesc(int result) - { - switch (result) - { - case -1: return "用户不存在,或者被删除"; - case -2: return "密码错"; - case -3: return "安全提问错"; - default: return "登陆成功"; //(返回结果大于0) - } - } - - /// - /// 获取注册结果描述 - /// - /// - /// - public string GetRegResultDesc(int result) - { - switch (result) - { - case -1: return "用户名不合法"; - case -2: return "包含不允许注册的词语"; - case -3: return "用户名已经存在"; - case -4: return "Email 格式有误"; - case -5: return "Email 不允许注册"; - case -6: return "该 Email 已经被注册"; - default: return "注册成功"; //(返回结果大于0) - } - } - /// - /// 获取编辑结果描述 - /// - /// - /// - public string GetEditResultDesc(int result) - { - switch (result) - { - case 1: return "更新成功"; - case -1: return "旧密码不正确"; - case -4: return "Email 格式有误"; - case -5: return "Email 不允许注册"; - case -6: return "该 Email 已经被注册"; - case -7: return "没有做任何修改"; - case -8: return "该用户受保护无权限更改"; - default: return "未作任何修改"; - } - } - - - public int CheckName(string username) - { - int result = 0; - int.TryParse(Request.SendRequest("index.php", "user", "check_username", "username=" + username).ToString(), out result); - - TraceLog.Record(String.Format("检测用户名:{0},{1}", username, result.ToString())); - return result; - } - - public int CheckEmail(string email) - { - - int result = 0; - int.TryParse(Request.SendRequest("index.php", "user", "check_email", "email=" + email).ToString(), out result); - - TraceLog.Record(String.Format("检测邮箱:{0},{1}", email, result.ToString())); - return result; - } - } - - - /// - /// 用户接口 - /// - public class UCenterApi : IUCenterAPI - { - internal UCenterApi() { } - - public virtual string Edit(string username, string oldpwd, string newpwd, string email, bool ignorePwd) - { - TraceLog.Record("用户:" + username + "资料同步(论坛->应用)"); - return ""; - } - - public virtual void SyncLogin(string username, string password) - { - HttpContext.Current.Response.AppendHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); - TraceLog.Record("用户:" + username + "同步登录(论坛->应用)"); - } - - public virtual void SyncLogout() - { - HttpContext.Current.Response.AppendHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); - TraceLog.Record("同步登出(论坛->应用)"); - } - - public bool DeleteUser(string uids) - { - TraceLog.Record("删除用户:" + uids + "(论坛->应用)"); - return true; - } - - - public string AddFeed() - { - TraceLog.Record("添加收听(论坛->应用)"); - return ""; - } - - public string RenameUser(int uid, string oldUserName, string newUserName) - { - TraceLog.Record(String.Format("用户名重命名:{0}= {1}->{2} (论坛->应用)", uid, oldUserName, newUserName)); - return ""; - } - } - - - /// - /// 追踪日志 - /// - public static class TraceLog - { - /// - /// 记录日志,如日志文件不存在则自动创建日志文件到/logs/uc_log.txt - /// - /// - public static void Record(string content) - { - if (Request.UC_RecordLog) - { - string logFile = AppDomain.CurrentDomain.BaseDirectory + "logs/uc_log.txt"; - using (StreamWriter sw = new StreamWriter(logFile, true)) - { - sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + content); - sw.Flush(); - sw.Dispose(); - } - } - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Cate.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Cate.cs deleted file mode 100644 index 1e5ac03..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Cate.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace J6.DevFw.Toolkit.ThirdApi.ETao -{ - public class Cate - { - /// - /// 商家子定义的类目ID - /// - public int scid { get; set; } - - /// - /// 类目名称 - /// - public string name { get; set; } - - /// - /// 子分类 - /// - public Cate[] child { get; set; } - - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Config.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Config.cs deleted file mode 100644 index 22a5b6c..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Config.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.IO; - -namespace J6.DevFw.Toolkit.ThirdApi.ETao -{ - public class Config - { - /// - /// 是否开启ETao - /// - public static bool Opened = false; - - /// - /// 保存路径 - /// - public const string SavePath = "api/etao/"; - - /// - /// 销售账号 - /// - public static string Seller = "etao_test"; - - /// - /// 域名 - /// - public static string Domain = "http://xxx.com/"; - - /// - /// 接口版本 - /// - public const string Version = "1.0"; - - /// - /// 最后生成时间 - /// - public static DateTime LastBuildTime; - - /// - /// 使用线程数 - /// - public const int Threads = 5; - - public static string PhypicPath; - - static Config() - { - PhypicPath = AppDomain.CurrentDomain.BaseDirectory; - LastBuildTime = DateTime.Now.AddDays(-2); - DirectoryInfo dir = new DirectoryInfo(Config.PhypicPath+Config.SavePath+"items/"); - if (!dir.Exists) - { - Directory.CreateDirectory(dir.FullName).Create(); - } - - } - - /// - /// 设置 - /// - /// - /// - public static void Set(string seller, bool opened) - { - Seller = seller; - Opened = opened; - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Core.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Core.cs deleted file mode 100644 index 62aa3c4..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Core.cs +++ /dev/null @@ -1,387 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text; -using System.Xml; - -namespace J6.DevFw.Toolkit.ThirdApi.ETao -{ - /// - /// 获取产品项 - /// - /// - public delegate IList GetItemsHandler(); - - /// - /// 获取分类项 - /// - /// - public delegate Cate[] GetCatsHandler(); - - - public class Core - { - /// - /// 创建项目 - /// - /// - private static void Generate(Item item) - { - string fileName = String.Format("{0}{1}items/{2}.xml", Config.PhypicPath, Config.SavePath, item.outer_id); - - StringBuilder sb = new StringBuilder(); - IDictionary prolist; - - XmlDocument xd = new XmlDocument(); - - xd.AppendChild(xd.CreateXmlDeclaration("1.0", null, null)); - - XmlNode root = xd.CreateElement("item"); - - Type type = typeof(Item); - PropertyInfo[] pros = type.GetProperties(); - object proValue; - - - foreach (PropertyInfo pro in pros) - { - XmlNode proNode = xd.CreateElement(pro.Name); - proValue = pro.GetValue(item, null); - if (proValue != null) - { - if (!pro.PropertyType.IsValueType && proValue as IDictionary != null) - { - prolist = pro.GetValue(item, null) as IDictionary; - foreach (KeyValuePair entity in prolist) - { - //重复键用:隔开 - XmlNode childProNode = xd.CreateElement(entity.Key.Split(':')[0]); - childProNode.InnerText = entity.Value.ToString().Replace("$DOMAIN", Config.Domain); - proNode.AppendChild(childProNode); - } - } - else - { - proNode.InnerText = proValue.ToString().Replace("$DOMAIN", Config.Domain); - } - } - - root.AppendChild(proNode); - } - xd.AppendChild(root); - xd.Save(fileName); - } - - public static void UploadItem(Item item) - { - Generate(item); - string fileName = String.Format("{0}{1}IncrementIndex.xml", Config.PhypicPath, Config.SavePath); - XmlDocument xd = new XmlDocument(); - if (!File.Exists(fileName)) - { - - XmlNode root = xd.CreateElement("root"); - - Core.AppendNode(xd, root, "version", Config.Version); - Core.AppendNode(xd, root, "modified", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); - Core.AppendNode(xd, root, "seller_id", Config.Seller); - Core.AppendNode(xd, root, "cat_url", String.Format("{0}{1}SellerCats.xml", Config.Domain, Config.SavePath)); - Core.AppendNode(xd, root, "dir", String.Format("{0}{1}items/", Config.Domain, Config.SavePath)); - Core.AppendNode(xd,root,"item_ids",null); - xd.AppendChild(root); - xd.Save(fileName); - } - - //重新加载 - xd.Load(fileName); - XmlNode ids = xd.SelectSingleNode("/root/item_ids"); - - XmlNode modify = xd.SelectSingleNode("/root/modified"); - modify.InnerText = String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now); - - bool isExist=false; - foreach(XmlNode xn in ids.ChildNodes) - { - if (xn.NodeType == XmlNodeType.Element && xn.InnerText==item.outer_id.ToString()) - { - isExist = true; - break; - } - } - - if (!isExist) - { - XmlNode xn = xd.CreateElement("outer_id"); - - XmlAttribute xat = xd.CreateAttribute("action"); - xat.Value = "upload"; - xn.Attributes.Append(xat); - - xn.InnerText = item.outer_id; - ids.AppendChild(xn); - } - - xd.Save(fileName); - - } - - public static void Generate(Cate[] rootCates) - { - string fileName = String.Format("{0}{1}SellerCats.xml", Config.PhypicPath, Config.SavePath); - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - - StringBuilder sb = new StringBuilder(); - Cate[] cates; - - XmlDocument xd = new XmlDocument(); - XmlNode root = xd.CreateElement("root"); - - //分类节点 - XmlNode cateNode; - XmlNode catesNode; - object proValue; - - Core.AppendNode(xd, root, "version", Config.Version); - Core.AppendNode(xd, root, "modified",String.Format("{0:yyyy-MM-dd HH:mm:ss}",DateTime.Now.ToUniversalTime())); - Core.AppendNode(xd, root, "seller_id", Config.Seller); - - catesNode = xd.CreateElement("seller_cats"); - - - - Type type = typeof(Cate); - PropertyInfo[] pros = type.GetProperties(); - - foreach(Cate c in rootCates){ - - cateNode =xd.CreateElement("cat"); - foreach (PropertyInfo pro in pros) - { - proValue = pro.GetValue(c, null); - if (proValue as Cate[] != null) - { - cates = pro.GetValue(c, null) as Cate[]; - if (cates.Length != 0) - { - XmlNode cateNode2 = xd.CreateElement("cats"); - XmlNode cateNode3; - foreach (Cate c2 in cates) - { - cateNode3 = xd.CreateElement("cat"); - foreach (PropertyInfo pro2 in pros) - { - if (pro2.Name != "child") - { - Core.AppendNode(xd, cateNode3, pro2.Name, pro2.GetValue(c, null).ToString()); - } - } - cateNode2.AppendChild(cateNode3); - } - - cateNode.AppendChild(cateNode2); - } - } - else - { - Core.AppendNode(xd, cateNode, pro.Name, proValue.ToString()); - } - } - - catesNode.AppendChild(cateNode); - } - root.AppendChild(catesNode); - xd.AppendChild(root); - xd.Save(fileName); - } - - /// - /// 创建完整索引 - /// - /// - public static void GenerateFullIndex(IList items) - { - XmlDocument xd = new XmlDocument(); - FileInfo file = new FileInfo(String.Format("{0}{1}fullindex.xml", Config.PhypicPath, Config.SavePath)); - if (file.Exists) - { - file.Delete(); - } - - xd.AppendChild(xd.CreateXmlDeclaration("1.0", null, null)); - - XmlNode root = xd.CreateElement("root"); - - Core.AppendNode(xd, root, "version", Config.Version); - Core.AppendNode(xd, root, "modified", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); - Core.AppendNode(xd, root, "seller_id", Config.Seller); - Core.AppendNode(xd, root, "cat_url", String.Format("{0}{1}SellerCats.xml", Config.Domain, Config.SavePath)); - Core.AppendNode(xd, root, "dir", String.Format("{0}{1}items/", Config.Domain, Config.SavePath)); - - XmlNode ids = xd.CreateElement("item_ids"); - - - - - MultiThreadProcess mp = new MultiThreadProcess(Config.Threads, items.Count); - mp.Start>(item => - { - Item itm = item[0]; - - XmlNode xn = xd.CreateElement("outer_id"); - - XmlAttribute xat = xd.CreateAttribute("action"); - xat.Value = "upload"; - xn.Attributes.Append(xat); - - xn.InnerText = itm.outer_id; - ids.AppendChild(xn); - - if (item.Count == 1) - { - UploadItem(itm); - } - else - { - Generate(itm); - } - - item.Remove(itm); - - }, items); - - while (true) - { - if (!mp.IsAlive) - { - root.AppendChild(ids); - xd.AppendChild(root); - xd.Save(file.FullName); - break; - } - } - - } - - /// - /// 删除项目 - /// - /// - public static void DelItem(Item item) - { - string fileName=String.Format("{0}{1}items/{2}.xml", Config.PhypicPath, Config.SavePath, item.outer_id); - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - string fileName2 = String.Format("{0}{1}IncrementIndex.xml", Config.PhypicPath, Config.SavePath); - - XmlDocument xd = new XmlDocument(); - //重新加载 - xd.Load(fileName2); - - XmlNode modify = xd.SelectSingleNode("/root/modified"); - modify.InnerText = String.Format("{0:yyyy-MM-dd HH:mm:ss", DateTime.Now.ToUniversalTime()); - - - XmlNode ids = xd.SelectSingleNode("/root/item_ids"); - - XmlNode xn=null; - foreach (XmlNode _xn in ids.ChildNodes) - { - if (_xn.NodeType == XmlNodeType.Element && _xn.InnerText == item.outer_id.ToString()) - { - xn = _xn; - break; - } - } - - if (xn==null) - { - xn = xd.CreateElement("outer_id"); - - XmlAttribute xat = xd.CreateAttribute("action"); - xat.Value = "delete"; - xn.Attributes.Append(xat); - - xn.InnerText = item.outer_id; - ids.AppendChild(xn); - } - else - { - xn.Attributes["action"].Value = "delete"; - } - - xd.Save(fileName2); - } - - private static XmlNode NewNode(XmlDocument xd, string nodeName, string nodeValue) - { - XmlNode xn = xd.CreateElement(nodeName); - if (nodeValue != null) - { - xn.InnerText = nodeValue; - } - return xn; - } - - private static void AppendNode(XmlDocument xd, XmlNode parentNode, string nodeName, string nodeValue) - { - parentNode.AppendChild(NewNode(xd, nodeName, nodeValue)); - } - - /// - /// ETao监视器 - /// - public static ETaoMoniter Moninter - { - get { return new ETaoMoniter(); } - } - - - /// - /// 开启ETao服务 - /// - public static void StartService(string seller,GetItemsHandler hand,GetCatsHandler hand2) - { - //设置域名 - if (ETao.Config.Domain == "http://xxx.com") - { - ETao.Config.Domain = String.Format("http://{0}/", global::System.Web.HttpContext.Current.Request.Url.Host); - } - - //设置账号 - ETao.Config.Seller = seller; - - //开启 - const int interval = 3600000; //时间间隔(1小时) - - - new global::System.Threading.Thread(() => - { - - while (true) - { - DateTime dt = DateTime.Now; - if ((dt - ETao.Config.LastBuildTime).Days >= 1) - { - ETao.Core.GenerateFullIndex(hand()); - ETao.Core.Generate(hand2()); - - ETao.Config.LastBuildTime = dt; - global::System.Threading.Thread.Sleep(interval * 24); - } - else - { - global::System.Threading.Thread.Sleep(interval); - } - } - - }).Start(); - - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs deleted file mode 100644 index 65de317..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs +++ /dev/null @@ -1,48 +0,0 @@ -namespace J6.DevFw.Toolkit.ThirdApi.ETao -{ - public delegate void ETaoItemHandler(Item item); - - public class ETaoMoniter - { - public static event ETaoItemHandler OnItemUpload; - - internal ETaoMoniter() - { - } - - /// - /// 更新项目 - /// - /// - public void UploadItem(Item item) - { - if (OnItemUpload != null) - { - OnItemUpload(item); - } - } - - - /// - /// 删除项目 - /// - /// - public void DelItem(string itemID) - { - // - //TODO: Code here - // - } - - /// - /// 更新类目文件 - /// - /// - public void RenewCats(Cate[] rootCate) - { - // - //TODO:Cate update - // - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Item.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Item.cs deleted file mode 100644 index 3248aaf..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Item.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System.Collections.Generic; - -namespace J6.DevFw.Toolkit.ThirdApi.ETao -{ - - /// - /// 商品项 - /// - public class Item - { - /// - /// 给合作商家创建的淘宝会员账号 - /// - public string seller_id { get { return Config.Seller; } } - - /// - /// 商家自定义的商品 - /// - public string outer_id { get; set; } - - /// - /// 商品标题,不超过60个字节- - /// - public string title { get; set; } - - /// - /// 商品类型,一口价(fixed 默认)、团购(group) - /// - public string type { get; set; } - - /// - /// 商品是否有货,默认为0,表示无货,1标示有货,必填 - /// - public string available { get; set; } - - /// - /// 商品价格,格式:5.00;单位:元;精确到:分;取值范围:0-100000000 - /// - public string price { get; set; } - - /// - /// 优惠信息 - /// - public IDictionary discount { get; set; } - - /// - /// 商品简描述, 不超过1000个字节 - /// - public string desc { get; set; } - - /// - /// 商品品牌,不超过30个字符 - /// - public string brand { get; set; } - - /// - /// 商品Tag标签,有助于搜索,不超过5个标签(如:阿迪达斯\Adidas) - /// - public string tags { get; set; } - - /// - /// 商品图片的地址,类型:jpg、jpeg、png,不支持gif;最大:500k - /// - public string image { get; set; } - - /// - /// 商品更多辅助图片的地址,类型:jpg、jpeg、png,不支持gif;最大:500k - /// - public IDictionary more_images { get; set; } - - /// - /// 商户自定义类目ID,一个商品可以属于多个类目,半角逗号分隔 - /// - public string scids { get; set; } - - /// - /// 邮费价格,精确到2位小数;单位:元;卖家承担运费邮费即为0 - /// - public float post_fee { get; set; } - - /// - /// SKU属性项、属性值,不同属性项间以分号分隔,不同属性值间以逗号分隔 - /// - public string props { get; set; } - - /// - /// 不填默认不推荐,1/0 - /// - public string showcase { get; set; } - - /// - /// 商品链接绝对地址 - /// - public string href { get; set; } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs deleted file mode 100644 index 76820c0..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; - -/******************************************* -* 文 件 名:MultiThreadProcess.cs -* 文件说明: -* 创 建 人:刘成文 -* 创建日期:2012-11-9 13:56:56 -********************************************/ - -namespace J6.DevFw.Toolkit.ThirdApi.ETao -{ - - /// - /// 多线程处理事件 - /// - /// - /// - public delegate void ThreadProcessHandler(T t); - - /// - /// 多线程处理 - /// - public class MultiThreadProcess - { - /// - /// 线程数量 - /// - private int threadCount; - - /// - /// 线程堆栈,用于轮询线程 - /// - private Stack threadStack; - - /// - /// 线程锁 - /// - private object threadLocker = new object(); - - /// - /// 线程集合 - /// - private Thread[] threads; - - private bool isAlive=true; - - /// - /// 是否活动中 - /// - public bool IsAlive { get { return isAlive; } } - - public MultiThreadProcess(int threads,int processTimes) - { - this.threadCount = threads; - this.threads = new Thread[threads]; - - //初始化线程堆栈 - this.threadStack = new Stack(processTimes); - for (int i = processTimes; i > 0; i--) - { - this.threadStack.Push(i); - } - } - - public void Start(ThreadProcessHandler handler, T t) - { - while (this.isAlive) - { - for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) - { - if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) - { - threads[i] = new Thread(() => - { - lock (this.threadStack) - { - if (this.threadStack.Count > 0) - { - this.threadStack.Pop(); - handler(t); - } - } - }); - - threads[i].Name = String.Format("thread{0}", i.ToString()); - threads[i].Start(); - } - } - - if (this.threadStack.Count == 0) - { - //终止线程 - //for (int i = 0; i < threadCount; i++) - //{ - // if (this.threads[i] != null) - // { - // this.threads[i].Abort(); - // } - //} - do - { - bool hasThreadRunning = false; - for (int i = 0; i < threadCount; i++) - { - if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) - hasThreadRunning = true; - } - if (!hasThreadRunning) - { - this.isAlive = false; - } - - } while (this.isAlive); - - //设置线程任务完成 - this.isAlive = false; - } - } - } - - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayComfireApi.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayComfireApi.cs deleted file mode 100644 index 055575a..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayComfireApi.cs +++ /dev/null @@ -1,285 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Web; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - internal class AlipayComfireApi:IPay - { - public string GetPayFormHtml(Hashtable ht) - { - //商户号 - string partner = ht["alipay_key"] as string; - //密钥 - string key = ht["alipay_secret"] as string; - - - AlipayConfig.Partner = partner;// +"5"; - AlipayConfig.Key = key; - - - decimal product_fee = (decimal)ht["order_fee"]; //商品费用 - decimal transport_fee = decimal.Parse(ht["order_exp_fee"].ToString()); //物流费用 - - string order_desc = ht["order_desc"] as string; - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = ht["order_no"] as string; - string host = ht["usr_host"] as string; - - string showUrl = ht["order_surl"] as string; - - string notify_url =ht.Contains("notify_url")?ht["notify_url"].ToString():PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Guarantee); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url =ht.Contains("return_url")?ht["return_url"].ToString():PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Guarantee); - //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ - - - //卖家支付宝帐户 - string seller_email = ht["seller_account"] as string; - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = ht["order_subject"].ToString(); //parma.desc ?? "支付订单"; - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - //todo - string body = order_desc; - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - - - ReceiveInfo receive=default(ReceiveInfo); - if (ht.ContainsKey("receive")) - { - receive =(ReceiveInfo) ht["receive"]; - } - - - - ////////////////////////////////////////////请求参数//////////////////////////////////////////// - - //支付类型 - string payment_type = "1"; - - //必填 - - //商品数量 - string quantity = "1"; - //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品 - //物流费用 - string logistics_fee = "0.00"; - //必填,即运费 - //物流类型 - string logistics_type = "EXPRESS"; - //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) - //物流支付方式 - string logistics_payment = "SELLER_PAY"; - //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) - //订单描述 - - - - - //////////////////////////////////////////////////////////////////////////////////////////////// - - //把请求参数打包成数组 - SortedDictionary sParaTemp = new SortedDictionary(); - sParaTemp.Add("partner", AlipayConfig.Partner); - sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower()); - sParaTemp.Add("service", "create_partner_trade_by_buyer"); - sParaTemp.Add("payment_type", payment_type); - sParaTemp.Add("notify_url", notify_url); - sParaTemp.Add("return_url", return_url); - sParaTemp.Add("seller_email", seller_email); - sParaTemp.Add("out_trade_no", out_trade_no); - sParaTemp.Add("subject", subject); - sParaTemp.Add("price", total_fee); - sParaTemp.Add("quantity", quantity); - sParaTemp.Add("logistics_fee", logistics_fee); - sParaTemp.Add("logistics_type", logistics_type); - sParaTemp.Add("logistics_payment", logistics_payment); - sParaTemp.Add("body", body); - sParaTemp.Add("show_url", showUrl); - sParaTemp.Add("receive_name", receive.Name); - sParaTemp.Add("receive_address", receive.Address); - sParaTemp.Add("receive_zip", receive.Zip); - sParaTemp.Add("receive_phone", receive.Phone); - sParaTemp.Add("receive_mobile",receive.Mobile); - - - //建立请求 - return Submit.BuildRequest(sParaTemp, "get", "确认"); - - } - - - public PaidHandleResult Return(PayMointor proc) where T : class - { - - SortedDictionary sPara = PayUtil.GetRequestGet(); - var request = HttpContext.Current.Request; - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.QueryString["notify_id"], request.QueryString["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - - //商户订单号 - - string out_trade_no = request.QueryString["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.QueryString["trade_no"]; - - //交易状态 - string trade_status = request.QueryString["trade_status"]; - - proc.Init(out_trade_no); - - - if (request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - return PaidHandleResult.Success; - } - else - { - return PaidHandleResult.Fail; - } - - - } - else//验证失败 - { - return PaidHandleResult.Fail; - } - } - else - { - return PaidHandleResult.Fail; - } - } - - public string AlipayNotify(PayMointor proc)where T:class - { - SortedDictionary sPara =PayUtil.GetRequestPost(); - var request = HttpContext.Current.Request; - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.Form["notify_id"], request.Form["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 - - //商户订单号 - - string out_trade_no = request.Form["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.Form["trade_no"]; - - //交易状态 - string trade_status = request.Form["trade_status"]; - - - proc.Init(out_trade_no); - - - if (request.Form["trade_status"] == "WAIT_BUYER_PAY") - { - proc.AsyncState(PaymentAsyncState.WAIT_BUYER_PAY); - } - else if (request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - - proc.PaidSuccess(); - - //该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS") - {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "TRADE_FINISHED") - {//该判断表示买家已经确认收货,这笔交易完成 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else - { - } - - return "success"; - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else//验证失败 - { - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - } - } - else - { - return "无通知参数"; - } - } - - - public string GetPayRequest(Hashtable hash) - { - return this.GetPayFormHtml(hash); - } - - - public string Notify(PayMointor proc) where T : class - { - return this.AlipayNotify(proc); - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayConfig.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayConfig.cs deleted file mode 100644 index d2e907d..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayConfig.cs +++ /dev/null @@ -1,84 +0,0 @@ -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 类名:Config - /// 功能:基础配置类 - /// 详细:设置帐户有关信息及返回路径 - /// 版本:3.3 - /// 日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// 如何获取安全校验码和合作身份者ID - /// 1.用您的签约支付宝账号登录支付宝网站(www.alipay.com) - /// 2.点击“商家服务”(https://b.alipay.com/order/myOrder.htm) - /// 3.点击“查询合作者身份(PID)”、“查询安全校验码(Key)” - /// - public class AlipayConfig - { - #region 字段 - private static string partner = ""; - private static string key = ""; - private static string input_charset = ""; - private static string sign_type = ""; - #endregion - - static AlipayConfig() - { - //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ - - //合作身份者ID,以2088开头由16位纯数字组成的字符串 - partner = ""; - - //交易安全检验码,由数字和字母组成的32位字符串 - key = ""; - - //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ - - - - //字符编码格式 目前支持 gbk 或 utf-8 - input_charset = "utf-8"; - - //签名方式,选择项:RSA、DSA、MD5 - sign_type = "MD5"; - } - - #region 属性 - /// - /// 获取或设置合作者身份ID - /// - public static string Partner - { - get { return partner; } - set { partner = value; } - } - - /// - /// 获取或设交易安全校验码 - /// - public static string Key - { - get { return key; } - set { key = value; } - } - - /// - /// 获取字符编码格式 - /// - public static string Input_charset - { - get { return input_charset; } - } - - /// - /// 获取签名方式 - /// - public static string Sign_type - { - get { return sign_type; } - } - #endregion - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobile.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobile.cs deleted file mode 100644 index 7fe14ee..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobile.cs +++ /dev/null @@ -1,346 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : AlipayRedirect.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Web; -using System.Xml; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 支付宝即时到帐 - /// - internal class AlipayMobile : IPay - { - public string GetPayRequest(Hashtable hash) - { - - //================================================================================== - //支付宝网关地址 - string GATEWAY_NEW = "http://wappaygw.alipay.com/service/rest.htm?"; - - ////////////////////////////////////////////调用授权接口alipay.wap.trade.create.direct获取授权码token//////////////////////////////////////////// - - //返回格式 - string format = "xml"; - //必填,不需要修改 - - //返回格式 - string v = "2.0"; - //必填,不需要修改 - - //请求号 - string req_id = DateTime.Now.ToString("yyyyMMddHHmmss"); - //必填,须保证每次请求都是唯一 - - - - - //商户号 - string partner = hash["alipay_key"].ToString(); - //密钥 - string key = hash["alipay_secret"].ToString(); - - - AlipayMobileConfig.Partner = partner; - AlipayMobileConfig.Key = key; - - float product_fee = (float)hash["order_fee"]; //商品费用 - float transport_fee = float.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - - - - - - //req_data详细信息 - - //服务器异步通知页面路径 - //需http://格式的完整路径,不允许加?id=123这类自定义参数 - - - //页面跳转同步通知页面路径 - string notify_url = hash.Contains("notify_url") ? hash["notify_url"].ToString() : PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Direct); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url = hash.Contains("return_url") ? hash["return_url"].ToString() : PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Direct); - - //操作中断返回地址 - string merchant_url = return_url; - //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数 - - //卖家支付宝帐户 - string seller_email = hash["seller_account"] as string; - //必填 - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"].ToString(); - string host = hash["usr_host"] as string; - - string showUrl = hash["order_showurl"] as string; - //商户网站订单系统中唯一订单号,必填 - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = hash["order_subject"].ToString(); //parma.desc ?? "支付订单"; - //必填 - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - //必填 - - //请求业务参数详细 - string req_dataToken = "" + notify_url + "" + return_url + "" + seller_email + "" + out_trade_no + "" + subject + "" + total_fee + "" + merchant_url + ""; - //必填 - - //把请求参数打包成数组 - Dictionary sParaTempToken = new Dictionary(); - sParaTempToken.Add("partner", AlipayMobileConfig.Partner); - sParaTempToken.Add("_input_charset", AlipayMobileConfig.Input_charset.ToLower()); - sParaTempToken.Add("sec_id", AlipayMobileConfig.Sign_type.ToUpper()); - sParaTempToken.Add("service", "alipay.wap.trade.create.direct"); - sParaTempToken.Add("format", format); - sParaTempToken.Add("v", v); - sParaTempToken.Add("req_id", req_id); - sParaTempToken.Add("req_data", req_dataToken); - - //建立请求 - string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken); - //URLDECODE返回的信息 - System.Text.Encoding code = System.Text.Encoding.GetEncoding(AlipayMobileConfig.Input_charset); - sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code); - - //解析远程模拟提交后返回的信息 - Dictionary dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken); - - //获取token - string request_token = dicHtmlTextToken["request_token"]; - - ////////////////////////////////////////////根据授权码token调用交易接口alipay.wap.auth.authAndExecute//////////////////////////////////////////// - - - //业务详细 - string req_data = "" + request_token + ""; - //必填 - - //把请求参数打包成数组 - Dictionary sParaTemp = new Dictionary(); - sParaTemp.Add("partner", AlipayMobileConfig.Partner); - sParaTemp.Add("_input_charset", AlipayMobileConfig.Input_charset.ToLower()); - sParaTemp.Add("sec_id", AlipayMobileConfig.Sign_type.ToUpper()); - sParaTemp.Add("service", "alipay.wap.auth.authAndExecute"); - sParaTemp.Add("format", format); - sParaTemp.Add("v", v); - sParaTemp.Add("req_data", req_data); - - //建立请求 - string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认"); - - - return sHtmlText; - } - - /// - /// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - public Dictionary GetRequestGet() - { - int i = 0; - Dictionary sArray = new Dictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - coll = HttpContext.Current.Request.QueryString; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sArray.Add(requestItem[i], HttpContext.Current.Request.QueryString[requestItem[i]]); - } - - return sArray; - } - /// - /// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - public Dictionary GetRequestPost() - { - int i = 0; - Dictionary sArray = new Dictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - coll = HttpContext.Current.Request.Form; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sArray.Add(requestItem[i], HttpContext.Current.Request.Form[requestItem[i]]); - } - - return sArray; - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - var request = HttpContext.Current.Request; - Dictionary sPara = this.GetRequestGet(); - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.VerifyReturn(sPara,request.QueryString["sign"]); - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - string trade_no = request.QueryString["trade_no"]; //支付宝交易号 - string order_no = request.QueryString["out_trade_no"]; //获取订单号 - // string total_fee = request.QueryString["total_fee"]; //获取总金额 - //string subject = request.QueryString["subject"]; //商品名称、订单名称 - // string body = request.QueryString["body"]; //商品描述、订单备注、描述 - // string buyer_email = request.QueryString["buyer_email"]; //买家支付宝账号 - //string trade_status = request.QueryString["trade_status"]; //交易状态 - - //交易状态 - string result = request.QueryString["result"]; - - proc.Init(order_no); - - return PaidHandleResult.Success; - - //打印页面 - // Response.Write("验证成功
                                                                                                                                            "); - // Response.Write("trade_no=" + trade_no); - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - - } - } - - return PaidHandleResult.Fail; - } - - public string Notify(PayMointor proc) where T : class - { - /* - * http://localhost:8080/pay/notify_1_3.html?body=%d6%a7%b8%b6%b6%a9%b5%a5&buyer_email=newmin.net@gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%2Fvwbh3I73%2FBJ%2FCypvvG4k72c8QSXT5yE44%2FMSUK0zqoTBaXxNf4BPOKZI¬ify_time=2013-03-21+11:42:53¬ify_type=trade_status_sync&out_trade_no=20130125033249408&payment_type=1&seller_email=chiaus_im@163.com&seller_id=2088801968591818&subject=%E6%94%AF%E4%BB%98%E8%AE%A2%E5%8D%95&total_fee=0.01&trade_no=2013032154249581&trade_status=TRADE_SUCCESS&sign=af01b9aa0bd11df2a723eb5ef52e9298&sign_type=MD5 - */ - var request = HttpContext.Current.Request; - //商户号 - string partner = AlipayMobileConfig.Partner; - //密钥 - string key = AlipayMobileConfig.Key; - - Dictionary sPara = this.GetRequestPost(); - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.VerifyNotify(sPara, request.Form["sign"]); - - if (verifyResult)//验证成功 - { //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) - // sPara = aliNotify.Decrypt(sPara); - - //XML解析notify_data数据 - try - { - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(sPara["notify_data"]); - //商户订单号 - string out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; - //支付宝交易号 - string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; - //交易状态 - string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText; - - - proc.Init(out_trade_no); - - if (trade_status == "TRADE_FINISHED") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在两种情况下出现 - //1、开通了普通即时到账,买家付款成功后。 - //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 - - - proc.PaidSuccess(); - return "success"; //请不要修改或删除 - } - else if (trade_status == "TRADE_SUCCESS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 - - proc.PaidSuccess(); - - return "success"; //请不要修改或删除 - } - else - { - return trade_status; - } - - } - catch (Exception exc) - { - return exc.Message; - } - - - proc.PaidSuccess(); - - //log.Append("success:" + request.Form["trade_status"]+"\r\n"+order_no+"\r\n"); - return "success"; //请不要修改或删除 - } - } - - - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - - } - } - - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobileConfig.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobileConfig.cs deleted file mode 100644 index beb461c..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobileConfig.cs +++ /dev/null @@ -1,114 +0,0 @@ -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 类名:Config - /// 功能:基础配置类 - /// 详细:设置帐户有关信息及返回路径 - /// 版本:3.3 - /// 日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// 如何获取安全校验码和合作身份者ID - /// 1.用您的签约支付宝账号登录支付宝网站(www.alipay.com) - /// 2.点击“商家服务”(https://b.alipay.com/order/myOrder.htm) - /// 3.点击“查询合作者身份(PID)”、“查询安全校验码(Key)” - /// - public class AlipayMobileConfig - { - #region 字段 - private static string partner = ""; - private static string key = ""; - private static string private_key = ""; - private static string public_key = ""; - private static string input_charset = ""; - private static string sign_type = ""; - #endregion - - static AlipayMobileConfig() - { - //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ - - //合作身份者ID,以2088开头由16位纯数字组成的字符串 - partner = ""; - - //交易安全检验码,由数字和字母组成的32位字符串 - //如果签名方式设置为“MD5”时,请设置该参数 - key = ""; - - //商户的私钥 - //如果签名方式设置为“0001”时,请设置该参数 - private_key = @""; - - //支付宝的公钥 - //如果签名方式设置为“0001”时,请设置该参数 - public_key = @""; - - //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ - - - - //字符编码格式 目前支持 utf-8 - input_charset = "utf-8"; - - //签名方式,选择项:0001(RSA)、MD5 - sign_type = "MD5"; - //无线的产品中,签名方式为rsa时,sign_type需赋值为0001而不是RSA - } - - #region 属性 - /// - /// 获取或设置合作者身份ID - /// - public static string Partner - { - get { return partner; } - set { partner = value; } - } - - /// - /// 获取或设交易安全校验码 - /// - public static string Key - { - get { return key; } - set { key = value; } - } - - /// - /// 获取或设置商户的私钥 - /// - public static string Private_key - { - get { return private_key; } - set { private_key = value; } - } - - /// - /// 获取或设置支付宝的公钥 - /// - public static string Public_key - { - get { return public_key; } - set { public_key = value; } - } - - /// - /// 获取字符编码格式 - /// - public static string Input_charset - { - get { return input_charset; } - } - - /// - /// 获取签名方式 - /// - public static string Sign_type - { - get { return sign_type; } - } - #endregion - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayNormal.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayNormal.cs deleted file mode 100644 index 8776498..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayNormal.cs +++ /dev/null @@ -1,308 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : AlipayNormal.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Web; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 支付宝标准双接口 - /// - internal class AlipayNormal : IPay - { - public string GetPayRequest(Hashtable hash) - { - //商户号 - string partner = hash["alipay_key"] as string; - //密钥 - string key = hash["alipay_secret"] as string; - - - AlipayConfig.Partner = partner;// +"5"; - AlipayConfig.Key = key; - - - float product_fee = (float)hash["order_fee"]; //商品费用 - float transport_fee = float.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string order_desc = hash["order_desc"] as string; - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"] as string; - string host = hash["usr_host"] as string; - - string showUrl = hash["order_showurl"] as string; - - string notify_url =hash.Contains("notify_url")?hash["notify_url"].ToString():PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Normal); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url =hash.Contains("return_url")?hash["return_url"].ToString():PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Normal); - //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ - - - //卖家支付宝帐户 - string seller_email = hash["seller_account"] as string; - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = hash["order_subject"].ToString(); //parma.desc ?? "支付订单"; - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - //todo - string body = order_desc; - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - - - - - ////////////////////////////////////////////请求参数//////////////////////////////////////////// - - //支付类型 - string payment_type = "1"; - - //必填 - - //商品数量 - string quantity = "1"; - //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品 - //物流费用 - string logistics_fee =transport_fee.ToString(); - //必填,即运费 - //物流类型 - string logistics_type = "EXPRESS"; - //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) - //物流支付方式 - string logistics_payment = "SELLER_PAY"; - //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) - //订单描述 - - - //收货人姓名 - string receive_name =hash["receive_name"] as String; - //如:张三 - - //收货人地址 - string receive_address = hash["receive_address"] as String; - //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号 - - //收货人邮编 - string receive_zip = hash["receive_zip"] as String; - //如:123456 - - //收货人电话号码 - string receive_phone = hash["receive_phone"] as String; - //如:0571-88158090 - - //收货人手机号码 - string receive_mobile = hash["receive_mobile"] as String; - //如:13312341234 - - - //////////////////////////////////////////////////////////////////////////////////////////////// - - //把请求参数打包成数组 - SortedDictionary sParaTemp = new SortedDictionary(); - sParaTemp.Add("partner", AlipayConfig.Partner); - sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower()); - sParaTemp.Add("service", "trade_create_by_buyer"); - sParaTemp.Add("payment_type", payment_type); - sParaTemp.Add("notify_url", notify_url); - sParaTemp.Add("return_url", return_url); - sParaTemp.Add("seller_email", seller_email); - sParaTemp.Add("out_trade_no", out_trade_no); - sParaTemp.Add("subject", subject); - sParaTemp.Add("price", total_fee); - sParaTemp.Add("quantity", quantity); - sParaTemp.Add("logistics_fee", logistics_fee); - sParaTemp.Add("logistics_type", logistics_type); - sParaTemp.Add("logistics_payment", logistics_payment); - sParaTemp.Add("body", body); - sParaTemp.Add("show_url", showUrl); - sParaTemp.Add("receive_name", receive_name); - sParaTemp.Add("receive_address", receive_address); - sParaTemp.Add("receive_zip", receive_zip); - sParaTemp.Add("receive_phone", receive_phone); - sParaTemp.Add("receive_mobile", receive_mobile); - - //建立请求 - return Submit.BuildRequest(sParaTemp, "get", "确认"); - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - SortedDictionary sPara = PayUtil.GetRequestGet(); - var request = HttpContext.Current.Request; - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.QueryString["notify_id"], request.QueryString["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - - //商户订单号 - - string out_trade_no = request.QueryString["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.QueryString["trade_no"]; - - //交易状态 - string trade_status = request.QueryString["trade_status"]; - - proc.Init(out_trade_no); - - - if (request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - return PaidHandleResult.Success; - } - else if (request.QueryString["trade_status"] == "TRADE_FINISHED") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - return PaidHandleResult.Success; - } - else - { - return PaidHandleResult.Fail; - } - - - } - else//验证失败 - { - return PaidHandleResult.Fail; - } - } - else - { - return PaidHandleResult.Fail; - } - } - - public string Notify(PayMointor proc) where T : class - { - SortedDictionary sPara = PayUtil.GetRequestPost(); - var request = HttpContext.Current.Request; - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.Form["notify_id"], request.Form["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 - - //商户订单号 - - string out_trade_no = request.Form["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.Form["trade_no"]; - - //交易状态 - string trade_status = request.Form["trade_status"]; - - - proc.Init(out_trade_no); - - - if (request.Form["trade_status"] == "WAIT_BUYER_PAY") - { - - } - else if (request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - - proc.PaidSuccess(); - - //该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS") - {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "TRADE_FINISHED") - {//该判断表示买家已经确认收货,这笔交易完成 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else - { - } - - return "success"; - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else//验证失败 - { - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - } - } - else - { - return "无通知参数"; - } - } - } - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayRedirect.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayRedirect.cs deleted file mode 100644 index 9ca7077..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayRedirect.cs +++ /dev/null @@ -1,276 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : AlipayRedirect.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Web; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 支付宝即时到帐 - /// - internal class AlipayRedirect : IPay - { - public string GetPayRequest(Hashtable hash) - { - //商户号 - string partner = hash["alipay_key"].ToString(); - //密钥 - string key = hash["alipay_secret"].ToString(); - - - AlipayConfig.Partner = partner; - AlipayConfig.Key = key; - - - string bankCode = hash.Contains("bank") ? hash["bank"].ToString() : "DEFAULT"; - - float product_fee = (float)hash["order_fee"]; //商品费用 - float transport_fee = float.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string order_desc = (hash["order_desc"]??"").ToString();; - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"].ToString(); - string host = hash["usr_host"] as string; - - string showUrl = hash["order_showurl"] as string; - - //卖家支付宝帐户 - string seller_email = hash["seller_account"] as string; - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = hash["order_subject"].ToString(); //parma.desc ?? "支付订单"; - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - //todo - string body = order_desc; - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - - - - ////////////////////////////////////////////请求参数//////////////////////////////////////////// - - //支付类型 - string payment_type = "1"; - //必填,不能修改 - //服务器异步通知页面路径 - - - string notify_url =hash.Contains("notify_url")?hash["notify_url"].ToString():PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Direct); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url =hash.Contains("return_url")?hash["return_url"].ToString():PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Direct); - //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ - - - //防钓鱼时间戳 - string anti_phishing_key = ""; - //若要使用请调用类文件submit中的query_timestamp函数 - - //客户端的IP地址 - string exter_invoke_ip = ""; - //非局域网的外网IP地址,如:221.0.0.1 - - - //////////////////////////////////////////////////////////////////////////////////////////////// - - //把请求参数打包成数组 - SortedDictionary sParaTemp = new SortedDictionary(); - sParaTemp.Add("partner", AlipayConfig.Partner); - sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower()); - sParaTemp.Add("service", "create_direct_pay_by_user"); - sParaTemp.Add("payment_type", payment_type); - sParaTemp.Add("notify_url", notify_url); - sParaTemp.Add("return_url", return_url); - sParaTemp.Add("seller_email", seller_email); - sParaTemp.Add("out_trade_no", out_trade_no); - sParaTemp.Add("subject", subject); - sParaTemp.Add("total_fee", total_fee); - sParaTemp.Add("body", body); - sParaTemp.Add("show_url", showUrl); - sParaTemp.Add("anti_phishing_key", anti_phishing_key); - sParaTemp.Add("exter_invoke_ip", exter_invoke_ip); - - - if (bankCode != "DEFAULT") - { - sParaTemp.Add("defaultbank", bankCode); - sParaTemp.Add("payment", "bankPay"); - } - - //建立请求 - string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认"); - - - return sHtmlText; - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - - // http://www.jin-ec.com/mapfre/pay/notify?body=%E8%AE%A2%E5%8D%952013122345312 - // &buyer_email=newmin.net%40gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user - // &is_success=T¬ify_id=RqPnCoPT3K9%252Fvwbh3I75KL02sthKJHtG2dh1Mg5RF5qgJKDY8jd2nu0ChZQAfPMX38xu - // ¬ify_time=2013-12-23+14%3A18%3A53¬ify_type=trade_status_sync&out_trade_no=2013122345312 - //&payment_type=1&seller_email=clientinfo%40roadchina.com.cn&seller_id=2088201937033268 - //&subject=%E6%98%A5%E8%BF%90%E4%BF%9D%E9%9A%9C%E4%BA%A7%E5%93%81&total_fee=0.01 - // &trade_no=2013122303460581&trade_status=TRADE_SUCCESS&sign=c8c01b5ac095540f0a35d4f7f5831956&sign_type=MD5 - // - var request = HttpContext.Current.Request; - SortedDictionary sPara = PayUtil.GetRequestGet(); - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.QueryString["notify_id"], request.QueryString["sign"]); - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - string trade_no = request.QueryString["trade_no"]; //支付宝交易号 - string order_no = request.QueryString["out_trade_no"]; //获取订单号 - string total_fee = request.QueryString["total_fee"]; //获取总金额 - string subject = request.QueryString["subject"]; //商品名称、订单名称 - string body = request.QueryString["body"]; //商品描述、订单备注、描述 - string buyer_email = request.QueryString["buyer_email"]; //买家支付宝账号 - string trade_status = request.QueryString["trade_status"]; //交易状态 - - proc.Init(order_no); - - - if (request.QueryString["trade_status"] == "TRADE_FINISHED" || request.QueryString["trade_status"] == "TRADE_SUCCESS") - { - return PaidHandleResult.Success; - } - - //打印页面 - // Response.Write("验证成功
                                                                                                                                            "); - // Response.Write("trade_no=" + trade_no); - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - - } - } - - return PaidHandleResult.Fail; - } - - public string Notify(PayMointor proc) where T : class - { - /* - * http://localhost:8080/pay/notify_1_3.html?body=%d6%a7%b8%b6%b6%a9%b5%a5&buyer_email=newmin.net@gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%2Fvwbh3I73%2FBJ%2FCypvvG4k72c8QSXT5yE44%2FMSUK0zqoTBaXxNf4BPOKZI¬ify_time=2013-03-21+11:42:53¬ify_type=trade_status_sync&out_trade_no=20130125033249408&payment_type=1&seller_email=chiaus_im@163.com&seller_id=2088801968591818&subject=%E6%94%AF%E4%BB%98%E8%AE%A2%E5%8D%95&total_fee=0.01&trade_no=2013032154249581&trade_status=TRADE_SUCCESS&sign=af01b9aa0bd11df2a723eb5ef52e9298&sign_type=MD5 - */ - var request = HttpContext.Current.Request; - //商户号 - string partner = AlipayConfig.Partner; - //密钥 - string key = AlipayConfig.Key; - - SortedDictionary sPara = PayUtil.GetRequestPost(); - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.Form["notify_id"], request.Form["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 - string trade_no = request.Form["trade_no"]; //支付宝交易号 - string order_no = request.Form["out_trade_no"]; //获取订单号 - string total_fee = request.Form["total_fee"]; //获取总金额 - string subject = request.Form["subject"]; //商品名称、订单名称 - string body = request.Form["body"]; //商品描述、订单备注、描述 - string buyer_email = request.Form["buyer_email"]; //买家支付宝账号 - string trade_status = request.Form["trade_status"]; //交易状态 - - - proc.Init(order_no); - - if (request.Form["trade_status"] == "TRADE_FINISHED") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在两种情况下出现 - //1、开通了普通即时到账,买家付款成功后。 - //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 - - - - } - else if (request.Form["trade_status"] == "TRADE_SUCCESS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 - - - - } - else - { - } - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - proc.PaidSuccess(); - - //log.Append("success:" + request.Form["trade_status"]+"\r\n"+order_no+"\r\n"); - return "success"; //请不要修改或删除 - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else//验证失败 - { - - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - } - } - else - { - //log.Append("无通知参数:" + request.Form["trade_status"] + "\r\n"); - return "无通知参数"; - } - } - } - - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayCore.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayCore.cs deleted file mode 100644 index 989f8bd..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayCore.cs +++ /dev/null @@ -1,134 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using System.Text; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:Core - /// 功能:支付宝接口公用函数类 - /// 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件,不需要修改 - /// 版本:3.3 - /// 修改日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public class Core - { - - public Core() - { - } - - /// - /// 除去数组中的空值和签名参数并以字母a到z的顺序排序 - /// - /// 过滤前的参数组 - /// 过滤后的参数组 - public static Dictionary FilterPara(SortedDictionary dicArrayPre) - { - Dictionary dicArray = new Dictionary(); - foreach (KeyValuePair temp in dicArrayPre) - { - if (temp.Key.ToLower() != "sign" && temp.Key.ToLower() != "sign_type" && temp.Value != "" && temp.Value != null) - { - dicArray.Add(temp.Key, temp.Value); - } - } - - return dicArray; - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - /// - /// 需要拼接的数组 - /// 拼接完成以后的字符串 - public static string CreateLinkString(Dictionary dicArray) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + temp.Value + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen-1,1); - - return prestr.ToString(); - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - /// - /// 需要拼接的数组 - /// 字符编码 - /// 拼接完成以后的字符串 - public static string CreateLinkStringUrlencode(Dictionary dicArray, Encoding code) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + HttpUtility.UrlEncode(temp.Value, code) + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen - 1, 1); - - return prestr.ToString(); - } - - /// - /// 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) - /// - /// 要写入日志里的文本内容 - public static void LogResult(string sWord) - { - string strPath = HttpContext.Current.Server.MapPath("/"); - strPath = strPath +String.Format("{0:yyyyfffff}.txt",DateTime.Now); - StreamWriter fs = new StreamWriter(strPath, false, System.Text.Encoding.Default); - fs.Write(sWord); - fs.Close(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(Stream sFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(sFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(byte[] dataFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(dataFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayNotify.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayNotify.cs deleted file mode 100644 index d752e38..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayNotify.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:Notify - /// 功能:支付宝通知处理类 - /// 详细:处理支付宝各接口通知返回 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// '说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// //////////////////////注意///////////////////////////// - /// 调试通知返回时,可查看或改写log日志的写入TXT里的数据,来检查通知返回是否正常 - /// - public class Notify - { - #region 字段 - - - //支付宝消息验证地址 - private string Https_veryfy_url = "https://mapi.alipay.com/gateway.do?service=notify_verify&"; - #endregion - - - /// - /// 验证消息是否是支付宝发出的合法消息 - /// - /// 通知返回参数数组 - /// 通知验证ID - /// 支付宝生成的签名结果 - /// 验证结果 - public bool Verify(SortedDictionary inputPara, string notify_id, string sign) - { - //获取返回时的签名验证结果 - bool isSign = GetSignVeryfy(inputPara, sign); - //获取是否是支付宝服务器发来的请求的验证结果 - string responseTxt = "true"; - if (notify_id != null && notify_id != "") { responseTxt = GetResponseTxt(notify_id); } - - //写日志记录(若要调试,请取消下面两行注释) - //string sWord = "Partner:"+Config.Partner+"\r\nSecret:"+ Config.Key+"\r\n responseTxt=" + responseTxt + "\n isSign=" + isSign.ToString() + "\n 返回回来的参数:" + GetPreSignStr(inputPara) + "\n "; - //Core.LogResult(sWord); - - //判断responsetTxt是否为true,isSign是否为true - //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 - //isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 - if (responseTxt == "true" && isSign)//验证成功 - { - return true; - } - else//验证失败 - { - return false; - } - } - - /// - /// 获取待签名字符串(调试用) - /// - /// 通知返回参数数组 - /// 待签名字符串 - private string GetPreSignStr(SortedDictionary inputPara) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - return preSignStr; - } - - /// - /// 获取返回时的签名验证结果 - /// - /// 通知返回参数数组 - /// 对比的签名结果 - /// 签名验证结果 - private bool GetSignVeryfy(SortedDictionary inputPara, string sign) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - //获得签名验证结果 - bool isSgin = false; - if (sign != null && sign != "") - { - switch (AlipayConfig.Sign_type) - { - case "MD5": - isSgin = AlipayMD5.Verify(preSignStr, sign, AlipayConfig.Key, AlipayConfig.Input_charset); - break; - default: - break; - } - } - - return isSgin; - } - - /// - /// 获取是否是支付宝服务器发来的请求的验证结果 - /// - /// 通知验证ID - /// 验证结果 - private string GetResponseTxt(string notify_id) - { - string veryfy_url = Https_veryfy_url + "partner=" + AlipayConfig.Partner + "¬ify_id=" + notify_id; - - //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 - string responseTxt = Get_Http(veryfy_url, 120000); - - return responseTxt; - } - - /// - /// 获取远程服务器ATN结果 - /// - /// 指定URL路径地址 - /// 超时时间设置 - /// 服务器ATN结果 - private string Get_Http(string strUrl, int timeout) - { - string strResult; - try - { - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Timeout = timeout; - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - StreamReader sr = new StreamReader(myStream, Encoding.Default); - StringBuilder strBuilder = new StringBuilder(); - while (-1 != sr.Peek()) - { - strBuilder.Append(sr.ReadLine()); - } - - strResult = strBuilder.ToString(); - } - catch (Exception exp) - { - strResult = "错误:" + exp.Message; - } - - return strResult; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipaySubmit.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipaySubmit.cs deleted file mode 100644 index abb33b2..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipaySubmit.cs +++ /dev/null @@ -1,291 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:Submit - /// 功能:支付宝各接口请求提交类 - /// 详细:构造支付宝各接口表单HTML文本,获取远程HTTP数据 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考 - /// - public class Submit - { - #region 字段 - //支付宝网关地址(新) - private static string GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?"; - - #endregion - - - /// - /// 生成请求时的签名 - /// - /// 请求给支付宝的参数数组 - /// 签名结果 - private static string BuildRequestMysign(Dictionary sPara) - { - //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - string prestr = Core.CreateLinkString(sPara); - - //把最终的字符串签名,获得签名结果 - string mysign = ""; - switch (AlipayConfig.Sign_type) - { - case "MD5": - mysign = AlipayMD5.Sign(prestr, AlipayConfig.Key, AlipayConfig.Input_charset); - break; - default: - mysign = ""; - break; - } - - return mysign; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 要请求的参数数组 - private static Dictionary BuildRequestPara(SortedDictionary sParaTemp) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - //签名结果 - string mysign = ""; - - //过滤签名参数数组 - sPara = Core.FilterPara(sParaTemp); - - //获得签名结果 - mysign = BuildRequestMysign(sPara); - - //签名结果与签名方式加入请求提交参数组中 - sPara.Add("sign", mysign); - sPara.Add("sign_type", AlipayConfig.Sign_type); - - return sPara; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 字符编码 - /// 要请求的参数数组字符串 - private static string BuildRequestParaToString(SortedDictionary sParaTemp, Encoding code) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - sPara = BuildRequestPara(sParaTemp); - - //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - string strRequestData = Core.CreateLinkStringUrlencode(sPara, code); - - return strRequestData; - } - - /// - /// 建立请求,以表单HTML形式构造(默认) - /// - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 确认按钮显示文字 - /// 提交表单HTML文本 - public static string BuildRequest(SortedDictionary sParaTemp, string strMethod, string strButtonValue) - { - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - StringBuilder sbHtml = new StringBuilder(); - - sbHtml.Append("
                                                                                                                                            "); - - foreach (KeyValuePair temp in dicPara) - { - sbHtml.Append(""); - } - - //submit按钮控件请不要含有name属性 - sbHtml.Append(""); - - sbHtml.Append(""); - - return sbHtml.ToString(); - } - - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果 - /// - /// 请求参数数组 - /// 支付宝处理结果 - public static string BuildRequest(SortedDictionary sParaTemp) - { - Encoding code = Encoding.GetEncoding(AlipayConfig.Input_charset); - - //待请求参数数组字符串 - string strRequestData = BuildRequestParaToString(sParaTemp,code); - - //把数组转换成流中所需字节数组类型 - byte[] bytesRequestData = code.GetBytes(strRequestData); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayConfig.Input_charset; - - //请求远程HTTP - string strResult = ""; - try - { - //设置HttpWebRequest基本信息 - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Method = "post"; - myReq.ContentType = "application/x-www-form-urlencoded"; - - //填充POST数据 - myReq.ContentLength = bytesRequestData.Length; - Stream requestStream = myReq.GetRequestStream(); - requestStream.Write(bytesRequestData, 0, bytesRequestData.Length); - requestStream.Close(); - - //发送POST数据请求服务器 - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - - //获取服务器返回信息 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - - //释放 - myStream.Close(); - - strResult = responseData.ToString(); - } - catch (Exception exp) - { - strResult = "报错:"+exp.Message; - } - - return strResult; - } - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能 - /// - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 文件绝对路径 - /// 文件数据 - /// 文件内容类型 - /// 文件长度 - /// 支付宝处理结果 - public static string BuildRequest(SortedDictionary sParaTemp, string strMethod, string fileName, byte[] data, string contentType, int lengthFile) - { - - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayConfig.Input_charset; - - //设置HttpWebRequest基本信息 - HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl); - //设置请求方式:get、post - request.Method = strMethod; - //设置boundaryValue - string boundaryValue = DateTime.Now.Ticks.ToString("x"); - string boundary = "--" + boundaryValue; - request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue; - //设置KeepAlive - request.KeepAlive = true; - //设置请求数据,拼接成字符串 - StringBuilder sbHtml = new StringBuilder(); - foreach (KeyValuePair key in dicPara) - { - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"" + key.Key + "\"\r\n\r\n" + key.Value + "\r\n"); - } - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"withhold_file\"; filename=\""); - sbHtml.Append(fileName); - sbHtml.Append("\"\r\nContent-Type: " + contentType + "\r\n\r\n"); - string postHeader = sbHtml.ToString(); - //将请求数据字符串类型根据编码格式转换成字节流 - Encoding code = Encoding.GetEncoding(AlipayConfig.Input_charset); - byte[] postHeaderBytes = code.GetBytes(postHeader); - byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n"); - //设置长度 - long length = postHeaderBytes.Length + lengthFile + boundayBytes.Length; - request.ContentLength = length; - - //请求远程HTTP - Stream requestStream = request.GetRequestStream(); - Stream myStream; - try - { - //发送数据请求服务器 - requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); - requestStream.Write(data, 0, lengthFile); - requestStream.Write(boundayBytes, 0, boundayBytes.Length); - HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); - myStream = HttpWResp.GetResponseStream(); - } - catch (WebException e) - { - return e.ToString(); - } - finally - { - if (requestStream != null) - { - requestStream.Close(); - } - } - - //读取支付宝返回处理结果 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - myStream.Close(); - return responseData.ToString(); - } - - /// - /// 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 - /// 注意:远程解析XML出错,与IIS服务器配置有关 - /// - /// 时间戳字符串 - public static string Query_timestamp() - { - string url = GATEWAY_NEW + "service=query_timestamp&partner=" + AlipayConfig.Partner; - string encrypt_key = ""; - - XmlTextReader Reader = new XmlTextReader(url); - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.Load(Reader); - - encrypt_key = xmlDoc.SelectSingleNode("/alipay/response/timestamp/encrypt_key").InnerText; - - return encrypt_key; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/MD5.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/MD5.cs deleted file mode 100644 index 45875db..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/MD5.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Security.Cryptography; -using System.Text; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:MD5 - /// 功能:MD5加密 - /// 版本:3.3 - /// 修改日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public sealed class AlipayMD5 - { - public AlipayMD5() - { - // - // TODO: 在此处添加构造函数逻辑 - // - } - - /// - /// 签名字符串 - /// - /// 需要签名的字符串 - /// 密钥 - /// 编码格式 - /// 签名结果 - public static string Sign(string prestr, string key, string _input_charset) - { - StringBuilder sb = new StringBuilder(32); - - prestr = prestr + key; - - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(prestr)); - for (int i = 0; i < t.Length; i++) - { - sb.Append(t[i].ToString("x").PadLeft(2, '0')); - } - - return sb.ToString(); - } - - /// - /// 验证签名 - /// - /// 需要签名的字符串 - /// 签名结果 - /// 密钥 - /// 编码格式 - /// 验证结果 - public static bool Verify(string prestr, string sign, string key, string _input_charset) - { - string mysign = Sign(prestr, key, _input_charset); - // Core.LogResult(mysign+"/"+sign+"/"+_input_charset); - return String.Compare(mysign,sign,true)==0; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayCore.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayCore.cs deleted file mode 100644 index a43f59f..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayCore.cs +++ /dev/null @@ -1,147 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using System.Text; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:Core - /// 功能:支付宝接口公用函数类 - /// 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件,不需要修改 - /// 版本:3.3 - /// 修改日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public class Core - { - - public Core() - { - } - - /// - /// 除去数组中的空值和签名参数 - /// - /// 过滤前的参数组 - /// 过滤后的参数组 - public static Dictionary FilterPara(Dictionary dicArrayPre) - { - Dictionary dicArray = new Dictionary(); - foreach (KeyValuePair temp in dicArrayPre) - { - if (temp.Key.ToLower() != "sign" && temp.Key.ToLower() != "sign_type" && temp.Value != "" && temp.Value != null) - { - dicArray.Add(temp.Key, temp.Value); - } - } - - return dicArray; - } - - /// - /// 根据字母a到z的顺序把参数排序 - /// - /// 排序前的参数组 - /// 排序后的参数组 - public static Dictionary SortPara(Dictionary dicArrayPre) - { - SortedDictionary dicTemp = new SortedDictionary(dicArrayPre); - Dictionary dicArray = new Dictionary(dicTemp); - - return dicArray; - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - /// - /// 需要拼接的数组 - /// 拼接完成以后的字符串 - public static string CreateLinkString(Dictionary dicArray) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + temp.Value + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen-1,1); - - return prestr.ToString(); - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - /// - /// 需要拼接的数组 - /// 字符编码 - /// 拼接完成以后的字符串 - public static string CreateLinkStringUrlencode(Dictionary dicArray, Encoding code) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + HttpUtility.UrlEncode(temp.Value, code) + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen - 1, 1); - - return prestr.ToString(); - } - - /// - /// 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) - /// - /// 要写入日志里的文本内容 - public static void LogResult(string sWord) - { - string strPath = HttpContext.Current.Server.MapPath("/"); - strPath = strPath +String.Format("{0:yyyyfffff}.txt",DateTime.Now); - StreamWriter fs = new StreamWriter(strPath, false, System.Text.Encoding.Default); - fs.Write(sWord); - fs.Close(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(Stream sFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(sFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(byte[] dataFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(dataFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayNotify.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayNotify.cs deleted file mode 100644 index 7207597..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayNotify.cs +++ /dev/null @@ -1,262 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:Notify - /// 功能:支付宝通知处理类 - /// 详细:处理支付宝各接口通知返回 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// '说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// //////////////////////注意///////////////////////////// - /// 调试通知返回时,可查看或改写log日志的写入TXT里的数据,来检查通知返回是否正常 - /// - public class Notify - { - #region 字段 - - //支付宝消息验证地址 - private string Https_veryfy_url = "https://mapi.alipay.com/gateway.do?service=notify_verify&"; - #endregion - - - - /// - /// 验证消息是否是支付宝发出的合法消息,验证callback - /// - /// 通知返回参数数组 - /// 支付宝生成的签名结果 - /// 验证结果 - public bool VerifyReturn(Dictionary inputPara, string sign) - { - //获取返回时的签名验证结果 - bool isSign = GetSignVeryfy(inputPara, sign,true); - - //写日志记录(若要调试,请取消下面两行注释) - // string sWord = "patern:"+Config.Partner+"\r\n key:"+Config.Key+"\r\n"+"isSign="+ isSign.ToString() + "\n 返回回来的参数:" + GetPreSignStr(inputPara) + "\n "; - // Core.LogResult(sWord); - - //判断isSign是否为true - //isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 - if (isSign)//验证成功 - { - return true; - } - else//验证失败 - { - return false; - } - } - - /// - /// 验证消息是否是支付宝发出的合法消息,验证服务器异步通知 - /// - /// 通知返回参数数组 - /// 支付宝生成的签名结果 - /// 验证结果 - public bool VerifyNotify(Dictionary inputPara, string sign) - { - //解密 - if (AlipayMobileConfig.Sign_type == "0001") - { - inputPara = Decrypt(inputPara); - } - - //获取是否是支付宝服务器发来的请求的验证结果 - string responseTxt = "true"; - try - { - //XML解析notify_data数据,获取notify_id - string notify_id = ""; - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(inputPara["notify_data"]); - notify_id = xmlDoc.SelectSingleNode("/notify/notify_id").InnerText; - - if (notify_id != "") { responseTxt = GetResponseTxt(notify_id); } - } - catch(Exception e) - { - responseTxt = e.ToString(); - } - - //获取返回时的签名验证结果 - bool isSign = GetSignVeryfy(inputPara, sign, false); - - //写日志记录(若要调试,请取消下面两行注释) - //string sWord = "responseTxt=" + responseTxt + "\n isSign=" + isSign.ToString() + "\n 返回回来的参数:" + GetPreSignStr(inputPara) + "\n "; - //Core.LogResult(sWord); - - //判断responsetTxt是否为true,isSign是否为true - //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 - //isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 - if (responseTxt == "true" && isSign)//验证成功 - { - return true; - } - else//验证失败 - { - return false; - } - } - - /// - /// 获取待签名字符串(调试用) - /// - /// 通知返回参数数组 - /// 待签名字符串 - public string GetPreSignStr(Dictionary inputPara) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - //根据字母a到z的顺序把参数排序 - sPara = Core.SortPara(sPara); - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - return preSignStr; - } - - /// - /// 解密 - /// - /// 要解密数据 - /// 解密后结果 - public Dictionary Decrypt(Dictionary inputPara) - { - try - { - inputPara["notify_data"] = RSAFromPkcs8.decryptData(inputPara["notify_data"], AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - } - catch (Exception e) { } - - return inputPara; - } - - /// - /// 异步通知时,对参数做固定排序 - /// - /// 排序前的参数组 - /// 排序后的参数组 - private Dictionary SortNotifyPara(Dictionary dicArrayPre) - { - Dictionary sPara = new Dictionary(); - sPara.Add("service", dicArrayPre["service"]); - sPara.Add("v", dicArrayPre["v"]); - sPara.Add("sec_id", dicArrayPre["sec_id"]); - sPara.Add("notify_data", dicArrayPre["notify_data"]); - - return sPara; - } - - /// - /// 获取返回时的签名验证结果 - /// - /// 通知返回参数数组 - /// 对比的签名结果 - /// 是否对待签名数组排序 - /// 签名验证结果 - private bool GetSignVeryfy(Dictionary inputPara, string sign,bool isSort) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - if (isSort) - { - //根据字母a到z的顺序把参数排序 - sPara = Core.SortPara(sPara); - } - else - { - sPara = SortNotifyPara(sPara); - } - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - //获得签名验证结果 - bool isSgin = false; - if (sign != null && sign != "") - { - switch (AlipayMobileConfig.Sign_type) - { - case "MD5": - isSgin = AlipayMD5.Verify(preSignStr, sign, AlipayMobileConfig.Key, AlipayMobileConfig.Input_charset); - break; - case "RSA": - isSgin = RSAFromPkcs8.verify(preSignStr, sign, AlipayMobileConfig.Public_key, AlipayMobileConfig.Input_charset); - break; - case "0001": - isSgin = RSAFromPkcs8.verify(preSignStr, sign, AlipayMobileConfig.Public_key, AlipayMobileConfig.Input_charset); - break; - default: - break; - } - } - - return isSgin; - } - - /// - /// 获取是否是支付宝服务器发来的请求的验证结果 - /// - /// 通知验证ID - /// 验证结果 - private string GetResponseTxt(string notify_id) - { - string veryfy_url = Https_veryfy_url + "partner=" + AlipayMobileConfig.Partner + "¬ify_id=" + notify_id; - - //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 - string responseTxt = Get_Http(veryfy_url, 120000); - - return responseTxt; - } - - /// - /// 获取远程服务器ATN结果 - /// - /// 指定URL路径地址 - /// 超时时间设置 - /// 服务器ATN结果 - private string Get_Http(string strUrl, int timeout) - { - string strResult; - try - { - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Timeout = timeout; - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - StreamReader sr = new StreamReader(myStream, Encoding.Default); - StringBuilder strBuilder = new StringBuilder(); - while (-1 != sr.Peek()) - { - strBuilder.Append(sr.ReadLine()); - } - - strResult = strBuilder.ToString(); - } - catch (Exception exp) - { - strResult = "错误:" + exp.Message; - } - - return strResult; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipaySubmit.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipaySubmit.cs deleted file mode 100644 index b720cf0..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipaySubmit.cs +++ /dev/null @@ -1,356 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:Submit - /// 功能:支付宝各接口请求提交类 - /// 详细:构造支付宝各接口表单HTML文本,获取远程HTTP数据 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考 - /// - public class Submit - { - /// - /// 生成请求时的签名 - /// - /// 请求给支付宝的参数数组 - /// 签名结果 - private static string BuildRequestMysign(Dictionary sPara) - { - //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - string prestr = Core.CreateLinkString(sPara); - - //把最终的字符串签名,获得签名结果 - string mysign = ""; - switch (AlipayMobileConfig.Sign_type) - { - case "MD5": - mysign = AlipayMD5.Sign(prestr, AlipayMobileConfig.Key, AlipayMobileConfig.Input_charset); - break; - case "RSA": - mysign = RSAFromPkcs8.sign(prestr, AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - break; - case "0001": - mysign = RSAFromPkcs8.sign(prestr, AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - break; - default: - mysign = ""; - break; - } - - return mysign; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 要请求的参数数组 - private static Dictionary BuildRequestPara(Dictionary sParaTemp) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - //签名结果 - string mysign = ""; - - //过滤签名参数数组 - sPara = Core.FilterPara(sParaTemp); - - //根据字母a到z的顺序把参数排序 - sPara = Core.SortPara(sPara); - - //获得签名结果 - mysign = BuildRequestMysign(sPara); - - //签名结果与签名方式加入请求提交参数组中 - sPara.Add("sign", mysign); - if (sPara["service"] != "alipay.wap.trade.create.direct" && sPara["service"] != "alipay.wap.auth.authAndExecute") - { - sPara.Add("sign_type", AlipayMobileConfig.Sign_type); - } - - return sPara; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 字符编码 - /// 要请求的参数数组字符串 - private static string BuildRequestParaToString(Dictionary sParaTemp, Encoding code) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - sPara = BuildRequestPara(sParaTemp); - - //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - string strRequestData = Core.CreateLinkStringUrlencode(sPara, code); - - return strRequestData; - } - - /// - /// 建立请求,以表单HTML形式构造(默认) - /// - /// 支付宝网关地址 - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 确认按钮显示文字 - /// 提交表单HTML文本 - public static string BuildRequest(string GATEWAY_NEW, Dictionary sParaTemp, string strMethod, string strButtonValue) - { - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - StringBuilder sbHtml = new StringBuilder(); - - sbHtml.Append("
                                                                                                                                            "); - - foreach (KeyValuePair temp in dicPara) - { - sbHtml.Append(""); - } - - //submit按钮控件请不要含有name属性 - sbHtml.Append(""); - - sbHtml.Append(""); - - return sbHtml.ToString(); - } - - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果 - /// - /// 支付宝网关地址 - /// 请求参数数组 - /// 支付宝处理结果 - public static string BuildRequest(string GATEWAY_NEW, Dictionary sParaTemp) - { - Encoding code = Encoding.GetEncoding(AlipayMobileConfig.Input_charset); - - //待请求参数数组字符串 - string strRequestData = BuildRequestParaToString(sParaTemp,code); - - //把数组转换成流中所需字节数组类型 - byte[] bytesRequestData = code.GetBytes(strRequestData); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayMobileConfig.Input_charset; - - //请求远程HTTP - string strResult = ""; - try - { - //设置HttpWebRequest基本信息 - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Method = "post"; - myReq.ContentType = "application/x-www-form-urlencoded"; - - //填充POST数据 - myReq.ContentLength = bytesRequestData.Length; - Stream requestStream = myReq.GetRequestStream(); - requestStream.Write(bytesRequestData, 0, bytesRequestData.Length); - requestStream.Close(); - - //发送POST数据请求服务器 - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - - //获取服务器返回信息 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - - //释放 - myStream.Close(); - - strResult = responseData.ToString(); - } - catch (Exception exp) - { - strResult = "报错:"+exp.Message; - } - - return strResult; - } - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能 - /// - /// 支付宝网关地址 - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 文件绝对路径 - /// 文件数据 - /// 文件内容类型 - /// 文件长度 - /// 支付宝处理结果 - public static string BuildRequest(string GATEWAY_NEW, Dictionary sParaTemp, string strMethod, string fileName, byte[] data, string contentType, int lengthFile) - { - - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayMobileConfig.Input_charset; - - //设置HttpWebRequest基本信息 - HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl); - //设置请求方式:get、post - request.Method = strMethod; - //设置boundaryValue - string boundaryValue = DateTime.Now.Ticks.ToString("x"); - string boundary = "--" + boundaryValue; - request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue; - //设置KeepAlive - request.KeepAlive = true; - //设置请求数据,拼接成字符串 - StringBuilder sbHtml = new StringBuilder(); - foreach (KeyValuePair key in dicPara) - { - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"" + key.Key + "\"\r\n\r\n" + key.Value + "\r\n"); - } - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"withhold_file\"; filename=\""); - sbHtml.Append(fileName); - sbHtml.Append("\"\r\nContent-Type: " + contentType + "\r\n\r\n"); - string postHeader = sbHtml.ToString(); - //将请求数据字符串类型根据编码格式转换成字节流 - Encoding code = Encoding.GetEncoding(AlipayMobileConfig.Input_charset); - byte[] postHeaderBytes = code.GetBytes(postHeader); - byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n"); - //设置长度 - long length = postHeaderBytes.Length + lengthFile + boundayBytes.Length; - request.ContentLength = length; - - //请求远程HTTP - Stream requestStream = request.GetRequestStream(); - Stream myStream; - try - { - //发送数据请求服务器 - requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); - requestStream.Write(data, 0, lengthFile); - requestStream.Write(boundayBytes, 0, boundayBytes.Length); - HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); - myStream = HttpWResp.GetResponseStream(); - } - catch (WebException e) - { - return e.ToString(); - } - finally - { - if (requestStream != null) - { - requestStream.Close(); - } - } - - //读取支付宝返回处理结果 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - myStream.Close(); - return responseData.ToString(); - } - - /// - /// 解析远程模拟提交后返回的信息 - /// - /// 要解析的字符串 - /// 解析结果 - public static Dictionary ParseResponse(string strText) - { - //以“&”字符切割字符串 - string[] strSplitText = strText.Split('&'); - //把切割后的字符串数组变成变量与数值组合的字典数组 - Dictionary dicText = new Dictionary(); - for (int i = 0; i < strSplitText.Length; i++) - { - //获得第一个=字符的位置 - int nPos = strSplitText[i].IndexOf('='); - //获得字符串长度 - int nLen = strSplitText[i].Length; - //获得变量名 - string strKey = strSplitText[i].Substring(0,nPos); - //获得数值 - string strValue = strSplitText[i].Substring(nPos+1,nLen-nPos-1); - //放入字典类数组中 - dicText.Add(strKey, strValue); - } - - if(!dicText.ContainsKey("res_data")) - { - throw new Exception(strText); - } - - if (dicText["res_data"] != null) - { - //解析加密部分字符串(RSA与MD5区别仅此一句) - if (AlipayMobileConfig.Sign_type == "0001") - { - dicText["res_data"] = RSAFromPkcs8.decryptData(dicText["res_data"], AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - } - - //token从res_data中解析出来(也就是说res_data中已经包含token的内容) - XmlDocument xmlDoc = new XmlDocument(); - try - { - xmlDoc.LoadXml(dicText["res_data"]); - string strRequest_token = xmlDoc.SelectSingleNode("/direct_trade_create_res/request_token").InnerText; - dicText.Add("request_token", strRequest_token); - } - catch (Exception exp) - { - dicText.Add("request_token", exp.ToString()); - } - } - - return dicText; - } - - /// - /// 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 - /// 注意:远程解析XML出错,与IIS服务器配置有关 - /// - /// 时间戳字符串 - public static string Query_timestamp() - { - string GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?"; - string url = GATEWAY_NEW + "service=query_timestamp&partner=" + AlipayMobileConfig.Partner + "&_input_charset=" + AlipayMobileConfig.Input_charset; - string encrypt_key = ""; - - XmlTextReader Reader = new XmlTextReader(url); - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.Load(Reader); - - encrypt_key = xmlDoc.SelectSingleNode("/alipay/response/timestamp/encrypt_key").InnerText; - - return encrypt_key; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/RSA.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/RSA.cs deleted file mode 100644 index e31a485..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/RSA.cs +++ /dev/null @@ -1,383 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using System.Text; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:RSAFromPkcs8 - /// 功能:RSA解密、签名、验签 - /// 详细:该类对Java生成的密钥进行解密和签名以及验签专用类,不需要修改 - /// 版本:2.0 - /// 修改日期:2011-05-10 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public sealed class RSAFromPkcs8 - { - /// - /// 签名 - /// - /// 需要签名的内容 - /// 私钥 - /// 编码格式 - /// - public static string sign(string content, string privateKey, string input_charset) - { - Encoding code = Encoding.GetEncoding(input_charset); - byte[] Data = code.GetBytes(content); - RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey); - SHA1 sh = new SHA1CryptoServiceProvider(); - byte[] signData = rsa.SignData(Data, sh); - return Convert.ToBase64String(signData); - } - - /// - /// 验证签名 - /// - /// 需要验证的内容 - /// 签名结果 - /// 公钥 - /// 编码格式 - /// - public static bool verify(string content, string signedString, string publicKey, string input_charset) - { - bool result = false; - - Encoding code = Encoding.GetEncoding(input_charset); - byte[] Data = code.GetBytes(content); - byte[] data = Convert.FromBase64String(signedString); - RSAParameters paraPub = ConvertFromPublicKey(publicKey); - RSACryptoServiceProvider rsaPub = new RSACryptoServiceProvider(); - rsaPub.ImportParameters(paraPub); - - SHA1 sh = new SHA1CryptoServiceProvider(); - result = rsaPub.VerifyData(Data, sh, data); - return result; - } - - /// - /// 用RSA解密 - /// - /// 待解密字符串 - /// 私钥 - /// 编码格式 - /// 解密结果 - public static string decryptData(string resData, string privateKey, string input_charset) - { - byte[] DataToDecrypt = Convert.FromBase64String(resData); - List result = new List(); - - for (int j = 0; j < DataToDecrypt.Length / 128; j++) - { - byte[] buf = new byte[128]; - for (int i = 0; i < 128; i++) - { - buf[i] = DataToDecrypt[i + 128 * j]; - } - result.AddRange(decrypt(buf, privateKey, input_charset)); - } - byte[] source = result.ToArray(); - char[] asciiChars = new char[Encoding.GetEncoding(input_charset).GetCharCount(source, 0, source.Length)]; - Encoding.GetEncoding(input_charset).GetChars(source, 0, source.Length, asciiChars, 0); - return new string(asciiChars); - } - - private static byte[] decrypt(byte[] data, string privateKey, string input_charset) - { - RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey); - SHA1 sh = new SHA1CryptoServiceProvider(); - return rsa.Decrypt(data, false); - } - - /// - /// 解析java生成的pem文件私钥 - /// - /// - /// - private static RSACryptoServiceProvider DecodePemPrivateKey(String pemstr) - { - byte[] pkcs8privatekey; - pkcs8privatekey = Convert.FromBase64String(pemstr); - if (pkcs8privatekey != null) - { - - RSACryptoServiceProvider rsa = DecodePrivateKeyInfo(pkcs8privatekey); - return rsa; - } - else - return null; - } - - private static RSACryptoServiceProvider DecodePrivateKeyInfo(byte[] pkcs8) - { - - byte[] SeqOID = { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 }; - byte[] seq = new byte[15]; - - MemoryStream mem = new MemoryStream(pkcs8); - int lenstream = (int)mem.Length; - BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading - byte bt = 0; - ushort twobytes = 0; - - try - { - - twobytes = binr.ReadUInt16(); - if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81) - binr.ReadByte(); //advance 1 byte - else if (twobytes == 0x8230) - binr.ReadInt16(); //advance 2 bytes - else - return null; - - - bt = binr.ReadByte(); - if (bt != 0x02) - return null; - - twobytes = binr.ReadUInt16(); - - if (twobytes != 0x0001) - return null; - - seq = binr.ReadBytes(15); //read the Sequence OID - if (!CompareBytearrays(seq, SeqOID)) //make sure Sequence for OID is correct - return null; - - bt = binr.ReadByte(); - if (bt != 0x04) //expect an Octet string - return null; - - bt = binr.ReadByte(); //read next byte, or next 2 bytes is 0x81 or 0x82; otherwise bt is the byte count - if (bt == 0x81) - binr.ReadByte(); - else - if (bt == 0x82) - binr.ReadUInt16(); - //------ at this stage, the remaining sequence should be the RSA private key - - byte[] rsaprivkey = binr.ReadBytes((int)(lenstream - mem.Position)); - RSACryptoServiceProvider rsacsp = DecodeRSAPrivateKey(rsaprivkey); - return rsacsp; - } - - catch (Exception) - { - return null; - } - - finally { binr.Close(); } - - } - - - private static bool CompareBytearrays(byte[] a, byte[] b) - { - if (a.Length != b.Length) - return false; - int i = 0; - foreach (byte c in a) - { - if (c != b[i]) - return false; - i++; - } - return true; - } - - private static RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey) - { - byte[] MODULUS, E, D, P, Q, DP, DQ, IQ; - - // --------- Set up stream to decode the asn.1 encoded RSA private key ------ - MemoryStream mem = new MemoryStream(privkey); - BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading - byte bt = 0; - ushort twobytes = 0; - int elems = 0; - try - { - twobytes = binr.ReadUInt16(); - if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81) - binr.ReadByte(); //advance 1 byte - else if (twobytes == 0x8230) - binr.ReadInt16(); //advance 2 bytes - else - return null; - - twobytes = binr.ReadUInt16(); - if (twobytes != 0x0102) //version number - return null; - bt = binr.ReadByte(); - if (bt != 0x00) - return null; - - - //------ all private key components are Integer sequences ---- - elems = GetIntegerSize(binr); - MODULUS = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - E = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - D = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - P = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - Q = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - DP = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - DQ = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - IQ = binr.ReadBytes(elems); - - // ------- create RSACryptoServiceProvider instance and initialize with public key ----- - RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); - RSAParameters RSAparams = new RSAParameters(); - RSAparams.Modulus = MODULUS; - RSAparams.Exponent = E; - RSAparams.D = D; - RSAparams.P = P; - RSAparams.Q = Q; - RSAparams.DP = DP; - RSAparams.DQ = DQ; - RSAparams.InverseQ = IQ; - RSA.ImportParameters(RSAparams); - return RSA; - } - catch (Exception) - { - return null; - } - finally { binr.Close(); } - } - - private static int GetIntegerSize(BinaryReader binr) - { - byte bt = 0; - byte lowbyte = 0x00; - byte highbyte = 0x00; - int count = 0; - bt = binr.ReadByte(); - if (bt != 0x02) //expect integer - return 0; - bt = binr.ReadByte(); - - if (bt == 0x81) - count = binr.ReadByte(); // data size in next byte - else - if (bt == 0x82) - { - highbyte = binr.ReadByte(); // data size in next 2 bytes - lowbyte = binr.ReadByte(); - byte[] modint = { lowbyte, highbyte, 0x00, 0x00 }; - count = BitConverter.ToInt32(modint, 0); - } - else - { - count = bt; // we already have the data size - } - - - - while (binr.ReadByte() == 0x00) - { //remove high order zeros in data - count -= 1; - } - binr.BaseStream.Seek(-1, SeekOrigin.Current); //last ReadByte wasn't a removed zero, so back up a byte - return count; - } - - #region 解析.net 生成的Pem - private static RSAParameters ConvertFromPublicKey(string pemFileConent) - { - - byte[] keyData = Convert.FromBase64String(pemFileConent); - if (keyData.Length < 162) - { - throw new ArgumentException("pem file content is incorrect."); - } - byte[] pemModulus = new byte[128]; - byte[] pemPublicExponent = new byte[3]; - Array.Copy(keyData, 29, pemModulus, 0, 128); - Array.Copy(keyData, 159, pemPublicExponent, 0, 3); - RSAParameters para = new RSAParameters(); - para.Modulus = pemModulus; - para.Exponent = pemPublicExponent; - return para; - } - - private static RSAParameters ConvertFromPrivateKey(string pemFileConent) - { - byte[] keyData = Convert.FromBase64String(pemFileConent); - if (keyData.Length < 609) - { - throw new ArgumentException("pem file content is incorrect."); - } - - int index = 11; - byte[] pemModulus = new byte[128]; - Array.Copy(keyData, index, pemModulus, 0, 128); - - index += 128; - index += 2;//141 - byte[] pemPublicExponent = new byte[3]; - Array.Copy(keyData, index, pemPublicExponent, 0, 3); - - index += 3; - index += 4;//148 - byte[] pemPrivateExponent = new byte[128]; - Array.Copy(keyData, index, pemPrivateExponent, 0, 128); - - index += 128; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//279 - byte[] pemPrime1 = new byte[64]; - Array.Copy(keyData, index, pemPrime1, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//346 - byte[] pemPrime2 = new byte[64]; - Array.Copy(keyData, index, pemPrime2, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//412/413 - byte[] pemExponent1 = new byte[64]; - Array.Copy(keyData, index, pemExponent1, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//479/480 - byte[] pemExponent2 = new byte[64]; - Array.Copy(keyData, index, pemExponent2, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//545/546 - byte[] pemCoefficient = new byte[64]; - Array.Copy(keyData, index, pemCoefficient, 0, 64); - - RSAParameters para = new RSAParameters(); - para.Modulus = pemModulus; - para.Exponent = pemPublicExponent; - para.D = pemPrivateExponent; - para.P = pemPrime1; - para.Q = pemPrime2; - para.DP = pemExponent1; - para.DQ = pemExponent2; - para.InverseQ = pemCoefficient; - return para; - } - #endregion - - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Bank.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Bank.cs deleted file mode 100644 index 0b5494f..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Bank.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.IO; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - public class BankItem - { - public BankItem(BankSign sign,string name,string netway) - { - this.Sign = sign; - this.HansName = name; - this.NetGateway = netway; - } - - /// - /// 标识 - /// - public BankSign Sign { get; set; } - - /// - /// 汉语名称 - /// - public string HansName { get; set; } - - /// - /// 网关 - /// - public string NetGateway { get; set; } - } - - public enum BankSign - { - Default,ICBC, ABC, CCB, BOC, CIB, CITIC, CMB, CMBC, CEB, COMM, GDB, SPAB, POSTGC, SPDB - } - - - /// - /// 银行 - /// - public class Bank - { - public static BankItem[] Alipay; - public static BankItem[] Tenpay; - - static Bank() - { - Alipay = new BankItem[]{ - new BankItem(BankSign.ICBC,"中国工商银行","ICBCBTB"), - new BankItem(BankSign.ABC,"中国农业银行","ABCBTB"), - new BankItem(BankSign.CCB,"中国建设银行","CCBBTB"), - new BankItem(BankSign.BOC,"中国银行","BOCB2C"), - new BankItem(BankSign.CIB,"兴业银行","CIB"), - new BankItem(BankSign.CITIC,"中信银行","CITIC"), - new BankItem(BankSign.CMB,"招商银行","CMB"), - new BankItem(BankSign.CMBC,"中国民生银行","CMBC"), - new BankItem(BankSign.CEB,"中国光大银行","CEBBANK"), - new BankItem(BankSign.COMM,"交通银行","COMM"), - new BankItem(BankSign.GDB,"广发银行","GDB"), - new BankItem(BankSign.SPAB,"平安银行","SPABANK"), - new BankItem(BankSign.POSTGC,"中国邮政储蓄银行","POSTGC"), - new BankItem(BankSign.SPDB,"浦发银行","SPDBB2B") - }; - - Tenpay = new BankItem[]{ - new BankItem(BankSign.ICBC,"中国工商银行","ICBC"), - new BankItem(BankSign.ABC,"中国农业银行","ABC"), - new BankItem(BankSign.CCB,"中国建设银行","CCB"), - new BankItem(BankSign.BOC,"中国银行","BOC"), - new BankItem(BankSign.CIB,"兴业银行","CIB"), - new BankItem(BankSign.CITIC,"中信银行","CITIC"), - new BankItem(BankSign.CMB,"招商银行","CMB"), - new BankItem(BankSign.CMBC,"中国民生银行","CMBC"), - new BankItem(BankSign.CEB,"中国光大银行","CEB"), - new BankItem(BankSign.COMM,"交通银行","COMM"), - new BankItem(BankSign.GDB,"广发银行","GDB"), - new BankItem(BankSign.SPAB,"平安银行","PAB"), - new BankItem(BankSign.POSTGC,"中国邮政储蓄银行","POSTGC"), - new BankItem(BankSign.SPDB,"浦发银行","SPDB") - }; - - } - - /// - /// 获取银行图标 - /// - /// - /// - public static byte[] ReadBankImage(string id) - { - - System.Drawing.Bitmap img=null; - BankSign sign =(BankSign)Enum.Parse(typeof(BankSign), id, true); - switch (sign) - { - case BankSign.ICBC: img = BankRes.ICBC; break; - case BankSign.ABC: img = BankRes.ABC; break; - case BankSign.CCB: img = BankRes.CCB; break; - case BankSign.BOC: img = BankRes.BOC; break; - case BankSign.CIB: img = BankRes.CIB; break; - case BankSign.CITIC: img = BankRes.CITIC; break; - case BankSign.CMB: img = BankRes.CMB; break; - case BankSign.CMBC: img = BankRes.CMBC; break; - case BankSign.CEB: img = BankRes.CEB; break; - case BankSign.COMM: img = BankRes.COMM; break; - case BankSign.GDB: img = BankRes.GDB; break; - case BankSign.SPAB: img = BankRes.SPAB; break; - case BankSign.POSTGC: img = BankRes.POSTGC; break; - case BankSign.SPDB: img = BankRes.SPDB; break; - } - if (img == null) - { - return new byte[0]; - } - - MemoryStream ms = new MemoryStream(); - img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); - - byte[] buffer = ms.ToArray(); - ms.Dispose(); - - return buffer; - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/BankRes.Designer.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/BankRes.Designer.cs deleted file mode 100644 index 85a8db1..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/BankRes.Designer.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34209 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class BankRes { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal BankRes() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("J6.DevFw.Toolkit.ThirdApi.NetPay.BankRes", typeof(BankRes).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap ABC { - get { - object obj = ResourceManager.GetObject("ABC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap BOC { - get { - object obj = ResourceManager.GetObject("BOC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CCB { - get { - object obj = ResourceManager.GetObject("CCB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CEB { - get { - object obj = ResourceManager.GetObject("CEB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CIB { - get { - object obj = ResourceManager.GetObject("CIB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CITIC { - get { - object obj = ResourceManager.GetObject("CITIC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CMB { - get { - object obj = ResourceManager.GetObject("CMB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CMBC { - get { - object obj = ResourceManager.GetObject("CMBC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap COMM { - get { - object obj = ResourceManager.GetObject("COMM", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap GDB { - get { - object obj = ResourceManager.GetObject("GDB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap ICBC { - get { - object obj = ResourceManager.GetObject("ICBC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap POSTGC { - get { - object obj = ResourceManager.GetObject("POSTGC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap SPAB { - get { - object obj = ResourceManager.GetObject("SPAB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap SPDB { - get { - object obj = ResourceManager.GetObject("SPDB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPayApi.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPayApi.cs deleted file mode 100644 index 9d53d9d..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPayApi.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; -using System.Collections; -using System.Web; -using J6.DevFw.Framework.Extensions; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay -{ - public class ChinaPayApi:IPay - { - - public string GetPayRequest(Hashtable hash) - { - - string[] keys = (hash["chinapay_secret"] as string).Split('|'); - - ChinaPaySignData.MerchantID = hash["chinapay_key"] as string; - ChinaPaySignData.PrivateKeyPath =String.Format("{0}{1}",AppDomain.CurrentDomain.BaseDirectory, keys[0]); - ChinaPaySignData.PublicKeyPath =String.Format("{0}{1}",AppDomain.CurrentDomain.BaseDirectory, keys[1]); - - //test url //http://localhost:8080/pay/notify_3_1.html?merid=808080201301103&orderno=2013052309145966&transdate=20130523&amount=000000000001¤cycode=156&transtype=0001&status=1001&checkvalue=872E476C3C0B471CF6C408F2B311E8A89FB78D5166676B60FB06F45797F24FFAD092FDE5CE85BA084CCDEFF4097D31DA68DDCCB5A59B719E0EB1718EB2CC77FA72F0F0039AE03684CC59EE6204A2EC104B792F33321D4EC66D7A90F9C3BD7531A50FA47199FE084D4715DEC312117C8E62A673947B293472BD8B5685C67106B8&GateId=8607&Priv1=beizhu - const string gatewayHTML = @"
                                                                                                                                            -
                                                                                                                                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                            商户号:
                                                                                                                                            支付版本号:
                                                                                                                                            订单号:
                                                                                                                                            订单金额:
                                                                                                                                            货币代码:
                                                                                                                                            订单日期:
                                                                                                                                            交易类型:
                                                                                                                                            后台返回地址:
                                                                                                                                            页面返回地址:
                                                                                                                                            网关号:
                                                                                                                                            备注:
                                                                                                                                            签名:
                                                                                                                                            - -
                                                                                                                                            "; - - - decimal product_fee = (decimal)hash["order_fee"]; //商品费用 - decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string MerId = ChinaPaySignData.MerchantID;//商户号 - string OrdId = hash["order_no"] as string;//订单号 - string TransAmt = String.Format("{0:D12}",(int)((product_fee + transport_fee)*100));//订单金额 - string CuryId = "156";//货币代码 (人民币) - string TransDate = DateTime.Now.ToString("yyyyMMdd");//订单日期 - string TransType = "0001"; //交易类型 - string Priv1 = hash["order_desc"] as string;//备注 - - - //准备签名的数据 - string plain = MerId + OrdId + TransAmt + CuryId + TransDate + TransType + Priv1; - - string ChkValue = null; - //Response.Write("MerId:" + MerId); - ChkValue = ChinaPaySignData.sign(MerId, plain); - //Response.Write("ChkValue:" + ChkValue); - - //签名长度256位 - if (ChkValue == null || ChkValue.Length != 256) - { - return "签名不正确,无法支付!"; - } - - return gatewayHTML.Template( - MerId, - "20070129", - OrdId, - TransAmt, - CuryId, - TransDate, - TransType, - PayUtil.GetNotifyUrl(PayMethods.ChinaPay, PayApiType.Normal), - PayUtil.GetReturnUrl(PayMethods.ChinaPay, PayApiType.Normal), - "", //网关留空,为银联支付 - Priv1, - ChkValue); - } - - public PaidHandleResult Return(PayMointor proc) where T:class - { - var request = HttpContext.Current.Request; - - string MerId = request["MerId"];//商户号 - string OrdId = request["OrderNo"];//订单号 - string TransAmt = request["Amount"];//订单金额 - string CuryId = request["CurrencyCode"];//货币代码 - string TransDate = request["TransDate"];//订单日期 - string TransType = request["TransType"];//交易类型 - string Priv1 = request["Priv1"];//备注 - string GateId = request["GateId"];//网关 - string status = request["status"]; - - proc.Init(OrdId); - - string CheckValue = request["checkvalue"];//签名数据 - bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); - if (res) - { - return PaidHandleResult.Fail; - } - else - { - return PaidHandleResult.Success; - } - - } - - public string Notify(PayMointor proc) where T : class - { - - var request = HttpContext.Current.Request; - - string MerId = request["MerId"];//商户号 - string OrdId = request["OrderNo"];//订单号 - string TransAmt = request["Amount"];//订单金额 - string CuryId = request["CurrencyCode"];//货币代码 - string TransDate = request["TransDate"];//订单日期 - string TransType = request["TransType"];//交易类型 - string Priv1 = request["Priv1"];//备注 - string GateId = request["GateId"];//网关 - string status = request["status"]; - - proc.Init(OrdId); - - string CheckValue = request["checkvalue"];//签名数据 - bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); - if (res) - { - proc.PaidFail(); - return "0"; - } - else - { - proc.PaidSuccess(); - return "1"; - - } - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs deleted file mode 100644 index d3cc50a..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay -{ - public class ChinaPaySignData - { - internal static string PrivateKeyPath = ""; - internal static string PublicKeyPath = ""; - internal static string MerchantID = "808080201301103"; - - static ChinaPaySignData() - { - PrivateKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/prk.key"; - PublicKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/pk.key"; - } - - //签名 - public static string sign(string MerId, string plain) - { - global::NetPay netPay = new global::NetPay(); - Boolean flag = netPay.buildKey(MerId, 0, ChinaPaySignData.PrivateKeyPath); - string sign = null; - if (flag) - { - if (netPay.PrivateKeyFlag) - { - sign = netPay.Sign(plain); - } - } - return sign; - - } - - //验签 - public static bool check(string MerId, string OrdId, string TransAmt, string CuryId, string TransDate, string TransType, string status, string ChkValue) - { - - global::NetPay netPay = new global::NetPay(); - Boolean flag = netPay.buildKey(ChinaPaySignData.MerchantID, 0, ChinaPaySignData.PublicKeyPath); - if (flag) - { - if (netPay.PublicKeyFlag) - { - flag = netPay.verifyTransResponse(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, ChkValue); - } - else - { - flag = false; - } - } - else - { - flag = false; - } - - return flag; - - } - - - //得到交易日期 - public static string getTransDate() - { - return DateTime.Now.ToString("yyyyMMdd"); - } - - //得到订单号16位 - public static string getOrdId() - { - return DateTime.Now.ToString("yyyyMMHHmmffffff"); - } - - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs deleted file mode 100644 index 833e371..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs +++ /dev/null @@ -1,43 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : IPay.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System.Collections; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - public interface IPay - { - /// - /// 获取支付请求,可返回链接或表单 - /// - /// - /// - string GetPayRequest(Hashtable hash); - - /// - /// 返回信息 - /// - /// - /// - PaidHandleResult Return(PayMointor proc) where T : class; - - /// - /// 主动通知 - /// - /// - /// - /// - string Notify(PayMointor proc) where T : class; - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs deleted file mode 100644 index d690ac9..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs +++ /dev/null @@ -1,37 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PaidHandleResult.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付处理结果 - /// - public enum PaidHandleResult - { - - /// - /// 支付成功 - /// - Success, - - /// - /// 支付失败 - /// - Fail, - /// - /// 准备支付 - /// - Repair - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs deleted file mode 100644 index 0e69940..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs +++ /dev/null @@ -1,133 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PaidHandler.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付时处理方法 - /// - /// - /// - public delegate void PaidHandler(T t) where T : class; - - public delegate void PaidAsyncHandler(T t,PaymentAsyncState state) where T : class; - - /// - /// 支付同步状态 - /// - public enum PaymentAsyncState - { - WAIT_BUYER_PAY, - WAIT_SELLER_SEND_GOODS - } - - /// - /// - /// - public sealed class PayMointor where T : class - { - /// - /// 当初始化时发生,通常用于根据订单号获取订单 - /// - public event PaidHandler OnInit; - - /// - /// 支付成功 - /// - public event PaidHandler OnSuccessed; - - /// - /// 同步状态 - /// - public event PaidAsyncHandler OnAsync; - - /// - /// 准备支付 - /// - public event PaidHandler OnRepairPay; - - /// - /// 当支付失败时 - /// - public event PaidHandler OnFailed; - - private T instance; - - public T Instance { get { return instance; } set { instance = value; } } - - public PayMointor(T t) - { - this.instance = t; - } - - /// - /// 支付成功 - /// - public void PaidSuccess() - { - if (this.OnSuccessed != null) - { - this.OnSuccessed(this.instance); - } - } - - /// - /// 支付失败 - /// - public void PaidFail() - { - if (this.OnFailed != null) - { - this.OnFailed(this.instance); - } - } - - /// - /// 准备支付 - /// - public void RepairPay() - { - if (this.OnRepairPay != null) - { - this.OnRepairPay(this.instance); - } - } - - /// - /// 同步状态 - /// - /// - public void AsyncState(PaymentAsyncState state) - { - if (OnAsync != null) - { - OnAsync(this.instance,state); - } - } - - /// - /// 初始化 - /// - /// - public void Init(string orderNo) - { - if (this.OnInit != null) - { - this.OnInit(orderNo); - } - } - - } - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs deleted file mode 100644 index 23cf6d1..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs +++ /dev/null @@ -1,42 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayApiType.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付接口 - /// - public enum PayApiType - { - /// - /// 标准双接口 - /// - Normal = 1, - - /// - /// 担保交易 - /// - Guarantee = 2, - - /// - /// 即时到帐 - /// - Direct = 3, - - /// - /// 手机网站支付 - /// - Mobile=4 - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs deleted file mode 100644 index 4e14636..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs +++ /dev/null @@ -1,49 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayMethods.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付方式 - /// - public enum PayMethods - { - - /// - /// 未指定 - /// - Unknown = -1, - - /// - /// 支付宝 - /// - Alipay = 1, - - /// - /// 腾讯财付通 - /// - Tenpay = 2, - - - /// - /// 银联支付 - /// - ChinaPay = 3, - - /// - /// 在线支付 - /// - OnlinePay = 4 - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs deleted file mode 100644 index 8acec02..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs +++ /dev/null @@ -1,290 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayApiType.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Linq; -using System.Text; -using System.Web; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Alipay; -using J6.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - public static class PayUtil - { - /// - /// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - internal static SortedDictionary GetRequestGet() - { - int i = 0; - SortedDictionary sPara = new SortedDictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - - var request = HttpContext.Current.Request; - coll = request.QueryString; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sPara.Add(requestItem[i], request.QueryString[requestItem[i]]); - } - - return sPara; - } - /// - /// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - internal static SortedDictionary GetRequestPost() - { - int i = 0; - SortedDictionary sPara = new SortedDictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - var request = HttpContext.Current.Request; - coll = request.Form; - //coll = request.QueryString; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sPara.Add(requestItem[i], request.Form[requestItem[i]]); - } - - return sPara; - } - - - /// - /// 设置支付日志记录 - /// - /// - public static void SetLogMessage(string msg) - { - global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] = msg; - } - - /// - /// 获取支付日志记录 - /// - /// - public static string GetLogMessage() - { - return global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] as string; - } - - /// - /// 获取提示的地址 - /// - /// 支付方式编号 - /// 接口类型,默认为1 - /// - internal static string GetNotifyUrl(PayMethods ap, PayApiType at) - { - global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; - - return String.Format("http://{0}{1}/netpay/notify_{2}_{3}.html", - req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); - } - - /// - /// 获取返回的地址 - /// - /// 支付方式编号 - /// 接口类型,默认为1 - /// - internal static string GetReturnUrl(PayMethods ap, PayApiType at) - { - global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; - - - return String.Format("http://{0}{1}/netpay/return_{2}_{3}.html", - req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); - - /* - return String.Format("http://{0}{1}/pay/return_{2}_{3}.html", - "www.lmgdto.com","", ((int)ap).ToString(), ((int)at).ToString()); - */ - } - - - /// - /// 获取网关地址 - /// - /// - /// - /// - /// - public static string GetGatewayStr(PayMethods pm, PayApiType pt, Hashtable ht) - { - IPay _pay = null; - if (pm == PayMethods.Alipay) - { - if (ht.Contains("bank")) - { - pt = PayApiType.Direct; - } - - if (pt == PayApiType.Direct) - { - _pay = new AlipayRedirect(); - } - else if (pt == PayApiType.Normal) - { - _pay = new AlipayNormal(); - } - else if(pt== PayApiType.Mobile) - { - - _pay=new AlipayMobile(); - } - else - { - _pay = new AlipayComfireApi(); - } - - } - else if (pm == PayMethods.Tenpay) - { - //财付通默认支持所有 - _pay = new Tenpay.Tenpay(); - } - else if (pm == PayMethods.ChinaPay) - { - _pay = new ChinaPayApi(); - } - - - return _pay == null ? String.Empty : _pay.GetPayRequest(ht); - - - } - - - - public static PaidHandleResult PayReturn(PayMethods pm, PayApiType pt, PayMointor proc) where T:class - { - IPay _pay = null; - if (pm == PayMethods.Alipay) - { - if (pt == PayApiType.Direct) - { - _pay = new AlipayRedirect(); - } - else if (pt == PayApiType.Normal) - { - _pay = new AlipayNormal(); - } - else if(pt== PayApiType.Mobile) - { - _pay=new AlipayMobile(); - } - else - { - _pay = new AlipayComfireApi(); - } - - } - else if (pm == PayMethods.Tenpay) - { - //财付通默认支持所有 - _pay = new Tenpay.Tenpay(); - } - else if (pm == PayMethods.ChinaPay) - { - _pay = new ChinaPayApi(); - } - - - if (_pay == null) - { - SetLogMessage("不支持的支付方式"); - return PaidHandleResult.Fail; - } - else - { - return _pay.Return(proc); - } - } - - public static string PayNotify(PayMethods pm, PayApiType pt, PayMointor proc) where T : class - { - IPay _pay = null; - if (pm == PayMethods.Alipay) - { - if (pt == PayApiType.Direct) - { - _pay = new AlipayRedirect(); - } - else if (pt == PayApiType.Normal) - { - _pay = new AlipayNormal(); - } - else if(pt== PayApiType.Mobile) - { - _pay=new AlipayMobile(); - } - else - { - _pay = new AlipayComfireApi(); - } - - } - else if (pm == PayMethods.Tenpay) - { - //财付通默认支持所有 - _pay = new Tenpay.Tenpay(); - } - else if (pm == PayMethods.ChinaPay) - { - _pay = new ChinaPayApi(); - } - - - return _pay == null ? "不支持的支付方式" : _pay.Notify(proc); - - } - - - public static string GetGatewaySubmit(string url, SortedDictionary dict) - { - const string format = "
                                                                                                                                            %fields%
                                                                                                                                            "; - if (dict == null || !dict.Keys.Contains("order_no")) - { - throw new ArgumentException("字典不能为空,且必须包括orderNo键值!"); - } - - StringBuilder sb = new StringBuilder(); - - foreach (string key in dict.Keys) - { - sb.Append(""); - } - - return format.Replace("%url%", url).Replace("%fields%", sb.ToString()); - } - } - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs deleted file mode 100644 index 65237d4..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs +++ /dev/null @@ -1,268 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayHandler.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付处理类 - /// - /// - public abstract class PaymentHandler where T : class - { - - /// - /// 提交支付请求(收货信息仅支付宝担保时传递) - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - public string SubmitRequest( - PayMethods pm, - PayApiType pt, - string partner_id, - string partner_secret, - string seller_account, - BankSign bank, - string orderNo, - float order_fee, - float order_exp_fee, - string order_desc, - string order_show_url, - string subject, - string receive_name, - string receive_address, - string receive_zip, - string receive_phone, - string receive_mobile, - string return_url, - string notify_url - ) - { - Hashtable ht = new Hashtable(); - - // OrderInfo order; - - // order = new Order(orderNo); - - - // if (order == null) - // { - // p.PayUtil.SetLogMessage("订单不存在!"); - // return Result((int)p.PaidHandleResult.Fail); - // } - - - // orderPM = this.LoadOrderPM(order); - if (String.IsNullOrEmpty(return_url)) - { - return_url = PayUtil.GetReturnUrl(pm, pt); - } - if (String.IsNullOrEmpty(notify_url)) - { - notify_url = PayUtil.GetNotifyUrl(pm, pt); - } - - ht.Add("order_subject",subject??"支付订单"+orderNo); - ht.Add("order_no", orderNo); //订单编号 - ht.Add("order_fee", order_fee); - ht.Add("order_exp_fee", order_exp_fee); //订单快递金额 - try{ - ht.Add("usr_host", HttpContext.Current.Request.UserHostAddress); //用户IP地址 - }catch{} - ht.Add("order_showurl", order_show_url); //订单显示地址 - ht.Add("return_url", return_url); //返回地址 - ht.Add("notify_url", notify_url); //通知地址 - ht.Add("order_desc", order_desc); //订单描述 - ht.Add("seller_account", seller_account); //帐号 - - //收货信息 - ht.Add("receive_name", receive_name); - ht.Add("receive_address", receive_address); - ht.Add("receive_mobile", receive_mobile); - ht.Add("receive_zip", receive_zip); - ht.Add("receive_phone", receive_phone); - - - if(bank!=BankSign.Default) - { - ht.Add("bank",bank.ToString()); - } - - - if (pm != PayMethods.Unknown) - { - - string payHtml = String.Empty; - - switch (pm) - { - //财付通 - case PayMethods.Tenpay: - - ht.Add("tenpay_key", partner_id); - ht.Add("tenpay_secret", partner_secret); - ht.Add("trade_mode", -((int)pt-4)); //1:即时到帐,2:中介担保,3:自己选择 - - payHtml = String.Format("", - PayUtil.GetGatewayStr(PayMethods.Tenpay, pt, ht)); - - break; - - //支付宝 - case PayMethods.Alipay: - ht.Add("alipay_key", partner_id); - ht.Add("alipay_secret", partner_secret); - - payHtml = PayUtil.GetGatewayStr(PayMethods.Alipay, pt, ht); - - break; - - //在线支付 - default: - case PayMethods.OnlinePay: - // - //UNDONE: - // - throw new NotImplementedException("暂不支持银行支付!"); - } - - - //准备支付 - // orderPM.RepairPay(); - - - //跳转到支付页面 - return payHtml; - } - - else - { - - return "不支持的支付方式!"; - } - - } - - - /// - /// 页面回调 - /// - /// - /// 接口类型ID - /// - public PaidHandleResult Return(PayMethods pm, PayApiType pt, PayMointor proc) - { - PaidHandleResult result; - //PayMointor proc = new PayMointor(String.Empty); - //proc.OnInit += orderNo => - //{ - // proc.Instance= - //}; - - this.AttachEvent(proc); - - // PayMethods pm = (PayMethods)pmid; //支付方式 - //PayApiType pt = (PayApiType)ptid; //接口类型 - - result = PayUtil.PayReturn(pm, pt, proc); - if(result== PaidHandleResult.Success) - { - proc.PaidSuccess(); - } - else if(result== PaidHandleResult.Fail) - { - proc.PaidFail(); - } - return result; - } - - /// - /// 主动通知 - /// - /// - /// - public string Notify(PayMethods pm, PayApiType pt, PayMointor proc) - { - - // PaidMointor proc = new PaidMointor(null); - - // proc.OnInit += orderNo => - // { - // var itm = this.LoadOrderPM(orderNo.ToString()); - //proc.Instance = itm.Instance; - // this.AttachEvent(proc); - // }; - - this.AttachEvent(proc); - - return PayUtil.PayNotify(pm, pt, proc); - } - - - private void AttachEvent(PayMointor proc) - { - if (proc == null) - { - throw new ArgumentNullException("参数proc不能为空!"); - } - else - { - //添加事件 - proc.OnFailed += OnOrderPaidFail; - proc.OnSuccessed += OnOrderPaidSuccess; - proc.OnRepairPay += OnOrderRepairPay; - } - } - - /// - /// 支付失败时操作 - /// - /// - public abstract void OnOrderPaidFail(T t); - - /// - /// 支付成功时操作 - /// - /// - public abstract void OnOrderPaidSuccess(T t); - - /// - /// 准备支付时操作 - /// - /// - private void OnOrderRepairPay(T t) - { - - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs deleted file mode 100644 index 0795c69..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************* -* 文 件 名: ReceiveInfo -* 作 者: 刘成文 -* 创建时间: 2013-4-28 10:23:56 -* 修改说明: -********************************************/ - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 收货信息 - /// - public struct ReceiveInfo - { - public string Name { get; set; } - public string Address { get; set; } - public string Zip { get; set; } - public string Phone { get; set; } - public string Mobile { get; set; } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs deleted file mode 100644 index 41773c7..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Collections; -using System.Text; -using System.Xml; - -/** - * 后台应答类 - * ============================================================================ - * api说明: - * getKey()/setKey(),获取/设置密钥 - * getContent() / setContent(), 获取/设置原始内容 - * getParameter()/setParameter(),获取/设置参数值 - * getAllParameters(),获取所有参数 - * isTenpaySign(),是否财付通签名,true:是 false:否 - * getDebugInfo(),获取debug信息 - * - * ============================================================================ - * - */ - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - public class ClientResponseHandler - { - /** 密钥 */ - private string key; - - /** 应答的参数 */ - protected Hashtable parameters; - - /** debug信息 */ - private string debugInfo; - - //原始内容 - protected string content; - - private string charset = "gb2312"; - - - //获取服务器通知数据方式,进行参数获取 - public ClientResponseHandler() - { - parameters = new Hashtable(); - } - - public string getContent() - { - return this.content; - } - - public virtual void setContent(string content) - { - this.content = content; - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(content); - XmlNode root = xmlDoc.SelectSingleNode("root"); - XmlNodeList xnl = root.ChildNodes; - - foreach (XmlNode xnf in xnl) - { - this.setParameter(xnf.Name, xnf.InnerXml); - } - } - - /** 获取密钥 */ - public string getKey() - { return key; } - - /** 设置密钥 */ - public void setKey(string key) - { this.key = key; } - - /** 获取参数值 */ - public string getParameter(string parameter) - { - string s = (string)parameters[parameter]; - return (null == s) ? "" : s; - } - - /** 设置参数值 */ - public void setParameter(string parameter, string parameterValue) - { - if (parameter != null && parameter != "") - { - if (parameters.Contains(parameter)) - { - parameters.Remove(parameter); - } - - parameters.Add(parameter, parameterValue); - } - } - - /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 - * @return boolean */ - public virtual Boolean isTenpaySign() - { - StringBuilder sb = new StringBuilder(); - - ArrayList akeys = new ArrayList(parameters.Keys); - akeys.Sort(); - - foreach (string k in akeys) - { - string v = (string)parameters[k]; - if (null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); - - //debug信息 - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - - /** 获取debug信息 */ - public string getDebugInfo() - { return debugInfo; } - - /** 设置debug信息 */ - protected void setDebugInfo(String debugInfo) - { this.debugInfo = debugInfo; } - - protected virtual string getCharset() - { - return this.charset; - } - - public void setCharset(String charset) - { - this.charset = charset; - } - - /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 - * @return boolean */ - public virtual Boolean _isTenpaySign(ArrayList akeys) - { - StringBuilder sb = new StringBuilder(); - - foreach (string k in akeys) - { - string v = (string)parameters[k]; - if (null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); - - //debug信息 - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs deleted file mode 100644 index 4d4448d..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Security.Cryptography; -using System.Text; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// MD5Util ժҪ˵ - /// - public class MD5Util - { - public MD5Util() - { - // - // TODO: ڴ˴ӹ캯߼ - // - } - - /** ȡдMD5ǩ */ - public static string GetMD5(string encypStr, string charset) - { - string retStr; - MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider(); - - //md5 - byte[] inputBye; - byte[] outputBye; - - //ʹGB2312뷽ʽַתΪֽ飮 - try - { - inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr); - } - catch (Exception ex) - { - inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr); - } - outputBye = m5.ComputeHash(inputBye); - - retStr = System.BitConverter.ToString(outputBye); - retStr = retStr.Replace("-", "").ToUpper(); - return retStr; - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs deleted file mode 100644 index c53be82..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System; -using System.Collections; -using System.Text; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// RequestHandler ժҪ˵ - /// - public class RequestHandler - { - public RequestHandler(HttpContext httpContext) - { - parameters = new Hashtable(); - - this.httpContext = httpContext; - this.setGateUrl("https://www.tenpay.com/cgi-bin/v1.0/service_gate.cgi"); - } - - /** urlַ */ - private string gateUrl; - - /** Կ */ - private string key; - - /** IJ */ - protected Hashtable parameters; - - /** debugϢ */ - private string debugInfo; - - protected HttpContext httpContext; - - /** ʼ*/ - public virtual void init() - { - //nothing to do - } - - /** ȡڵַ,ֵ */ - public String getGateUrl() - { - return gateUrl; - } - - /** ڵַ,ֵ */ - public void setGateUrl(String gateUrl) - { - this.gateUrl = gateUrl; - } - - /** ȡԿ */ - public String getKey() - { - return key; - } - - /** Կ */ - public void setKey(string key) - { - this.key = key; - } - - /** ȡURL @return String */ - public virtual string getRequestURL() - { - this.createSign(); - - StringBuilder sb = new StringBuilder(); - ArrayList akeys=new ArrayList(parameters.Keys); - akeys.Sort(); - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + TenpayUtil.UrlEncode(v, getCharset()) + "&"); - } - } - - //ȥһ& - if(sb.Length > 0) - { - sb.Remove(sb.Length-1, 1); - } - - return this.getGateUrl() + "?" + sb.ToString(); - } - - /** - * md5ժҪ,:a-z,ֵIJμǩ - */ - protected virtual void createSign() - { - StringBuilder sb = new StringBuilder(); - - ArrayList akeys=new ArrayList(parameters.Keys); - akeys.Sort(); - - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); - - this.setParameter("sign", sign); - - //debugϢ - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - } - - /** ȡֵ */ - public string getParameter(string parameter) - { - string s = (string)parameters[parameter]; - return (null == s) ? "" : s; - } - - /** òֵ */ - public void setParameter(string parameter,string parameterValue) - { - if(parameter != null && parameter != "") - { - if(parameters.Contains(parameter)) - { - parameters.Remove(parameter); - } - - parameters.Add(parameter,parameterValue); - } - } - - public void doSend() - { - this.httpContext.Response.Redirect(this.getRequestURL()); - } - - /** ȡdebugϢ */ - public String getDebugInfo() - { - return debugInfo; - } - - /** debugϢ */ - public void setDebugInfo(String debugInfo) - { - this.debugInfo = debugInfo; - } - - public Hashtable getAllParameters() - { - return this.parameters; - } - - protected virtual string getCharset() - { - return this.httpContext.Request.ContentEncoding.BodyName; - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs deleted file mode 100644 index 95aae1c..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Specialized; -using System.Text; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// ResponseHandler ժҪ˵ - /// - public class ResponseHandler - { - /** Կ */ - private string key; - - /** ӦIJ */ - protected Hashtable parameters; - - /** debugϢ */ - private string debugInfo; - - protected HttpContext httpContext; - - //ȡ֪ͨݷʽвȡ - public ResponseHandler(HttpContext httpContext) - { - parameters = new Hashtable(); - - this.httpContext = httpContext; - NameValueCollection collection; - if(this.httpContext.Request.HttpMethod == "POST") - { - collection = this.httpContext.Request.Form; - } - else - { - collection = this.httpContext.Request.QueryString; - } - - foreach(string k in collection) - { - string v = (string)collection[k]; - this.setParameter(k, v); - } - } - - /** ȡԿ */ - public string getKey() - { return key;} - - /** Կ */ - public void setKey(string key) - { this.key = key;} - - /** ȡֵ */ - public string getParameter(string parameter) - { - string s = (string)parameters[parameter]; - return (null == s) ? "" : s; - } - - /** òֵ */ - public void setParameter(string parameter,string parameterValue) - { - if(parameter != null && parameter != "") - { - if(parameters.Contains(parameter)) - { - parameters.Remove(parameter); - } - - parameters.Add(parameter,parameterValue); - } - } - - /** ǷƸͨǩ,:a-z,ֵIJμǩ - * @return boolean */ - public virtual Boolean isTenpaySign() - { - StringBuilder sb = new StringBuilder(); - - ArrayList akeys=new ArrayList(parameters.Keys); - akeys.Sort(); - - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); - - //debugϢ - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - - /** - * ʾ - * @param show_url ʾurlַ,urlַʽ(http://www.xxx.com/xxx.aspx) - * @throws IOException - */ - public void doShow(string show_url) - { - string strHtml = "\r\n" + - "\r\n" + - "\r\n" + - " "; - - this.httpContext.Response.Write(strHtml); - - this.httpContext.Response.End(); - } - - /** ȡdebugϢ */ - public string getDebugInfo() - { return debugInfo;} - - /** debugϢ */ - protected void setDebugInfo(String debugInfo) - { this.debugInfo = debugInfo;} - - protected virtual string getCharset() - { - return this.httpContext.Request.ContentEncoding.BodyName; - - } - - /** ǷƸͨǩ,:a-z,ֵIJμǩ - * @return boolean */ - public virtual Boolean _isTenpaySign(ArrayList akeys) - { - StringBuilder sb = new StringBuilder(); - - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); - - //debugϢ - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs deleted file mode 100644 index bd188eb..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; - -/** - * http、https通信类 - * ============================================================================ - * api说明: - * setReqContent($reqContent),设置请求内容,无论post和get,都用get方式提供 - * getResContent(), 获取应答内容 - * setMethod($method),设置请求方法,post或者get - * getErrInfo(),获取错误信息 - * setCertInfo($certFile, $certPasswd, $certType="PEM"),设置证书,双向https时需要使用 - * setCaInfo($caFile), 设置CA,格式未pem,不设置则不检查 - * setTimeOut($timeOut), 设置超时时间,单位秒 - * getResponseCode(), 取返回的http状态码 - * call(),真正调用接口 - * - * ============================================================================ - * - */ - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - public class TenpayHttpClient - { - //请求内容,无论post和get,都用get方式提供 - private string reqContent; - - //应答内容 - private string resContent; - - //请求方法 - private string method; - - //错误信息 - private string errInfo; - - //证书文件 - private string certFile; - - //证书密码 - private string certPasswd; - - //ca证书文件 - private string caFile; - - //超时时间,以秒为单位 - private int timeOut; - - //http应答编码 - private int responseCode; - - //字符编码 - private string charset; - - public TenpayHttpClient() - { - this.caFile = ""; - this.certFile = ""; - this.certPasswd = ""; - - this.reqContent = ""; - this.resContent = ""; - this.method = "POST"; - this.errInfo = ""; - this.timeOut = 1 * 60;//5分钟 - - this.responseCode = 0; - this.charset = "gb2312"; - - } - - //设置请求内容 - public void setReqContent(string reqContent) - { - this.reqContent = reqContent; - } - - //获取结果内容 - public string getResContent() - { - return this.resContent; - } - - //设置请求方法post或者get - public void setMethod(string method) - { - this.method = method; - } - - //获取错误信息 - public string getErrInfo() - { - return this.errInfo; - } - - //设置证书信息 - public void setCertInfo(string certFile, string certPasswd) - { - this.certFile = certFile; - this.certPasswd = certPasswd; - } - - //设置ca - public void setCaInfo(string caFile) - { - this.caFile = caFile; - } - - //设置超时时间,以秒为单位 - - public void setTimeOut(int timeOut) - { - this.timeOut = timeOut; - } - - - //获取http状态码 - public int getResponseCode() - { - return this.responseCode; - } - - public void setCharset(string charset) - { - this.charset = charset; - } - - //验证服务器证书 - public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) - { - return true; - } - - //执行http调用 - public bool call() - { - StreamReader sr = null; - HttpWebResponse wr = null; - - HttpWebRequest hp = null; - try - { - string postData = null; - if (this.method.ToUpper() == "POST") - { - string[] sArray = System.Text.RegularExpressions.Regex.Split(this.reqContent, "\\?"); - - hp = (HttpWebRequest)WebRequest.Create(sArray[0]); - - if (sArray.Length >= 2) - { - postData = sArray[1]; - } - - } - else - { - hp = (HttpWebRequest)WebRequest.Create(this.reqContent); - } - - - ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); - if (this.certFile != "") - { - hp.ClientCertificates.Add(new X509Certificate2(this.certFile, this.certPasswd)); - } - hp.Timeout = this.timeOut * 1000; - - System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(this.charset); - if (postData != null) - { - byte[] data = encoding.GetBytes(postData); - - hp.Method = "POST"; - - hp.ContentType = "application/x-www-form-urlencoded"; - - hp.ContentLength = data.Length; - - Stream ws = hp.GetRequestStream(); - - // 发送数据 - - ws.Write(data, 0, data.Length); - ws.Close(); - - - } - - - wr = (HttpWebResponse)hp.GetResponse(); - sr = new StreamReader(wr.GetResponseStream(), encoding); - - - - this.resContent = sr.ReadToEnd(); - sr.Close(); - wr.Close(); - } - catch (Exception exp) - { - this.errInfo += exp.Message; - if (wr != null) - { - this.responseCode = Convert.ToInt32(wr.StatusCode); - } - - return false; - } - - this.responseCode = Convert.ToInt32(wr.StatusCode); - - return true; - } - } -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs deleted file mode 100644 index e3ff384..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Text; -using System.Web; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// TenpayUtil ժҪ˵ - /// - public class TenpayUtil - { - public static string tenpay ="1"; - public static string bargainor_id = "1900000113"; //Ƹ̻ͨ - public static string tenpay_key = "e82573dc7e6136ba414f2e2affbe39fa"; //ƸͨԿ; - public static string tenpay_return = "http://********/payReturnUrl.aspx";//ʾ֧֪ͨҳ; - public static string tenpay_notify ="http://*****/payReturnUrl.aspx"; //֧ɺĻصҳ; - - public TenpayUtil() - { - /*tenpay = System.Configuration.ConfigurationSettings.AppSettings["tenpay"]; - bargainor_id = System.Configuration.ConfigurationSettings.AppSettings["bargainor_id"]; - tenpay_key = System.Configuration.ConfigurationSettings.AppSettings["tenpay_key"]; - tenpay_return = System.Configuration.ConfigurationSettings.AppSettings["tenpay_return"]; - tenpay_show = System.Configuration.ConfigurationSettings.AppSettings["tenpay_show"];*/ - } - /** ַURL */ - public static string UrlEncode(string instr, string charset) - { - //return instr; - if(instr == null || instr.Trim() == "") - return ""; - else - { - string res; - - try - { - res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding(charset)); - - } - catch (Exception ex) - { - res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding("GB2312")); - } - - - return res; - } - } - - /** ַURL */ - public static string UrlDecode(string instr, string charset) - { - if(instr == null || instr.Trim() == "") - return ""; - else - { - string res; - - try - { - res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding(charset)); - - } - catch (Exception ex) - { - res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding("GB2312")); - } - - - return res; - - } - } - - /** ȡʱ漴,滻׵еĺ10λˮ */ - public static UInt32 UnixStamp() - { - TimeSpan ts = DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); - return Convert.ToUInt32(ts.TotalSeconds); - } - /** ȡ */ - public static string BuildRandomStr(int length) - { - Random rand = new Random(); - - int num = rand.Next(); - - string str = num.ToString(); - - if(str.Length > length) - { - str = str.Substring(0,length); - } - else if(str.Length < length) - { - int n = length - str.Length; - while(n > 0) - { - str.Insert(0, "0"); - n--; - } - } - - return str; - } - } -} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs b/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs deleted file mode 100644 index 47300f5..0000000 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs +++ /dev/null @@ -1,442 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : Tenpay.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Web; -using J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code; - -namespace J6.DevFw.Toolkit.ThirdApi.NetPay.Tenpay -{ - /// - /// 财付通 - /// - internal class Tenpay : IPay - { - public string GetPayRequest(Hashtable hash) - { - /*接口需要的参数如下: - * ---------------------------------- - * @product_fee : 产品价格 - * @express_fee : 快递费用 - * @orderno : 订单号 - * @desc : 订单描述 - * ----------------------------------- - */ - - //商户号 - string partner = hash["tenpay_key"] as string; - //密钥 - string key = hash["tenpay_secret"] as string; - - - TenpayUtil.bargainor_id = partner; - TenpayUtil.tenpay_key = key; - TenpayUtil.tenpay_return = PayUtil.GetReturnUrl(PayMethods.Tenpay, PayApiType.Direct); - TenpayUtil.tenpay_notify = PayUtil.GetNotifyUrl(PayMethods.Tenpay, PayApiType.Direct); - - int product_fee = (int)(((decimal)hash["order_fee"]) * 100); //商品费用 - decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string bankCode = hash.Contains("bank") ? hash["bank"].ToString() : "DEFAULT"; - - string order_desc = hash["order_desc"] as string;//HttpUtility.UrlEncode( ht["order_desc"] as string); - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"] as string; - string host = hash["usr_host"] as string; - - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - - - //创建RequestHandler实例 - RequestHandler reqHandler = new RequestHandler(HttpContext.Current); - //初始化 - reqHandler.init(); - //设置密钥 - reqHandler.setKey(TenpayUtil.tenpay_key); - reqHandler.setGateUrl("https://gw.tenpay.com/gateway/pay.htm"); - - - //----------------------------- - //设置支付参数 - //----------------------------- - reqHandler.setParameter("partner", TenpayUtil.bargainor_id); //商户号 - reqHandler.setParameter("out_trade_no", out_trade_no); //商家订单号 - reqHandler.setParameter("total_fee", product_fee.ToString()); //商品金额,以分为单位 - reqHandler.setParameter("return_url", TenpayUtil.tenpay_return); //交易完成后跳转的URL - reqHandler.setParameter("notify_url", TenpayUtil.tenpay_notify); //接收财付通通知的URL - reqHandler.setParameter("body", order_desc); //商品描述 - reqHandler.setParameter("bank_type", bankCode); //银行类型(中介担保时此参数无效) - reqHandler.setParameter("spbill_create_ip", host); //用户的公网ip,不是商户服务器IP - reqHandler.setParameter("fee_type", "1"); //币种,1人民币 - reqHandler.setParameter("subject", out_trade_no); //商品名称(中介交易时必填) - - - //系统可选参数 - reqHandler.setParameter("sign_type", "MD5"); - reqHandler.setParameter("service_version", "1.0"); - reqHandler.setParameter("input_charset", "UTF-8"); - reqHandler.setParameter("sign_key_index", "1"); - - //业务可选参数 - - reqHandler.setParameter("attach", ""); //附加数据,原样返回 - reqHandler.setParameter("product_fee", "0"); //商品费用,必须保证transport_fee + product_fee=total_fee - reqHandler.setParameter("transport_fee", "0"); //物流费用,必须保证transport_fee + product_fee=total_fee - reqHandler.setParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //订单生成时间,格式为yyyymmddhhmmss - reqHandler.setParameter("time_expire", ""); //订单失效时间,格式为yyyymmddhhmmss - reqHandler.setParameter("buyer_id", ""); //买方财付通账号 - reqHandler.setParameter("goods_tag", ""); //商品标记 - reqHandler.setParameter("trade_mode", "1"); //交易模式,1即时到账(默认),2中介担保,3后台选择(买家进支付中心列表选择) - reqHandler.setParameter("transport_desc", ""); //物流说明 - reqHandler.setParameter("trans_type", "1"); //交易类型,1实物交易,2虚拟交易 - reqHandler.setParameter("agentid", ""); //平台ID - reqHandler.setParameter("agent_type", ""); //代理模式,0无代理(默认),1表示卡易售模式,2表示网店模式 - reqHandler.setParameter("seller_id", ""); //卖家商户号,为空则等同于partner - - - - - - - //获取请求带参数的url - string requestUrl = reqHandler.getRequestURL(); - - //Response.Redirect(requestUrl); - return requestUrl; - //Get的实现方式 - // string a_link = "" + "财付通支付" + ""; - // Response.Write(a_link); - // return a_link; - - - //post实现方式 - - /* Response.Write("
                                                                                                                                            \n"); - Hashtable ht = reqHandler.getAllParameters(); - foreach(DictionaryEntry de in ht) - { - Response.Write("\n"); - } - Response.Write("\n
                                                                                                                                            \n");*/ - - - //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 - // string debuginfo = reqHandler.getDebugInfo(); - // Response.Write("
                                                                                                                                            requestUrl:" + requestUrl + "
                                                                                                                                            "); - // Response.Write("
                                                                                                                                            debuginfo:" + debuginfo + "
                                                                                                                                            "); - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - //商户号 - string partner = TenpayUtil.bargainor_id;// p.PayApiKey; - //密钥 - string key = TenpayUtil.tenpay_key;// p.PayApiSecret; - - - //创建ResponseHandler实例 - ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); - resHandler.setKey(key); - - //判断签名 - if (true || resHandler.isTenpaySign()) - { - - ///通知id - string notify_id = resHandler.getParameter("notify_id"); - //商户订单号 - string out_trade_no = resHandler.getParameter("out_trade_no"); - //财付通订单号 - string transaction_id = resHandler.getParameter("transaction_id"); - //金额,以分为单位 - string total_fee = resHandler.getParameter("total_fee"); - //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee - string discount = resHandler.getParameter("discount"); - //支付结果 - string trade_state = resHandler.getParameter("trade_state"); - //交易模式,1即时到账,2中介担保 - string trade_mode = resHandler.getParameter("trade_mode"); - - - proc.Init(out_trade_no); - - - if ("1".Equals(trade_mode)) - { - - //即时到账 - if ("0".Equals(trade_state)) - { - //------------------------------ - //即时到账处理业务开始 - //------------------------------ - - //处理数据库逻辑 - //注意交易单不要重复处理 - //注意判断返回金额 - - - - - - - //------------------------------ - //即时到账处理业务完毕 - //------------------------------ - - - //SetLogMessage("即时到帐付款成功"); - return PaidHandleResult.Success; - - - - //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 - - } - else - { - //SetLogMessage("即时到账支付失败"); - return PaidHandleResult.Fail; - } - - } - else if ("2".Equals(trade_mode)) - { //中介担保 - if ("0".Equals(trade_state)) - { - //------------------------------ - //中介担保处理业务开始 - //------------------------------ - - //处理数据库逻辑 - //注意交易单不要重复处理 - //注意判断返回金额 - - //------------------------------ - //中介担保处理业务完毕 - //------------------------------ - - - //Response.Write("中介担保付款成功"); - //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 - - //SetLogMessage("中介担保付款成功"); - return PaidHandleResult.Success; - } - else - { - PayUtil.SetLogMessage("trade_state=" + trade_state); - return PaidHandleResult.Fail; - } - } - } - else - { - //Response.Write("认证签名失败"); - PayUtil.SetLogMessage("认证签名失败"); - return PaidHandleResult.Fail; - } - - return PaidHandleResult.Fail; - - } - - public string Notify(PayMointor proc) where T : class - { - //商户号 - string partner = TenpayUtil.bargainor_id; - //密钥 - string key = TenpayUtil.tenpay_key; - - - //创建ResponseHandler实例 - ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); - resHandler.setKey(key); - - //判断签名 - if (resHandler.isTenpaySign()) - { - - ///通知id - string notify_id = resHandler.getParameter("notify_id"); - - - //通过通知ID查询,确保通知来至财付通 - //创建查询请求 - RequestHandler queryReq = new RequestHandler(System.Web.HttpContext.Current); - queryReq.init(); - queryReq.setKey(key); - queryReq.setGateUrl("https://gw.tenpay.com/gateway/verifynotifyid.xml"); - queryReq.setParameter("partner", partner); - queryReq.setParameter("notify_id", notify_id); - - //通信对象 - TenpayHttpClient httpClient = new TenpayHttpClient(); - httpClient.setTimeOut(5); - //设置请求内容 - httpClient.setReqContent(queryReq.getRequestURL()); - - //后台调用 - if (httpClient.call()) - { - //设置结果参数 - ClientResponseHandler queryRes = new ClientResponseHandler(); - queryRes.setContent(httpClient.getResContent()); - queryRes.setKey(key); - - //判断签名及结果 - //只有签名正确,retcode为0,trade_state为0才是支付成功 - if (queryRes.isTenpaySign() && queryRes.getParameter("retcode") == "0" && queryRes.getParameter("trade_state") == "0" && queryRes.getParameter("trade_mode") == "1") - { - //取结果参数做业务处理 - string out_trade_no = queryRes.getParameter("out_trade_no"); - //财付通订单号 - string transaction_id = queryRes.getParameter("transaction_id"); - //金额,以分为单位 - string total_fee = queryRes.getParameter("total_fee"); - //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee - string discount = queryRes.getParameter("discount"); - //支付结果 - string trade_state = resHandler.getParameter("trade_state"); - //交易模式,1即时到帐 2中介担保 - string trade_mode = resHandler.getParameter("trade_mode"); - - proc.Init(out_trade_no); - - - //判断签名及结果 - if (queryRes.isTenpaySign() && "0".Equals(queryRes.getParameter("retcode"))) - { - // Response.Write("id验证成功"); - - if ("1".Equals(trade_mode)) - { //即时到账 - if ("0".Equals(trade_state)) - { - - proc.PaidSuccess(); - - return "Success"; - - } - else - { - proc.PaidFail(); - //SetLogMessage("即时到账支付失败"); - return "即时到账支付失败"; - - } - } - else if ("2".Equals(trade_mode)) - { //中介担保 - //------------------------------ - //中介担保处理业务开始 - //------------------------------ - //处理数据库逻辑 - //注意交易单不要重复处理 - //注意判断返回金额 - - int iStatus = 0; - switch (iStatus) - { - case 0: //付款成功 - - break; - case 1: //交易创建 - - break; - case 2: //收获地址填写完毕 - - break; - case 4: //卖家发货成功 - - break; - case 5: //买家收货确认,交易成功 - - break; - case 6: //交易关闭,未完成超时关闭 - - break; - case 7: //修改交易价格成功 - - break; - case 8: //买家发起退款 - - break; - case 9: //退款成功 - - break; - case 10: //退款关闭 - - break; - - } - - - //------------------------------ - //中介担保处理业务开始 - //------------------------------ - - - //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 - - proc.PaidSuccess(); - return "Success"; - - } - } - else - { - //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。 - //通知财付通处理失败,需要重新通知\ - - - - // SetLogMessage("查询验证签名失败或id验证失败\r\nretcode:" + queryRes.getParameter("retcode")); - - proc.PaidFail(); - return "查询验证签名失败或id验证失败retcode:" + queryRes.getParameter("retcode"); ; - - } - - } - else - { - //通知财付通处理失败,需要重新通知 - - //SetLogMessage("后台调用通信失败\r\ncall err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "); - - proc.PaidFail(); - - return "后台调用通信失败call err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "; - - } - - - } - else - { - proc.PaidFail(); - return "通知签名验证失败"; - } - } - return ""; - } - } - -} diff --git a/README.md b/README.md index 54fdd52..b864a3a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# JR.DevFw # +# J6's .Net Development framework # It's a .net development framework,contains plugin kernel,template engine,database util,orm and some base library. it's come from my other project "cms",http://github.com/atnet/cms @@ -20,7 +20,7 @@ StructureMap.dll Newtonsoft.Json.dll ## 插件开发 ## -见:http://github.com/jsix/cms/tree/master/plugin +见:http://github.com/atnet/cms/tree/master/plugin ## 示例 ## 见examples目录,包含一个微信功能的插件和一个MVC站点, diff --git a/build.bat b/build.bat index b54dbda..3ce9f85 100644 --- a/build.bat +++ b/build.bat @@ -1,57 +1,32 @@ @echo off - - color 66 - - echo ======================================= - - -echo = 代码合并工具 github.com/atnet/devfw = - - +echo = ϲ github.com/jsix/devfw = echo ======================================= - - set dir=%~dp0 set megdir=%dir%\dll\ - - if exist "%megdir%merge.exe" ( - - - echo 生成中,请稍等... - + echo ,Ե... cd %dir%dist\dll\ +echo /keyfile:%dir%j6.devfw.snk>nul - -echo /keyfile:%dir%ops.cms.snk>nul - - - -"%megdir%merge.exe" /closed /log:%dir%dist\build_log.txt /ndebug /targetplatform:v4 /target:dll /out:%dir%dist\atnet.devfw.dll^ - AtNet.DevFw.Core.dll AtNet.DevFw.PluginKernel.dll AtNet.DevFw.Data.dll AtNet.DevFw.Template.dll AtNet.DevFw.Web.dll AtNet.DevFw.Toolkit.Data.dll +"%megdir%merge.exe" /closed /keyfile:%dir%/src/core/J6.DevFw.Core/j6.devfw.snk /ndebug /targetplatform:v4 /target:dll /out:%dir%dist\jrdev.dll^ + JR.DevFw.Core.dll JR.DevFw.PluginKernel.dll JR.DevFw.Data.dll JR.DevFw.Template.dll JR.DevFw.Web.dll JR.DevFw.Toolkit.Data.dll - - - echo 完成!输出到:%dir%dist\atnet.devfw.dll - - + echo !:%dir%dist\jrdev.dll ) - - -pause +pause \ No newline at end of file diff --git a/dist/atnet.devfw.dll b/dist/atnet.devfw.dll deleted file mode 100644 index 04f47cb..0000000 Binary files a/dist/atnet.devfw.dll and /dev/null differ diff --git a/dist/jrdev.dll b/dist/jrdev.dll new file mode 100644 index 0000000..44929f5 Binary files /dev/null and b/dist/jrdev.dll differ diff --git a/dll/Newtonsoft.Json.dll b/dll/Newtonsoft.Json.dll deleted file mode 100644 index a7dfbe0..0000000 Binary files a/dll/Newtonsoft.Json.dll and /dev/null differ diff --git a/dll/SharpCompress.3.5.dll b/dll/SharpCompress.3.5.dll deleted file mode 100644 index 0438fd5..0000000 Binary files a/dll/SharpCompress.3.5.dll and /dev/null differ diff --git a/dll/StructureMap.dll b/dll/StructureMap.dll deleted file mode 100644 index 6e4af21..0000000 Binary files a/dll/StructureMap.dll and /dev/null differ diff --git a/dll/System.Data.SQLite.dll b/dll/System.Data.SQLite.dll index ede7491..b8b6e71 100644 Binary files a/dll/System.Data.SQLite.dll and b/dll/System.Data.SQLite.dll differ diff --git a/dll/System.Web.Mvc.dll b/dll/System.Web.Mvc.dll deleted file mode 100644 index 775ac88..0000000 Binary files a/dll/System.Web.Mvc.dll and /dev/null differ diff --git a/docs/OPS.BaseLib.uml b/docs/OPS.BaseLib.uml new file mode 100644 index 0000000..5c3571f --- /dev/null +++ b/docs/OPS.BaseLib.uml @@ -0,0 +1,1368 @@ + + + + + + +UMLStandard + + + + +OPS.Data +刘铭 +OPSoft INC +Copyright 2011 @ OPSoft INC +2 + +Requirements +3VpgPqYYMk+W/XQCNRKD4wAA +1 + +Use Case Model +acgPfAcd1kaGEyzuHFTRyAAA +1 + +Use Case Diagram +True +3fZE3NrSY0idrfiZLnMm1gAA + +pC2SPx9qv0ufue2JLlJq9AAA + + +1 + +Business Concept Model +3fZE3NrSY0idrfiZLnMm1gAA +1 + +Business Concept Diagram +NYsFdu4Lrk+z2/KvEDWaIgAA + +GixB1RiXm06wfAfUS1AHMgAA + + + + + + +Specifications +3VpgPqYYMk+W/XQCNRKD4wAA +4 + +Business Type Model +VbQhCZseI0qUBU0vAgXitQAA +1 + +ops.data +rRtxf4Kp5Uycl1GLrDnFpwAA + +JV9DeUayAUmQVh28Fv/xmwAA +15 + +clMaroon +$00B9FFFF +56 +56 +113 +108 +Nm7PJCp6JUGcnGTWqAguYgAA + + +1 +DataBaseType + + +<<enumeration>> + + +False + + + +Nm7PJCp6JUGcnGTWqAguYgAA + + +Nm7PJCp6JUGcnGTWqAguYgAA + + + +clMaroon +$00B9FFFF +40 +364 +157 +49 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + +clMaroon +$00B9FFFF +464 +52 +477 +121 +8/MZ/rhZh06z7h6nWR2zDAAA + + +1 +DataBaseFactory + + +False + + +False + + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +False +8/MZ/rhZh06z7h6nWR2zDAAA + + + +clMaroon +$00B9FFFF +244 +260 +449 +277 +3YDa0oXL3UW+S1enEcGB0wAA + + +1 +DataBaseAccess + + +False + + +False + + + +3YDa0oXL3UW+S1enEcGB0wAA + + +3YDa0oXL3UW+S1enEcGB0wAA + + +False +3YDa0oXL3UW+S1enEcGB0wAA + + + +clMaroon +$00B9FFFF +lsRectilinear +164,56;164,48;704,48;704,52 +0NAGGdx0CEaFtHzh5vqungAA +Auj/G2NlR0KThbxvBnabQQAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +1.5707963267949 +30 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-0.523598775598299 +30 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.523598775598299 +30 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +0.523598775598299 +25 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-0.523598775598299 +25 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-0.785398163397448 +40 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.785398163397448 +40 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-1000 +-1000 +50 +8 +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-1000 +-1000 +50 +8 +mzDsY4IWEka7exrl0JuShQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +168,148;296,148;296,260 +sdXobgrlYU2L1/qWIZeVbQAA +sYJON+K9Bkei8kji0hrS8wAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +1.5707963267949 +30 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-0.523598775598299 +30 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.523598775598299 +30 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +0.523598775598299 +25 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-0.523598775598299 +25 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-0.785398163397448 +40 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.785398163397448 +40 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-1000 +-1000 +50 +8 +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-1000 +-1000 +50 +8 +jhjXdqG4c0m+J734o4pBewAA + + + +clMaroon +$00B9FFFF +lsRectilinear +464,124;356,124;356,260 +OmM+eekhg0GbzlknV8u1ZAAA +sYJON+K9Bkei8kji0hrS8wAA +Auj/G2NlR0KThbxvBnabQQAA + +False +1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +1.5707963267949 +30 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-0.523598775598299 +30 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.523598775598299 +30 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +0.523598775598299 +25 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-0.523598775598299 +25 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-0.785398163397448 +40 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.785398163397448 +40 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-1000 +-1000 +50 +8 +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-1000 +-1000 +50 +8 +5DPMRfObzkKcqguHIQC2TAAA + + + +clMaroon +$00B9FFFF +60 +264 +157 +43 +XLjScPJc5EOGQ3Feji50jgAA + + +1 +ReadDataFunc + + +False + + +False + + + +XLjScPJc5EOGQ3Feji50jgAA + + +XLjScPJc5EOGQ3Feji50jgAA + + +False +XLjScPJc5EOGQ3Feji50jgAA + + + +clMaroon +$00B9FFFF +464 +196 +88 +43 +GP5T19mLOkidlhtRNP55ggAA + + +1 +OLEDBFactory + + +False + + +False + + + +GP5T19mLOkidlhtRNP55ggAA + + +GP5T19mLOkidlhtRNP55ggAA + + +False +GP5T19mLOkidlhtRNP55ggAA + + + +clMaroon +$00B9FFFF +608 +196 +89 +43 +2J6/xOxs/0u0a5S3lQ7YzgAA + + +1 +SQLiteFactory + + +False + + +False + + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +False +2J6/xOxs/0u0a5S3lQ7YzgAA + + + +clMaroon +$00B9FFFF +764 +196 +112 +43 +5h+/sIhx2E2UqzkIikmRvgAA + + +1 +SQLServerFactory + + +False + + +False + + + +5h+/sIhx2E2UqzkIikmRvgAA + + +5h+/sIhx2E2UqzkIikmRvgAA + + +False +5h+/sIhx2E2UqzkIikmRvgAA + + + +clMaroon +$00B9FFFF +lsRectilinear +516,196;516,172 +9+kZHdCkj0eY9UcrwhtCfQAA +Auj/G2NlR0KThbxvBnabQQAA +lZ7Yq8/FFEiWzskr8MRAFwAA + +False +1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +1.5707963267949 +30 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +-1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +636,196;636,172 +b+hU5o+TlkOM+yGUy9hdywAA +Auj/G2NlR0KThbxvBnabQQAA +TkHbHc/vAEi/Ha0kFY7FOQAA + +False +1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +1.5707963267949 +30 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +-1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + + +clMaroon +$00B9FFFF +lsRectilinear +819,196;819,172 +Vd9i0AC5yU6vI3u2Yq3NwAAA +Auj/G2NlR0KThbxvBnabQQAA +p/J1GXyZ6UeR7a7yi6SzPQAA + +False +1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +1.5707963267949 +30 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +-1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + + +clMaroon +$00B9FFFF +780 +268 +153 +69 +r4c8AvUvPEuHAMSSjErzcAAA + + +1 +DataExtensions + + +False + + +False + + + +r4c8AvUvPEuHAMSSjErzcAAA + + +r4c8AvUvPEuHAMSSjErzcAAA + + +False +r4c8AvUvPEuHAMSSjErzcAAA + + + + +15 + +DataBaseType +rRtxf4Kp5Uycl1GLrDnFpwAA +3 +llUyqL2UdkW0OutHGAG5iAAA +ITnMiDAz9Eu9EuCB/nHs9AAA +us0XyizgLUeOecVGgpS4OgAA +1 +WoYQa2XwOUGdQ6hvhaxlHgAA +2 +mzDsY4IWEka7exrl0JuShQAA +jhjXdqG4c0m+J734o4pBewAA +3 + +SQLServer +Nm7PJCp6JUGcnGTWqAguYgAA + + +SQLite +Nm7PJCp6JUGcnGTWqAguYgAA + + +OLEDb +Nm7PJCp6JUGcnGTWqAguYgAA + + + +Exception +rRtxf4Kp5Uycl1GLrDnFpwAA +1 + +Overview of Exception +/Wq0LSdAE0WIzm2tpH58ygAA + +ephSgxqeW0yttdM29TDIQwAA +1 + +clMaroon +$00B9FFFF +10 +8 +146 +46 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + + +1 + +DataBaseExceptionBase +/Wq0LSdAE0WIzm2tpH58ygAA +8 +eoo27uLIWkuuaHI1l5SUDgAA +tarly2jxGE26etgruXTx0AAA +eTtcnK3JKUKy3Pi6vG6RpQAA +8cwZAjGelE6z69bBC+xd5gAA +jde/BTrjvUemT4qysd3WMgAA +F8e5rqbL1UWeM6h2MKzVaQAA +kwI+TMOg702ukq1POuSLwQAA +/LhlQ08zI0yvqbtHkj/UqwAA + + + +DataBaseFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +Auj/G2NlR0KThbxvBnabQQAA +jAYb95wAvUKzxwcp/ZMnTAAA +owI1NK+C2EKzjfnnE0zOFQAA +NV04q7MQ10SsQy5/iEd/IgAA +3 +9+kZHdCkj0eY9UcrwhtCfQAA +b+hU5o+TlkOM+yGUy9hdywAA +Vd9i0AC5yU6vI3u2Yq3NwAAA +4 + +GetConnection +8/MZ/rhZh06z7h6nWR2zDAAA +1 + +pdkReturn +DbConnection +Zk8CURUraUWc3OQy80gpOAAA + + + +CreateCommand +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbCommand +jGgi8y9UTkewHYG/vu9QTgAA + + +commandText +string +jGgi8y9UTkewHYG/vu9QTgAA + + + +CreateDataAdapter +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbDataAdapter +uhAe/NG5nUKaXuDUga18DQAA + + +commandText +string +uhAe/NG5nUKaXuDUga18DQAA + + + +CreateParameter +8/MZ/rhZh06z7h6nWR2zDAAA +3 + +pdkReturn +void +jeZkWgnzMEubkW5ldnCmTwAA + + +name +string +jeZkWgnzMEubkW5ldnCmTwAA + + +value +object +jeZkWgnzMEubkW5ldnCmTwAA + + +1 +FGPblmEp10SiUzhV97Ju8QAA +2 +ks6fgvD+sUCAS5Gyhk190wAA +5DPMRfObzkKcqguHIQC2TAAA +2 + +connectionString +vkPrivate +string +8/MZ/rhZh06z7h6nWR2zDAAA + + +dbAccess +vkProtected +DataBaseAccess +3YDa0oXL3UW+S1enEcGB0wAA +8/MZ/rhZh06z7h6nWR2zDAAA + + + +DataBaseAccess +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +sYJON+K9Bkei8kji0hrS8wAA +xO1rctzQmkeNgt3kKsRVmgAA +uFCPr+BiME61os+lvUel5QAA +d7VoBc4PC0+Cw5CI+/4BWwAA +14 + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DbParameter +mkt7FI5h10iuE76mo7d32gAA + + +name +string +mkt7FI5h10iuE76mo7d32gAA + + +value +object +mkt7FI5h10iuE76mo7d32gAA + + + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +DbParameter +GtWfcqVRSUiF/AozbYgjbAAA + + +name +string +GtWfcqVRSUiF/AozbYgjbAAA + + +value +object +GtWfcqVRSUiF/AozbYgjbAAA + + +direction +ParameterDirection +GtWfcqVRSUiF/AozbYgjbAAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +int +Hxo4XwtZ8k++TbAUkALlzwAA + + +sql +string +Hxo4XwtZ8k++TbAUkALlzwAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +int +oYXl5lJuYUuMuMnomV4JNgAA + + +sql +string +oYXl5lJuYUuMuMnomV4JNgAA + + +parameters +DbParameter[] +oYXl5lJuYUuMuMnomV4JNgAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +object +IvTac24Nj0iMKyI2zGXSUwAA + + +sql +string +IvTac24Nj0iMKyI2zGXSUwAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +object +XVBfwwS3zkWQP8r9FCP79wAA + + +sql +string +XVBfwwS3zkWQP8r9FCP79wAA + + +parameters +DbParameter[] +XVBfwwS3zkWQP8r9FCP79wAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +void +vbbvEVmqME2lN8X2IY6mZQAA + + +sql +string +vbbvEVmqME2lN8X2IY6mZQAA + + +behavior +ReadDataFunc +vbbvEVmqME2lN8X2IY6mZQAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +void +JGZn7nYYRU2MAq4olL18QQAA + + +sql +string +JGZn7nYYRU2MAq4olL18QQAA + + +behavior +JGZn7nYYRU2MAq4olL18QQAA +XLjScPJc5EOGQ3Feji50jgAA + + +parameters +DbParameter[] +JGZn7nYYRU2MAq4olL18QQAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +DataSet +kei6QUZ4HEuqbsn8xjzrkgAA + + +sql +string +kei6QUZ4HEuqbsn8xjzrkgAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DataSet +1SIuz93rIky9sBj2Vqh4RAAA + + +sql +string +1SIuz93rIky9sBj2Vqh4RAAA + + +parameters +DbParameter[] +1SIuz93rIky9sBj2Vqh4RAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):T +TiDRMI/9wE691Bn5szGCUAAA + + +sql +string +TiDRMI/9wE691Bn5szGCUAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):T +rTF/el6nI02ggly4K9XSxwAA + + +sql +string +rTF/el6nI02ggly4K9XSxwAA + + +parameters +DbParameter[] +rTF/el6nI02ggly4K9XSxwAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):IList<T> +49te8U0DQ0ORv7bKPaBXQgAA + + +sql +string +49te8U0DQ0ORv7bKPaBXQgAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):IList<T> +Ior7O6mJJUuGf2SC8ddI3wAA + + +sql +string +Ior7O6mJJUuGf2SC8ddI3wAA + + +parameters +DbParameter[] +Ior7O6mJJUuGf2SC8ddI3wAA + + +1 +mY/twf9Jwk+l7gpvn/F8BgAA +2 +f3rLdJOuA0uc1gfWF/KmPwAA +NG+2hFln3kCW9f4Ne7NDAQAA +3 + +dbConn +DbConnection +3YDa0oXL3UW+S1enEcGB0wAA + + +dbFactory +DataBaseFactory +8/MZ/rhZh06z7h6nWR2zDAAA +3YDa0oXL3UW+S1enEcGB0wAA + + +procedureRegex +Regex +3YDa0oXL3UW+S1enEcGB0wAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +0RIum6C7PUOIRKCbLkuwtgAA +tgTOJYnVuk2sjZ1fsk/ulQAA +jqI3qfU33kedmn2RFP9jfAAA +PoQUP10OIUibCP3ghrxmzgAA +2 + +False +0NAGGdx0CEaFtHzh5vqungAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +o5He4CjUxEmLRmli8m0UnQAA +kaRY4VFm5UKRH0E775wQkAAA +oYU+f3uC9Ui5ZhNonax1rwAA +5baxQZ+Ic0GqEHwSfmXrngAA + + +0NAGGdx0CEaFtHzh5vqungAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +O1GRwFZnqE+R24MN1h4lYgAA +S8WsbUxei0Wyp9B9rQbCRwAA +e+EfeYeg+k6J39/qyRlBCgAA +/HjJ8xlsYkOWQctiLd0LZwAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TaEV1SEg+06VbRakDHCZcgAA +1IRYkbL5EU2eCMZ3WogySAAA +RUJ2U4cAsUuHkqSKMk0RfAAA +fyCChVQs+UiypeT09koOlAAA +2 + +False +sdXobgrlYU2L1/qWIZeVbQAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +aEQbGbu1RUmWsDAICiJNTwAA +WqqmSN/gEEaHIi6thbawOgAA +30ztuuZjgUWFENPWbZjqcQAA +a6tH/Yzt0E+ese+qa4wrpAAA + + +sdXobgrlYU2L1/qWIZeVbQAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +YoM78V68lkKo7Numh59trgAA +dVJSx7ho+EqABTRVQPcKhQAA +eU5fpDfQ2U6OVE175tsMqwAA +tMJ5k6bZeUiLFh88eS3wdgAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +FSk8hUtGWkmBk+HkJfIJKgAA +AA+tv0o7WEOsU/p8ARi2HwAA +Jf6ALwO3jEeHe0vYNjfLAgAA +IvKhFByfpUCcn/YqcXfbPgAA +2 + +False +OmM+eekhg0GbzlknV8u1ZAAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ZvOTL1rSUk6CQY4hwBrqegAA +Of7ccsBnqkaSn6B6t9DVPQAA +GPC+nF1LD0KrOURoh0yL8AAA +v2MyTVginUOKSbWlY94WjQAA + + +OmM+eekhg0GbzlknV8u1ZAAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +PdS+fnI4N0SQkvVq9b30jwAA +XFP42idPeku5uVwmrrqKzwAA +S/p5ROIy1U2gqatmOThTRwAA +06B4iG/QKEKRZO8kHdwZeAAA + + + +ReadDataFunc +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +hmq5uazXFEODjhNPJUjSSQAA +uDOH/KsRIEavbxX1xdzu/QAA +BhmycGW15Em+D3P37zB8ygAA +GLVVorRDpUWukVkj49Gp0wAA +1 +jnCsLP0Sf0yt9lDVV1LciwAA + + +OLEDBFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +lZ7Yq8/FFEiWzskr8MRAFwAA +scSizN9oD06bUypBriUOFQAA +sHjjbfaaqEqqnV4IDHxMlgAA +f7uP/XJI6U2/6NTKR8RkkQAA +1 +9+kZHdCkj0eY9UcrwhtCfQAA + + +SQLiteFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TkHbHc/vAEi/Ha0kFY7FOQAA +0aVfEElvcE2iQnFXjxH+DAAA +bxzpLdvGW0683rQWnDuttgAA +dKIEnVI9H0SRd5k2/ryocgAA +1 +b+hU5o+TlkOM+yGUy9hdywAA + + +SQLServerFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +p/J1GXyZ6UeR7a7yi6SzPQAA +wTl/ChZhw0uLdY9MP4TxXQAA +9jWmJh1OV06WFEtCLsA3MQAA +5hg8P/vgOkaLySJaj+VLEAAA +1 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +GP5T19mLOkidlhtRNP55ggAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ugUMU3O/NUmUa0th3HGEkwAA +mF6nO4aSVUegFD8nwbxlwQAA +O8eBi6cBtkafHn2TwbOpnQAA +rgqvrcdxrUe4Vz8624AXCgAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +2J6/xOxs/0u0a5S3lQ7YzgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +DPyFPZBdkkCg5lQ/rnvUHwAA +RFzBJM8kz0es6+k7DAWOtQAA +WFKYqHhIbE+YlAsA0AmuqgAA +A/Vdm+UXiEa/iKKpl/88tQAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +5h+/sIhx2E2UqzkIikmRvgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +F3qWfsq350aBC4YewG4q2QAA +UWqC+KzY5UmOXj2qfTHzLQAA +HKTwTMEFkUG8P8rlrfr6ZQAA +ZqkwmYeC7k6grSGblARZdAAA + + +DataExtensions +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +3j5+3OOaF0y1zwDA8S5GNwAA +qducKhsNv0iQWFp6hM8iAgAA +SNStRBCrI0m6HooRWOnYjQAA +3tJP+TaeuUC+y31SJIyl2gAA +2 + +ToEntityList<T> +r4c8AvUvPEuHAMSSjErzcAAA +1 + +pdkReturn +IList<T> +3Yb5MdNVOUqZIHLU9uBnYAAA + + + +ToEntity<T> +r4c8AvUvPEuHAMSSjErzcAAA +1 + +pdkReturn +T +E8YPguxc9Euk2TIxAyAt8QAA + + + + + +Interface Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Architecture +VbQhCZseI0qUBU0vAgXitQAA +1 + +Component Architecture Diagram +True +nVmkh++vi0CjogISzhE+IgAA + +YsjhK3OHT0qXwpSplP/g8wAA + + +1 + +Interactions +nVmkh++vi0CjogISzhE+IgAA + + + + + + diff --git a/docs/OPS.BaseLib.~ml b/docs/OPS.BaseLib.~ml new file mode 100644 index 0000000..ccb22fb --- /dev/null +++ b/docs/OPS.BaseLib.~ml @@ -0,0 +1,1307 @@ + + + + + + +UMLStandard + + + + +OPS.Data +刘铭 +OPSoft INC +Copyright 2011 @ OPSoft INC +2 + +Requirements +3VpgPqYYMk+W/XQCNRKD4wAA +1 + +Use Case Model +acgPfAcd1kaGEyzuHFTRyAAA +1 + +Use Case Diagram +True +3fZE3NrSY0idrfiZLnMm1gAA + +pC2SPx9qv0ufue2JLlJq9AAA + + +1 + +Business Concept Model +3fZE3NrSY0idrfiZLnMm1gAA +1 + +Business Concept Diagram +NYsFdu4Lrk+z2/KvEDWaIgAA + +GixB1RiXm06wfAfUS1AHMgAA + + + + + + +Specifications +3VpgPqYYMk+W/XQCNRKD4wAA +4 + +Business Type Model +VbQhCZseI0qUBU0vAgXitQAA +1 + +ops.data +rRtxf4Kp5Uycl1GLrDnFpwAA + +JV9DeUayAUmQVh28Fv/xmwAA +14 + +clMaroon +$00B9FFFF +56 +56 +113 +108 +Nm7PJCp6JUGcnGTWqAguYgAA + + +1 +DataBaseType + + +<<enumeration>> + + +False + + + +Nm7PJCp6JUGcnGTWqAguYgAA + + +Nm7PJCp6JUGcnGTWqAguYgAA + + + +clMaroon +$00B9FFFF +40 +364 +157 +49 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + +clMaroon +$00B9FFFF +464 +52 +477 +121 +8/MZ/rhZh06z7h6nWR2zDAAA + + +1 +DataBaseFactory + + +False + + +False + + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +False +8/MZ/rhZh06z7h6nWR2zDAAA + + + +clMaroon +$00B9FFFF +272 +268 +549 +277 +3YDa0oXL3UW+S1enEcGB0wAA + + +1 +DataBaseAccess + + +False + + +False + + + +3YDa0oXL3UW+S1enEcGB0wAA + + +3YDa0oXL3UW+S1enEcGB0wAA + + +False +3YDa0oXL3UW+S1enEcGB0wAA + + + +clMaroon +$00B9FFFF +lsRectilinear +164,56;164,48;704,48;704,52 +0NAGGdx0CEaFtHzh5vqungAA +Auj/G2NlR0KThbxvBnabQQAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +1.5707963267949 +30 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-0.523598775598299 +30 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.523598775598299 +30 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +0.523598775598299 +25 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-0.523598775598299 +25 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-0.785398163397448 +40 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.785398163397448 +40 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-1000 +-1000 +50 +8 +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-1000 +-1000 +50 +8 +mzDsY4IWEka7exrl0JuShQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +168,148;388,148;388,268 +sdXobgrlYU2L1/qWIZeVbQAA +sYJON+K9Bkei8kji0hrS8wAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +1.5707963267949 +30 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-0.523598775598299 +30 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.523598775598299 +30 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +0.523598775598299 +25 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-0.523598775598299 +25 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-0.785398163397448 +40 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.785398163397448 +40 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-1000 +-1000 +50 +8 +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-1000 +-1000 +50 +8 +jhjXdqG4c0m+J734o4pBewAA + + + +clMaroon +$00B9FFFF +lsRectilinear +464,124;428,124;428,200;424,200;424,268 +OmM+eekhg0GbzlknV8u1ZAAA +sYJON+K9Bkei8kji0hrS8wAA +Auj/G2NlR0KThbxvBnabQQAA + +False +1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +1.5707963267949 +30 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-0.523598775598299 +30 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.523598775598299 +30 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +0.523598775598299 +25 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-0.523598775598299 +25 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-0.785398163397448 +40 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.785398163397448 +40 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-1000 +-1000 +50 +8 +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-1000 +-1000 +50 +8 +5DPMRfObzkKcqguHIQC2TAAA + + + +clMaroon +$00B9FFFF +60 +264 +157 +43 +XLjScPJc5EOGQ3Feji50jgAA + + +1 +ReadDataFunc + + +False + + +False + + + +XLjScPJc5EOGQ3Feji50jgAA + + +XLjScPJc5EOGQ3Feji50jgAA + + +False +XLjScPJc5EOGQ3Feji50jgAA + + + +clMaroon +$00B9FFFF +464 +196 +88 +43 +GP5T19mLOkidlhtRNP55ggAA + + +1 +OLEDBFactory + + +False + + +False + + + +GP5T19mLOkidlhtRNP55ggAA + + +GP5T19mLOkidlhtRNP55ggAA + + +False +GP5T19mLOkidlhtRNP55ggAA + + + +clMaroon +$00B9FFFF +608 +196 +89 +43 +2J6/xOxs/0u0a5S3lQ7YzgAA + + +1 +SQLiteFactory + + +False + + +False + + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +False +2J6/xOxs/0u0a5S3lQ7YzgAA + + + +clMaroon +$00B9FFFF +764 +196 +112 +43 +5h+/sIhx2E2UqzkIikmRvgAA + + +1 +SQLServerFactory + + +False + + +False + + + +5h+/sIhx2E2UqzkIikmRvgAA + + +5h+/sIhx2E2UqzkIikmRvgAA + + +False +5h+/sIhx2E2UqzkIikmRvgAA + + + +clMaroon +$00B9FFFF +lsRectilinear +516,196;516,172 +9+kZHdCkj0eY9UcrwhtCfQAA +Auj/G2NlR0KThbxvBnabQQAA +lZ7Yq8/FFEiWzskr8MRAFwAA + +False +1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +1.5707963267949 +30 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +-1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +636,196;636,172 +b+hU5o+TlkOM+yGUy9hdywAA +Auj/G2NlR0KThbxvBnabQQAA +TkHbHc/vAEi/Ha0kFY7FOQAA + +False +1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +1.5707963267949 +30 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +-1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + + +clMaroon +$00B9FFFF +lsRectilinear +819,196;819,172 +Vd9i0AC5yU6vI3u2Yq3NwAAA +Auj/G2NlR0KThbxvBnabQQAA +p/J1GXyZ6UeR7a7yi6SzPQAA + +False +1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +1.5707963267949 +30 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +-1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + + + +14 + +DataBaseType +rRtxf4Kp5Uycl1GLrDnFpwAA +3 +llUyqL2UdkW0OutHGAG5iAAA +ITnMiDAz9Eu9EuCB/nHs9AAA +us0XyizgLUeOecVGgpS4OgAA +1 +WoYQa2XwOUGdQ6hvhaxlHgAA +2 +mzDsY4IWEka7exrl0JuShQAA +jhjXdqG4c0m+J734o4pBewAA +3 + +SQLServer +Nm7PJCp6JUGcnGTWqAguYgAA + + +SQLite +Nm7PJCp6JUGcnGTWqAguYgAA + + +OLEDb +Nm7PJCp6JUGcnGTWqAguYgAA + + + +Exception +rRtxf4Kp5Uycl1GLrDnFpwAA +1 + +Overview of Exception +/Wq0LSdAE0WIzm2tpH58ygAA + +ephSgxqeW0yttdM29TDIQwAA +1 + +clMaroon +$00B9FFFF +10 +8 +146 +46 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + + +1 + +DataBaseExceptionBase +/Wq0LSdAE0WIzm2tpH58ygAA +8 +eoo27uLIWkuuaHI1l5SUDgAA +tarly2jxGE26etgruXTx0AAA +eTtcnK3JKUKy3Pi6vG6RpQAA +8cwZAjGelE6z69bBC+xd5gAA +jde/BTrjvUemT4qysd3WMgAA +F8e5rqbL1UWeM6h2MKzVaQAA +kwI+TMOg702ukq1POuSLwQAA +/LhlQ08zI0yvqbtHkj/UqwAA + + + +DataBaseFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +Auj/G2NlR0KThbxvBnabQQAA +jAYb95wAvUKzxwcp/ZMnTAAA +owI1NK+C2EKzjfnnE0zOFQAA +NV04q7MQ10SsQy5/iEd/IgAA +3 +9+kZHdCkj0eY9UcrwhtCfQAA +b+hU5o+TlkOM+yGUy9hdywAA +Vd9i0AC5yU6vI3u2Yq3NwAAA +4 + +GetConnection +8/MZ/rhZh06z7h6nWR2zDAAA +1 + +pdkReturn +DbConnection +Zk8CURUraUWc3OQy80gpOAAA + + + +CreateCommand +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbCommand +jGgi8y9UTkewHYG/vu9QTgAA + + +commandText +string +jGgi8y9UTkewHYG/vu9QTgAA + + + +CreateDataAdapter +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbDataAdapter +uhAe/NG5nUKaXuDUga18DQAA + + +commandText +string +uhAe/NG5nUKaXuDUga18DQAA + + + +CreateParameter +8/MZ/rhZh06z7h6nWR2zDAAA +3 + +pdkReturn +void +jeZkWgnzMEubkW5ldnCmTwAA + + +name +string +jeZkWgnzMEubkW5ldnCmTwAA + + +value +object +jeZkWgnzMEubkW5ldnCmTwAA + + +1 +FGPblmEp10SiUzhV97Ju8QAA +2 +ks6fgvD+sUCAS5Gyhk190wAA +5DPMRfObzkKcqguHIQC2TAAA +2 + +connectionString +vkPrivate +string +8/MZ/rhZh06z7h6nWR2zDAAA + + +dbAccess +vkProtected +DataBaseAccess +3YDa0oXL3UW+S1enEcGB0wAA +8/MZ/rhZh06z7h6nWR2zDAAA + + + +DataBaseAccess +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +sYJON+K9Bkei8kji0hrS8wAA +xO1rctzQmkeNgt3kKsRVmgAA +uFCPr+BiME61os+lvUel5QAA +d7VoBc4PC0+Cw5CI+/4BWwAA +14 + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DbParameter +mkt7FI5h10iuE76mo7d32gAA + + +name +string +mkt7FI5h10iuE76mo7d32gAA + + +value +object +mkt7FI5h10iuE76mo7d32gAA + + + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +DbParameter +GtWfcqVRSUiF/AozbYgjbAAA + + +name +string +GtWfcqVRSUiF/AozbYgjbAAA + + +value +object +GtWfcqVRSUiF/AozbYgjbAAA + + +direction +ParameterDirection +GtWfcqVRSUiF/AozbYgjbAAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +int +Hxo4XwtZ8k++TbAUkALlzwAA + + +sql +string +Hxo4XwtZ8k++TbAUkALlzwAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +int +oYXl5lJuYUuMuMnomV4JNgAA + + +sql +string +oYXl5lJuYUuMuMnomV4JNgAA + + +parameters +DbParameter[] +oYXl5lJuYUuMuMnomV4JNgAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +object +IvTac24Nj0iMKyI2zGXSUwAA + + +sql +string +IvTac24Nj0iMKyI2zGXSUwAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +object +XVBfwwS3zkWQP8r9FCP79wAA + + +sql +string +XVBfwwS3zkWQP8r9FCP79wAA + + +parameters +DbParameter[] +XVBfwwS3zkWQP8r9FCP79wAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +void +vbbvEVmqME2lN8X2IY6mZQAA + + +sql +string +vbbvEVmqME2lN8X2IY6mZQAA + + +behavior +ReadDataFunc +vbbvEVmqME2lN8X2IY6mZQAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +void +JGZn7nYYRU2MAq4olL18QQAA + + +sql +string +JGZn7nYYRU2MAq4olL18QQAA + + +behavior +JGZn7nYYRU2MAq4olL18QQAA +XLjScPJc5EOGQ3Feji50jgAA + + +parameters +DbParameter[] +JGZn7nYYRU2MAq4olL18QQAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +DataSet +kei6QUZ4HEuqbsn8xjzrkgAA + + +sql +string +kei6QUZ4HEuqbsn8xjzrkgAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DataSet +1SIuz93rIky9sBj2Vqh4RAAA + + +sql +string +1SIuz93rIky9sBj2Vqh4RAAA + + +parameters +DbParameter[] +1SIuz93rIky9sBj2Vqh4RAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):T +TiDRMI/9wE691Bn5szGCUAAA + + +sql +string +TiDRMI/9wE691Bn5szGCUAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):T +rTF/el6nI02ggly4K9XSxwAA + + +sql +string +rTF/el6nI02ggly4K9XSxwAA + + +parameters +DbParameter[] +rTF/el6nI02ggly4K9XSxwAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):IList<T> +49te8U0DQ0ORv7bKPaBXQgAA + + +sql +string +49te8U0DQ0ORv7bKPaBXQgAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):IList<T> +Ior7O6mJJUuGf2SC8ddI3wAA + + +sql +string +Ior7O6mJJUuGf2SC8ddI3wAA + + +parameters +DbParameter[] +Ior7O6mJJUuGf2SC8ddI3wAA + + +1 +mY/twf9Jwk+l7gpvn/F8BgAA +2 +f3rLdJOuA0uc1gfWF/KmPwAA +NG+2hFln3kCW9f4Ne7NDAQAA +3 + +dbConn +DbConnection +3YDa0oXL3UW+S1enEcGB0wAA + + +dbFactory +DataBaseFactory +8/MZ/rhZh06z7h6nWR2zDAAA +3YDa0oXL3UW+S1enEcGB0wAA + + +procedureRegex +Regex +3YDa0oXL3UW+S1enEcGB0wAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +0RIum6C7PUOIRKCbLkuwtgAA +tgTOJYnVuk2sjZ1fsk/ulQAA +jqI3qfU33kedmn2RFP9jfAAA +PoQUP10OIUibCP3ghrxmzgAA +2 + +False +0NAGGdx0CEaFtHzh5vqungAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +o5He4CjUxEmLRmli8m0UnQAA +kaRY4VFm5UKRH0E775wQkAAA +oYU+f3uC9Ui5ZhNonax1rwAA +5baxQZ+Ic0GqEHwSfmXrngAA + + +0NAGGdx0CEaFtHzh5vqungAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +O1GRwFZnqE+R24MN1h4lYgAA +S8WsbUxei0Wyp9B9rQbCRwAA +e+EfeYeg+k6J39/qyRlBCgAA +/HjJ8xlsYkOWQctiLd0LZwAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TaEV1SEg+06VbRakDHCZcgAA +1IRYkbL5EU2eCMZ3WogySAAA +RUJ2U4cAsUuHkqSKMk0RfAAA +fyCChVQs+UiypeT09koOlAAA +2 + +False +sdXobgrlYU2L1/qWIZeVbQAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +aEQbGbu1RUmWsDAICiJNTwAA +WqqmSN/gEEaHIi6thbawOgAA +30ztuuZjgUWFENPWbZjqcQAA +a6tH/Yzt0E+ese+qa4wrpAAA + + +sdXobgrlYU2L1/qWIZeVbQAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +YoM78V68lkKo7Numh59trgAA +dVJSx7ho+EqABTRVQPcKhQAA +eU5fpDfQ2U6OVE175tsMqwAA +tMJ5k6bZeUiLFh88eS3wdgAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +FSk8hUtGWkmBk+HkJfIJKgAA +AA+tv0o7WEOsU/p8ARi2HwAA +Jf6ALwO3jEeHe0vYNjfLAgAA +IvKhFByfpUCcn/YqcXfbPgAA +2 + +False +OmM+eekhg0GbzlknV8u1ZAAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ZvOTL1rSUk6CQY4hwBrqegAA +Of7ccsBnqkaSn6B6t9DVPQAA +GPC+nF1LD0KrOURoh0yL8AAA +v2MyTVginUOKSbWlY94WjQAA + + +OmM+eekhg0GbzlknV8u1ZAAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +PdS+fnI4N0SQkvVq9b30jwAA +XFP42idPeku5uVwmrrqKzwAA +S/p5ROIy1U2gqatmOThTRwAA +06B4iG/QKEKRZO8kHdwZeAAA + + + +ReadDataFunc +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +hmq5uazXFEODjhNPJUjSSQAA +uDOH/KsRIEavbxX1xdzu/QAA +BhmycGW15Em+D3P37zB8ygAA +GLVVorRDpUWukVkj49Gp0wAA +1 +jnCsLP0Sf0yt9lDVV1LciwAA + + +OLEDBFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +lZ7Yq8/FFEiWzskr8MRAFwAA +scSizN9oD06bUypBriUOFQAA +sHjjbfaaqEqqnV4IDHxMlgAA +f7uP/XJI6U2/6NTKR8RkkQAA +1 +9+kZHdCkj0eY9UcrwhtCfQAA + + +SQLiteFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TkHbHc/vAEi/Ha0kFY7FOQAA +0aVfEElvcE2iQnFXjxH+DAAA +bxzpLdvGW0683rQWnDuttgAA +dKIEnVI9H0SRd5k2/ryocgAA +1 +b+hU5o+TlkOM+yGUy9hdywAA + + +SQLServerFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +p/J1GXyZ6UeR7a7yi6SzPQAA +wTl/ChZhw0uLdY9MP4TxXQAA +9jWmJh1OV06WFEtCLsA3MQAA +5hg8P/vgOkaLySJaj+VLEAAA +1 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +GP5T19mLOkidlhtRNP55ggAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ugUMU3O/NUmUa0th3HGEkwAA +mF6nO4aSVUegFD8nwbxlwQAA +O8eBi6cBtkafHn2TwbOpnQAA +rgqvrcdxrUe4Vz8624AXCgAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +2J6/xOxs/0u0a5S3lQ7YzgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +DPyFPZBdkkCg5lQ/rnvUHwAA +RFzBJM8kz0es6+k7DAWOtQAA +WFKYqHhIbE+YlAsA0AmuqgAA +A/Vdm+UXiEa/iKKpl/88tQAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +5h+/sIhx2E2UqzkIikmRvgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +F3qWfsq350aBC4YewG4q2QAA +UWqC+KzY5UmOXj2qfTHzLQAA +HKTwTMEFkUG8P8rlrfr6ZQAA +ZqkwmYeC7k6grSGblARZdAAA + + + +Interface Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Architecture +VbQhCZseI0qUBU0vAgXitQAA +1 + +Component Architecture Diagram +True +nVmkh++vi0CjogISzhE+IgAA + +YsjhK3OHT0qXwpSplP/g8wAA + + +1 + +Interactions +nVmkh++vi0CjogISzhE+IgAA + + + + + + diff --git a/docs/OPS.Template.vsd b/docs/OPS.Template.vsd new file mode 100644 index 0000000..e8ec24f Binary files /dev/null and b/docs/OPS.Template.vsd differ diff --git a/docs/baselib.eap b/docs/baselib.eap new file mode 100644 index 0000000..ecd1505 Binary files /dev/null and b/docs/baselib.eap differ diff --git a/src/.vs/config/applicationhost.config b/src/.vs/config/applicationhost.config new file mode 100644 index 0000000..912db46 --- /dev/null +++ b/src/.vs/config/applicationhost.config @@ -0,0 +1,1035 @@ + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + + + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AtNet.DevFw.sln b/src/AtNet.DevFw.sln deleted file mode 100644 index f2a30f5..0000000 --- a/src/AtNet.DevFw.sln +++ /dev/null @@ -1,174 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DevFw", "DevFw", "{D40F58FF-8D2E-4549-B680-68EE0D38CA00}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Web", "core\AtNet.DevFw.Web\AtNet.DevFw.Web.csproj", "{4F756EAD-0C41-499C-AE91-660892B444AC}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{33331172-4E47-4F42-920E-9D4497C1988D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Web.Example", "examples\devfw.web\AtNet.DevFw.Web.Example.csproj", "{FF0226AA-66A9-413C-B928-29EA1E821906}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Toolkit", "Toolkit", "{BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.mapfre.weixin", "examples\com.mapfre.weixin\com.mapfre.weixin.csproj", "{E387CF54-3BA1-4F17-9F88-A01C60448D4E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Core", "core\AtNet.DevFw.Core\AtNet.DevFw.Core.csproj", "{44E05D6C-5B0A-453A-913F-00124D1BF435}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Data", "core\AtNet.DevFw.Data\AtNet.DevFw.Data.csproj", "{1D053644-937A-4D8E-9740-43823183A39A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.PluginKernel", "core\AtNet.DevFw.PluginKernel\kernel\AtNet.DevFw.PluginKernel.csproj", "{CAD14DCC-112C-4B28-98EB-1CE143D09033}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Template", "core\AtNet.DevFw.Template\AtNet.DevFw.Template.csproj", "{275CAE3E-A9E0-4DE0-8031-E9137BBDD693}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Toolkit.Data", "toolkit\AtNet.DevFw.Toolkit.Data\AtNet.DevFw.Toolkit.Data.csproj", "{8A5B5504-8D72-4F30-A50E-5856BE419DEA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Toolkit.NetCrawl", "toolkit\AtNet.DevFw.Toolkit.NetCrawl\NetCrawl\AtNet.DevFw.Toolkit.NetCrawl.csproj", "{74914743-7506-414A-8F6B-45E5479F0127}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Toolkit.Region", "toolkit\AtNet.DevFw.Toolkit.Region\com.region\AtNet.DevFw.Toolkit.Region.csproj", "{84942A04-73A1-447A-9D39-CC1CF88B5158}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtNet.DevFw.Toolkit.Tags", "toolkit\AtNet.DevFw.Toolkit.Tags\AtNet.DevFw.Toolkit.Tags.csproj", "{1E9FCAD5-DF56-469B-BCEB-806BF9085A47}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|x86.ActiveCfg = Debug|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Any CPU.Build.0 = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|x86.ActiveCfg = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Debug|x86.ActiveCfg = Debug|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Any CPU.Build.0 = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {FF0226AA-66A9-413C-B928-29EA1E821906}.Release|x86.ActiveCfg = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Any CPU.Build.0 = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {E387CF54-3BA1-4F17-9F88-A01C60448D4E}.Release|x86.ActiveCfg = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|x86.ActiveCfg = Debug|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Any CPU.ActiveCfg = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Any CPU.Build.0 = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|x86.ActiveCfg = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Debug|x86.ActiveCfg = Debug|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Any CPU.Build.0 = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1D053644-937A-4D8E-9740-43823183A39A}.Release|x86.ActiveCfg = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|x86.ActiveCfg = Debug|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.Build.0 = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|x86.ActiveCfg = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.Build.0 = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|x86.ActiveCfg = Debug|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.ActiveCfg = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.Build.0 = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|x86.ActiveCfg = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|x86.ActiveCfg = Debug|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.Build.0 = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|x86.ActiveCfg = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Debug|x86.ActiveCfg = Debug|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.Build.0 = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {74914743-7506-414A-8F6B-45E5479F0127}.Release|x86.ActiveCfg = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.Build.0 = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|x86.ActiveCfg = Debug|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.ActiveCfg = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.Build.0 = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|x86.ActiveCfg = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|x86.ActiveCfg = Debug|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.Build.0 = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|x86.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {4F756EAD-0C41-499C-AE91-660892B444AC} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {44E05D6C-5B0A-453A-913F-00124D1BF435} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {1D053644-937A-4D8E-9740-43823183A39A} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {CAD14DCC-112C-4B28-98EB-1CE143D09033} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {275CAE3E-A9E0-4DE0-8031-E9137BBDD693} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} - {FF0226AA-66A9-413C-B928-29EA1E821906} = {33331172-4E47-4F42-920E-9D4497C1988D} - {E387CF54-3BA1-4F17-9F88-A01C60448D4E} = {33331172-4E47-4F42-920E-9D4497C1988D} - {8A5B5504-8D72-4F30-A50E-5856BE419DEA} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {74914743-7506-414A-8F6B-45E5479F0127} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {84942A04-73A1-447A-9D39-CC1CF88B5158} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} - EndGlobalSection - GlobalSection(TestCaseManagementSettings) = postSolution - CategoryFile = OPS.BaseLib.vsmdi - EndGlobalSection -EndGlobal diff --git a/src/AtNet.DevFw.userprefs b/src/AtNet.DevFw.userprefs deleted file mode 100644 index 85df9d2..0000000 --- a/src/AtNet.DevFw.userprefs +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/src/JR.DevFw.sln b/src/JR.DevFw.sln new file mode 100644 index 0000000..8d088b2 --- /dev/null +++ b/src/JR.DevFw.sln @@ -0,0 +1,191 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DevFw", "DevFw", "{D40F58FF-8D2E-4549-B680-68EE0D38CA00}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JR.DevFw.Web", "core\J6.DevFw.Web\JR.DevFw.Web.csproj", "{4F756EAD-0C41-499C-AE91-660892B444AC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{33331172-4E47-4F42-920E-9D4497C1988D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Toolkit", "Toolkit", "{BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JR.DevFw.Core", "core\J6.DevFw.Core\JR.DevFw.Core.csproj", "{44E05D6C-5B0A-453A-913F-00124D1BF435}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JR.DevFw.Data", "core\J6.DevFw.Data\JR.DevFw.Data.csproj", "{1D053644-937A-4D8E-9740-43823183A39A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JR.DevFw.PluginKernel", "core\J6.DevFw.PluginKernel\kernel\JR.DevFw.PluginKernel.csproj", "{CAD14DCC-112C-4B28-98EB-1CE143D09033}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JR.DevFw.Template", "core\J6.DevFw.Template\JR.DevFw.Template.csproj", "{275CAE3E-A9E0-4DE0-8031-E9137BBDD693}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.Data", "toolkit\J6.DevFw.Toolkit.Data\J6.DevFw.Toolkit.Data.csproj", "{8A5B5504-8D72-4F30-A50E-5856BE419DEA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.NetCrawl", "toolkit\J6.DevFw.Toolkit.NetCrawl\NetCrawl\J6.DevFw.Toolkit.NetCrawl.csproj", "{74914743-7506-414A-8F6B-45E5479F0127}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.Region", "toolkit\J6.DevFw.Toolkit.Region\com.region\J6.DevFw.Toolkit.Region.csproj", "{84942A04-73A1-447A-9D39-CC1CF88B5158}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.Tags", "toolkit\J6.DevFw.Toolkit.Tags\J6.DevFw.Toolkit.Tags.csproj", "{1E9FCAD5-DF56-469B-BCEB-806BF9085A47}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.Toolkit.ThirdApi", "toolkit\J6.DevFw.Toolkit.ThirdApi\J6.DevFw.Toolkit.ThirdApi.csproj", "{D1FBD275-BF29-4823-970A-0F341BF99A9F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "J6.DevFw.WebResource", "toolkit\J6.DevFw.WebResource\J6.DevFw.WebResource.csproj", "{6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JR.DevFw.Web.Example", "examples\JR.DevFw.Web.Example\JR.DevFw.Web.Example.csproj", "{876E3277-D7D6-4DF6-811F-03D741DF11C4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Debug|x86.ActiveCfg = Debug|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Any CPU.Build.0 = Release|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4F756EAD-0C41-499C-AE91-660892B444AC}.Release|x86.ActiveCfg = Release|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Debug|x86.ActiveCfg = Debug|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Any CPU.ActiveCfg = Release|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Any CPU.Build.0 = Release|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {44E05D6C-5B0A-453A-913F-00124D1BF435}.Release|x86.ActiveCfg = Release|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Debug|x86.ActiveCfg = Debug|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Release|Any CPU.Build.0 = Release|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1D053644-937A-4D8E-9740-43823183A39A}.Release|x86.ActiveCfg = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|x86.ActiveCfg = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.Build.0 = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|x86.ActiveCfg = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.Build.0 = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|x86.ActiveCfg = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.ActiveCfg = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.Build.0 = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|x86.ActiveCfg = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|x86.ActiveCfg = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.Build.0 = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|x86.ActiveCfg = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|x86.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.Build.0 = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|x86.ActiveCfg = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|x86.ActiveCfg = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.ActiveCfg = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.Build.0 = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|x86.ActiveCfg = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|x86.ActiveCfg = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.Build.0 = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|x86.ActiveCfg = Release|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|x86.ActiveCfg = Debug|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|x86.Build.0 = Debug|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Any CPU.Build.0 = Release|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Mixed Platforms.Build.0 = Release|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|x86.ActiveCfg = Release|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|x86.Build.0 = Release|x86 + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Debug|x86.ActiveCfg = Debug|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Release|Any CPU.Build.0 = Release|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886}.Release|x86.ActiveCfg = Release|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Debug|x86.ActiveCfg = Debug|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Debug|x86.Build.0 = Debug|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Release|Any CPU.Build.0 = Release|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Release|x86.ActiveCfg = Release|Any CPU + {876E3277-D7D6-4DF6-811F-03D741DF11C4}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {4F756EAD-0C41-499C-AE91-660892B444AC} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} + {44E05D6C-5B0A-453A-913F-00124D1BF435} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} + {1D053644-937A-4D8E-9740-43823183A39A} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} + {CAD14DCC-112C-4B28-98EB-1CE143D09033} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693} = {D40F58FF-8D2E-4549-B680-68EE0D38CA00} + {8A5B5504-8D72-4F30-A50E-5856BE419DEA} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} + {74914743-7506-414A-8F6B-45E5479F0127} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} + {84942A04-73A1-447A-9D39-CC1CF88B5158} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} + {D1FBD275-BF29-4823-970A-0F341BF99A9F} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886} = {BCF72535-6C75-4DFB-BCDC-5242AAF7FE5D} + {876E3277-D7D6-4DF6-811F-03D741DF11C4} = {33331172-4E47-4F42-920E-9D4497C1988D} + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = OPS.BaseLib.vsmdi + EndGlobalSection +EndGlobal diff --git a/J6/dll/Mono.Data.Sqlite.dll b/src/OPS.Library/DLL/Mono.Data.Sqlite.dll similarity index 100% rename from J6/dll/Mono.Data.Sqlite.dll rename to src/OPS.Library/DLL/Mono.Data.Sqlite.dll diff --git a/J6/dll/NetPay.dll b/src/OPS.Library/DLL/NetPay.dll similarity index 100% rename from J6/dll/NetPay.dll rename to src/OPS.Library/DLL/NetPay.dll diff --git a/J6/dll/System.Data.SQLite.dll b/src/OPS.Library/DLL/System.Data.SQLite.dll similarity index 100% rename from J6/dll/System.Data.SQLite.dll rename to src/OPS.Library/DLL/System.Data.SQLite.dll diff --git a/J6/dll/mysql.data.dll b/src/OPS.Library/DLL/mysql.data.dll similarity index 100% rename from J6/dll/mysql.data.dll rename to src/OPS.Library/DLL/mysql.data.dll diff --git a/src/OPS.Library/Docs/OPS.BaseLib.uml b/src/OPS.Library/Docs/OPS.BaseLib.uml new file mode 100644 index 0000000..5c3571f --- /dev/null +++ b/src/OPS.Library/Docs/OPS.BaseLib.uml @@ -0,0 +1,1368 @@ + + + + + + +UMLStandard + + + + +OPS.Data +刘铭 +OPSoft INC +Copyright 2011 @ OPSoft INC +2 + +Requirements +3VpgPqYYMk+W/XQCNRKD4wAA +1 + +Use Case Model +acgPfAcd1kaGEyzuHFTRyAAA +1 + +Use Case Diagram +True +3fZE3NrSY0idrfiZLnMm1gAA + +pC2SPx9qv0ufue2JLlJq9AAA + + +1 + +Business Concept Model +3fZE3NrSY0idrfiZLnMm1gAA +1 + +Business Concept Diagram +NYsFdu4Lrk+z2/KvEDWaIgAA + +GixB1RiXm06wfAfUS1AHMgAA + + + + + + +Specifications +3VpgPqYYMk+W/XQCNRKD4wAA +4 + +Business Type Model +VbQhCZseI0qUBU0vAgXitQAA +1 + +ops.data +rRtxf4Kp5Uycl1GLrDnFpwAA + +JV9DeUayAUmQVh28Fv/xmwAA +15 + +clMaroon +$00B9FFFF +56 +56 +113 +108 +Nm7PJCp6JUGcnGTWqAguYgAA + + +1 +DataBaseType + + +<<enumeration>> + + +False + + + +Nm7PJCp6JUGcnGTWqAguYgAA + + +Nm7PJCp6JUGcnGTWqAguYgAA + + + +clMaroon +$00B9FFFF +40 +364 +157 +49 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + +clMaroon +$00B9FFFF +464 +52 +477 +121 +8/MZ/rhZh06z7h6nWR2zDAAA + + +1 +DataBaseFactory + + +False + + +False + + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +False +8/MZ/rhZh06z7h6nWR2zDAAA + + + +clMaroon +$00B9FFFF +244 +260 +449 +277 +3YDa0oXL3UW+S1enEcGB0wAA + + +1 +DataBaseAccess + + +False + + +False + + + +3YDa0oXL3UW+S1enEcGB0wAA + + +3YDa0oXL3UW+S1enEcGB0wAA + + +False +3YDa0oXL3UW+S1enEcGB0wAA + + + +clMaroon +$00B9FFFF +lsRectilinear +164,56;164,48;704,48;704,52 +0NAGGdx0CEaFtHzh5vqungAA +Auj/G2NlR0KThbxvBnabQQAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +1.5707963267949 +30 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-0.523598775598299 +30 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.523598775598299 +30 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +0.523598775598299 +25 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-0.523598775598299 +25 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-0.785398163397448 +40 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.785398163397448 +40 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-1000 +-1000 +50 +8 +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-1000 +-1000 +50 +8 +mzDsY4IWEka7exrl0JuShQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +168,148;296,148;296,260 +sdXobgrlYU2L1/qWIZeVbQAA +sYJON+K9Bkei8kji0hrS8wAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +1.5707963267949 +30 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-0.523598775598299 +30 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.523598775598299 +30 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +0.523598775598299 +25 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-0.523598775598299 +25 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-0.785398163397448 +40 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.785398163397448 +40 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-1000 +-1000 +50 +8 +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-1000 +-1000 +50 +8 +jhjXdqG4c0m+J734o4pBewAA + + + +clMaroon +$00B9FFFF +lsRectilinear +464,124;356,124;356,260 +OmM+eekhg0GbzlknV8u1ZAAA +sYJON+K9Bkei8kji0hrS8wAA +Auj/G2NlR0KThbxvBnabQQAA + +False +1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +1.5707963267949 +30 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-0.523598775598299 +30 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.523598775598299 +30 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +0.523598775598299 +25 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-0.523598775598299 +25 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-0.785398163397448 +40 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.785398163397448 +40 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-1000 +-1000 +50 +8 +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-1000 +-1000 +50 +8 +5DPMRfObzkKcqguHIQC2TAAA + + + +clMaroon +$00B9FFFF +60 +264 +157 +43 +XLjScPJc5EOGQ3Feji50jgAA + + +1 +ReadDataFunc + + +False + + +False + + + +XLjScPJc5EOGQ3Feji50jgAA + + +XLjScPJc5EOGQ3Feji50jgAA + + +False +XLjScPJc5EOGQ3Feji50jgAA + + + +clMaroon +$00B9FFFF +464 +196 +88 +43 +GP5T19mLOkidlhtRNP55ggAA + + +1 +OLEDBFactory + + +False + + +False + + + +GP5T19mLOkidlhtRNP55ggAA + + +GP5T19mLOkidlhtRNP55ggAA + + +False +GP5T19mLOkidlhtRNP55ggAA + + + +clMaroon +$00B9FFFF +608 +196 +89 +43 +2J6/xOxs/0u0a5S3lQ7YzgAA + + +1 +SQLiteFactory + + +False + + +False + + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +False +2J6/xOxs/0u0a5S3lQ7YzgAA + + + +clMaroon +$00B9FFFF +764 +196 +112 +43 +5h+/sIhx2E2UqzkIikmRvgAA + + +1 +SQLServerFactory + + +False + + +False + + + +5h+/sIhx2E2UqzkIikmRvgAA + + +5h+/sIhx2E2UqzkIikmRvgAA + + +False +5h+/sIhx2E2UqzkIikmRvgAA + + + +clMaroon +$00B9FFFF +lsRectilinear +516,196;516,172 +9+kZHdCkj0eY9UcrwhtCfQAA +Auj/G2NlR0KThbxvBnabQQAA +lZ7Yq8/FFEiWzskr8MRAFwAA + +False +1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +1.5707963267949 +30 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +-1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +636,196;636,172 +b+hU5o+TlkOM+yGUy9hdywAA +Auj/G2NlR0KThbxvBnabQQAA +TkHbHc/vAEi/Ha0kFY7FOQAA + +False +1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +1.5707963267949 +30 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +-1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + + +clMaroon +$00B9FFFF +lsRectilinear +819,196;819,172 +Vd9i0AC5yU6vI3u2Yq3NwAAA +Auj/G2NlR0KThbxvBnabQQAA +p/J1GXyZ6UeR7a7yi6SzPQAA + +False +1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +1.5707963267949 +30 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +-1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + + +clMaroon +$00B9FFFF +780 +268 +153 +69 +r4c8AvUvPEuHAMSSjErzcAAA + + +1 +DataExtensions + + +False + + +False + + + +r4c8AvUvPEuHAMSSjErzcAAA + + +r4c8AvUvPEuHAMSSjErzcAAA + + +False +r4c8AvUvPEuHAMSSjErzcAAA + + + + +15 + +DataBaseType +rRtxf4Kp5Uycl1GLrDnFpwAA +3 +llUyqL2UdkW0OutHGAG5iAAA +ITnMiDAz9Eu9EuCB/nHs9AAA +us0XyizgLUeOecVGgpS4OgAA +1 +WoYQa2XwOUGdQ6hvhaxlHgAA +2 +mzDsY4IWEka7exrl0JuShQAA +jhjXdqG4c0m+J734o4pBewAA +3 + +SQLServer +Nm7PJCp6JUGcnGTWqAguYgAA + + +SQLite +Nm7PJCp6JUGcnGTWqAguYgAA + + +OLEDb +Nm7PJCp6JUGcnGTWqAguYgAA + + + +Exception +rRtxf4Kp5Uycl1GLrDnFpwAA +1 + +Overview of Exception +/Wq0LSdAE0WIzm2tpH58ygAA + +ephSgxqeW0yttdM29TDIQwAA +1 + +clMaroon +$00B9FFFF +10 +8 +146 +46 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + + +1 + +DataBaseExceptionBase +/Wq0LSdAE0WIzm2tpH58ygAA +8 +eoo27uLIWkuuaHI1l5SUDgAA +tarly2jxGE26etgruXTx0AAA +eTtcnK3JKUKy3Pi6vG6RpQAA +8cwZAjGelE6z69bBC+xd5gAA +jde/BTrjvUemT4qysd3WMgAA +F8e5rqbL1UWeM6h2MKzVaQAA +kwI+TMOg702ukq1POuSLwQAA +/LhlQ08zI0yvqbtHkj/UqwAA + + + +DataBaseFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +Auj/G2NlR0KThbxvBnabQQAA +jAYb95wAvUKzxwcp/ZMnTAAA +owI1NK+C2EKzjfnnE0zOFQAA +NV04q7MQ10SsQy5/iEd/IgAA +3 +9+kZHdCkj0eY9UcrwhtCfQAA +b+hU5o+TlkOM+yGUy9hdywAA +Vd9i0AC5yU6vI3u2Yq3NwAAA +4 + +GetConnection +8/MZ/rhZh06z7h6nWR2zDAAA +1 + +pdkReturn +DbConnection +Zk8CURUraUWc3OQy80gpOAAA + + + +CreateCommand +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbCommand +jGgi8y9UTkewHYG/vu9QTgAA + + +commandText +string +jGgi8y9UTkewHYG/vu9QTgAA + + + +CreateDataAdapter +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbDataAdapter +uhAe/NG5nUKaXuDUga18DQAA + + +commandText +string +uhAe/NG5nUKaXuDUga18DQAA + + + +CreateParameter +8/MZ/rhZh06z7h6nWR2zDAAA +3 + +pdkReturn +void +jeZkWgnzMEubkW5ldnCmTwAA + + +name +string +jeZkWgnzMEubkW5ldnCmTwAA + + +value +object +jeZkWgnzMEubkW5ldnCmTwAA + + +1 +FGPblmEp10SiUzhV97Ju8QAA +2 +ks6fgvD+sUCAS5Gyhk190wAA +5DPMRfObzkKcqguHIQC2TAAA +2 + +connectionString +vkPrivate +string +8/MZ/rhZh06z7h6nWR2zDAAA + + +dbAccess +vkProtected +DataBaseAccess +3YDa0oXL3UW+S1enEcGB0wAA +8/MZ/rhZh06z7h6nWR2zDAAA + + + +DataBaseAccess +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +sYJON+K9Bkei8kji0hrS8wAA +xO1rctzQmkeNgt3kKsRVmgAA +uFCPr+BiME61os+lvUel5QAA +d7VoBc4PC0+Cw5CI+/4BWwAA +14 + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DbParameter +mkt7FI5h10iuE76mo7d32gAA + + +name +string +mkt7FI5h10iuE76mo7d32gAA + + +value +object +mkt7FI5h10iuE76mo7d32gAA + + + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +DbParameter +GtWfcqVRSUiF/AozbYgjbAAA + + +name +string +GtWfcqVRSUiF/AozbYgjbAAA + + +value +object +GtWfcqVRSUiF/AozbYgjbAAA + + +direction +ParameterDirection +GtWfcqVRSUiF/AozbYgjbAAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +int +Hxo4XwtZ8k++TbAUkALlzwAA + + +sql +string +Hxo4XwtZ8k++TbAUkALlzwAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +int +oYXl5lJuYUuMuMnomV4JNgAA + + +sql +string +oYXl5lJuYUuMuMnomV4JNgAA + + +parameters +DbParameter[] +oYXl5lJuYUuMuMnomV4JNgAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +object +IvTac24Nj0iMKyI2zGXSUwAA + + +sql +string +IvTac24Nj0iMKyI2zGXSUwAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +object +XVBfwwS3zkWQP8r9FCP79wAA + + +sql +string +XVBfwwS3zkWQP8r9FCP79wAA + + +parameters +DbParameter[] +XVBfwwS3zkWQP8r9FCP79wAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +void +vbbvEVmqME2lN8X2IY6mZQAA + + +sql +string +vbbvEVmqME2lN8X2IY6mZQAA + + +behavior +ReadDataFunc +vbbvEVmqME2lN8X2IY6mZQAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +void +JGZn7nYYRU2MAq4olL18QQAA + + +sql +string +JGZn7nYYRU2MAq4olL18QQAA + + +behavior +JGZn7nYYRU2MAq4olL18QQAA +XLjScPJc5EOGQ3Feji50jgAA + + +parameters +DbParameter[] +JGZn7nYYRU2MAq4olL18QQAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +DataSet +kei6QUZ4HEuqbsn8xjzrkgAA + + +sql +string +kei6QUZ4HEuqbsn8xjzrkgAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DataSet +1SIuz93rIky9sBj2Vqh4RAAA + + +sql +string +1SIuz93rIky9sBj2Vqh4RAAA + + +parameters +DbParameter[] +1SIuz93rIky9sBj2Vqh4RAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):T +TiDRMI/9wE691Bn5szGCUAAA + + +sql +string +TiDRMI/9wE691Bn5szGCUAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):T +rTF/el6nI02ggly4K9XSxwAA + + +sql +string +rTF/el6nI02ggly4K9XSxwAA + + +parameters +DbParameter[] +rTF/el6nI02ggly4K9XSxwAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):IList<T> +49te8U0DQ0ORv7bKPaBXQgAA + + +sql +string +49te8U0DQ0ORv7bKPaBXQgAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):IList<T> +Ior7O6mJJUuGf2SC8ddI3wAA + + +sql +string +Ior7O6mJJUuGf2SC8ddI3wAA + + +parameters +DbParameter[] +Ior7O6mJJUuGf2SC8ddI3wAA + + +1 +mY/twf9Jwk+l7gpvn/F8BgAA +2 +f3rLdJOuA0uc1gfWF/KmPwAA +NG+2hFln3kCW9f4Ne7NDAQAA +3 + +dbConn +DbConnection +3YDa0oXL3UW+S1enEcGB0wAA + + +dbFactory +DataBaseFactory +8/MZ/rhZh06z7h6nWR2zDAAA +3YDa0oXL3UW+S1enEcGB0wAA + + +procedureRegex +Regex +3YDa0oXL3UW+S1enEcGB0wAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +0RIum6C7PUOIRKCbLkuwtgAA +tgTOJYnVuk2sjZ1fsk/ulQAA +jqI3qfU33kedmn2RFP9jfAAA +PoQUP10OIUibCP3ghrxmzgAA +2 + +False +0NAGGdx0CEaFtHzh5vqungAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +o5He4CjUxEmLRmli8m0UnQAA +kaRY4VFm5UKRH0E775wQkAAA +oYU+f3uC9Ui5ZhNonax1rwAA +5baxQZ+Ic0GqEHwSfmXrngAA + + +0NAGGdx0CEaFtHzh5vqungAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +O1GRwFZnqE+R24MN1h4lYgAA +S8WsbUxei0Wyp9B9rQbCRwAA +e+EfeYeg+k6J39/qyRlBCgAA +/HjJ8xlsYkOWQctiLd0LZwAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TaEV1SEg+06VbRakDHCZcgAA +1IRYkbL5EU2eCMZ3WogySAAA +RUJ2U4cAsUuHkqSKMk0RfAAA +fyCChVQs+UiypeT09koOlAAA +2 + +False +sdXobgrlYU2L1/qWIZeVbQAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +aEQbGbu1RUmWsDAICiJNTwAA +WqqmSN/gEEaHIi6thbawOgAA +30ztuuZjgUWFENPWbZjqcQAA +a6tH/Yzt0E+ese+qa4wrpAAA + + +sdXobgrlYU2L1/qWIZeVbQAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +YoM78V68lkKo7Numh59trgAA +dVJSx7ho+EqABTRVQPcKhQAA +eU5fpDfQ2U6OVE175tsMqwAA +tMJ5k6bZeUiLFh88eS3wdgAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +FSk8hUtGWkmBk+HkJfIJKgAA +AA+tv0o7WEOsU/p8ARi2HwAA +Jf6ALwO3jEeHe0vYNjfLAgAA +IvKhFByfpUCcn/YqcXfbPgAA +2 + +False +OmM+eekhg0GbzlknV8u1ZAAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ZvOTL1rSUk6CQY4hwBrqegAA +Of7ccsBnqkaSn6B6t9DVPQAA +GPC+nF1LD0KrOURoh0yL8AAA +v2MyTVginUOKSbWlY94WjQAA + + +OmM+eekhg0GbzlknV8u1ZAAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +PdS+fnI4N0SQkvVq9b30jwAA +XFP42idPeku5uVwmrrqKzwAA +S/p5ROIy1U2gqatmOThTRwAA +06B4iG/QKEKRZO8kHdwZeAAA + + + +ReadDataFunc +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +hmq5uazXFEODjhNPJUjSSQAA +uDOH/KsRIEavbxX1xdzu/QAA +BhmycGW15Em+D3P37zB8ygAA +GLVVorRDpUWukVkj49Gp0wAA +1 +jnCsLP0Sf0yt9lDVV1LciwAA + + +OLEDBFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +lZ7Yq8/FFEiWzskr8MRAFwAA +scSizN9oD06bUypBriUOFQAA +sHjjbfaaqEqqnV4IDHxMlgAA +f7uP/XJI6U2/6NTKR8RkkQAA +1 +9+kZHdCkj0eY9UcrwhtCfQAA + + +SQLiteFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TkHbHc/vAEi/Ha0kFY7FOQAA +0aVfEElvcE2iQnFXjxH+DAAA +bxzpLdvGW0683rQWnDuttgAA +dKIEnVI9H0SRd5k2/ryocgAA +1 +b+hU5o+TlkOM+yGUy9hdywAA + + +SQLServerFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +p/J1GXyZ6UeR7a7yi6SzPQAA +wTl/ChZhw0uLdY9MP4TxXQAA +9jWmJh1OV06WFEtCLsA3MQAA +5hg8P/vgOkaLySJaj+VLEAAA +1 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +GP5T19mLOkidlhtRNP55ggAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ugUMU3O/NUmUa0th3HGEkwAA +mF6nO4aSVUegFD8nwbxlwQAA +O8eBi6cBtkafHn2TwbOpnQAA +rgqvrcdxrUe4Vz8624AXCgAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +2J6/xOxs/0u0a5S3lQ7YzgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +DPyFPZBdkkCg5lQ/rnvUHwAA +RFzBJM8kz0es6+k7DAWOtQAA +WFKYqHhIbE+YlAsA0AmuqgAA +A/Vdm+UXiEa/iKKpl/88tQAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +5h+/sIhx2E2UqzkIikmRvgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +F3qWfsq350aBC4YewG4q2QAA +UWqC+KzY5UmOXj2qfTHzLQAA +HKTwTMEFkUG8P8rlrfr6ZQAA +ZqkwmYeC7k6grSGblARZdAAA + + +DataExtensions +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +3j5+3OOaF0y1zwDA8S5GNwAA +qducKhsNv0iQWFp6hM8iAgAA +SNStRBCrI0m6HooRWOnYjQAA +3tJP+TaeuUC+y31SJIyl2gAA +2 + +ToEntityList<T> +r4c8AvUvPEuHAMSSjErzcAAA +1 + +pdkReturn +IList<T> +3Yb5MdNVOUqZIHLU9uBnYAAA + + + +ToEntity<T> +r4c8AvUvPEuHAMSSjErzcAAA +1 + +pdkReturn +T +E8YPguxc9Euk2TIxAyAt8QAA + + + + + +Interface Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Architecture +VbQhCZseI0qUBU0vAgXitQAA +1 + +Component Architecture Diagram +True +nVmkh++vi0CjogISzhE+IgAA + +YsjhK3OHT0qXwpSplP/g8wAA + + +1 + +Interactions +nVmkh++vi0CjogISzhE+IgAA + + + + + + diff --git a/src/OPS.Library/Docs/OPS.BaseLib.~ml b/src/OPS.Library/Docs/OPS.BaseLib.~ml new file mode 100644 index 0000000..ccb22fb --- /dev/null +++ b/src/OPS.Library/Docs/OPS.BaseLib.~ml @@ -0,0 +1,1307 @@ + + + + + + +UMLStandard + + + + +OPS.Data +刘铭 +OPSoft INC +Copyright 2011 @ OPSoft INC +2 + +Requirements +3VpgPqYYMk+W/XQCNRKD4wAA +1 + +Use Case Model +acgPfAcd1kaGEyzuHFTRyAAA +1 + +Use Case Diagram +True +3fZE3NrSY0idrfiZLnMm1gAA + +pC2SPx9qv0ufue2JLlJq9AAA + + +1 + +Business Concept Model +3fZE3NrSY0idrfiZLnMm1gAA +1 + +Business Concept Diagram +NYsFdu4Lrk+z2/KvEDWaIgAA + +GixB1RiXm06wfAfUS1AHMgAA + + + + + + +Specifications +3VpgPqYYMk+W/XQCNRKD4wAA +4 + +Business Type Model +VbQhCZseI0qUBU0vAgXitQAA +1 + +ops.data +rRtxf4Kp5Uycl1GLrDnFpwAA + +JV9DeUayAUmQVh28Fv/xmwAA +14 + +clMaroon +$00B9FFFF +56 +56 +113 +108 +Nm7PJCp6JUGcnGTWqAguYgAA + + +1 +DataBaseType + + +<<enumeration>> + + +False + + + +Nm7PJCp6JUGcnGTWqAguYgAA + + +Nm7PJCp6JUGcnGTWqAguYgAA + + + +clMaroon +$00B9FFFF +40 +364 +157 +49 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + +clMaroon +$00B9FFFF +464 +52 +477 +121 +8/MZ/rhZh06z7h6nWR2zDAAA + + +1 +DataBaseFactory + + +False + + +False + + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +8/MZ/rhZh06z7h6nWR2zDAAA + + +False +8/MZ/rhZh06z7h6nWR2zDAAA + + + +clMaroon +$00B9FFFF +272 +268 +549 +277 +3YDa0oXL3UW+S1enEcGB0wAA + + +1 +DataBaseAccess + + +False + + +False + + + +3YDa0oXL3UW+S1enEcGB0wAA + + +3YDa0oXL3UW+S1enEcGB0wAA + + +False +3YDa0oXL3UW+S1enEcGB0wAA + + + +clMaroon +$00B9FFFF +lsRectilinear +164,56;164,48;704,48;704,52 +0NAGGdx0CEaFtHzh5vqungAA +Auj/G2NlR0KThbxvBnabQQAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +1.5707963267949 +30 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-1.5707963267949 +15 +0NAGGdx0CEaFtHzh5vqungAA + + +False +-0.523598775598299 +30 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.523598775598299 +30 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +0.523598775598299 +25 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-0.523598775598299 +25 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-0.785398163397448 +40 +epHead +ks6fgvD+sUCAS5Gyhk190wAA + + +False +0.785398163397448 +40 +epTail +mzDsY4IWEka7exrl0JuShQAA + + +False +-1000 +-1000 +50 +8 +ks6fgvD+sUCAS5Gyhk190wAA + + +False +-1000 +-1000 +50 +8 +mzDsY4IWEka7exrl0JuShQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +168,148;388,148;388,268 +sdXobgrlYU2L1/qWIZeVbQAA +sYJON+K9Bkei8kji0hrS8wAA +llUyqL2UdkW0OutHGAG5iAAA + +False +1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +1.5707963267949 +30 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-1.5707963267949 +15 +sdXobgrlYU2L1/qWIZeVbQAA + + +False +-0.523598775598299 +30 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.523598775598299 +30 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +0.523598775598299 +25 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-0.523598775598299 +25 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-0.785398163397448 +40 +epHead +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +0.785398163397448 +40 +epTail +jhjXdqG4c0m+J734o4pBewAA + + +False +-1000 +-1000 +50 +8 +f3rLdJOuA0uc1gfWF/KmPwAA + + +False +-1000 +-1000 +50 +8 +jhjXdqG4c0m+J734o4pBewAA + + + +clMaroon +$00B9FFFF +lsRectilinear +464,124;428,124;428,200;424,200;424,268 +OmM+eekhg0GbzlknV8u1ZAAA +sYJON+K9Bkei8kji0hrS8wAA +Auj/G2NlR0KThbxvBnabQQAA + +False +1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +1.5707963267949 +30 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-1.5707963267949 +15 +OmM+eekhg0GbzlknV8u1ZAAA + + +False +-0.523598775598299 +30 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.523598775598299 +30 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +0.523598775598299 +25 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-0.523598775598299 +25 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-0.785398163397448 +40 +epHead +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +0.785398163397448 +40 +epTail +5DPMRfObzkKcqguHIQC2TAAA + + +False +-1000 +-1000 +50 +8 +NG+2hFln3kCW9f4Ne7NDAQAA + + +False +-1000 +-1000 +50 +8 +5DPMRfObzkKcqguHIQC2TAAA + + + +clMaroon +$00B9FFFF +60 +264 +157 +43 +XLjScPJc5EOGQ3Feji50jgAA + + +1 +ReadDataFunc + + +False + + +False + + + +XLjScPJc5EOGQ3Feji50jgAA + + +XLjScPJc5EOGQ3Feji50jgAA + + +False +XLjScPJc5EOGQ3Feji50jgAA + + + +clMaroon +$00B9FFFF +464 +196 +88 +43 +GP5T19mLOkidlhtRNP55ggAA + + +1 +OLEDBFactory + + +False + + +False + + + +GP5T19mLOkidlhtRNP55ggAA + + +GP5T19mLOkidlhtRNP55ggAA + + +False +GP5T19mLOkidlhtRNP55ggAA + + + +clMaroon +$00B9FFFF +608 +196 +89 +43 +2J6/xOxs/0u0a5S3lQ7YzgAA + + +1 +SQLiteFactory + + +False + + +False + + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +2J6/xOxs/0u0a5S3lQ7YzgAA + + +False +2J6/xOxs/0u0a5S3lQ7YzgAA + + + +clMaroon +$00B9FFFF +764 +196 +112 +43 +5h+/sIhx2E2UqzkIikmRvgAA + + +1 +SQLServerFactory + + +False + + +False + + + +5h+/sIhx2E2UqzkIikmRvgAA + + +5h+/sIhx2E2UqzkIikmRvgAA + + +False +5h+/sIhx2E2UqzkIikmRvgAA + + + +clMaroon +$00B9FFFF +lsRectilinear +516,196;516,172 +9+kZHdCkj0eY9UcrwhtCfQAA +Auj/G2NlR0KThbxvBnabQQAA +lZ7Yq8/FFEiWzskr8MRAFwAA + +False +1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +1.5707963267949 +30 +9+kZHdCkj0eY9UcrwhtCfQAA + + +False +-1.5707963267949 +15 +9+kZHdCkj0eY9UcrwhtCfQAA + + + +clMaroon +$00B9FFFF +lsRectilinear +636,196;636,172 +b+hU5o+TlkOM+yGUy9hdywAA +Auj/G2NlR0KThbxvBnabQQAA +TkHbHc/vAEi/Ha0kFY7FOQAA + +False +1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +1.5707963267949 +30 +b+hU5o+TlkOM+yGUy9hdywAA + + +False +-1.5707963267949 +15 +b+hU5o+TlkOM+yGUy9hdywAA + + + +clMaroon +$00B9FFFF +lsRectilinear +819,196;819,172 +Vd9i0AC5yU6vI3u2Yq3NwAAA +Auj/G2NlR0KThbxvBnabQQAA +p/J1GXyZ6UeR7a7yi6SzPQAA + +False +1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +1.5707963267949 +30 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +False +-1.5707963267949 +15 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + + + +14 + +DataBaseType +rRtxf4Kp5Uycl1GLrDnFpwAA +3 +llUyqL2UdkW0OutHGAG5iAAA +ITnMiDAz9Eu9EuCB/nHs9AAA +us0XyizgLUeOecVGgpS4OgAA +1 +WoYQa2XwOUGdQ6hvhaxlHgAA +2 +mzDsY4IWEka7exrl0JuShQAA +jhjXdqG4c0m+J734o4pBewAA +3 + +SQLServer +Nm7PJCp6JUGcnGTWqAguYgAA + + +SQLite +Nm7PJCp6JUGcnGTWqAguYgAA + + +OLEDb +Nm7PJCp6JUGcnGTWqAguYgAA + + + +Exception +rRtxf4Kp5Uycl1GLrDnFpwAA +1 + +Overview of Exception +/Wq0LSdAE0WIzm2tpH58ygAA + +ephSgxqeW0yttdM29TDIQwAA +1 + +clMaroon +$00B9FFFF +10 +8 +146 +46 +mj5iwItD10ayk1BC+YNilQAA + + +1 +DataBaseExceptionBase + + +False + + +False + + + +mj5iwItD10ayk1BC+YNilQAA + + +mj5iwItD10ayk1BC+YNilQAA + + +False +mj5iwItD10ayk1BC+YNilQAA + + + + +1 + +DataBaseExceptionBase +/Wq0LSdAE0WIzm2tpH58ygAA +8 +eoo27uLIWkuuaHI1l5SUDgAA +tarly2jxGE26etgruXTx0AAA +eTtcnK3JKUKy3Pi6vG6RpQAA +8cwZAjGelE6z69bBC+xd5gAA +jde/BTrjvUemT4qysd3WMgAA +F8e5rqbL1UWeM6h2MKzVaQAA +kwI+TMOg702ukq1POuSLwQAA +/LhlQ08zI0yvqbtHkj/UqwAA + + + +DataBaseFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +Auj/G2NlR0KThbxvBnabQQAA +jAYb95wAvUKzxwcp/ZMnTAAA +owI1NK+C2EKzjfnnE0zOFQAA +NV04q7MQ10SsQy5/iEd/IgAA +3 +9+kZHdCkj0eY9UcrwhtCfQAA +b+hU5o+TlkOM+yGUy9hdywAA +Vd9i0AC5yU6vI3u2Yq3NwAAA +4 + +GetConnection +8/MZ/rhZh06z7h6nWR2zDAAA +1 + +pdkReturn +DbConnection +Zk8CURUraUWc3OQy80gpOAAA + + + +CreateCommand +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbCommand +jGgi8y9UTkewHYG/vu9QTgAA + + +commandText +string +jGgi8y9UTkewHYG/vu9QTgAA + + + +CreateDataAdapter +8/MZ/rhZh06z7h6nWR2zDAAA +2 + +pdkReturn +DbDataAdapter +uhAe/NG5nUKaXuDUga18DQAA + + +commandText +string +uhAe/NG5nUKaXuDUga18DQAA + + + +CreateParameter +8/MZ/rhZh06z7h6nWR2zDAAA +3 + +pdkReturn +void +jeZkWgnzMEubkW5ldnCmTwAA + + +name +string +jeZkWgnzMEubkW5ldnCmTwAA + + +value +object +jeZkWgnzMEubkW5ldnCmTwAA + + +1 +FGPblmEp10SiUzhV97Ju8QAA +2 +ks6fgvD+sUCAS5Gyhk190wAA +5DPMRfObzkKcqguHIQC2TAAA +2 + +connectionString +vkPrivate +string +8/MZ/rhZh06z7h6nWR2zDAAA + + +dbAccess +vkProtected +DataBaseAccess +3YDa0oXL3UW+S1enEcGB0wAA +8/MZ/rhZh06z7h6nWR2zDAAA + + + +DataBaseAccess +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +sYJON+K9Bkei8kji0hrS8wAA +xO1rctzQmkeNgt3kKsRVmgAA +uFCPr+BiME61os+lvUel5QAA +d7VoBc4PC0+Cw5CI+/4BWwAA +14 + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DbParameter +mkt7FI5h10iuE76mo7d32gAA + + +name +string +mkt7FI5h10iuE76mo7d32gAA + + +value +object +mkt7FI5h10iuE76mo7d32gAA + + + +NewParameter +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +DbParameter +GtWfcqVRSUiF/AozbYgjbAAA + + +name +string +GtWfcqVRSUiF/AozbYgjbAAA + + +value +object +GtWfcqVRSUiF/AozbYgjbAAA + + +direction +ParameterDirection +GtWfcqVRSUiF/AozbYgjbAAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +int +Hxo4XwtZ8k++TbAUkALlzwAA + + +sql +string +Hxo4XwtZ8k++TbAUkALlzwAA + + + +ExecuteNonQuery +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +int +oYXl5lJuYUuMuMnomV4JNgAA + + +sql +string +oYXl5lJuYUuMuMnomV4JNgAA + + +parameters +DbParameter[] +oYXl5lJuYUuMuMnomV4JNgAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +object +IvTac24Nj0iMKyI2zGXSUwAA + + +sql +string +IvTac24Nj0iMKyI2zGXSUwAA + + + +ExecuteScalar +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +object +XVBfwwS3zkWQP8r9FCP79wAA + + +sql +string +XVBfwwS3zkWQP8r9FCP79wAA + + +parameters +DbParameter[] +XVBfwwS3zkWQP8r9FCP79wAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +void +vbbvEVmqME2lN8X2IY6mZQAA + + +sql +string +vbbvEVmqME2lN8X2IY6mZQAA + + +behavior +ReadDataFunc +vbbvEVmqME2lN8X2IY6mZQAA + + + +ExecuteRead +3YDa0oXL3UW+S1enEcGB0wAA +4 + +pdkReturn +void +JGZn7nYYRU2MAq4olL18QQAA + + +sql +string +JGZn7nYYRU2MAq4olL18QQAA + + +behavior +JGZn7nYYRU2MAq4olL18QQAA +XLjScPJc5EOGQ3Feji50jgAA + + +parameters +DbParameter[] +JGZn7nYYRU2MAq4olL18QQAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +DataSet +kei6QUZ4HEuqbsn8xjzrkgAA + + +sql +string +kei6QUZ4HEuqbsn8xjzrkgAA + + + +GetDataSet +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +DataSet +1SIuz93rIky9sBj2Vqh4RAAA + + +sql +string +1SIuz93rIky9sBj2Vqh4RAAA + + +parameters +DbParameter[] +1SIuz93rIky9sBj2Vqh4RAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):T +TiDRMI/9wE691Bn5szGCUAAA + + +sql +string +TiDRMI/9wE691Bn5szGCUAAA + + + +ToEntity<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):T +rTF/el6nI02ggly4K9XSxwAA + + +sql +string +rTF/el6nI02ggly4K9XSxwAA + + +parameters +DbParameter[] +rTF/el6nI02ggly4K9XSxwAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +2 + +pdkReturn +):IList<T> +49te8U0DQ0ORv7bKPaBXQgAA + + +sql +string +49te8U0DQ0ORv7bKPaBXQgAA + + + +ToEntityList<T> +3YDa0oXL3UW+S1enEcGB0wAA +3 + +pdkReturn +):IList<T> +Ior7O6mJJUuGf2SC8ddI3wAA + + +sql +string +Ior7O6mJJUuGf2SC8ddI3wAA + + +parameters +DbParameter[] +Ior7O6mJJUuGf2SC8ddI3wAA + + +1 +mY/twf9Jwk+l7gpvn/F8BgAA +2 +f3rLdJOuA0uc1gfWF/KmPwAA +NG+2hFln3kCW9f4Ne7NDAQAA +3 + +dbConn +DbConnection +3YDa0oXL3UW+S1enEcGB0wAA + + +dbFactory +DataBaseFactory +8/MZ/rhZh06z7h6nWR2zDAAA +3YDa0oXL3UW+S1enEcGB0wAA + + +procedureRegex +Regex +3YDa0oXL3UW+S1enEcGB0wAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +0RIum6C7PUOIRKCbLkuwtgAA +tgTOJYnVuk2sjZ1fsk/ulQAA +jqI3qfU33kedmn2RFP9jfAAA +PoQUP10OIUibCP3ghrxmzgAA +2 + +False +0NAGGdx0CEaFtHzh5vqungAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +o5He4CjUxEmLRmli8m0UnQAA +kaRY4VFm5UKRH0E775wQkAAA +oYU+f3uC9Ui5ZhNonax1rwAA +5baxQZ+Ic0GqEHwSfmXrngAA + + +0NAGGdx0CEaFtHzh5vqungAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +O1GRwFZnqE+R24MN1h4lYgAA +S8WsbUxei0Wyp9B9rQbCRwAA +e+EfeYeg+k6J39/qyRlBCgAA +/HjJ8xlsYkOWQctiLd0LZwAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TaEV1SEg+06VbRakDHCZcgAA +1IRYkbL5EU2eCMZ3WogySAAA +RUJ2U4cAsUuHkqSKMk0RfAAA +fyCChVQs+UiypeT09koOlAAA +2 + +False +sdXobgrlYU2L1/qWIZeVbQAA +Nm7PJCp6JUGcnGTWqAguYgAA +4 +aEQbGbu1RUmWsDAICiJNTwAA +WqqmSN/gEEaHIi6thbawOgAA +30ztuuZjgUWFENPWbZjqcQAA +a6tH/Yzt0E+ese+qa4wrpAAA + + +sdXobgrlYU2L1/qWIZeVbQAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +YoM78V68lkKo7Numh59trgAA +dVJSx7ho+EqABTRVQPcKhQAA +eU5fpDfQ2U6OVE175tsMqwAA +tMJ5k6bZeUiLFh88eS3wdgAA + + + +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +FSk8hUtGWkmBk+HkJfIJKgAA +AA+tv0o7WEOsU/p8ARi2HwAA +Jf6ALwO3jEeHe0vYNjfLAgAA +IvKhFByfpUCcn/YqcXfbPgAA +2 + +False +OmM+eekhg0GbzlknV8u1ZAAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ZvOTL1rSUk6CQY4hwBrqegAA +Of7ccsBnqkaSn6B6t9DVPQAA +GPC+nF1LD0KrOURoh0yL8AAA +v2MyTVginUOKSbWlY94WjQAA + + +OmM+eekhg0GbzlknV8u1ZAAA +3YDa0oXL3UW+S1enEcGB0wAA +4 +PdS+fnI4N0SQkvVq9b30jwAA +XFP42idPeku5uVwmrrqKzwAA +S/p5ROIy1U2gqatmOThTRwAA +06B4iG/QKEKRZO8kHdwZeAAA + + + +ReadDataFunc +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +hmq5uazXFEODjhNPJUjSSQAA +uDOH/KsRIEavbxX1xdzu/QAA +BhmycGW15Em+D3P37zB8ygAA +GLVVorRDpUWukVkj49Gp0wAA +1 +jnCsLP0Sf0yt9lDVV1LciwAA + + +OLEDBFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +lZ7Yq8/FFEiWzskr8MRAFwAA +scSizN9oD06bUypBriUOFQAA +sHjjbfaaqEqqnV4IDHxMlgAA +f7uP/XJI6U2/6NTKR8RkkQAA +1 +9+kZHdCkj0eY9UcrwhtCfQAA + + +SQLiteFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +TkHbHc/vAEi/Ha0kFY7FOQAA +0aVfEElvcE2iQnFXjxH+DAAA +bxzpLdvGW0683rQWnDuttgAA +dKIEnVI9H0SRd5k2/ryocgAA +1 +b+hU5o+TlkOM+yGUy9hdywAA + + +SQLServerFactory +rRtxf4Kp5Uycl1GLrDnFpwAA +4 +p/J1GXyZ6UeR7a7yi6SzPQAA +wTl/ChZhw0uLdY9MP4TxXQAA +9jWmJh1OV06WFEtCLsA3MQAA +5hg8P/vgOkaLySJaj+VLEAAA +1 +Vd9i0AC5yU6vI3u2Yq3NwAAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +GP5T19mLOkidlhtRNP55ggAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +ugUMU3O/NUmUa0th3HGEkwAA +mF6nO4aSVUegFD8nwbxlwQAA +O8eBi6cBtkafHn2TwbOpnQAA +rgqvrcdxrUe4Vz8624AXCgAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +2J6/xOxs/0u0a5S3lQ7YzgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +DPyFPZBdkkCg5lQ/rnvUHwAA +RFzBJM8kz0es6+k7DAWOtQAA +WFKYqHhIbE+YlAsA0AmuqgAA +A/Vdm+UXiEa/iKKpl/88tQAA + + +rRtxf4Kp5Uycl1GLrDnFpwAA +5h+/sIhx2E2UqzkIikmRvgAA +8/MZ/rhZh06z7h6nWR2zDAAA +4 +F3qWfsq350aBC4YewG4q2QAA +UWqC+KzY5UmOXj2qfTHzLQAA +HKTwTMEFkUG8P8rlrfr6ZQAA +ZqkwmYeC7k6grSGblARZdAAA + + + +Interface Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Specifications +VbQhCZseI0qUBU0vAgXitQAA + + +Component Architecture +VbQhCZseI0qUBU0vAgXitQAA +1 + +Component Architecture Diagram +True +nVmkh++vi0CjogISzhE+IgAA + +YsjhK3OHT0qXwpSplP/g8wAA + + +1 + +Interactions +nVmkh++vi0CjogISzhE+IgAA + + + + + + diff --git a/src/OPS.Library/Docs/OPS.Template.vsd b/src/OPS.Library/Docs/OPS.Template.vsd new file mode 100644 index 0000000..e8ec24f Binary files /dev/null and b/src/OPS.Library/Docs/OPS.Template.vsd differ diff --git a/src/OPS.Library/Docs/baselib.eap b/src/OPS.Library/Docs/baselib.eap new file mode 100644 index 0000000..ecd1505 Binary files /dev/null and b/src/OPS.Library/Docs/baselib.eap differ diff --git a/src/OPS.Library/OPS.BaseLib.sln b/src/OPS.Library/OPS.BaseLib.sln new file mode 100644 index 0000000..66e2786 --- /dev/null +++ b/src/OPS.Library/OPS.BaseLib.sln @@ -0,0 +1,230 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OPSoft.Data", "OPSoft.Data", "{6B812B35-4F2D-4F46-B9ED-D5F7DA755F1B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugin", "Plugin", "{4742584F-AD5F-4182-BF94-930D275AC883}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Com", "Com", "{6F1BF31B-B8AF-4AD9-8620-0088EA02134B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPSoft.Data", "Source Code\OPSoft.Data\OPSoft.Data\OPSoft.Data.csproj", "{A957726C-AF6E-4554-9119-5CDB489937AC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataTester", "Source Code\OPSoft.Data\DataTester\DataTester.csproj", "{50CB9890-B64F-44F2-BBFF-6D96847E5118}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PickerTestApp", "Source Code\OPSoft.Plugin\OPSoft.Picker\PickerTestApp\PickerTestApp.csproj", "{F19EC62A-FCC9-4495-AF2A-D3B37995F32E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PickerTestWeb", "Source Code\OPSoft.Plugin\OPSoft.Picker\PickerTestWeb\PickerTestWeb.csproj", "{FDF44A96-D75E-4CF6-950F-E845B1D13339}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPSoft.Plugin", "Source Code\OPSoft.Plus\OPSoft.Plugin.csproj", "{D1FBD275-BF29-4823-970A-0F341BF99A9F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.NetCrawl", "Source Code\OPSoft.Plugin\OPSoft.Picker\OPSoft.Picker\com.NetCrawl.csproj", "{74914743-7506-414A-8F6B-45E5479F0127}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.region", "Source Code\com\com.region\com.region\com.region.csproj", "{84942A04-73A1-447A-9D39-CC1CF88B5158}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Com.PluginKernel", "Source Code\com\Com.PluginKernel\kernel\Com.PluginKernel.csproj", "{CAD14DCC-112C-4B28-98EB-1CE143D09033}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginTest", "Source Code\com\Com.PluginKernel\test\PluginTest.csproj", "{BE14AB5F-DABC-49CD-9807-1AC17A585DF6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pluginDemo", "Source Code\com\Com.PluginKernel\demo\pluginDemo.csproj", "{C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.Tags", "Source Code\com\com.Tags\com.Tags.csproj", "{1E9FCAD5-DF56-469B-BCEB-806BF9085A47}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPSoft.Template", "Source Code\OPSoft.Template\OPSoft.Template.csproj", "{275CAE3E-A9E0-4DE0-8031-E9137BBDD693}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tester", "Source Code\Tester\Tester.csproj", "{013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPSoft.Core", "Source Code\OPSoft.CoreLib\OPSoft.Core.csproj", "{D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{3472A24C-FBD3-45BC-B2EB-9ED13379C8C5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Toolkit", "Toolkit", "{928F7252-A2F1-48C4-A348-931DCE103CD2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ops.Toolkit.Data", "Source Code\toolkit\Ops.Toolkit.Data\Ops.Toolkit.Data.csproj", "{8A5B5504-8D72-4F30-A50E-5856BE419DEA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A957726C-AF6E-4554-9119-5CDB489937AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Debug|x86.ActiveCfg = Debug|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Release|Any CPU.Build.0 = Release|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A957726C-AF6E-4554-9119-5CDB489937AC}.Release|x86.ActiveCfg = Release|Any CPU + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Debug|Any CPU.ActiveCfg = Debug|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Debug|x86.ActiveCfg = Debug|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Debug|x86.Build.0 = Debug|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Release|Any CPU.ActiveCfg = Release|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Release|Mixed Platforms.Build.0 = Release|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Release|x86.ActiveCfg = Release|x86 + {50CB9890-B64F-44F2-BBFF-6D96847E5118}.Release|x86.Build.0 = Release|x86 + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|x86.ActiveCfg = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|Any CPU.Build.0 = Release|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|x86.ActiveCfg = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|x86.ActiveCfg = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|Any CPU.Build.0 = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|x86.ActiveCfg = Release|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|x86.ActiveCfg = Debug|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Debug|x86.Build.0 = Debug|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Any CPU.Build.0 = Release|Any CPU + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|Mixed Platforms.Build.0 = Release|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|x86.ActiveCfg = Release|x86 + {D1FBD275-BF29-4823-970A-0F341BF99A9F}.Release|x86.Build.0 = Release|x86 + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|x86.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.Build.0 = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|x86.ActiveCfg = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Debug|x86.ActiveCfg = Debug|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.ActiveCfg = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Any CPU.Build.0 = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {84942A04-73A1-447A-9D39-CC1CF88B5158}.Release|x86.ActiveCfg = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Debug|x86.ActiveCfg = Debug|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Any CPU.Build.0 = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CAD14DCC-112C-4B28-98EB-1CE143D09033}.Release|x86.ActiveCfg = Release|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Debug|x86.ActiveCfg = Debug|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Release|Any CPU.Build.0 = Release|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6}.Release|x86.ActiveCfg = Release|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Debug|x86.ActiveCfg = Debug|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Release|Any CPU.Build.0 = Release|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE}.Release|x86.ActiveCfg = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Debug|x86.ActiveCfg = Debug|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Any CPU.Build.0 = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47}.Release|x86.ActiveCfg = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Any CPU.Build.0 = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Debug|x86.ActiveCfg = Debug|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.ActiveCfg = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Any CPU.Build.0 = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693}.Release|x86.ActiveCfg = Release|Any CPU + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Debug|Any CPU.ActiveCfg = Debug|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Debug|x86.ActiveCfg = Debug|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Debug|x86.Build.0 = Debug|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Release|Any CPU.ActiveCfg = Release|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Release|Mixed Platforms.Build.0 = Release|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Release|x86.ActiveCfg = Release|x86 + {013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}.Release|x86.Build.0 = Release|x86 + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Debug|x86.ActiveCfg = Debug|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Release|Any CPU.Build.0 = Release|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}.Release|x86.ActiveCfg = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Debug|x86.ActiveCfg = Debug|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Any CPU.Build.0 = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {8A5B5504-8D72-4F30-A50E-5856BE419DEA}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {A957726C-AF6E-4554-9119-5CDB489937AC} = {6B812B35-4F2D-4F46-B9ED-D5F7DA755F1B} + {50CB9890-B64F-44F2-BBFF-6D96847E5118} = {6B812B35-4F2D-4F46-B9ED-D5F7DA755F1B} + {FDF44A96-D75E-4CF6-950F-E845B1D13339} = {6B812B35-4F2D-4F46-B9ED-D5F7DA755F1B} + {D1FBD275-BF29-4823-970A-0F341BF99A9F} = {4742584F-AD5F-4182-BF94-930D275AC883} + {74914743-7506-414A-8F6B-45E5479F0127} = {4742584F-AD5F-4182-BF94-930D275AC883} + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E} = {4742584F-AD5F-4182-BF94-930D275AC883} + {84942A04-73A1-447A-9D39-CC1CF88B5158} = {6F1BF31B-B8AF-4AD9-8620-0088EA02134B} + {CAD14DCC-112C-4B28-98EB-1CE143D09033} = {6F1BF31B-B8AF-4AD9-8620-0088EA02134B} + {BE14AB5F-DABC-49CD-9807-1AC17A585DF6} = {6F1BF31B-B8AF-4AD9-8620-0088EA02134B} + {C1E10FBF-05AF-463B-8A9E-4E1DFADE3BEE} = {6F1BF31B-B8AF-4AD9-8620-0088EA02134B} + {1E9FCAD5-DF56-469B-BCEB-806BF9085A47} = {6F1BF31B-B8AF-4AD9-8620-0088EA02134B} + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291} = {3472A24C-FBD3-45BC-B2EB-9ED13379C8C5} + {8A5B5504-8D72-4F30-A50E-5856BE419DEA} = {928F7252-A2F1-48C4-A348-931DCE103CD2} + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = OPS.BaseLib.vsmdi + EndGlobalSection +EndGlobal diff --git a/J6/src/core/J6.DevFw.Core/Extensions/ILEmit.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Extensions/ILEmit.cs similarity index 100% rename from J6/src/core/J6.DevFw.Core/Extensions/ILEmit.cs rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Extensions/ILEmit.cs diff --git a/J6/src/core/J6.DevFw.Core/Extensions/StreamExtensions.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Extensions/StreamExtensions.cs similarity index 100% rename from J6/src/core/J6.DevFw.Core/Extensions/StreamExtensions.cs rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Extensions/StreamExtensions.cs diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/AssemblyResolve.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/AssemblyResolve.cs new file mode 100644 index 0000000..2bad888 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/AssemblyResolve.cs @@ -0,0 +1,71 @@ +/* + * 由SharpDevelop创建。 + * 用户: Administrator + * 日期: 2013/12/10 + * 时间: 11:24 + * + * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Reflection; + + +namespace Ops.Framework +{ + /// + /// Description of MyClass. + /// + public class AssemblyResolve + { + /// + /// 解决依赖 + /// + /// AppDomain + /// 目录 + /// 文件扩展名 + /// 是否AES解密 + public static void Resolve(AppDomain domain, string directory, string fileExtension, bool aes) + { + // WHY NOT WORK + //http://stackoverflow.com/questions/9734657/why-assemblyresolve-not-working + // + + domain.AssemblyResolve += delegate(object sender, ResolveEventArgs args) + { + string filePath = String.Concat(directory, directory.EndsWith("/") ? "" : "/", args.Name.Split(',')[0], + fileExtension); + if (!File.Exists(filePath)) + { + return null; + } + else + { + return Assembly.Load(File.ReadAllBytes(filePath)); + } + }; + } + + /// + /// 默认解析.dll + /// + /// + /// + public static void Resolve(AppDomain domain, string directory) + { + Resolve(domain, directory, ".dll", false); + } + + /// + /// 默认从lib目录下解析.dll + /// + /// + public static void Resolve(AppDomain domain) + { + Resolve(domain, domain.BaseDirectory + "lib/", ".dll", false); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Automation/EntityForm.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Automation/EntityForm.cs new file mode 100644 index 0000000..e1d6f21 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Automation/EntityForm.cs @@ -0,0 +1,388 @@ +using System; +using System.Text; +using System.Reflection; +using Ops.Framework.Extensions; + +namespace Ops.Framework.Automation +{ + /// + /// 实体表单 + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = true)] + public class EntityFormAttribute : Attribute + { + } + + /// + /// 表单列 + /// + [AttributeUsage(AttributeTargets.Property, Inherited = false)] + public class FormFieldAttribute : Attribute + { + public FormFieldAttribute(string name) + { + this.Name = name; + } + + /// + /// 列分组名称 + /// + public string Group { get; set; } + + /// + /// 名称 + /// + public string Name { get; set; } + + /// + /// 中文名称 + /// + public string Text { get; set; } + + /// + /// 列描述 + /// + public string Descript { get; set; } + + /// + /// 是否可以编辑 + /// + public bool DisableEdit { get; set; } + + /// + /// 是否隐藏显示 + /// + public bool Hidden { get; set; } + + /// + /// 是否为密码输入项 + /// + public bool IsPassword { get; set; } + + /// + /// 是否必填 + /// + public bool IsRequired { get; set; } + + /// + /// 正则匹配 + /// + public string Regex { get; set; } + + /// + /// 是否为数字 + /// + public bool IsNumber { get; set; } + + /// + /// 长度限制,如5-10,0-10 + /// + public string Length { get; set; } + + /// + /// 是否多行,多行用Textbox显示 + /// + public bool MultLine { get; set; } + } + + /// + /// 选择列 + /// + [AttributeUsage(AttributeTargets.Property, Inherited = false)] + public class SelectFieldAttribute : Attribute + { + /// + /// 数据字典,多个用;或|隔开。如:是=1;否=0 + /// + public string Data { get; set; } + + /// + /// 是否使用下拉,如果为否,则用radiobox + /// + public bool UseDrop { get; set; } + } + + public class EntityForm + { + /// + /// 创建HTML,包含表单及按钮 + /// + /// + /// + /// + /// + /// + public static string Build(T t, bool full, string btnText) where T : new() + { + if (t == null) throw new ArgumentNullException("实体" + typeof (T).Name + "不能为空!"); + StringBuilder sb = new StringBuilder(); + if (full) + { + sb.Append("
                                                                                                                                            \r\n").Append("
                                                                                                                                            \r\n"); + } + + Type type = typeof (T); + FormFieldAttribute ffa; + SelectFieldAttribute sfa; + string value; + + EntityFormAttribute[] eta = + type.GetCustomAttributes(typeof (EntityFormAttribute), true) as EntityFormAttribute[]; + if (eta.Length != 0) + { + //读取属性 + PropertyInfo[] prolist = type.GetProperties(); + foreach (PropertyInfo pro in prolist) + { + //枚举则获取对应的数值 + if (pro.PropertyType.IsEnum) + { + value = Convert.ToInt32(pro.GetValue(t, null)).ToString(); + } + else + { + value = (pro.GetValue(t, null) ?? String.Empty).ToString(); + } + + FormFieldAttribute[] fieldAttrs = + pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; + if (fieldAttrs.Length == 0) + { + continue; + } + else + { + ffa = fieldAttrs[0]; + + //设置标题 + sb.Append("" : " group=\"" + ffa.Group + "\">") + .Append("
                                                                                                                                            ").Append(ffa.IsRequired ? "*" : "") + .Append(String.IsNullOrEmpty(ffa.Text) ? ffa.Name : ffa.Text).Append(":
                                                                                                                                            ") + .Append("
                                                                                                                                            "); + + if (!ffa.DisableEdit) + { + //设置UI + SelectFieldAttribute[] sfAttrs = + pro.GetCustomAttributes(typeof (SelectFieldAttribute), false) as SelectFieldAttribute[]; + if (sfAttrs.Length != 0) + { + sfa = sfAttrs[0]; + //输出SELECT或RADIO + if (sfa.UseDrop) + { + sb.Append(""); + } + else + { + // + //UNDONE:.... + // + } + } + else + { + if (ffa.MultLine) + { + //输出Textbox + sb.Append(""); + } + else + { + //关闭INPUT + sb.Append(" />"); + } + } + } + else + { + sb.Append(value) + .Append(""); + } + + //列描述 + if (!String.IsNullOrEmpty(ffa.Descript)) + { + sb.Append("").Append(ffa.Descript).Append(""); + } + + //关闭列 + sb.Append("
                                                                                                                                            \r\n"); + } + } + } + else + { + sb.Append("该实体不支持EntityForm!"); + } + + + if (full) + { + sb.Append("
                                                                                                                                             
                                                                                                                                            ") + .Append(btnText).Append("
                                                                                                                                            ") + .Append("
                                                                                                                                            "); + } + + return sb.ToString(); + } + + /// + /// 创建HTML,仅包含字段 + /// + /// + /// + /// + public static string Build(T t) where T : new() + { + return Build(t, false, ""); + } + + public static T GetEntity() where T : new() + { + const bool allowError = false; + global::System.Collections.Specialized.NameValueCollection form = + global::System.Web.HttpContext.Current.Request.Form; + + Type type = typeof (T); + object t = Activator.CreateInstance(type); + PropertyInfo[] pros = type.GetProperties(); + FormFieldAttribute[] fieldAttrs; + FormFieldAttribute attr; + string value; + int tmpInt; + + + Type strType = typeof (String); //字符串类型 + Type bitType = typeof (Boolean); //布尔值类型 + Type proType = null; //属性类型 + + + foreach (PropertyInfo pro in pros) + { + if (!pro.CanWrite) continue; + fieldAttrs = pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; + if (fieldAttrs.Length != 0) + { + attr = fieldAttrs[0]; + value = form["field_" + pro.Name] ?? (form[pro.Name] ?? ""); + + proType = pro.PropertyType; + object obj; + + try + { + obj = ICollectionExtensions.GetPropertyValue(pro, strType, bitType, proType, value); + if (obj != null) + { + pro.SetValue(t, obj, null); + } + } + + catch (FormatException exc) + { + if (!allowError) + { + throw new FormatException("转换错误,属性名:" + pro.Name); + } + } + + + //if (pro.PropertyType.IsEnum) + //{ + // int.TryParse(value, out tmpInt); + // pro.SetValue(t, tmpInt, null); + //} + //else + //{ + // try + // { + // pro.SetValue(t, Convert.ChangeType(value, pro.PropertyType), null); + // } + // catch (FormatException exc) + // { + // throw new FormatException("转换错误,属性名:" + pro.Name); + // } + //} + } + } + + return (T) t; + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Extensions/DataExtensions.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/DataExtensions.cs similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Extensions/DataExtensions.cs rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/DataExtensions.cs diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/HttpExtensions.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/HttpExtensions.cs new file mode 100644 index 0000000..f397b1a --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/HttpExtensions.cs @@ -0,0 +1,64 @@ +// +// Copryright (C) OPS.CC 2008-2011 ,All right reseved. +// Name:HttpExtensions.cs +// Author: Newmin +// +// + +namespace Ops.Framework.Extensions +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using System.Text.RegularExpressions; + using System.Web; + + public static class HttpExtensions + { + /// + /// 是否为蜘蛛请求 + /// + /// + /// + public static bool IsSplider(this HttpRequest request) + { + string[] botNames = new string[] + { + "Googlebot", //谷歌蜘蛛 + "Baiduspider", //百度蜘蛛 + "Yahoo!+Slurp", //雅虎蜘蛛 + "bingbot", //必应蜘蛛 + "msnbot", //LIVE蜘蛛 + "Sosospider", //搜搜蜘蛛 + "YodaoBot", //有道蜘蛛 + "YoudaoBot", //有道蜘蛛 + "Sogou Web Sprider" //搜狗蜘蛛 + }; + + string agent = request.UserAgent; + bool isSplider = false; + Array.ForEach(botNames, a => { if (agent.IndexOf(a) != -1) isSplider = true; }); + return isSplider; + } + + /// + /// 是否移动设备 + /// + /// + /// + public static bool IscMobileDevice(this HttpRequest request) + { + string u = request.ServerVariables["HTTP_USER_AGENT"]; + Regex b = + new Regex( + @"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", + RegexOptions.IgnoreCase | RegexOptions.Multiline); + Regex v = + new Regex( + @"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", + RegexOptions.IgnoreCase | RegexOptions.Multiline); + return b.IsMatch(u) || v.IsMatch(u.Substring(0, 4)); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/ICollectionExtensions.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/ICollectionExtensions.cs new file mode 100644 index 0000000..cd1723b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/ICollectionExtensions.cs @@ -0,0 +1,178 @@ +/* + * Copyright 2010 OPS,All rights reseved ! + * name : 集合扩展 + * author : newmin + * date : 2010/11/26 07:31 + */ + +namespace Ops.Framework.Extensions +{ + using System; + using System.Collections.Generic; + using System.Reflection; + using System.Collections.Specialized; + + /// + /// 集合扩展 + /// + public static class ICollectionExtensions + { + /// + /// 返回符合条件的集合 + /// + /// + /// + /// + /// + public static IEnumerable WhereBy(this IEnumerable collection, Func condition) + { + foreach (T t in collection) + { + if (condition(t)) yield return t; + } + } + + public static T ConvertToEntity(this NameValueCollection form) + { + return BindToEntity(form, default(T), false); + } + + public static T BindToEntity(this NameValueCollection form, T t) + { + return BindToEntity(form, t, false); + } + + public static T BindToEntity(this NameValueCollection form, T entity, bool allowError) + { + Type type = typeof (T); //实体类型 + Type strType = typeof (String); //字符串类型 + Type bitType = typeof (Boolean); + Type proType = null; //属性类型 + + object t = entity; + if (t == null) + { + t = Activator.CreateInstance(type); + } + + PropertyInfo[] pros = type.GetProperties(); + string value; + + foreach (PropertyInfo pro in pros) + { + if (!pro.CanWrite) continue; + value = form[pro.Name]; + + //获取值 + if (value == null) + { + value = form["field_" + pro.Name]; + if (String.IsNullOrEmpty(value)) continue; + } + + + proType = pro.PropertyType; + object obj; + + try + { + obj = GetPropertyValue(pro, strType, bitType, proType, value); + if (obj != null) + { + pro.SetValue(t, obj, null); + } + + //if (pro.PropertyType.IsValueType) + //{ + // } + // else + // { + // pro.SetValue(t, + // Convert.ChangeType(value, pro.PropertyType), + // null); + // } + + // } + + + //if (pro.PropertyType.IsValueType) + //{ + // } + // else + // { + // pro.SetValue(t, + // Convert.ChangeType(value, pro.PropertyType), + // null); + // } + + // } + + //else if (pro.PropertyType == typeof(String)) + //{ + // pro.SetValue(t, + // Convert.ChangeType(value, pro.PropertyType), + // null); + //} + } + + catch (FormatException exc) + { + if (!allowError) + { + throw new FormatException("转换错误,属性名:" + pro.Name); + } + } + } + + return (T) t; + } + + internal static object GetPropertyValue(PropertyInfo pro, Type strType, Type bitType, Type proType, + string value) + { + if (proType == strType) + { + return value; + } + else if (proType == bitType) + { + return value == "True" || value == "1" || value == "true"; + } + else if (proType.IsEnum) //枚举类型 + { + return Enum.Parse(proType, value); + } + else if (proType.GetInterface("IConvertible") != null) + { + //支持转换的类型 + return Convert.ChangeType(value, proType); + } + else if (pro.PropertyType.IsGenericType) + { + //泛型(可空类型) + //获取类型定义判断是否为可空类型 + Type genericTypeDefinition = proType.GetGenericTypeDefinition(); + if (genericTypeDefinition == typeof (Nullable<>)) + { + Type baseType = Nullable.GetUnderlyingType(proType); + if (baseType.GetInterface("IConvertible") != null) + { + if (baseType == bitType) + { + return value == "True" || value == "1" || value == "true"; + } + else if (baseType.IsEnum) //枚举类型 + { + return Enum.Parse(baseType, value); + } + else + { + return Convert.ChangeType(value, baseType); + } + } + } + } + return null; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/StringExtensions.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/StringExtensions.cs new file mode 100644 index 0000000..017ea8f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/StringExtensions.cs @@ -0,0 +1,182 @@ +using System.Collections; +using System.Collections.Generic; + +namespace Ops.Framework.Extensions +{ + using System; + using System.Text.RegularExpressions; + using System.Web; + + public static class StringExtensions + { + /// + /// 为字符串追加指定长度的随机字符并返回该字符串 + /// + /// 字符串 + /// 长度 + /// + public static string RandomLetters(this String str, int length) + { + length = length < 1 ? 1 : length; + char[] cs = + { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' + , 'u', 'v', 'w', 'x', 'y', 'z' + }; + Random rd = new Random(); + for (int i = 0; i < length; i++) + { + str += cs[rd.Next(24)]; //24为cs.Length + } + return str; + } + + /// + /// 为字符串追加指定长度的随机字符并返回该字符串 + /// + /// 字符串 + /// 长度 + /// + public static string RandomUpperLetters(this String str, int length) + { + length = length < 1 ? 1 : length; + char[] cs = + { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' + , 'u', 'v', 'w', 'x', 'y', 'z' + }; + Random rd = new Random(); + int randomNum = 0; + for (int i = 0; i < length; i++) + { + randomNum = rd.Next(24); //24为cs.Length + str += randomNum > 12 ? cs[rd.Next(randomNum)].ToString().ToUpper() : cs[rd.Next(randomNum)].ToString(); + } + return str; + } + + /// + /// 用md5加密 + /// + /// + /// + public static string EncodeMD5(this String str) + { + return Ops.Framework.Security.Md5Crypto.EncodeMD5(str); + } + + /// + /// 16位MD5加密 + /// + /// + /// + public static string Encode16MD5(this String str) + { + return Ops.Framework.Security.Md5Crypto.Encode16MD5(str); + } + + + /// + /// HTML编码 + /// + /// + /// + public static string HtmlEncode(this String str) + { + return HttpContext.Current.Server.HtmlEncode(str); + } + + /// + /// HTML解码 + /// + /// + /// + public static string HtmlDecode(this String str) + { + return HttpContext.Current.Server.HtmlDecode(str); + } + + /// + /// 替换类似%tag%的标签 + /// + /// + /// + public static string Template(this string str, Func func) + { + Regex regex = new Regex("%([^%]+)%"); + + return regex.Replace(str, a => { return func(a.Groups[1].Value); }); + } + + + /// + /// 替换类似%tag%的标签 + /// + /// + /// 传递标签值的数组 + /// + public static string Template(this string str, params string[] data) + { + Regex regex = new Regex("%([^%]+)%"); + MatchCollection mcs = regex.Matches(str); + if (mcs.Count != data.Length) + { + throw new ArgumentOutOfRangeException(); + } + else + { + for (int i = 0; i < mcs.Count; i++) + { + str = Regex.Replace(str, mcs[i].Groups[0].Value, data[i]); + } + } + return str; + } + + public static string Template(this string str, Hashtable hash) + { + if (hash == null || hash.Count == 0) return str; + Regex regex = new Regex("{([^{]+)}"); + MatchCollection mcs = regex.Matches(str); + string key; + for (int i = 0; i < mcs.Count; i++) + { + key = mcs[i].Groups[1].Value; + if (hash.ContainsKey(key) && hash[key] != null) + { + str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key].ToString()); + } + } + return str; + } + + public static string Template(this string str, IDictionary hash) + { + if (hash == null || hash.Count == 0) return str; + Regex regex = new Regex("{([^{]+)}"); + MatchCollection mcs = regex.Matches(str); + string key; + for (int i = 0; i < mcs.Count; i++) + { + key = mcs[i].Groups[1].Value; + if (hash.ContainsKey(key) && hash[key] != null) + { + str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key]); + } + } + return str; + } + + /// + /// 是否匹配文本 + /// + /// + /// + /// + /// + public static bool IsMatch(this string str, string pattern, RegexOptions option = RegexOptions.None) + { + return Regex.IsMatch(str, pattern, option); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/TExtensions.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/TExtensions.cs new file mode 100644 index 0000000..6aac685 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Extensions/TExtensions.cs @@ -0,0 +1,129 @@ +/* + * Copyright 2010 OPS,All rights reseved ! + * name : 泛型扩展 + * author : newmin + * date : 2010/11/08 07:31 + * + */ + +using System.Globalization; +using System.Runtime.InteropServices; + +namespace Ops.Framework.Extensions +{ + using System; + using System.Reflection; + + public static class TExtensions + { + /// + ///从SourceType拷贝对象的数据,将相同名称属性赋值 + /// + /// 包含数据的对象 + /// 要拷贝数据的对象 + /// 是否忽略空值 + public static ToType CloneData(this ToType t, SourceType s, bool ignoreNullValue) + { + Type sourceType = typeof (SourceType); + Type type = typeof (ToType); + Type propertyType; + Type fieldType; + + if (t is String || s is String) return t; + + + PropertyInfo[] cp = type.GetProperties(); + FieldInfo[] fields = type.GetFields(); + + object _v; + + + FieldInfo _f; + + foreach (FieldInfo f in sourceType.GetFields()) + { + if (f.IsStatic || f.IsInitOnly) continue; + + _f = Array.Find(fields, a => string.Compare(a.Name, f.Name, true, + CultureInfo.InvariantCulture) == 0); + + if (_f == null || _f.IsStatic || f.IsInitOnly) continue; + + _v = f.GetValue(s); + if (!ignoreNullValue && _v == null) continue; + + fieldType = _f.FieldType; + if (fieldType.IsEnum) + { + _f.SetValue(t, Enum.Parse(fieldType, _v.ToString())); + } + else + { + if (_v is IConvertible) + { + _f.SetValue(t, Convert.ChangeType(_v, fieldType)); + } + else + { + try + { + _f.SetValue(t, _v); + } + catch + { + } + } + } + } + + PropertyInfo _p; + foreach (PropertyInfo p in sourceType.GetProperties()) + { + if (!p.CanRead) continue; + + _p = Array.Find(cp, a => string.Compare(a.Name, p.Name, true, + CultureInfo.InvariantCulture) == 0); + + if (_p == null || !_p.CanWrite) continue; + + + _v = p.GetValue(s, null); + if (!ignoreNullValue && _v == null) continue; + propertyType = _p.PropertyType; + + if (propertyType.IsEnum) + { + _p.SetValue(t, Enum.Parse(propertyType, _v.ToString()), null); + } + else + { + if (_v is IConvertible) + { + _p.SetValue(t, Convert.ChangeType(_v, propertyType), null); + } + else + { + try + { + _p.SetValue(t, _v, null); + } + catch + { + } + } + } + } + + + return t; + } + + /// + /// 拷贝对象的数据 + /// + public static ToType CloneData(this ToType t, SourceType s) + { + return CloneData(t, s, true); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/GraphicsHelper.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/GraphicsHelper.cs new file mode 100644 index 0000000..e587475 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/GraphicsHelper.cs @@ -0,0 +1,814 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Text.RegularExpressions; + +/******************************************* +* 文 件 名:ImageGraphicsUtility.cs +* 文件说明: +* 创 建 人:刘成文 +* 创建日期:2012-9-29 11:53:40 +********************************************/ + +namespace Ops.Framework.Graphic +{ + /// + /// 绘图工具类 + /// + public class GraphicsHelper + { + private static IDictionary imageCoders; + + static GraphicsHelper() + { + imageCoders = new Dictionary(); + ImageCodecInfo imgCode = null; + ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); + string key = null; + foreach (ImageCodecInfo code in imgCodes) + { + switch (code.MimeType) + { + case "image/jpeg": + key = "Jpeg"; + break; + case "image/png": + key = "Png"; + break; + case "image/bmp": + key = "Bmp"; + break; + default: + key = null; + break; + } + + if (key != null) + { + imageCoders.Add(key, code); + } + } + } + + public static Size GetSize(Size size, Size resize, ImageSizeMode mode) + { + // int toWidth = resize.Width; + // int toHeight = resize.Height; + + // int x = 0; + // int y = 0; + // int ow = size.Width; + // int oh = size.Height; + + Size newSize = new Size(); + newSize.Width = resize.Width; + newSize.Height = resize.Height; + + + switch (mode) + { + case ImageSizeMode.SuitWidth: + newSize.Height = size.Height*resize.Width/size.Width; + break; + + case ImageSizeMode.SuitHeight: + newSize.Width = size.Width*resize.Height/size.Height; + break; + + case ImageSizeMode.AutoSuit: + //根据宽度适配 + if (size.Width > size.Height) + { + newSize.Height = size.Height*resize.Width/size.Width; + } + else //根据高度适配 + { + newSize.Width = size.Width*resize.Height/size.Height; + } + break; + + //填充适应 + case ImageSizeMode.FillFit: + if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) + { + newSize.Height = size.Height*resize.Width/size.Width; + } + else + { + newSize.Width = resize.Width*resize.Height/size.Height; + } + + break; + + //裁剪 + case ImageSizeMode.Cut: + //裁剪宽 + if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) + { + newSize.Height = size.Height; + newSize.Width = size.Height*resize.Width/resize.Height; + } + else + { + newSize.Width = size.Width; + newSize.Height = size.Width*resize.Height/resize.Width; + } + break; + + default: + case ImageSizeMode.CustomSize: + break; + } + + return newSize; + } + + /// + /// 重新绘制指定尺寸的图片 + /// + /// 原图 + /// 缩略图宽度 + /// 缩略图高度 + /// 缩略图模式 + /// 图像格式 + /// 对缩略图处理 + public static byte[] DrawBySize( + Image original, + ImageSizeMode mode, + int width, int height, + ImageFormat format, + long imageQuality, + long compression, + ImageGraphicsHandler graphicsHandler) + { + int toWidth = width; + int toHeight = height; + + int x = 0; + int y = 0; + int ow = original.Width; //原始宽度 + int oh = original.Height; //原始高度 + + Size toSize = new Size(width, height); //要转换的图片尺寸 + Size imageSize = GetSize(original.Size, toSize, mode); //转换的实际尺寸 + + + //裁剪 + if (mode == ImageSizeMode.Cut) + { + if ((double) original.Width/(double) original.Height > (double) toSize.Width/(double) toSize.Height) + { + oh = original.Height; + ow = original.Height*toWidth/toHeight; + y = 0; + x = (original.Width - ow)/2; + } + else + { + ow = original.Width; + oh = original.Width*height/toWidth; + x = 0; + y = (original.Height - oh)/2; + } + } + else + { + x = (toSize.Width - imageSize.Width)/2; + y = (toSize.Height - imageSize.Height)/2; + } + + //新建一个bmp图片 + Image bitmap; + if (mode == ImageSizeMode.FillFit) + { + bitmap = new Bitmap(width, height); + } + else + { + bitmap = new Bitmap(toWidth, toHeight); + } + + //新建一个画板 + Graphics g = Graphics.FromImage(bitmap); + + //设置高质量插值法 + g.InterpolationMode = InterpolationMode.HighQualityBicubic; + + //设置高质量,低速度呈现平滑程度 + g.SmoothingMode = SmoothingMode.HighQuality; + + //清空画布并以透明背景色填充 + g.Clear(Color.Transparent); + if (mode == ImageSizeMode.FillFit) + { + g.Clear(Color.White); + } + + //在指定位置并且按指定大小绘制原图片的指定部分 + + g.DrawImage(original, + new Rectangle(x, y, imageSize.Width, imageSize.Height), + new Rectangle(x, y, ow, oh), + GraphicsUnit.Pixel); + + + //对图片进行处理 + if (graphicsHandler != null) + { + graphicsHandler(bitmap); + if (bitmap == null) + { + throw new ArgumentException("不允许释放图片资源!"); + } + } + + //保存到内存留 + MemoryStream ms = new MemoryStream(); + + + ImageCodecInfo imgCode = null; + + if (format != null) + { + string formatStr = format.ToString(); + imgCode = imageCoders.ContainsKey(formatStr) ? imageCoders[formatStr] : null; + } + + if (imgCode != null) + { + EncoderParameters ep = new EncoderParameters(2); + ep.Param[0] = new EncoderParameter(Encoder.Quality, + imageQuality > 100 || imageQuality <= 0 ? 100L : imageQuality); + ep.Param[1] = new EncoderParameter(Encoder.Compression, compression < 1L ? 100L : compression); + bitmap.Save(ms, imgCode, ep); + } + else + { + bitmap.Save(ms, ImageFormat.Jpeg); + } + + //释放资源 + g.Dispose(); + bitmap.Dispose(); + + return ms.ToArray(); + } + + /// + /// 重新绘制指定尺寸的图片 + /// + /// 原图 + /// 缩略图宽度 + /// 缩略图高度 + /// 缩略图模式 + /// 对缩略图处理 + public static byte[] DrawBySize( + Image original, + ImageSizeMode mode, + int width, int height, + ImageGraphicsHandler graphicsHandler) + { + return DrawBySize(original, mode, width, height, ImageFormat.Jpeg, 100L, 60L, graphicsHandler); + } + + #region 生成缩略图 + + /// + /// 生成缩略图 + /// + /// 原图 + /// 缩略图宽度 + /// 缩略图高度 + /// 缩略图模式 + /// 对缩略图处理 + public static MemoryStream MakeThumbnail(Image original, ImageSizeMode mode, int width, int height, + ImageGraphicsHandler thumbHandler) + { + int toWidth = width; + int toHeight = height; + + int x = 0; + int y = 0; + int ow = original.Width; + int oh = original.Height; + + switch (mode) + { + case ImageSizeMode.SuitWidth: + toHeight = original.Height*width/original.Width; + break; + + case ImageSizeMode.SuitHeight: + toWidth = original.Width*height/original.Height; + break; + + case ImageSizeMode.AutoSuit: + //根据宽度适配 + if (original.Width > original.Height) + { + toHeight = original.Height*width/original.Width; + } + else //根据高度适配 + { + toWidth = original.Width*height/original.Height; + } + break; + + //填充适应 + case ImageSizeMode.FillFit: + if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) + { + toWidth = width; + toHeight = original.Height*width/original.Width; + } + else + { + toHeight = height; + toWidth = original.Width*height/original.Height; + } + + break; + + //裁剪 + case ImageSizeMode.Cut: + if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) + { + oh = original.Height; + ow = original.Height*toWidth/toHeight; + y = 0; + x = (original.Width - ow)/2; + } + else + { + ow = original.Width; + oh = original.Width*height/toWidth; + x = 0; + y = (original.Height - oh)/2; + } + break; + + default: + case ImageSizeMode.CustomSize: + break; + } + + //新建一个bmp图片 + Image bitmap; + if (mode == ImageSizeMode.FillFit) + { + bitmap = new Bitmap(width, height); + } + else + { + bitmap = new Bitmap(toWidth, toHeight); + } + + //新建一个画板 + Graphics g = Graphics.FromImage(bitmap); + + //设置高质量插值法 + g.InterpolationMode = InterpolationMode.High; + + //设置高质量,低速度呈现平滑程度 + g.SmoothingMode = SmoothingMode.HighQuality; + + //清空画布并以透明背景色填充 + g.Clear(Color.Transparent); + if (mode == ImageSizeMode.FillFit) + { + g.Clear(Color.White); + } + + //在指定位置并且按指定大小绘制原图片的指定部分 + g.DrawImage(original, + new Rectangle((width - toWidth)/2, (height - toHeight)/2, toWidth, toHeight), + new Rectangle(x, y, ow, oh), + GraphicsUnit.Pixel); + + + //对图片进行处理 + if (thumbHandler != null) + { + thumbHandler(bitmap); + if (bitmap == null) + { + throw new ArgumentException("不允许释放图片资源!"); + } + } + + //保存到内存留 + MemoryStream ms = new MemoryStream(); + + //图片质量参数 + EncoderParameters ep = new EncoderParameters(2); + ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); + ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 60L); + + ImageCodecInfo imgCode = null; + ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); + foreach (ImageCodecInfo code in imgCodes) + { + if (code.MimeType == "image/jpeg") + { + imgCode = code; + break; + } + } + if (imgCode != null) + { + bitmap.Save(ms, imgCode, ep); + } + else + { + bitmap.Save(ms, ImageFormat.Jpeg); + } + + //释放资源 + g.Dispose(); + bitmap.Dispose(); + + return ms; + } + + + /// + /// 生成缩略图 + /// + /// 源图路径(物理路径) + /// 缩略图路径(物理路径) + /// 缩略图宽度 + /// 缩略图高度 + public static void SaveThumbnail(string originalImagePath, string thumbnailPath, int width, int height) + { + Image originalImage = Image.FromFile(originalImagePath); + + //生成缩略图 + MakeThumbnail(originalImage, ImageSizeMode.Cut, width, height, (img) => + { + //以jpg格式保存缩略图 + img.Save(thumbnailPath, ImageFormat.Jpeg); + }).Dispose(); + + //释放资源 + originalImage.Dispose(); + } + + + /// + /// 生成缩略图 + /// + /// 源图路径(物理路径) + /// 缩略图路径(物理路径) + /// 缩略图宽度 + /// 缩略图高度 + /// 生成缩略图的方式 + public static void SaveThumbnail(string originalImagePath, string thumbnailPath, ImageSizeMode mode, int width, + int height) + { + Image originalImage = Image.FromFile(originalImagePath); + + //生成缩略图 + MakeThumbnail(originalImage, mode, width, height, (img) => + { + //以jpg格式保存缩略图 + img.Save(thumbnailPath, ImageFormat.Jpeg); + }).Dispose(); + + //释放资源 + originalImage.Dispose(); + } + + + /// + /// 生成缩略图 + /// + /// 源图 + /// 缩略图路径(物理路径) + /// 缩略图宽度 + /// 缩略图高度 + /// 生成缩略图的方式 + public static void SaveThumbnail(Image originalImage, string thumbnailPath, ImageSizeMode mode, int width, + int height) + { + //生成缩略图 + MakeThumbnail(originalImage, mode, width, height, (img) => + { + //以jpg格式保存缩略图 + img.Save(thumbnailPath, ImageFormat.Jpeg); + }).Dispose(); + + //释放资源 + originalImage.Dispose(); + } + + #endregion + + private void Thumbnal_Test() + { + int imgHeight = 480, imgWidth = 600; + string file = "/1.jpg"; + string waterPath = ""; + string rootPath = AppDomain.CurrentDomain.BaseDirectory; + + Bitmap img = new Bitmap(rootPath + file); + int width, height; + if (img.Width > img.Height) + { + width = imgWidth; + height = imgHeight; + } + else + { + width = imgHeight; + height = imgWidth; + } + + byte[] data = GraphicsHelper.DrawBySize(img, ImageSizeMode.CustomSize, width, height, ImageFormat.Jpeg, 90L, + 50L, null); + img.Dispose(); + + + MemoryStream ms1 = new MemoryStream(data); + img = new Bitmap(ms1); + + Image water = new Bitmap(waterPath); + + + data = GraphicsHelper.MakeWatermarkImage( + img, + water, + WatermarkPosition.Middle + ); + + + ms1.Dispose(); + img.Dispose(); + + FileStream fs = File.OpenWrite(rootPath + "/1_1.jpg"); + BinaryWriter w = new BinaryWriter(fs); + w.Write(data); + w.Flush(); + fs.Dispose(); + } + + #region 生成水印 + + /// + /// 生成水印 + /// + /// 图片 + /// 水印 + /// 水印位置 + /// 处理图片 + /// 图片内存流 + public static byte[] MakeWatermarkImage( + Image img, + Image water, + Point waterPos, + ImageGraphicsHandler handler) + { + //尺寸检测 + if (water.Width > img.Width || water.Height > img.Height) + { + throw new ArgumentException("水印图片尺寸超过原图,无法生成水印!"); + } + + //绘制水印 + Graphics g = Graphics.FromImage(img); + g.DrawImage(water, waterPos.X, waterPos.Y); + + if (handler != null) + { + handler(img); + if (img == null) + { + throw new ArgumentException("不允许释放图片资源!"); + } + } + + //保存到内存流 + MemoryStream ms = new MemoryStream(); + img.Save(ms, img.RawFormat); + + //释放资源 + g.Dispose(); + water.Dispose(); + + byte[] bytes = ms.ToArray(); + ms.Dispose(); + + return bytes; + } + + + /// + /// 生成水印 + /// + /// 图片 + /// 水印 + /// 预置的水印位置 + /// 图像格式 + /// 处理图片 + /// 图片内存流 + public static byte[] MakeWatermarkImage( + Image img, + Image water, + WatermarkPosition pos, + ImageGraphicsHandler handler) + { + int x; + int y; + + int xOffset = 5; //宽度偏移量 + int yOffset = 5; //高度偏移量 + switch (pos) + { + case WatermarkPosition.Bottom: + //正下方 + x = (img.Width - water.Width)/2; + y = img.Height - water.Height - yOffset; + break; + case WatermarkPosition.LeftBottom: + //左下方 + x = xOffset; + y = img.Height - water.Height - yOffset; + break; + case WatermarkPosition.Right: + //右方 + x = img.Width - water.Width - xOffset; + y = (img.Height - water.Height)/2; + break; + case WatermarkPosition.Middle: + //正中 + x = (img.Width - water.Width)/2; + y = (img.Height - water.Height)/2; + break; + case WatermarkPosition.Left: + //左边 + x = xOffset; + y = (img.Height - water.Height)/2; + break; + case WatermarkPosition.RightTop: + //右上方 + x = img.Width - water.Width - xOffset; + y = yOffset; + break; + case WatermarkPosition.Top: + //正上方 + x = (img.Width - water.Width)/2; + y = yOffset; + break; + case WatermarkPosition.LeftTop: + //左上方 + x = xOffset; + y = yOffset; + break; + + default: + case WatermarkPosition.Default: + case WatermarkPosition.RightBottom: + //右下角 + x = img.Width - water.Width - xOffset; + y = img.Height - water.Height - yOffset; + break; + } + + return MakeWatermarkImage(img, water, new Point(x, y), handler); + } + + + /// + /// 生成水印 + /// + /// 图片 + /// 水印 + /// 预置的水印位置 + /// 图片内存流 + public static byte[] MakeWatermarkImage(Image img, Image water, WatermarkPosition pos) + { + return MakeWatermarkImage(img, water, pos, null); + } + + /// + /// 生成水印并保存到文件 + /// + /// 图片路径 + /// 水印路径 + /// 水印位置 + /// 图片处理 + /// + public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos, + ImageGraphicsHandler handler) + { + Image img = Image.FromFile(imgPath), + water = Image.FromFile(waterPath); + + byte[] bytes = MakeWatermarkImage(img, water, pos, handler); + img.Dispose(); + return bytes; + } + + /// + /// 生成水印并保存到文件 + /// + /// 图片路径 + /// 水印路径 + /// 水印位置 + /// + public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos) + { + return MakeWatermarkImage(imgPath, waterPath, pos, null); + } + + #endregion + + #region 生成水印并保存文件 + + /// + /// 生成水印并保存到文件 + /// + /// 图片 + /// 水印 + /// 预置的水印位置 + public static void SaveWatermarkImage(Image img, Image water, string savePath, WatermarkPosition pos) + { + MakeWatermarkImage(img, water, pos, thumb => { thumb.Save(savePath, img.RawFormat); }); + + img.Dispose(); + } + + /// + /// 生成水印并保存到文件 + /// + /// 图片路径 + /// 水印路径 + /// 保存路径 + public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath) + { + MakeWatermarkImage(imgPath, waterPath, WatermarkPosition.Default, + img => { img.Save(savePath, img.RawFormat); }); + } + + /// + /// 生成水印并保存到文件 + /// + /// 图片路径 + /// 水印路径 + /// 保存路径 + public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath, WatermarkPosition pos) + { + MakeWatermarkImage(imgPath, waterPath, pos, img => { img.Save(savePath, img.RawFormat); }); + } + + #endregion + + #region 其他 + + /// + /// 自动上传文本中的图片 + /// + /// 文本内容 + /// 上传路径 + /// 上传结果信息 + //private static string AutoUpload(string content, string path) + //{ + // //自动保存远程图片 + // WebClient client = new WebClient(); + // //备用Reg: + // Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", RegexOptions.IgnoreCase); + // MatchCollection m = reg.Matches(content); + + // foreach (Match math in m) + // { + // string imgUrl = math.Groups[1].Value; + + // //在原图片名称前加YYMMDD重名名并上传 + + // Regex regName = new Regex(@"\w+.(?:jpg|gif|bmp|png)", RegexOptions.IgnoreCase); + + // string strNewImgName = DateTime.Now.ToShortDateString().Replace("-", "") + regName.Match(imgUrl).ToString(); + + // try + // { + // //保存图片 + // client.DownloadFile(imgUrl, (path + strNewImgName)); + // } + // catch + // { + // } + // finally + // { + + // } + // client.Dispose(); + // } + // return "远程图片保存成功,保存路径为ImgUpload/auto"; + //} + + #endregion + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/ImageGraphicsHandler.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/ImageGraphicsHandler.cs new file mode 100644 index 0000000..3d10ae0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/ImageGraphicsHandler.cs @@ -0,0 +1,10 @@ +using System.Drawing; + +namespace Ops.Framework.Graphic +{ + /// + /// 绘图处理 + /// + /// + public delegate void ImageGraphicsHandler(Image img); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/ImageSizeMode.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/ImageSizeMode.cs new file mode 100644 index 0000000..7880e43 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/ImageSizeMode.cs @@ -0,0 +1,38 @@ +namespace Ops.Framework.Graphic +{ + /// + /// 缩略图模式 + /// + public enum ImageSizeMode + { + /// + /// 固定尺寸,可能会变形 + /// + CustomSize = 1, + + /// + /// 裁剪 + /// + Cut = 2, + + /// + /// 根据宽度缩放 + /// + SuitWidth = 3, + + /// + /// 根据高度缩放 + /// + SuitHeight = 4, + + /// + /// 自动适配 + /// + AutoSuit = 5, + + /// + /// 自动填充 + /// + FillFit = 6 + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/WatermarkPosition.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/WatermarkPosition.cs new file mode 100644 index 0000000..3c55ba8 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Graphic/WatermarkPosition.cs @@ -0,0 +1,58 @@ +namespace Ops.Framework.Graphic +{ + /// + /// 水印位置 + /// + public enum WatermarkPosition : int + { + /// + /// 默认 + /// + Default = 0, + + /// + /// 左上方 + /// + LeftTop = 1, + + /// + /// 正上方 + /// + Top = 2, + + /// + /// 右上方 + /// + RightTop = 3, + + /// + /// 左边 + /// + Left = 4, + + /// + /// 正中 + /// + Middle = 5, + + /// + /// 右边 + /// + Right = 6, + + /// + /// 左下方 + /// + LeftBottom = 7, + + /// + /// 正下方 + /// + Bottom = 8, + + /// + /// 右下方 + /// + RightBottom = 9 + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/IO/IoUtil.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/IO/IoUtil.cs new file mode 100644 index 0000000..3e41491 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/IO/IoUtil.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Ops.Framework.IO +{ + public static class IoUtil + { + /// + /// 计算文件的 MD5 值 + /// + /// 要计算 MD5 值的文件名和路径 + /// MD5 值16进制字符串 + public static string GetFileMD5(string fileName) + { + return HashFile(fileName, "md5"); + } + + /// + /// 计算文件的 sha1 值 + /// + /// 要计算 sha1 值的文件名和路径 + /// sha1 值16进制字符串 + public static string GetFileSHA1(string fileName) + { + return HashFile(fileName, "sha1"); + } + + /// + /// 计算文件的哈希值 + /// + /// 要计算哈希值的文件名和路径 + /// 算法:sha1,md5 + /// 哈希值16进制字符串 + private static string HashFile(string fileName, string algName) + { + if (!System.IO.File.Exists(fileName)) + return string.Empty; + + System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, + System.IO.FileAccess.Read); + byte[] hashBytes = HashData(fs, algName); + fs.Close(); + return ByteArrayToHexString(hashBytes); + } + + /// + /// 计算哈希值 + /// + /// 要计算哈希值的 Stream + /// 算法:sha1,md5 + /// 哈希值字节数组 + private static byte[] HashData(System.IO.Stream stream, string algName) + { + System.Security.Cryptography.HashAlgorithm algorithm; + if (algName == null) + { + throw new ArgumentNullException("algName 不能为 null"); + } + if (string.Compare(algName, "sha1", true) == 0) + { + algorithm = System.Security.Cryptography.SHA1.Create(); + } + else + { + if (string.Compare(algName, "md5", true) != 0) + { + throw new Exception("algName 只能使用 sha1 或 md5"); + } + algorithm = System.Security.Cryptography.MD5.Create(); + } + return algorithm.ComputeHash(stream); + } + + /// + /// 字节数组转换为16进制表示的字符串 + /// + private static string ByteArrayToHexString(byte[] buf) + { + return BitConverter.ToString(buf).Replace("-", ""); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/IndexOfHandler.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/IndexOfHandler.cs new file mode 100644 index 0000000..b597853 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/IndexOfHandler.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Ops.Framework +{ + /// + /// 获取索引位置的委托 + /// + /// + /// + /// + public delegate Int32 IndexOfHandler(T t); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Interface/ICallable.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Interface/ICallable.cs new file mode 100644 index 0000000..e2f15e0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Interface/ICallable.cs @@ -0,0 +1,33 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2013/12/8 + * Time: 20:58 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; + +namespace Ops.Framework.Interface +{ + /// + /// Description of ICallable. + /// + public interface ICallable + { + /// + /// 获取可调用的对象 + /// + /// + Object GetCalledObject(); + + /// + /// 调用方法 + /// + /// + /// + /// + Object Call(string method, params object[] parameters); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/JsonSerializer.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/JsonSerializer.cs new file mode 100644 index 0000000..180e472 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/JsonSerializer.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization.Json; +using System.Text; + +namespace Ops.Framework +{ + public static class JsonSerializer + { + public static Encoding Encoding = Encoding.UTF8; + + public static string SerializerObject(T t) + { + using (var ms = new MemoryStream()) + { + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); + ser.WriteObject(ms, t); + string result = Encoding.GetString(ms.ToArray()); + ser = null; + return result; + } + } + + public static T DeserializerObject(string json) + { + using (var ms = new MemoryStream(Encoding.GetBytes(json))) + { + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); + + T t = (T) ser.ReadObject(ms); + ser = null; + return t; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/LogFile.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/LogFile.cs new file mode 100644 index 0000000..55c18d0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/LogFile.cs @@ -0,0 +1,106 @@ +// +// Copyright (C) 2007-2008 OPSoft INC,All rights reseved. +// +// Project: OPS +// FileName : LogFile.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2011/11/1 20:23:38 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Framework +{ + using System; + using System.Collections.Generic; + using System.Text; + using System.IO; + + public class LogFile + { + private string filePath; + private bool printPrefix; + private Encoding _encoding; + + //种子,用于判断 + public int Seed { get; set; } + + //编码 + public Encoding FileEncoding + { + get { return this._encoding ?? (this._encoding = Encoding.UTF8); } + set { this._encoding = value; } + } + + public LogFile(string filePath) : this(filePath, false) + { + } + + public LogFile(string filePath, bool printPrefix) + { + this.printPrefix = printPrefix; + this.filePath = filePath; + if (!File.Exists(filePath)) + { + File.Create(filePath).Dispose(); + } + } + + /// + /// 填充内容 + /// + /// + /* [Obsolete] + public void Append(string text) + { + byte[] data = Encoding.UTF8.GetBytes(text); + FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); + + if (fs.CanWrite) + { + fs.Write(data, 0, data.Length); + fs.Flush(); + } + fs.Dispose(); + + } + */ + public void Print(Byte[] bytes) + { + FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); + + if (fs.CanWrite) + { + if (this.printPrefix) + { + byte[] data = this.FileEncoding.GetBytes(string.Format("{0:yyyy-MM-dd HH:mm:ss ", DateTime.Now)); + fs.Write(data, 0, data.Length); + } + fs.Write(bytes, 0, bytes.Length); + } + fs.Dispose(); + } + + public void Println(string text) + { + this.Print(this.FileEncoding.GetBytes(text + System.Environment.NewLine)); + } + + public void Printf(string format, params object[] data) + { + this.Print(this.FileEncoding.GetBytes(string.Format(format, data))); + } + + /// + /// 清空内容 + /// + /// + public void Truncate() + { + FileStream fs = new FileStream(filePath, FileMode.Truncate, FileAccess.Write); + fs.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Net/FtpClient.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Net/FtpClient.cs new file mode 100644 index 0000000..f88f0c2 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Net/FtpClient.cs @@ -0,0 +1,160 @@ +/* + * Copyright 2010 OPS,All right reseved . + * name : ftpclient + * author : newmin + * date : 2010/12/13 + */ + +namespace Ops.Framework.Net +{ + using System; + using System.IO; + using System.Net; + using System.Text; + using System.Text.RegularExpressions; + + public class FtpClient + { + private FtpWebRequest request; + private string ftp; + + /// + /// 服务器 + /// + public string Server { get; set; } + + /// + /// FTP端口 + /// + public int Port { get; set; } + + /// + /// 用户名 + /// + public string UserName { get; set; } + + /// + /// 密码 + /// + public string Password { get; set; } + + /// + /// 根目录 + /// + public string RootPath { get; set; } + + /// + /// FTP请求 + /// + public FtpWebRequest Request + { + get { return request; } + } + + public FtpClient(string server, int? port, string userName, string password, string rootPath) + { + this.Server = server; + this.Port = port ?? 21; + this.RootPath = rootPath ?? "/"; + this.UserName = userName; + this.Password = password; + ftp = "ftp://" + server + ":" + port + rootPath; + } + + public FtpClient(string server, string userName, string password) + { + this.Server = server; + this.Port = 21; + this.RootPath = "/"; + this.UserName = userName; + this.Password = password; + ftp = "ftp://" + server + ":" + Port + RootPath; + } + + /// + /// 连接FTP + /// + /// 返回是否连接成功 + public bool Connection() + { + try + { + request = WebRequest.Create(ftp) as FtpWebRequest; + request.KeepAlive = false; + request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + request.Credentials = new NetworkCredential(UserName, Password); + FtpWebResponse fr = request.GetResponse() as FtpWebResponse; + using (StreamReader sr = new StreamReader(fr.GetResponseStream())) + { + if (!String.IsNullOrEmpty(sr.ReadToEnd())) return true; + } + return false; + } + catch + { + throw new Exception("FTP信息不正确!请检查FTP地址,端口和用户是否正确!"); + } + } + + /// + /// 是否存在文件或目录 + /// + /// + /// + public bool Exists(string folderOrFileName) + { + request = WebRequest.Create(ftp) as FtpWebRequest; + request.Credentials = new NetworkCredential(UserName, Password); + request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + using (StreamReader rd = new StreamReader(request.GetResponse().GetResponseStream())) + { + /* + dir = rd.ReadToEnd(); + System.Web.HttpContext.Current.Response.Write(dir + "
                                                                                                                                            " + count.ToString()); + */ + string line; + while ((line = rd.ReadLine()) != null) + { + GroupCollection gc = new Regex("[^\\s]*$").Match(line).Groups; + if (gc.Count != 1) return false; + if (gc[0].Value == folderOrFileName) return true; + } + return false; + } + } + + /// + /// 创建文件夹 + /// + /// + public void CreateDirectory(string floderName) + { + request = WebRequest.Create(ftp + floderName) as FtpWebRequest; + request.Credentials = new NetworkCredential(UserName, Password); + request.Method = WebRequestMethods.Ftp.MakeDirectory; + request.GetResponse(); + } + + public void UploadFile(string filePath, Stream fileStream) + { + const int bufferLength = 1; + byte[] buffer = new byte[bufferLength]; + request = WebRequest.Create(ftp + filePath) as FtpWebRequest; + request.Method = WebRequestMethods.Ftp.UploadFile; + request.Credentials = new NetworkCredential(UserName, Password); + request.KeepAlive = false; + request.UseBinary = true; + Stream requestStream = request.GetRequestStream(); + int readBytes = 0; + do + { + readBytes = fileStream.Read(buffer, 0, bufferLength); + if (readBytes != 0) + requestStream.Write(buffer, 0, bufferLength); + } while (readBytes != 0); + + requestStream.Dispose(); + fileStream.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Net/HttpClient.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Net/HttpClient.cs new file mode 100644 index 0000000..062ac37 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Net/HttpClient.cs @@ -0,0 +1,152 @@ +/* + * Copyright 2010 OPS,All right reseved . + * name : ftpclient + * author : newmin + * date : 2010/12/13 + */ + +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; + +namespace Ops.Framework.Net +{ + using System; + using System.IO; + using System.Net; + using System.Text; + + public class HttpClient + { + private string uri; + + private HttpClient(string uri) + { + this.uri = uri; + } + + public static string Post(string url, string postData, CookieCollection cookies) + { + HttpWebRequest request = null; + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = + new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + if (request == null) return null; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + if (request == null) return null; + } + + //request.Accept = "*/*"; + request.Method = "POST"; + //httpwebrequest控件有一个透明过程,先向服务方查询url是否存在而不发送POST的内容, + //服务器如果证实url是可访问的,才发送POST,早期的Apache就认为这是一种错误,而IIS却可以正确应答 + //加上下面这一句将查询服务后马上post数据 + //System.Net.ServicePointManager.Expect100Continue = false; + //Expect:100-continue + System.Net.ServicePointManager.Expect100Continue = false; + request.ContentType = "application/x-www-form-urlencoded"; + request.Timeout = 10000; + + //添加cookie + if (cookies != null) + { + request.CookieContainer = new CookieContainer(); + request.CookieContainer.Add(cookies); + } + + //发送请求 + byte[] data = Encoding.UTF8.GetBytes(postData); + request.ContentLength = data.Length; + Stream requestStream = request.GetRequestStream(); + requestStream.Write(data, 0, data.Length); + requestStream.Dispose(); + //获取响应 + HttpWebResponse response = request.GetResponse() as HttpWebResponse; + if (response.StatusCode == HttpStatusCode.OK) + { + using (StreamReader sr = new StreamReader(response.GetResponseStream())) + { + return sr.ReadToEnd(); + } + } + else + { + return "Error:" + response.StatusCode.ToString(); + } + } + + public string Post(string postData, CookieCollection cookies) + { + return Post(this.uri, postData, cookies); + } + + private static bool CheckValidationResult(object sender, X509Certificate certificate, + X509Chain chain, SslPolicyErrors sslPolicyErrors) + { + //总是接受 + return true; + } + + + /// + /// 下载文件(支持断点续传)并返回字节数组 + /// + /// + /// 上次接收的文件 + /// + public static byte[] DownloadFile(string url, byte[] fileBytes) + { + const int buffer = 32768; //32k + byte[] data = new byte[buffer]; + int cread; + int cTotal; + + MemoryStream ms = fileBytes == null || fileBytes.Length == 0 + ? new MemoryStream() + : new MemoryStream(fileBytes); + + string remoteAddr = url; + + int fileLength = (int) ms.Length; + + HttpWebRequest wr = WebRequest.Create(remoteAddr) as HttpWebRequest; + if (fileLength != 0) + { + wr.AddRange(fileLength); + } + + try + { + WebResponse rsp = wr.GetResponse(); + + Stream st = rsp.GetResponseStream(); + + cTotal = (int) rsp.ContentLength; + + while ((cread = st.Read(data, 0, buffer)) != 0) + { + ms.Write(data, 0, cread); + } + + byte[] streamArray = ms.ToArray(); + ms.Dispose(); + + return streamArray; + } + catch + { + } + return null; + } + + // + //TODO:做一个支持断电下载的方法 + // + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Security/AESCrypto.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Security/AESCrypto.cs similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Security/AESCrypto.cs rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Security/AESCrypto.cs diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Security/Md5Crypto.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Security/Md5Crypto.cs new file mode 100644 index 0000000..1c73147 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Security/Md5Crypto.cs @@ -0,0 +1,51 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2013/12/12 + * Time: 7:35 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using System.Text; + + +namespace Ops.Framework.Security +{ + /// + /// Description of Md5Crypto. + /// + public class Md5Crypto + { + /// + /// 用md5加密 + /// + /// + /// + public static string EncodeMD5(String str) + { + StringBuilder sb = new StringBuilder(); + var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 + // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  + byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); + foreach (byte b in s) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString(); + } + + /// + /// 16位MD5加密 + /// + /// + /// + public static string Encode16MD5(String str) + { + //取32位的中间部分 + var md5 = System.Security.Cryptography.MD5.Create(); + return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(str)), 4, 8).Replace("-", String.Empty); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/IService.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/IService.cs new file mode 100644 index 0000000..c03ffeb --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/IService.cs @@ -0,0 +1,24 @@ +/* * + * name : 服务接口 + * author : OPS newmin + * date : 09/29 2010 + * */ + +using System; + +namespace Ops.Framework.Service +{ + /// + /// 服务接口 + /// + /// + internal interface IService where T : MarshalByRefObject + { + /// + /// 获取服务的实例 + /// + /// + /// + T GetInstance(); + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Service/Service.config b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/Service.config similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Service/Service.config rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/Service.config diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/ServiceManager.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/ServiceManager.cs new file mode 100644 index 0000000..4239694 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Service/ServiceManager.cs @@ -0,0 +1,68 @@ +/* * + * name :服务管理类 + * author :OPS newmin + * date :09/20 2010 + * note :继承此类需在子类的静态构造函数中添加代码,如下: + * serviceDict.Add(typeof(IP), ConfigurationManager.AppSettings["srv_ip"]); + * */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Xml; + +namespace Ops.Framework.Service +{ + /// + /// 服务管理 + /// + /// 类型 + public abstract class ServiceManager : IService where T : MarshalByRefObject + { + /// + /// 服务配置字典 + /// + protected static IDictionary serviceDict = new Dictionary(); + + /// + /// 服务配置链接 + /// + protected static IDictionary serviceUriDict = new Dictionary(); + + /// + /// 根据配置文件初始化服务 + /// + /// + protected static void Init(string configFile) + { + XmlDocument doc = new XmlDocument(); + doc.Load(configFile); + XmlNodeList xs = doc.SelectNodes("/serviceConfig/service"); + //服务的类型 + string[] ta; //TypeArr + Assembly a; + foreach (XmlNode xn in xs) + { + ta = xn.Attributes["type"].Value.Split(','); + a = Assembly.Load(ta[1]); + serviceDict.Add(a.GetType(ta[0], true, true), xn.Attributes["objectUri"].Value); + } + //获取Uri + xs = doc.SelectNodes("/serviceConfig/serviceUri/add"); + foreach (XmlNode xn in xs) + { + serviceUriDict.Add(xn.Attributes["name"].Value, xn.Attributes["uri"].Value); + } + } + + #region IService 成员 + + public T GetInstance() + { + Type type = typeof (T); + return (T) Activator.GetObject(typeof (T), serviceDict[typeof (T)]); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/SettingFile.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/SettingFile.cs new file mode 100644 index 0000000..abac9f9 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/SettingFile.cs @@ -0,0 +1,208 @@ +// +// Copyright (C) 2007-2008 OPSoft INC,All rights reseved. +// +// Project: OPS.Web.JSON +// FileName : JsonDictionaryFile.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2011/11/26 20:01:29 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Framework +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Text; + using System.Xml; + using System.IO; + + /// + /// 设置数据文件 + /// + public class SettingFile + { + private string filePath; + private XmlDocument xdoc; + private XmlNode rootNode; + + public SettingFile(string filePath) + { + xdoc = new XmlDocument(); + this.filePath = filePath; + + //不存在,则创建 + if (!File.Exists(this.filePath)) + { + File.Create(filePath).Dispose(); + const string initData = "\r\n\r\n"; + + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + + //读取文档 + using (TextReader tr = new StreamReader(this.filePath)) + { + xdoc.LoadXml(tr.ReadToEnd()); + tr.Dispose(); + this.rootNode = xdoc.SelectSingleNode("//settings"); + } + } + + + /// + /// 是否包含某个键值 + /// + /// + /// + public bool Contains(string key) + { + return this.rootNode.SelectSingleNode(String.Format("/settings/add[@key='{0}']", key)) != null; + } + + /// + /// 获取或设置指定键值的数据 + /// + /// + /// + public string this[string key] + { + get + { + XmlNode node = this.rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (node == null) + throw new ArgumentOutOfRangeException("key", "param value:" + key); + return node.InnerText; + } + set + { + XmlNode node = this.rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (node == null) throw new ArgumentOutOfRangeException("key", "param value:" + key); + + + //如果不是文本注释,删除第一个节点并重新保存值 + if (node.FirstChild.Name == "#cdata-section") + { + (node.FirstChild as XmlCDataSection).InnerText = value; + } + else + { + node.RemoveChild(node.FirstChild); + node.InsertBefore(xdoc.CreateCDataSection(value), node.FirstChild); + } + } + } + + [Obsolete] + public void Append(string key, string value) + { + this.Add(key, value); + } + + /// + /// 添加新的设置 + /// + public void Add(string key, string value) + { + this.Add(key, value, false); + } + + /// + /// 添加配置 + /// + /// + /// + /// 是否忽略已经存在的配置 + public void Add(string key, string value, bool ignoreExist) + { + //检查是否已经存在 + XmlNode _xn = this.rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (_xn != null) + { + if (ignoreExist) + { + return; + } + else + { + throw new ArgumentException(String.Format("已经存在一个名为{0}的节点!", key)); + } + } + + XmlNode root = this.rootNode; + + + XmlNode xn = xdoc.CreateElement("add"); + + //添加key属性 + XmlAttribute xa = xdoc.CreateAttribute("key"); + xa.Value = key; + xn.Attributes.Append(xa); + + //添加JSON内容 + xn.AppendChild(xdoc.CreateCDataSection(value)); + + //将新元素添加到DOM + root.AppendChild(xn); + } + + /// + /// 移除指定的设置 + /// + /// + public void Remove(string key) + { + XmlNode _xn = this.rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (_xn != null) + { + this.rootNode.RemoveChild(_xn); + } + } + + + /// + /// 搜索键值并以字典的形式返回 + /// + /// + /// + public IDictionary SearchKey(string keyword) + { + IDictionary dict = new Dictionary(); + + XmlNodeList node = this.rootNode.SelectNodes(String.Format("add[contains(@key,'{0}')]", keyword)); + + if (node.Count != 0) + { + foreach (XmlNode xn in node) + { + dict.Add(xn.Attributes["key"].Value, xn.InnerText); + } + } + + return dict; + } + + /// + /// 保存到文件中 + /// + public void Flush() + { + /* + using (TextWriter tr = new StreamWriter(this.filePath)) + { + tr.Write(xmlContent); + tr.Flush(); + tr.Dispose(); + }*/ + + xdoc.Save(this.filePath); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/StringCreatorHandler.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/StringCreatorHandler.cs new file mode 100644 index 0000000..3255880 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/StringCreatorHandler.cs @@ -0,0 +1,18 @@ +/* + * 由SharpDevelop创建。 + * 用户: newmin + * 日期: 2013/11/24 + * 时间: 17:48 + * + * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 + */ + +using System; + +namespace Ops.Framework +{ + /// + /// Description of StringCreatorHandler. + /// + public delegate String StringCreatorHandler(); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs new file mode 100644 index 0000000..b8d019e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections; +using System.IO; +using System.Net; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace Ops.Framework.TaskBox.HttpSync +{ + /// + /// HTTP + /// + public class HttpSimpleRequest + { + private static readonly string DefaultUserAgent = + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; + + /// + /// GETʽHTTP + /// + /// URL + /// ijʱʱ + /// ĿͻϢΪ + /// ͬHTTP͵CookieϢҪ֤Ϊ + /// + public static HttpWebResponse CreateGetHttpResponse( + string url, + string userAgent, + CookieCollection cookies) + { + if (string.IsNullOrEmpty(url)) + { + throw new ArgumentNullException("url"); + } + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "GET"; + request.UserAgent = DefaultUserAgent; + if (!string.IsNullOrEmpty(userAgent)) + { + request.UserAgent = userAgent; + } + + //if (timeout.HasValue) + //{ + // request.Timeout = timeout.Value; + //} + + + if (cookies != null) + { + request.CookieContainer = new CookieContainer(); + request.CookieContainer.Add(cookies); + } + return request.GetResponse() as HttpWebResponse; + } + + + /// + /// POSTʽHTTP + /// + /// URL + /// ͬPOSTIJƼֵֵ + /// ijʱʱ + /// ĿͻϢΪ + /// HTTPʱõı + /// ͬHTTP͵CookieϢҪ֤Ϊ + /// + public static HttpWebResponse CreatePostHttpResponse( + string url, + Hashtable parameters, + string userAgent, + Encoding requestEncoding, + CookieCollection cookies) + { + if (string.IsNullOrEmpty(url)) + { + throw new ArgumentNullException("url"); + } + if (requestEncoding == null) + { + throw new ArgumentNullException("requestEncoding"); + } + HttpWebRequest request = null; + //ǷHTTPS + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = + new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + request.Method = "POST"; + request.ContentType = "application/x-www-form-urlencoded"; + + if (!string.IsNullOrEmpty(userAgent)) + { + request.UserAgent = userAgent; + } + else + { + request.UserAgent = DefaultUserAgent; + } + + //if (timeout.HasValue) + //{ + // request.Timeout = timeout.Value; + //} + + if (cookies != null) + { + request.CookieContainer = new CookieContainer(); + request.CookieContainer.Add(cookies); + } + //ҪPOST + if (!(parameters == null || parameters.Count == 0)) + { + StringBuilder buffer = new StringBuilder(); + int i = 0; + foreach (string key in parameters.Keys) + { + if (i > 0) + { + buffer.AppendFormat("&{0}={1}", key, parameters[key]); + } + else + { + buffer.AppendFormat("{0}={1}", key, parameters[key]); + } + i++; + } + byte[] data = requestEncoding.GetBytes(buffer.ToString()); + using (Stream stream = request.GetRequestStream()) + { + stream.Write(data, 0, data.Length); + } + } + return request.GetResponse() as HttpWebResponse; + } + + private static bool CheckValidationResult(object sender, + X509Certificate certificate, + X509Chain chain, + SslPolicyErrors errors) + { + //ǽ + return true; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/HttpSync/HttpTaskClient.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/HttpSync/HttpTaskClient.cs new file mode 100644 index 0000000..5867d00 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/HttpSync/HttpTaskClient.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.IO; +using System.Net; +using System.Text; + +namespace Ops.Framework.TaskBox.HttpSync +{ + /// + /// Httpͻ + /// + public class HttpTaskClient : ITaskExecuteClient + { + private string server; + private object token; + + public HttpTaskClient(string serverUrl, string token) + { + this.server = serverUrl; + this.token = token; + } + + public string ClientName + { + get { return "HttpTaskClient"; } + } + + public void Execute(ITask task) + { + foreach (Hashtable data in task.Datas) + { + this.Post(task, data); + } + } + + private void Post(ITask task, Hashtable data) + { + if (data.ContainsKey("auth_token")) + data.Add("auth_token", this.token); + + string url = this.server + + "?auth_token=" + this.token + + "&action=" + task.TaskName; + + try + { + HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( + url, + data, + null, + Encoding.UTF8, + null + ); + + StreamReader sr = new StreamReader(rsp.GetResponseStream()); + string result = sr.ReadToEnd(); + + sr.BaseStream.Dispose(); + sr.Dispose(); + + task.SetState(this, TaskState.Ok, TaskMessageParser.ConvertToSyncMessage(result)); + } + catch (Exception exc) + { + task.SetState(this, TaskState.Error, new TaskMessage + { + Result = false, + Message = exc.Message + }); + } + } + + public bool TestConnect() + { + try + { + string url = this.server + + "?auth_token=" + this.token + + "&action=connect"; + + HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( + url, + new Hashtable(), + null, + Encoding.UTF8, + null + ); + return true; + } + catch (Exception exc) + { + return false; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITask.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITask.cs new file mode 100644 index 0000000..b34179b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITask.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Ops.Framework.TaskBox +{ + /// + /// + /// + public interface ITask + { + /// + /// ״̬ıʱ,֪ͨ + /// + event TaskStateChangedHandler StateChanged; + + /// + /// (ʶĿʶ) + /// + String TaskName { get; set; } + + /// + /// + /// + IList Datas { get; } + + /// + /// ״̬ + /// + TaskState State { get; } + + /// + /// ״̬ + /// + /// + /// ¼Դ + /// + void SetState(ITaskExecuteClient source, TaskState state, TaskMessage msg); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskBoxStorage.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskBoxStorage.cs new file mode 100644 index 0000000..476ca52 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskBoxStorage.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; + +namespace Ops.Framework.TaskBox +{ + /// + /// 洢(ڴ洢񣬴洢״̬) + /// + public interface ITaskBoxStorage + { + /// + /// ӹ + /// + /// + void AppendSuppendTask(ITask task); + + /// + /// ״̬ıʱ״̬ + /// + /// + /// + void SaveTaskChangedState(ITask task, TaskMessage message); + + /// + /// ȡе + /// + /// + IList GetSyncTaskQueue(); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskClient.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskClient.cs new file mode 100644 index 0000000..11514b2 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskClient.cs @@ -0,0 +1,8 @@ +namespace Ops.Framework.TaskBox +{ + public interface ITaskExecuteClient + { + void Execute(ITask task); + string ClientName { get; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskLogProvider.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskLogProvider.cs new file mode 100644 index 0000000..2a4c238 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/ITaskLogProvider.cs @@ -0,0 +1,20 @@ +namespace Ops.Framework.TaskBox +{ + /// + /// ־¼ṩ + /// + public interface ITaskLogProvider + { + /// + /// 洢 + /// + ITaskBoxStorage Storage { get; } + + /// + /// ¼״̬ + /// + /// + /// + void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Task.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Task.cs new file mode 100644 index 0000000..0db9f2f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Task.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Ops.Framework.TaskBox +{ + /// + /// + /// + public class Task : ITask + { + public event TaskStateChangedHandler StateChanged; + private readonly IList _dataList; + private TaskState _state = TaskState.Default; + + public Task() + { + this._dataList = new List(); + } + + public Task(string taskName, params Hashtable[] datas) + : this() + { + this.TaskName = taskName; + if (datas != null) + { + foreach (Hashtable data in datas) + { + if (data != null) + { + this._dataList.Add(data); + } + } + } + } + + /// + /// + /// + public String TaskName { get; set; } + + /// + /// + /// + public IList Datas + { + get { return this._dataList; } + } + + + /// + /// ״̬ + /// + public TaskState State + { + get { return this._state; } + } + + + public void SetState(ITaskExecuteClient source, TaskState state, TaskMessage message) + { + this._state = state; + + if (this.StateChanged != null) + { + this.StateChanged(source, this, message); + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskBox.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskBox.cs new file mode 100644 index 0000000..8eb1f79 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskBox.cs @@ -0,0 +1,163 @@ +using System; +using System.Threading; + +namespace Ops.Framework.TaskBox +{ + /// + /// + /// + public class TaskBox + { + /// + /// ߳ + /// + private int _threadNum = 5; + + private readonly TaskQueue _taskManager; + private Thread _serviceThread; + + /// + /// ύĴ + /// + public event TaskPostingHandler OnTaskExecuting; + + /// + /// 񷵻Ϣ + /// + public event TaskMessageHandler OnNotifing; + + /// + /// ĬϹ + /// + private int _suppend_minseconds = 10000; + + public TaskBox(ITaskBoxStorage storage, + ITaskLogProvider logProvider, + int threadNum) + { + this.Storage = storage; + this.Log = logProvider; + this._threadNum = threadNum; + this._taskManager = new TaskQueue(this); + + //¼־ + //this.TaskStateChanged += this.Log.LogTaskState; + } + + public TaskBox(ITaskBoxStorage storage) + : this(storage, null, 5) + { + } + + public TaskBox(ITaskBoxStorage storage, int threadNum) + : this(storage, null, threadNum) + { + } + + + /// + /// ݴ洢 + /// + public ITaskBoxStorage Storage { get; private set; } + + /// + /// ־ṩ + /// + public ITaskLogProvider Log { get; private set; } + + /// + /// ֪ͨs + /// + /// + /// + public void Notifing(object source, string message) + { + if (this.OnNotifing != null) + { + this.OnNotifing(source, message); + } + } + + public void StartWork() + { + //box + _serviceThread = new Thread(() => + { + try + { + _work(); + } + catch (Exception exc) + { + this.OnNotifing(this, "[Crash]:" + exc.Message); + } + }); + _serviceThread.Start(); + + this.Notifing(_serviceThread, "[Start]:Task service is running!"); + } + + /// + /// ֹͣ + /// + public void StopWork() + { + //ȴִ߳ + //serviceThread.Join(); + if (_serviceThread != null) + { + _serviceThread.Abort(); + } + this.Notifing(_serviceThread, "[Stop]:Task service is stoped!"); + } + + private void _work() + { + do + { + ITask task = this._taskManager.GetNextTask(); + if (task == null) + { + // + if (Thread.CurrentThread.ThreadState == ThreadState.Running) + { + //Thread.Sleep(this._suppend_minseconds); + continue; + } + break; + } + + if (this.OnTaskExecuting != null) + { + new Thread(() => { this.OnTaskExecuting(task); }).Start(); + } + } while (true); + } + + public int TaskCount + { + get { return _taskManager.TaskCount; } + } + + /// + /// 뵽 + /// + /// + /// + public virtual void RegistTask( + ITask task, + TaskStateChangedHandler handler) + { + this._taskManager.RegistTask(task, handler); + } + + + public virtual void RegistContinuTasks( + TaskBuildHandler taskBuilder, + TaskStateChangedHandler handler, + int seconds) + { + this._taskManager.RegistContinuTasks(taskBuilder, handler, seconds); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskMessage.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskMessage.cs new file mode 100644 index 0000000..c7b6f14 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskMessage.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections; + +namespace Ops.Framework.TaskBox +{ + /// + /// Ϣ + /// + [Serializable] + public class TaskMessage + { + /// + /// ʧܽ + /// + public static TaskMessage Fault = new TaskMessage {Result = false, Data = null, Message = null}; + + + /// + /// ɹ + /// + public static TaskMessage Ok = new TaskMessage {Result = true, Data = null, Message = null}; + + /// + /// + /// + public bool Result { get; set; } + + /// + /// Ϣ + /// + public String Message { get; set; } + + /// + /// + /// + public Hashtable Data { get; set; } + + public override string ToString() + { + return TaskMessageParser.ConvertSyncMessageToString(this); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskMessageParser.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskMessageParser.cs new file mode 100644 index 0000000..b5c2631 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskMessageParser.cs @@ -0,0 +1,26 @@ +using System; + +namespace Ops.Framework.TaskBox +{ + public class TaskMessageParser + { + public static string ConvertSyncMessageToString(TaskMessage message) + { + return JsonSerializer.SerializerObject(message); + } + + /// + /// JsonַתΪSyncMessage + /// + /// + /// + public static TaskMessage ConvertToSyncMessage(string message) + { + if (!String.IsNullOrEmpty(message)) + { + return JsonSerializer.DeserializerObject(message); + } + return default(TaskMessage); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskQueue.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskQueue.cs new file mode 100644 index 0000000..c5e7e4c --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskQueue.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Threading; + +namespace Ops.Framework.TaskBox +{ + internal class TaskQueue + { + private TaskBox _syncBox; + private Queue tasks = new Queue(); + + public TaskQueue(TaskBox box) + { + this._syncBox = box; + + //ӵһδݿ + this.upgradeStackFromStorage(); + } + + /// + /// + /// + public int TaskCount + { + get { return this.tasks.Count; } + } + + public ITask GetNextTask() + { + if (tasks.Count == 0) + return null; + + while (tasks.Count != 0) + { + ITask task = tasks.Dequeue(); + if (task != null) return task; + } + return null; + } + + /// + /// Ӵ洢и¶ + /// + private void upgradeStackFromStorage() + { + IList taskList = null; + + try + { + taskList = this._syncBox.Storage.GetSyncTaskQueue(); + } + catch (Exception exc) + { + this._syncBox.Notifing(this._syncBox.Storage, "[Error]:Ӵ洢лȡв" + exc.Message); + return; + } + + if (taskList != null) + { + foreach (ITask task in taskList) + { + this.tasks.Enqueue(task); + } + } + } + + internal void RegistTask(ITask task, + TaskStateChangedHandler behavior) + { + task.StateChanged += behavior; + task.StateChanged += this._syncBox.Log.LogTaskState; + this.tasks.Enqueue(task); + + task.SetState(null, TaskState.Created, new TaskMessage + { + Result = true, + Message = "Ѿ..." + }); + } + + + internal void RegistContinuTasks( + TaskBuildHandler taskBuilder, + TaskStateChangedHandler handler, + int minseconds) + { + new Thread(() => + { + while (true) + { + try + { + this.RegistTask(taskBuilder(), handler); + } + catch (Exception exc) + { + this._syncBox.Notifing(taskBuilder, "񴴽ʧ!"); + } + + Thread.Sleep(minseconds); + } + }).Start(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskState.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskState.cs new file mode 100644 index 0000000..576475e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskState.cs @@ -0,0 +1,29 @@ +namespace Ops.Framework.TaskBox +{ + /// + /// ״̬ + /// + public enum TaskState + { + /// + /// մ + /// + Created, + + /// + /// ɹ + /// + Ok, + + /// + /// ڲԭɵʧ + /// + Error, + + /// + /// жϻԭ + /// + Suppend, + Default + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskStateChangedBehavior.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskStateChangedBehavior.cs new file mode 100644 index 0000000..6245442 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/TaskStateChangedBehavior.cs @@ -0,0 +1,26 @@ +namespace Ops.Framework.TaskBox +{ + /// + /// ״̬ıʱ + /// + /// ı״̬Դ + /// + public delegate void TaskStateChangedHandler(ITaskExecuteClient source, ITask task, TaskMessage result); + + /// + /// + /// + /// + public delegate ITask TaskBuildHandler(); + + public delegate void TaskPostingHandler(ITask task); + + /// + /// Ϣ + /// + /// + /// + public delegate void TaskMessageHandler(object data, string message); + + public delegate void TaskBoxHandler(TaskBox taskBox); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs new file mode 100644 index 0000000..2660a40 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +namespace Ops.Framework.TaskBox.Toolkit +{ + public class TaskBoxDbStorage : ITaskBoxStorage + { + public void AppendSuppendTask(ITask task) + { + throw new NotImplementedException(); + } + + + public void SaveTaskChangedState(ITask task, TaskMessage message) + { + //״̬ıʱ״̬ + //Ѿִгɹˣʧˡ + } + + + public IList GetSyncTaskQueue() + { + // + //TODO:ݿлȡ񣬲ʶ¼,HttpPost,eventжpost + // + + return new List(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskLogProvider.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskLogProvider.cs new file mode 100644 index 0000000..b6bc27d --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskLogProvider.cs @@ -0,0 +1,20 @@ +namespace Ops.Framework.TaskBox.Toolkit +{ + public class TaskLogProvider : ITaskLogProvider + { + public TaskLogProvider(ITaskBoxStorage storage) + { + this.Storage = storage; + } + + public void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message) + { + //Լ¼־ + + if (this.Storage != null) + this.Storage.SaveTaskChangedState(task, message); + } + + public ITaskBoxStorage Storage { get; private set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskService.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskService.cs new file mode 100644 index 0000000..3d086c0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/TaskBox/Toolkit/TaskService.cs @@ -0,0 +1,96 @@ +using System; + +namespace Ops.Framework.TaskBox.Toolkit +{ + /// + /// + /// + public class TaskService + { + private TaskBox _box; + //private static string _server; + //private static string _token; + private bool _isBooted; + + //public static void RegistServer(string server, string token) + //{ + // _server = server; + // _token = token; + //} + + public TaskBox Sington + { + get + { + if (_box == null) + { + throw new Exception("δ!"); + } + + return _box; + } + } + + /// + /// + /// + public void Start(TaskBoxHandler handler, ITaskBoxStorage storage, ITaskLogProvider logProvider) + { + if (_isBooted == true) + throw new Exception("Ѿ!"); + + if (_box == null) + { + if (storage == null) + { + storage = new TaskBoxDbStorage(); + } + + if (logProvider == null) + { + logProvider = new TaskLogProvider(storage); + } + + + _box = new TaskBox(storage, logProvider, 3); + + if (handler != null) + { + handler(_box); + } + + //if (String.IsNullOrEmpty(_server) + // || String.IsNullOrEmpty(_token)) + // throw new ArgumentNullException("ʹRegistServerעϢ!"); + //HttpSyncClient client = new HttpSyncClient(_server, _token); + + //if (client.TestConnect()) + //{ + // //ע¼ + // _box.OnTaskPosting += client.Post; + //} + //else + //{ + // throw new Exception("ʧ"); + //} + } + + _isBooted = true; + _box.StartWork(); + } + + /// + /// ,ʹõĴ洢־¼ + /// + public void Start(TaskBoxHandler handler) + { + Start(handler, null, null); + } + + + public void Stop() + { + _box.StopWork(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Text/ChineseSpell.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Text/ChineseSpell.cs new file mode 100644 index 0000000..8ce8a76 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Text/ChineseSpell.cs @@ -0,0 +1,1681 @@ +// +// ChineseSpell - A Chinese pinyin library +// Copyright (C) 2011 OPS Inc,All rights reseved. +// +// Principle:http://tonyqus.cnblogs.com/archive/2005/10/22/260000.html +// + +namespace Ops.Framework.Text +{ + using System; + using System.Collections.Generic; + using System.Text; + + /// + /// 提供用于设置转换选项的枚举值。 + /// + [System.FlagsAttribute] + public enum SpellOptions + { + /// + /// 只转换拼音首字母,默认转换全部 + /// + FirstLetterOnly = 1, //只转换拼音首字母,默认转换全部 + + /// + /// 转换未知汉字为问号,默认不转换 + /// + TranslateUnknowWordToInterrogation = 1 << 1, //转换未知汉字为问号,默认不转换 + + /// + /// 保留非字母、非数字字符,默认不保留 + /// + EnableUnicodeLetter = 1 << 2, //保留非字母、非数字字符,默认不保留 + + /// + /// 转换未知汉字为连接符号 + /// + TranslateSpecialWordToConnect = 1 << 3 + } + + /// + /// 中文拼写 + /// + public class ChineseSpell + { + #region 字段和属性 + + //拼音代码表 + private static readonly string[] _spellMusicCode = new string[] + { + "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", + "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", + "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", + "chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", + "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong", "cou", "cu", + "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", + "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", + "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", + "fei", "fen", "feng", "fu", "fou", "ga", "gai", "gan", "gang", "gao", + "ge", "ji", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", + "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", + "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", + "hui", "hun", "huo", "jia", "jian", "jiang", "qiao", "jiao", "jie", "jin", + "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", + "kang", "kao", "ke", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", + "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", + "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", + "ling", "liu", "long", "lou", "lu", "luan", "lue", "lun", "luo", "ma", + "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", + "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", + "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", + "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nuan", "nue", "yao", + "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", + "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", + "qi", "qia", "qian", "qiang", "qie", "qin", "qing", "qiong", "qiu", "qu", + "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", + "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", + "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", + "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", + "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", + "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", + "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", + "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", + "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", + "xuan", "xue", "xun", "ya", "yan", "yang", "ye", "yi", "yin", "ying", + "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", + "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", + "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", + "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", + "zui", "zun", "zuo", "", "ei", "m", "n", "dia", "cen", "nou", + "jv", "qv", "xv", "lv", "nv" + }; + + //拼音索引表 + private static readonly int[,] _spellCodeIndex = new int[,] + { + { + 354, 279, 331, 0, 190, 39, 284, 67, 249, 167, 353, 19, 133, 92, 129, 152, 31, 385, 105, 131, 84, 348, + 348, + 329, 133, 0, 376, 116, 283, 349, 344, 87, 133, 0, 0, 0, 284, 202, 0, 0, 0, 0, 0, 0, 342, 345, 0, 276, + 199, 243, 0, 0, 52, 0, 375, 102, 88, 176, 170, 348, 136, 180, 375, 0, 354, 294, 299, 94, 344, 368, 344, + 55, 347, 333, 131, 347, 353, 369, 166, 74, 325, 92, 0, 329, 6, 19, 0, 306, 0, 332, 372, 114, 107, 20, 33, + 370, 279, 258, 79, 191, 243, 328, 220, 83, 43, 324, 62, 376, 229, 354, 64, 73, 329, 348, 336, 92, 2, 349, + 232, 282, 84, 305, 389, 357, 134, 332, 343, 336, 363, 332, 217, 208, 335, 340, 377, 389, 13, 232, 348, + 294, 348, 374, 107, 181, 378, 21, 250, 14, 371, 47, 346, 369, 14, 332, 250, 284, 10, 121, 110, 333, 91, + 78, 194, 19, 113, 123, 102, 251, 47, 337, 282, 320, 106, 157, 348, 101, 349, 189, 340, 3, 175, 77, 178, + 29, 37, 343, 377, 263, 125, 294, 56 + }, + { + 302, 214, 130, 132, 313, 373, 393, 39, 404, 134, 286, 313, 282, 320, 20, 201, 334, 318, 354, 330, 340, + 101, + 148, 329, 348, 84, 167, 122, 350, 332, 270, 229, 330, 190, 331, 339, 62, 134, 375, 157, 294, 123, 334, + 125, 16, 309, 81, 344, 11, 354, 336, 116, 374, 375, 19, 133, 220, 389, 167, 323, 169, 43, 387, 0, 91, + 310, 286, 187, 304, 383, 337, 237, 241, 88, 167, 299, 245, 80, 375, 387, 178, 295, 171, 122, 68, 386, 12, + 329, 134, 200, 23, 125, 347, 276, 245, 350, 36, 243, 264, 376, 45, 325, 354, 19, 309, 345, 83, 305, 328, + 75, 34, 283, 140, 62, 29, 11, 367, 120, 220, 369, 388, 345, 353, 340, 367, 47, 84, 84, 375, 190, 92, 348, + 335, 343, 294, 71, 368, 373, 315, 11, 360, 245, 325, 296, 375, 297, 331, 355, 261, 217, 357, 126, 180, + 63, 305, 109, 129, 330, 278, 243, 252, 35, 40, 270, 11, 334, 352, 220, 304, 301, 346, 78, 19, 333, 359, + 97, 270, 162, 352, 362, 387, 231, 295, 381, 354, 368, 389, 279, 43, 131, 107 + }, + { + 370, 247, 349, 62, 335, 174, 11, 234, 130, 166, 175, 182, 243, 332, 304, 350, 68, 392, 278, 127, 132, + 318, + 392, 240, 160, 32, 101, 241, 308, 381, 325, 92, 20, 121, 45, 312, 278, 220, 82, 332, 354, 75, 170, 20, + 97, 332, 332, 193, 347, 130, 242, 127, 83, 377, 2, 269, 348, 137, 216, 304, 348, 58, 150, 0, 125, 40, + 128, 276, 359, 24, 18, 3, 303, 59, 30, 158, 348, 130, 243, 188, 329, 214, 248, 208, 32, 169, 404, 152, + 10, 354, 16, 360, 375, 294, 353, 109, 247, 246, 164, 308, 325, 173, 40, 31, 333, 311, 335, 164, 179, 360, + 221, 305, 345, 179, 202, 360, 338, 265, 265, 316, 32, 208, 208, 130, 345, 284, 0, 0, 0, 0, 282, 69, 0, 0, + 120, 329, 265, 167, 354, 107, 310, 0, 92, 348, 184, 254, 345, 184, 367, 132, 98, 132, 184, 377, 96, 340, + 353, 140, 348, 189, 284, 188, 134, 147, 193, 84, 335, 189, 303, 89, 116, 226, 84, 193, 242, 125, 296, + 186, 316, 97, 131, 247, 68, 88, 349, 2, 164, 25, 194, 384, 52 + }, + { + 294, 74, 130, 170, 330, 70, 79, 79, 134, 40, 374, 83, 198, 375, 83, 83, 139, 88, 237, 150, 107, 258, 43, + 92, + 243, 53, 92, 57, 323, 136, 164, 84, 250, 64, 193, 171, 376, 17, 129, 129, 278, 31, 94, 43, 153, 74, 77, + 129, 47, 131, 69, 179, 363, 355, 54, 0, 276, 43, 54, 164, 81, 31, 241, 0, 43, 386, 89, 240, 74, 247, 385, + 125, 92, 345, 123, 74, 375, 329, 98, 283, 125, 367, 139, 244, 42, 31, 381, 175, 164, 231, 278, 147, 98, + 117, 367, 385, 166, 134, 172, 102, 128, 102, 125, 125, 314, 92, 125, 125, 375, 31, 390, 196, 164, 378, + 344, 131, 145, 335, 375, 348, 378, 196, 160, 135, 147, 346, 321, 334, 197, 152, 129, 169, 0, 131, 90, + 193, 37, 159, 352, 0, 135, 247, 175, 21, 157, 139, 190, 68, 340, 329, 348, 343, 346, 283, 168, 175, 234, + 284, 92, 244, 128, 251, 333, 348, 342, 79, 135, 314, 134, 57, 181, 343, 343, 404, 164, 34, 333, 251, 357, + 133, 10, 0, 14, 87, 87, 348, 231, 134, 220, 91, 75 + }, + { + 95, 55, 133, 95, 203, 133, 348, 126, 141, 116, 250, 79, 245, 361, 152, 116, 354, 102, 121, 57, 153, 166, + 166, 298, 70, 133, 250, 330, 143, 345, 250, 343, 209, 389, 284, 330, 323, 323, 335, 278, 92, 288, 152, + 330, 335, 254, 346, 248, 280, 37, 340, 330, 153, 92, 75, 330, 270, 345, 372, 107, 344, 62, 368, 0, 227, + 0, 245, 344, 375, 183, 309, 281, 313, 391, 81, 363, 355, 164, 63, 246, 5, 102, 345, 164, 32, 243, 164, + 345, 345, 355, 114, 190, 262, 250, 0, 162, 70, 381, 282, 282, 282, 348, 56, 285, 136, 6, 267, 284, 385, + 331, 334, 92, 357, 265, 48, 98, 249, 37, 0, 114, 192, 183, 341, 386, 74, 347, 223, 123, 348, 39, 246, + 335, 239, 117, 114, 354, 221, 342, 263, 223, 90, 137, 404, 91, 326, 241, 329, 128, 357, 37, 283, 319, + 326, 75, 284, 135, 230, 326, 197, 254, 62, 284, 377, 312, 330, 348, 241, 237, 386, 340, 348, 334, 344, + 250, 332, 320, 239, 17, 84, 346, 123, 303, 55, 321, 393, 21, 302, 332, 123, 241, 77 + }, + { + 75, 375, 378, 343, 334, 149, 284, 311, 397, 341, 322, 160, 314, 338, 353, 189, 209, 337, 0, 109, 357, + 173, + 239, 183, 389, 110, 332, 160, 238, 167, 6, 192, 404, 299, 84, 107, 356, 353, 97, 97, 11, 107, 348, 243, + 316, 345, 323, 164, 249, 34, 362, 344, 69, 241, 62, 246, 0, 114, 0, 0, 167, 159, 276, 0, 0, 328, 349, + 241, 321, 244, 3, 363, 209, 354, 310, 157, 330, 2, 400, 385, 368, 358, 334, 333, 384, 329, 326, 309, 97, + 241, 241, 57, 347, 386, 316, 52, 110, 344, 241, 372, 167, 332, 350, 98, 363, 104, 179, 0, 62, 251, 320, + 0, 305, 3, 57, 354, 372, 377, 30, 322, 0, 360, 220, 190, 116, 357, 119, 355, 92, 376, 325, 276, 340, 120, + 367, 345, 167, 354, 271, 139, 127, 345, 278, 230, 300, 351, 325, 350, 0, 11, 0, 362, 123, 309, 220, 334, + 244, 273, 352, 114, 335, 180, 29, 106, 263, 321, 92, 227, 329, 332, 386, 175, 321, 0, 301, 0, 269, 0, + 199, 244, 14, 5, 166, 391, 378, 196, 304, 128, 38, 128, 139 + }, + { + 304, 282, 2, 334, 174, 334, 116, 121, 104, 340, 332, 363, 32, 238, 60, 180, 116, 86, 305, 347, 269, 128, + 334, 117, 181, 254, 334, 334, 92, 153, 334, 109, 396, 127, 340, 320, 304, 343, 329, 392, 79, 139, 121, + 24, 43, 358, 57, 354, 319, 330, 241, 109, 166, 340, 121, 349, 343, 220, 294, 345, 350, 55, 369, 0, 385, + 216, 356, 335, 127, 355, 2, 352, 325, 354, 230, 59, 336, 73, 58, 336, 232, 349, 391, 214, 62, 158, 302, + 328, 331, 347, 74, 339, 377, 368, 130, 32, 343, 185, 375, 175, 121, 228, 353, 220, 349, 351, 186, 114, + 372, 164, 172, 106, 202, 196, 345, 164, 175, 173, 196, 57, 35, 236, 232, 333, 185, 330, 74, 148, 345, 31, + 350, 0, 156, 302, 334, 46, 119, 123, 381, 372, 334, 367, 164, 31, 30, 164, 348, 179, 360, 297, 0, 365, + 125, 358, 378, 158, 212, 0, 0, 121, 349, 213, 317, 141, 355, 132, 233, 357, 48, 121, 75, 104, 314, 316, + 104, 253, 260, 104, 303, 104, 349, 122, 107, 178, 104, 44, 325, 355, 251, 148, 240 + }, + { + 355, 355, 344, 317, 316, 316, 317, 177, 121, 348, 176, 176, 344, 316, 313, 240, 175, 150, 344, 384, 297, + 297, 385, 58, 242, 331, 278, 212, 196, 124, 375, 343, 348, 246, 186, 261, 319, 82, 14, 337, 158, 131, 92, + 62, 337, 226, 305, 250, 385, 98, 303, 132, 346, 0, 175, 249, 96, 342, 6, 171, 378, 84, 116, 0, 375, 5, 0, + 228, 193, 92, 110, 404, 47, 37, 349, 115, 72, 371, 84, 101, 220, 74, 102, 29, 346, 335, 285, 19, 114, 55, + 138, 58, 108, 3, 337, 332, 9, 239, 11, 348, 349, 107, 340, 383, 246, 83, 80, 252, 352, 137, 331, 62, 159, + 135, 246, 372, 169, 117, 21, 132, 347, 62, 344, 251, 299, 374, 323, 134, 178, 374, 146, 279, 68, 304, 23, + 315, 13, 332, 74, 348, 375, 384, 241, 134, 208, 143, 154, 208, 125, 89, 354, 344, 97, 163, 80, 344, 154, + 3, 282, 203, 316, 36, 119, 14, 166, 328, 381, 10, 354, 329, 129, 264, 347, 94, 387, 354, 120, 75, 220, + 84, 92, 186, 279, 320, 349, 83, 376, 129, 130, 113, 89 + }, + { + 45, 332, 237, 162, 337, 120, 71, 323, 341, 330, 92, 150, 350, 352, 139, 297, 284, 189, 327, 36, 316, 252, + 376, 164, 231, 9, 361, 72, 373, 329, 374, 343, 373, 2, 95, 345, 140, 326, 335, 172, 106, 159, 279, 231, + 13, 35, 175, 175, 223, 243, 186, 196, 381, 290, 174, 16, 27, 375, 370, 140, 63, 35, 385, 0, 92, 104, 244, + 246, 62, 52, 345, 302, 366, 243, 325, 383, 127, 278, 278, 81, 240, 318, 317, 79, 252, 73, 392, 62, 283, + 121, 74, 304, 61, 329, 82, 120, 304, 55, 347, 378, 125, 354, 244, 127, 144, 348, 232, 63, 126, 347, 342, + 304, 158, 134, 118, 58, 255, 243, 343, 332, 330, 2, 344, 59, 264, 130, 404, 152, 175, 345, 304, 325, 121, + 173, 173, 265, 164, 170, 31, 343, 345, 162, 6, 323, 270, 382, 348, 181, 378, 382, 116, 154, 116, 340, + 154, 285, 183, 73, 285, 348, 350, 126, 227, 368, 15, 299, 253, 171, 54, 341, 335, 203, 331, 355, 323, + 375, 247, 0, 96, 241, 188, 188, 35, 363, 136, 90, 306, 303, 345, 14, 0 + }, + { + 357, 335, 6, 76, 309, 228, 135, 335, 63, 346, 119, 139, 367, 12, 120, 81, 64, 343, 145, 5, 327, 303, 329, + 5, + 126, 166, 74, 357, 126, 284, 82, 123, 14, 176, 74, 313, 243, 133, 218, 29, 332, 79, 92, 114, 57, 353, + 131, 129, 326, 376, 224, 145, 376, 357, 232, 37, 356, 382, 345, 201, 336, 82, 83, 0, 355, 70, 20, 385, + 371, 208, 355, 315, 341, 375, 75, 196, 14, 282, 75, 110, 340, 78, 374, 193, 8, 84, 171, 386, 254, 332, + 346, 182, 386, 134, 258, 68, 92, 87, 333, 123, 135, 96, 125, 125, 209, 375, 373, 332, 113, 101, 343, 149, + 345, 194, 169, 229, 344, 353, 345, 332, 309, 321, 251, 295, 114, 332, 280, 283, 335, 183, 84, 329, 143, + 157, 50, 313, 337, 201, 354, 238, 299, 375, 107, 382, 237, 318, 332, 354, 345, 329, 330, 345, 354, 294, + 164, 134, 383, 241, 332, 385, 68, 175, 75, 75, 404, 190, 48, 239, 134, 23, 171, 334, 286, 241, 121, 84, + 328, 328, 304, 81, 81, 310, 208, 251, 131, 131, 243, 63, 337, 116, 323 + }, + { + 157, 349, 377, 203, 84, 178, 0, 154, 349, 344, 134, 164, 63, 332, 117, 117, 346, 220, 201, 267, 124, 354, + 354, 325, 309, 262, 186, 57, 264, 247, 121, 328, 243, 45, 191, 84, 129, 71, 348, 376, 120, 190, 345, 350, + 341, 129, 325, 374, 249, 375, 335, 320, 166, 184, 254, 294, 233, 325, 321, 50, 116, 245, 10, 0, 340, 354, + 102, 388, 220, 355, 261, 263, 172, 186, 226, 357, 180, 153, 282, 373, 355, 301, 261, 194, 350, 297, 211, + 306, 227, 159, 203, 10, 232, 348, 354, 341, 355, 348, 141, 352, 208, 391, 130, 381, 363, 201, 160, 372, + 116, 116, 5, 264, 180, 235, 97, 329, 127, 320, 369, 191, 332, 332, 196, 168, 166, 117, 102, 61, 375, 340, + 348, 117, 330, 153, 220, 345, 31, 128, 186, 84, 79, 345, 348, 111, 128, 84, 284, 299, 244, 166, 341, 336, + 211, 68, 348, 24, 2, 210, 214, 180, 311, 39, 130, 47, 354, 236, 261, 263, 208, 345, 303, 350, 243, 356, + 190, 14, 282, 337, 208, 70, 172, 355, 158, 345, 171, 128, 255, 158, 332, 350, 290 + }, + { + 335, 251, 189, 164, 176, 345, 378, 158, 136, 386, 336, 294, 303, 353, 381, 343, 192, 48, 323, 344, 348, + 386, + 164, 342, 20, 200, 212, 350, 176, 261, 248, 316, 262, 220, 348, 131, 384, 378, 114, 284, 348, 311, 330, + 36, 253, 95, 334, 367, 284, 282, 120, 189, 147, 23, 360, 355, 249, 110, 373, 125, 214, 19, 119, 0, 246, + 284, 214, 130, 214, 375, 354, 10, 151, 214, 404, 246, 116, 375, 214, 282, 325, 335, 151, 121, 137, 348, + 348, 10, 246, 173, 10, 83, 404, 72, 238, 381, 238, 0, 346, 381, 343, 378, 72, 59, 129, 189, 189, 286, + 279, 196, 168, 332, 332, 154, 353, 211, 227, 324, 324, 324, 220, 74, 153, 376, 88, 97, 380, 88, 88, 330, + 14, 129, 310, 64, 284, 373, 335, 208, 330, 0, 182, 174, 237, 335, 81, 335, 404, 28, 335, 134, 136, 168, + 136, 378, 335, 238, 321, 332, 164, 345, 59, 121, 173, 258, 329, 107, 282, 40, 0, 356, 8, 220, 4, 329, + 129, 92, 82, 323, 243, 241, 129, 393, 393, 346, 134, 89, 342, 238, 164, 311, 389 + }, + { + 84, 320, 232, 5, 152, 250, 238, 311, 171, 37, 237, 0, 9, 314, 342, 15, 110, 143, 179, 75, 212, 65, 175, + 76, + 77, 87, 251, 348, 198, 284, 3, 325, 119, 189, 164, 92, 314, 325, 353, 97, 169, 220, 128, 75, 347, 21, + 253, 83, 203, 164, 353, 332, 261, 59, 282, 36, 316, 94, 90, 331, 349, 354, 202, 0, 140, 345, 252, 38, + 302, 170, 117, 134, 157, 193, 154, 154, 389, 97, 344, 89, 178, 178, 171, 74, 374, 349, 68, 107, 374, 325, + 232, 129, 389, 148, 68, 349, 386, 363, 120, 354, 346, 83, 249, 346, 309, 348, 375, 284, 75, 378, 369, + 404, 345, 186, 107, 92, 119, 313, 329, 354, 387, 158, 143, 345, 345, 325, 387, 29, 301, 143, 246, 309, + 316, 72, 330, 327, 25, 305, 350, 129, 139, 172, 329, 127, 13, 63, 243, 352, 212, 54, 284, 267, 295, 387, + 126, 168, 141, 31, 65, 399, 66, 316, 174, 369, 369, 5, 26, 250, 244, 391, 391, 59, 59, 330, 354, 232, + 173, 333, 374, 20, 246, 128, 345, 160, 369, 168, 168, 246, 74, 392, 127 + }, + { + 136, 220, 128, 220, 136, 369, 348, 342, 203, 347, 347, 348, 212, 345, 92, 335, 143, 330, 62, 5, 391, 325, + 261, 59, 171, 129, 354, 356, 349, 263, 129, 169, 330, 173, 173, 350, 330, 134, 31, 350, 325, 345, 203, + 251, 33, 51, 176, 63, 63, 212, 345, 345, 345, 203, 345, 150, 120, 337, 33, 169, 0, 240, 240, 0, 249, 375, + 371, 348, 130, 300, 251, 0, 238, 358, 66, 212, 82, 224, 375, 116, 57, 56, 321, 84, 196, 348, 348, 237, + 242, 135, 263, 288, 291, 127, 373, 284, 253, 56, 102, 237, 370, 270, 323, 56, 276, 241, 70, 115, 374, + 340, 325, 348, 9, 237, 65, 95, 226, 306, 189, 124, 308, 121, 376, 282, 16, 104, 363, 198, 9, 131, 31, + 375, 329, 14, 14, 370, 189, 127, 31, 82, 188, 9, 59, 192, 40, 129, 332, 158, 125, 19, 88, 92, 313, 363, + 101, 185, 246, 319, 344, 336, 129, 382, 344, 47, 314, 348, 375, 311, 375, 334, 316, 102, 148, 188, 353, + 21, 19, 36, 157, 92, 295, 286, 247, 354, 191, 296, 363, 333, 81, 133, 75 + }, + { + 325, 172, 331, 296, 375, 21, 247, 133, 133, 174, 349, 330, 175, 348, 40, 316, 294, 336, 191, 32, 329, 81, + 152, 0, 150, 14, 273, 170, 168, 404, 92, 350, 332, 313, 352, 164, 313, 345, 62, 238, 121, 200, 121, 82, + 250, 345, 361, 348, 77, 270, 77, 284, 64, 116, 329, 318, 126, 6, 282, 370, 306, 84, 62, 0, 33, 373, 348, + 251, 280, 355, 131, 64, 370, 126, 244, 231, 14, 281, 304, 125, 91, 78, 14, 147, 125, 17, 334, 304, 104, + 244, 114, 208, 104, 323, 136, 92, 175, 121, 121, 348, 348, 348, 356, 356, 326, 345, 354, 37, 64, 352, + 234, 37, 385, 348, 92, 376, 324, 62, 171, 84, 324, 330, 324, 374, 375, 131, 48, 375, 48, 0, 92, 375, 387, + 377, 157, 335, 129, 125, 309, 331, 233, 84, 325, 227, 330, 374, 234, 309, 60, 375, 17, 376, 34, 220, 121, + 186, 173, 333, 10, 250, 161, 258, 313, 87, 258, 107, 348, 303, 330, 79, 350, 326, 326, 329, 92, 330, 129, + 323, 48, 354, 284, 52, 303, 384, 246, 122, 338, 324, 332, 141, 134 + }, + { + 348, 10, 193, 229, 147, 8, 215, 369, 116, 389, 353, 62, 318, 353, 84, 330, 14, 353, 341, 48, 19, 120, + 342, + 232, 286, 330, 304, 352, 196, 0, 284, 330, 160, 113, 152, 197, 375, 335, 220, 65, 109, 325, 340, 334, + 294, 149, 249, 121, 37, 348, 338, 99, 170, 37, 279, 381, 356, 231, 60, 121, 334, 183, 352, 0, 355, 232, + 356, 354, 354, 143, 372, 170, 128, 245, 309, 21, 243, 330, 187, 348, 113, 36, 329, 164, 167, 48, 348, + 164, 203, 75, 329, 48, 60, 32, 187, 164, 100, 100, 241, 146, 310, 178, 330, 140, 103, 208, 73, 104, 369, + 355, 130, 92, 170, 354, 110, 251, 304, 309, 212, 46, 187, 336, 329, 301, 387, 125, 352, 60, 203, 357, + 312, 45, 248, 27, 15, 122, 387, 309, 11, 341, 325, 91, 325, 14, 341, 119, 190, 352, 241, 305, 349, 336, + 184, 242, 143, 2, 245, 345, 264, 387, 294, 350, 252, 114, 357, 297, 241, 220, 295, 120, 92, 97, 134, 43, + 208, 335, 139, 374, 352, 26, 343, 282, 20, 330, 335, 122, 352, 346, 164, 272, 306 + }, + { + 349, 340, 303, 357, 194, 95, 48, 234, 198, 104, 37, 24, 24, 24, 52, 193, 370, 314, 5, 290, 100, 252, 362, + 133, 166, 223, 295, 246, 349, 404, 279, 317, 182, 332, 281, 247, 62, 375, 404, 135, 241, 241, 354, 237, + 168, 295, 353, 38, 375, 314, 36, 241, 250, 231, 11, 248, 128, 37, 166, 237, 153, 121, 374, 0, 349, 349, + 330, 330, 57, 304, 74, 319, 297, 136, 27, 334, 79, 82, 160, 160, 332, 193, 168, 329, 24, 136, 50, 332, + 304, 283, 232, 348, 332, 216, 57, 304, 131, 295, 128, 325, 341, 246, 246, 134, 272, 144, 350, 348, 170, + 273, 137, 118, 2, 347, 155, 331, 37, 354, 349, 56, 188, 208, 188, 72, 241, 196, 332, 187, 39, 375, 221, + 40, 346, 20, 375, 152, 152, 353, 84, 172, 192, 36, 121, 31, 158, 118, 341, 255, 31, 92, 134, 119, 281, + 166, 201, 196, 305, 136, 382, 382, 356, 91, 125, 68, 65, 23, 124, 375, 153, 369, 244, 91, 125, 354, 353, + 330, 369, 330, 330, 250, 116, 116, 75, 348, 309, 184, 63, 279, 348, 348, 345 + }, + { + 249, 164, 79, 263, 359, 370, 356, 354, 329, 107, 282, 367, 348, 241, 329, 0, 258, 330, 246, 124, 354, 5, + 372, 375, 375, 0, 345, 324, 15, 134, 326, 116, 356, 246, 282, 374, 357, 323, 265, 239, 239, 6, 215, 363, + 357, 19, 375, 201, 240, 220, 373, 367, 346, 242, 208, 347, 37, 232, 124, 186, 250, 40, 344, 0, 369, 228, + 199, 243, 320, 7, 375, 134, 155, 242, 243, 112, 213, 95, 392, 348, 335, 273, 121, 7, 375, 155, 74, 74, + 216, 373, 110, 128, 68, 263, 169, 367, 175, 281, 136, 169, 134, 344, 332, 354, 345, 20, 94, 309, 36, 301, + 243, 186, 216, 134, 231, 125, 345, 299, 335, 367, 83, 148, 249, 123, 316, 239, 363, 296, 354, 385, 323, + 375, 392, 380, 368, 175, 296, 345, 9, 325, 323, 246, 281, 193, 187, 84, 59, 328, 251, 356, 387, 310, 316, + 12, 328, 393, 331, 241, 36, 272, 178, 247, 89, 62, 122, 241, 286, 323, 171, 344, 374, 167, 98, 348, 340, + 345, 374, 23, 19, 309, 388, 144, 285, 129, 194, 94, 188, 272, 231, 221, 125 + }, + { + 374, 353, 243, 345, 201, 341, 232, 325, 269, 212, 284, 387, 373, 343, 352, 15, 346, 119, 345, 390, 340, + 242, + 92, 309, 156, 156, 35, 133, 316, 122, 93, 68, 334, 335, 243, 367, 11, 220, 325, 0, 329, 387, 93, 96, 246, + 261, 252, 388, 300, 300, 261, 231, 143, 220, 59, 375, 221, 335, 249, 332, 130, 192, 348, 0, 72, 278, 302, + 367, 238, 164, 306, 148, 375, 321, 331, 326, 244, 310, 373, 75, 221, 251, 367, 329, 372, 141, 261, 277, + 300, 301, 168, 38, 43, 104, 231, 375, 241, 296, 166, 36, 37, 100, 175, 174, 387, 330, 116, 379, 244, 305, + 117, 375, 244, 102, 350, 127, 375, 212, 182, 31, 223, 40, 297, 381, 128, 278, 243, 234, 126, 220, 96, + 243, 92, 235, 160, 73, 332, 267, 102, 365, 348, 343, 36, 334, 114, 101, 302, 209, 170, 374, 325, 142, 92, + 26, 336, 304, 78, 34, 136, 334, 12, 196, 385, 325, 240, 246, 73, 117, 128, 302, 220, 379, 166, 352, 202, + 175, 385, 368, 240, 46, 330, 58, 273, 247, 129, 150, 278, 335, 367, 5, 134 + }, + { + 347, 75, 188, 189, 92, 303, 59, 158, 134, 347, 263, 347, 347, 208, 328, 129, 18, 214, 91, 375, 375, 305, + 196, 125, 335, 169, 304, 7, 296, 175, 356, 256, 375, 346, 162, 268, 286, 51, 209, 332, 229, 164, 157, + 119, 350, 179, 173, 243, 243, 243, 158, 332, 350, 186, 278, 350, 51, 335, 372, 179, 186, 196, 37, 0, 390, + 176, 304, 277, 63, 321, 305, 128, 158, 179, 102, 102, 241, 343, 142, 348, 107, 8, 238, 63, 147, 193, 329, + 110, 27, 285, 104, 340, 128, 35, 373, 74, 354, 7, 340, 74, 212, 63, 252, 348, 143, 345, 241, 315, 334, + 74, 346, 331, 193, 378, 2, 62, 373, 286, 168, 250, 338, 348, 128, 278, 128, 385, 348, 166, 14, 303, 334, + 334, 342, 241, 241, 136, 368, 0, 8, 354, 158, 325, 283, 124, 124, 354, 128, 315, 69, 375, 244, 250, 369, + 385, 385, 385, 246, 170, 385, 40, 71, 378, 129, 108, 229, 353, 0, 241, 232, 172, 84, 80, 131, 371, 348, + 280, 125, 0, 375, 79, 234, 79, 369, 150, 299, 354, 92, 92, 123, 335, 311 + }, + { + 350, 62, 340, 31, 346, 284, 193, 193, 384, 45, 329, 11, 8, 129, 283, 116, 80, 132, 341, 82, 246, 116, + 345, + 363, 80, 282, 134, 346, 80, 341, 238, 373, 171, 109, 196, 15, 340, 122, 387, 331, 81, 348, 326, 68, 2, + 19, 4, 173, 152, 311, 284, 120, 341, 153, 340, 128, 130, 375, 314, 114, 87, 333, 107, 0, 137, 332, 154, + 377, 330, 283, 372, 372, 107, 109, 323, 310, 385, 391, 377, 278, 208, 330, 241, 374, 348, 345, 323, 170, + 32, 324, 334, 81, 341, 348, 357, 121, 340, 193, 347, 350, 286, 325, 247, 184, 201, 158, 346, 45, 220, + 301, 240, 128, 139, 109, 327, 32, 241, 109, 345, 164, 92, 187, 360, 335, 109, 196, 48, 208, 370, 121, + 107, 341, 42, 168, 304, 131, 235, 170, 330, 348, 129, 120, 56, 347, 347, 164, 304, 314, 334, 81, 282, + 371, 109, 348, 333, 337, 278, 128, 10, 131, 345, 2, 347, 263, 188, 164, 35, 152, 65, 0, 220, 123, 404, + 261, 173, 179, 176, 277, 305, 345, 378, 0, 348, 116, 286, 26, 283, 366, 243, 340, 155 + }, + { + 349, 245, 82, 232, 82, 171, 148, 0, 405, 311, 159, 391, 194, 324, 319, 241, 350, 387, 324, 314, 159, 160, + 173, 0, 286, 0, 258, 6, 74, 311, 164, 249, 133, 14, 373, 47, 263, 243, 354, 329, 343, 79, 386, 258, 372, + 74, 183, 37, 348, 91, 95, 375, 126, 278, 323, 133, 183, 375, 355, 81, 68, 332, 45, 0, 286, 117, 336, 215, + 39, 295, 356, 130, 92, 184, 232, 4, 82, 348, 84, 201, 116, 347, 378, 336, 220, 75, 371, 357, 391, 283, + 74, 175, 295, 201, 373, 303, 330, 99, 84, 196, 348, 347, 347, 284, 212, 14, 348, 208, 156, 110, 226, 79, + 376, 56, 47, 350, 84, 286, 280, 295, 282, 254, 352, 375, 389, 57, 97, 240, 5, 84, 84, 393, 17, 367, 294, + 378, 229, 284, 99, 29, 220, 133, 172, 186, 164, 261, 362, 0, 352, 343, 241, 373, 348, 333, 373, 164, 273, + 140, 19, 258, 7, 258, 19, 386, 39, 348, 47, 392, 391, 77, 77, 354, 78, 95, 369, 164, 349, 375, 284, 84, + 263, 348, 148, 248, 271, 342, 74, 44, 354, 360, 0 + }, + { + 350, 129, 172, 369, 343, 268, 373, 11, 350, 155, 131, 238, 12, 265, 330, 159, 172, 83, 241, 326, 137, + 107, + 349, 249, 353, 173, 231, 382, 62, 342, 316, 362, 353, 14, 62, 107, 375, 258, 11, 332, 119, 323, 221, 124, + 311, 92, 334, 404, 151, 399, 82, 295, 294, 69, 246, 350, 134, 154, 385, 31, 325, 131, 164, 0, 19, 331, 0, + 306, 375, 157, 166, 385, 164, 241, 19, 178, 295, 243, 241, 23, 31, 372, 81, 229, 239, 122, 36, 362, 169, + 354, 354, 97, 103, 68, 89, 324, 54, 79, 36, 369, 241, 355, 345, 354, 251, 348, 282, 330, 385, 297, 157, + 388, 388, 82, 35, 247, 212, 323, 175, 109, 245, 377, 134, 134, 36, 393, 244, 344, 232, 385, 386, 18, 231, + 66, 40, 32, 187, 117, 125, 102, 330, 59, 102, 63, 375, 251, 0, 84, 94, 231, 278, 348, 282, 74, 84, 325, + 325, 124, 387, 125, 348, 330, 345, 345, 369, 354, 110, 328, 233, 14, 220, 149, 340, 267, 346, 156, 345, + 12, 121, 153, 129, 153, 294, 83, 320, 375, 198, 184, 148, 116, 313 + }, + { + 354, 353, 295, 355, 346, 373, 233, 347, 242, 347, 292, 354, 325, 186, 309, 92, 129, 262, 120, 161, 251, + 333, + 284, 304, 357, 282, 40, 232, 124, 348, 373, 84, 221, 189, 97, 130, 302, 220, 335, 355, 386, 194, 297, + 124, 220, 129, 120, 107, 243, 180, 355, 261, 284, 375, 326, 313, 261, 305, 368, 294, 283, 143, 330, 0, + 97, 241, 142, 300, 226, 306, 91, 45, 373, 400, 92, 129, 244, 332, 186, 340, 89, 385, 320, 127, 346, 63, + 124, 375, 59, 173, 271, 330, 92, 166, 121, 352, 243, 104, 87, 87, 317, 117, 282, 391, 231, 353, 126, 116, + 119, 102, 348, 348, 90, 141, 102, 102, 323, 375, 382, 357, 159, 35, 387, 164, 339, 247, 290, 314, 100, + 363, 297, 162, 175, 167, 189, 404, 128, 297, 143, 16, 175, 168, 372, 367, 286, 182, 211, 346, 311, 231, + 378, 276, 251, 125, 48, 92, 345, 342, 375, 343, 375, 391, 48, 240, 286, 117, 153, 373, 278, 330, 45, 63, + 81, 196, 329, 256, 170, 172, 127, 332, 266, 79, 369, 160, 357, 292, 318, 36, 305, 188, 334 + }, + { + 136, 336, 121, 92, 221, 320, 214, 265, 314, 366, 82, 248, 345, 113, 246, 97, 172, 160, 90, 330, 283, 386, + 270, 92, 69, 131, 125, 40, 55, 286, 126, 170, 203, 349, 121, 278, 391, 341, 36, 88, 134, 391, 348, 240, + 83, 121, 58, 92, 299, 237, 36, 40, 379, 121, 92, 129, 124, 368, 125, 244, 59, 348, 16, 0, 295, 281, 164, + 349, 306, 303, 190, 241, 317, 19, 123, 92, 243, 208, 214, 348, 90, 140, 349, 264, 247, 345, 241, 189, + 371, 102, 45, 92, 153, 238, 61, 40, 91, 190, 353, 375, 120, 243, 162, 169, 268, 175, 164, 51, 404, 192, + 121, 223, 404, 375, 90, 70, 355, 356, 81, 385, 296, 166, 126, 40, 247, 378, 404, 345, 164, 378, 246, 129, + 75, 297, 118, 212, 354, 173, 157, 128, 332, 0, 134, 339, 171, 350, 278, 349, 353, 350, 333, 216, 20, 369, + 166, 134, 290, 281, 391, 48, 251, 250, 25, 0, 354, 179, 164, 390, 176, 305, 136, 345, 158, 158, 378, 179, + 164, 6, 202, 354, 171, 101, 348, 332, 340, 33, 330, 241, 143, 349, 136 + }, + { + 330, 340, 331, 153, 159, 336, 296, 335, 340, 41, 349, 243, 336, 243, 42, 98, 349, 354, 334, 347, 346, + 304, + 253, 223, 116, 334, 119, 340, 230, 348, 334, 340, 0, 166, 40, 348, 75, 354, 46, 119, 21, 21, 134, 243, + 375, 273, 37, 273, 376, 301, 299, 164, 363, 354, 164, 153, 75, 372, 326, 196, 220, 283, 340, 0, 136, 242, + 249, 297, 247, 348, 347, 347, 24, 187, 65, 373, 357, 326, 39, 309, 130, 279, 349, 64, 133, 153, 51, 57, + 70, 126, 166, 18, 70, 125, 125, 378, 283, 348, 335, 252, 127, 220, 343, 121, 252, 241, 250, 121, 71, 348, + 334, 100, 186, 2, 129, 232, 31, 0, 0, 232, 169, 124, 269, 198, 320, 343, 77, 261, 332, 134, 249, 221, 0, + 229, 134, 74, 14, 270, 184, 299, 286, 320, 143, 302, 270, 286, 198, 184, 314, 261, 369, 272, 369, 188, + 175, 65, 136, 241, 346, 205, 18, 282, 330, 330, 247, 344, 68, 346, 357, 374, 19, 58, 291, 161, 208, 79, + 249, 224, 363, 190, 64, 385, 42, 323, 79, 56, 320, 183, 353, 236, 243 + }, + { + 354, 354, 316, 133, 375, 375, 243, 131, 131, 319, 137, 114, 251, 15, 107, 376, 227, 342, 120, 353, 340, + 340, + 357, 345, 57, 353, 116, 123, 405, 196, 329, 38, 227, 14, 375, 226, 386, 358, 172, 363, 83, 186, 358, 320, + 373, 373, 348, 78, 310, 294, 152, 350, 134, 348, 124, 376, 121, 12, 363, 378, 353, 97, 116, 0, 237, 386, + 375, 297, 36, 294, 134, 342, 283, 342, 84, 92, 100, 57, 349, 377, 347, 121, 359, 36, 325, 115, 125, 294, + 77, 337, 84, 386, 375, 349, 329, 142, 0, 345, 309, 197, 162, 348, 189, 251, 238, 334, 348, 297, 152, 245, + 134, 237, 338, 375, 120, 194, 329, 250, 348, 131, 284, 0, 31, 130, 169, 249, 325, 107, 183, 353, 20, 69, + 114, 348, 374, 158, 107, 164, 94, 166, 45, 114, 348, 314, 160, 331, 38, 132, 299, 36, 229, 332, 282, 154, + 237, 107, 247, 258, 316, 334, 313, 75, 357, 164, 291, 294, 162, 291, 70, 357, 113, 337, 306, 46, 370, + 202, 355, 320, 68, 328, 134, 281, 167, 122, 302, 245, 60, 135, 116, 104, 345 + }, + { + 377, 231, 109, 32, 243, 80, 37, 175, 134, 164, 372, 237, 310, 354, 208, 175, 189, 131, 171, 178, 250, + 354, + 282, 116, 116, 355, 157, 247, 243, 375, 349, 238, 12, 355, 326, 267, 81, 355, 143, 241, 281, 273, 241, + 232, 330, 355, 262, 119, 125, 218, 329, 313, 83, 328, 309, 325, 264, 27, 110, 345, 114, 189, 184, 0, 350, + 345, 247, 283, 186, 359, 122, 200, 102, 37, 75, 166, 241, 241, 186, 310, 49, 325, 24, 193, 238, 340, 92, + 125, 83, 348, 349, 284, 335, 374, 304, 354, 14, 193, 284, 316, 283, 352, 134, 314, 317, 249, 249, 346, + 173, 123, 355, 201, 226, 353, 251, 382, 167, 31, 345, 384, 110, 386, 187, 350, 156, 83, 174, 325, 331, + 350, 238, 130, 345, 301, 355, 332, 220, 188, 385, 36, 303, 302, 321, 147, 272, 367, 284, 178, 180, 325, + 359, 329, 326, 244, 363, 284, 2, 357, 349, 297, 301, 284, 2, 226, 340, 327, 25, 192, 91, 342, 120, 335, + 62, 375, 350, 129, 91, 299, 128, 121, 349, 363, 290, 45, 334, 354, 339, 116, 14, 16, 375 + }, + { + 126, 147, 282, 279, 189, 5, 175, 340, 353, 31, 79, 352, 103, 187, 247, 354, 92, 344, 33, 330, 92, 175, + 173, + 130, 104, 295, 375, 87, 244, 128, 48, 45, 381, 223, 308, 347, 330, 189, 305, 305, 304, 166, 321, 303, 88, + 231, 386, 141, 231, 370, 382, 340, 155, 243, 345, 290, 334, 52, 309, 126, 387, 350, 114, 0, 336, 286, + 119, 387, 154, 340, 375, 235, 286, 127, 238, 346, 121, 129, 329, 224, 92, 325, 334, 243, 344, 330, 300, + 73, 193, 266, 297, 373, 387, 348, 375, 323, 304, 349, 335, 347, 367, 270, 111, 14, 31, 286, 240, 170, + 325, 273, 273, 36, 132, 117, 203, 160, 53, 114, 107, 357, 172, 114, 84, 109, 110, 332, 125, 278, 330, + 354, 175, 214, 354, 170, 283, 58, 119, 363, 335, 354, 284, 342, 171, 323, 386, 352, 150, 24, 166, 63, + 347, 341, 373, 182, 57, 348, 299, 232, 134, 302, 246, 385, 216, 328, 246, 230, 273, 276, 325, 40, 302, + 295, 313, 273, 378, 166, 208, 330, 286, 189, 214, 350, 350, 188, 130, 241, 241, 391, 328, 306, 349 + }, + { + 349, 72, 47, 123, 247, 158, 343, 143, 325, 18, 97, 243, 350, 18, 155, 81, 25, 185, 360, 325, 238, 360, + 175, + 164, 353, 346, 175, 294, 375, 350, 70, 324, 121, 335, 226, 282, 16, 31, 196, 172, 125, 273, 36, 97, 18, + 123, 332, 175, 246, 261, 164, 131, 334, 350, 299, 325, 322, 342, 378, 290, 157, 72, 79, 0, 116, 157, 286, + 171, 350, 208, 92, 166, 392, 350, 170, 348, 125, 31, 56, 255, 125, 158, 79, 290, 355, 385, 83, 281, 162, + 158, 48, 250, 352, 243, 78, 136, 345, 350, 332, 360, 176, 345, 164, 189, 278, 304, 58, 128, 31, 350, 109, + 378, 158, 158, 202, 323, 176, 343, 332, 345, 88, 345, 354, 101, 334, 334, 121, 114, 381, 367, 335, 37, + 359, 241, 376, 82, 215, 326, 240, 348, 232, 139, 226, 345, 227, 198, 168, 101, 336, 101, 101, 15, 55, + 331, 374, 378, 143, 371, 84, 6, 335, 335, 171, 385, 228, 303, 346, 314, 278, 325, 120, 377, 220, 340, + 113, 251, 119, 339, 339, 332, 349, 344, 377, 220, 284, 325, 314, 342, 359, 139, 331 + }, + { + 341, 374, 238, 121, 101, 34, 121, 35, 0, 169, 84, 132, 335, 240, 313, 385, 313, 106, 159, 345, 340, 37, + 261, + 116, 330, 286, 123, 343, 148, 356, 334, 330, 382, 250, 62, 335, 241, 0, 404, 345, 134, 170, 154, 122, + 319, 330, 52, 329, 114, 134, 84, 328, 48, 83, 237, 248, 267, 348, 248, 336, 348, 127, 354, 0, 89, 232, + 350, 324, 283, 98, 280, 0, 0, 94, 325, 35, 110, 153, 376, 331, 357, 83, 166, 337, 128, 14, 350, 378, 325, + 317, 278, 330, 341, 218, 31, 345, 132, 132, 186, 325, 367, 130, 248, 262, 119, 79, 249, 299, 346, 169, + 129, 362, 98, 357, 201, 284, 167, 96, 305, 33, 357, 20, 347, 335, 330, 329, 357, 110, 334, 348, 357, 200, + 278, 248, 220, 189, 243, 350, 329, 95, 345, 244, 14, 16, 387, 175, 125, 174, 231, 299, 348, 314, 136, + 387, 116, 348, 375, 325, 172, 254, 223, 257, 132, 154, 51, 366, 125, 330, 330, 348, 334, 37, 120, 57, + 347, 343, 345, 343, 334, 137, 61, 319, 282, 127, 82, 330, 354, 170, 314, 280, 82 + }, + { + 343, 158, 186, 305, 348, 132, 187, 131, 0, 350, 348, 342, 158, 303, 24, 330, 252, 387, 243, 121, 378, + 171, + 354, 348, 335, 371, 121, 55, 0, 19, 264, 334, 343, 130, 39, 306, 220, 110, 158, 16, 261, 169, 196, 267, + 404, 169, 5, 343, 152, 356, 168, 164, 175, 136, 168, 345, 330, 335, 173, 347, 24, 255, 356, 0, 158, 48, + 314, 100, 134, 34, 189, 305, 158, 378, 158, 171, 354, 371, 374, 228, 36, 325, 107, 136, 347, 389, 189, + 43, 143, 361, 65, 244, 352, 244, 226, 33, 125, 43, 354, 367, 190, 226, 20, 43, 353, 70, 36, 215, 161, + 320, 258, 183, 80, 89, 345, 361, 11, 294, 353, 91, 198, 368, 251, 251, 386, 183, 145, 243, 164, 239, 89, + 375, 12, 251, 45, 124, 83, 143, 134, 40, 330, 11, 179, 129, 180, 270, 325, 184, 73, 314, 127, 330, 164, + 70, 169, 225, 234, 20, 330, 39, 325, 256, 39, 6, 92, 30, 385, 110, 141, 229, 115, 344, 349, 119, 382, + 152, 376, 198, 232, 134, 348, 337, 348, 171, 232, 208, 220, 353, 342, 57, 20 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 148, 332, 341, 196, 371, 129, 343, 278, 302, 314, 160, 385, 330, 331, 11, 375, 345, 276, 107, 131, 225, + 81, + 334, 232, 241, 16, 349, 157, 125, 244, 154, 345, 387, 375, 374, 344, 169, 0, 387, 0, 83, 328, 355, 278, + 317, 344, 335, 124, 233, 353, 220, 300, 238, 194, 296, 180, 355, 56, 354, 284, 109, 244, 348, 0, 373, 25, + 109, 182, 126, 198, 31, 5, 90, 52, 82, 14, 14, 120, 240, 170, 354, 382, 220, 330, 334, 285, 0, 128, 91, + 341, 70, 121, 150, 332, 332, 214, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + }, + { + 123, 263, 188, 169, 353, 131, 285, 175, 302, 332, 189, 255, 203, 179, 332, 241, 136, 220, 386, 175, 297, + 249, 86, 161, 6, 114, 62, 42, 88, 354, 241, 354, 32, 114, 329, 84, 129, 344, 187, 9, 356, 136, 357, 136, + 349, 57, 236, 244, 348, 88, 237, 84, 341, 49, 96, 124, 280, 47, 254, 283, 282, 348, 389, 0, 172, 14, 373, + 130, 128, 125, 164, 101, 332, 377, 345, 339, 346, 340, 297, 246, 349, 343, 10, 333, 331, 102, 38, 340, + 229, 160, 58, 350, 326, 75, 313, 309, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { + 329, 36, 137, 186, 11, 313, 332, 40, 107, 341, 345, 341, 339, 84, 330, 171, 164, 130, 301, 83, 323, 63, + 236, + 369, 273, 193, 354, 157, 193, 324, 354, 310, 40, 229, 36, 75, 32, 13, 175, 251, 64, 229, 244, 385, 246, + 78, 130, 70, 129, 122, 354, 186, 45, 341, 309, 337, 56, 262, 193, 125, 325, 264, 119, 0, 335, 42, 125, + 381, 346, 166, 251, 71, 344, 120, 172, 284, 261, 301, 220, 326, 329, 373, 130, 350, 180, 306, 172, 164, + 159, 310, 244, 54, 136, 371, 18, 316, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { + 154, 381, 48, 348, 241, 131, 362, 249, 5, 166, 187, 349, 117, 325, 329, 61, 339, 366, 343, 250, 58, 170, + 168, 248, 297, 102, 131, 79, 130, 172, 92, 121, 131, 2, 362, 58, 128, 103, 304, 150, 119, 273, 299, 310, + 40, 354, 130, 175, 233, 286, 391, 158, 330, 386, 341, 264, 328, 87, 162, 70, 164, 375, 262, 0, 164, 360, + 341, 309, 102, 299, 156, 173, 175, 164, 158, 350, 330, 333, 325, 100, 59, 360, 347, 20, 228, 375, 164, 0, + 333, 0, 8, 230, 80, 57, 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { + 116, 348, 0, 135, 32, 37, 0, 58, 188, 383, 237, 15, 377, 0, 47, 350, 241, 332, 174, 62, 223, 381, 170, + 329, + 57, 327, 350, 345, 310, 107, 32, 247, 282, 31, 31, 265, 297, 282, 175, 83, 367, 84, 237, 66, 384, 188, + 14, 172, 300, 172, 198, 357, 84, 94, 129, 84, 310, 198, 0, 126, 321, 84, 201, 0, 198, 198, 92, 310, 87, + 14, 55, 375, 177, 226, 348, 117, 354, 354, 198, 137, 348, 172, 65, 117, 58, 383, 126, 36, 32, 319, 162, + 29, 172, 65, 170, 126, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 232, 65, 65, 245, 57, 286, 375, 200, 14, 89, 377, 331, 340, 35, 342, 241, 344, 52, 14, 387, 342, 375, 78, + 375, 81, 134, 278, 212, 308, 314, 129, 354, 121, 304, 37, 186, 131, 334, 316, 183, 334, 298, 240, 74, + 285, 348, 231, 370, 100, 180, 170, 92, 310, 347, 37, 232, 193, 72, 143, 344, 50, 282, 376, 0, 375, 354, + 83, 346, 35, 316, 104, 326, 119, 148, 349, 136, 330, 100, 348, 43, 162, 0, 63, 370, 282, 50, 348, 387, + 296, 273, 64, 174, 404, 246, 84, 293, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { + 172, 160, 332, 81, 304, 349, 110, 332, 100, 325, 216, 354, 325, 352, 162, 164, 286, 57, 170, 170, 17, 92, + 37, 346, 129, 374, 185, 164, 123, 157, 92, 341, 350, 349, 352, 304, 63, 179, 176, 176, 20, 0, 6, 78, 78, + 245, 92, 362, 184, 224, 47, 171, 196, 92, 231, 90, 75, 107, 14, 39, 243, 2, 334, 0, 109, 120, 109, 363, + 52, 109, 334, 347, 109, 128, 2, 337, 120, 179, 234, 110, 128, 88, 228, 249, 252, 367, 97, 137, 137, 377, + 367, 0, 371, 70, 241, 350, 11, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 224, 6, 6, 6, 6, 7, 7, 7, 7, 7, + 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, + 10 + }, + { + 371, 110, 110, 20, 323, 354, 79, 84, 249, 59, 175, 369, 164, 130, 340, 140, 341, 3, 404, 340, 377, 58, 3, + 97, 164, 88, 324, 241, 355, 332, 336, 330, 83, 193, 194, 284, 357, 226, 80, 186, 332, 284, 350, 374, 220, + 282, 123, 55, 373, 152, 340, 282, 186, 196, 378, 373, 284, 65, 208, 386, 33, 80, 226, 0, 173, 314, 375, + 62, 204, 194, 343, 373, 346, 196, 376, 196, 186, 334, 107, 119, 36, 380, 135, 75, 182, 332, 330, 154, + 278, 310, 178, 323, 163, 284, 248, 169, 374, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 232, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, + 19 + }, + { + 164, 157, 391, 135, 232, 122, 175, 363, 377, 354, 122, 180, 331, 337, 121, 103, 359, 45, 125, 186, 115, + 341, + 310, 340, 78, 328, 102, 189, 327, 147, 58, 310, 248, 196, 82, 363, 370, 348, 69, 147, 196, 292, 48, 404, + 37, 187, 102, 119, 292, 330, 240, 282, 168, 34, 332, 347, 342, 329, 325, 125, 347, 2, 121, 0, 125, 371, + 186, 39, 272, 214, 343, 220, 356, 188, 190, 236, 190, 162, 152, 341, 190, 123, 175, 188, 173, 251, 182, + 330, 305, 140, 378, 246, 354, 293, 385, 136, 282, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 21, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, + 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 32, 32 + }, + { + 115, 350, 377, 128, 366, 356, 6, 66, 241, 386, 329, 372, 242, 244, 57, 136, 164, 84, 326, 75, 141, 375, + 129, + 236, 75, 372, 299, 321, 130, 196, 389, 354, 179, 320, 75, 198, 378, 217, 237, 171, 240, 161, 75, 238, + 352, 152, 145, 251, 378, 152, 75, 242, 175, 325, 2, 349, 345, 237, 160, 114, 247, 325, 127, 0, 0, 247, + 252, 31, 159, 114, 354, 334, 331, 183, 179, 352, 34, 34, 345, 276, 154, 97, 0, 117, 175, 35, 219, 295, + 385, 145, 345, 383, 146, 36, 241, 387, 247, 32, 32, 32, 370, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 284, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40 + }, + { + 170, 137, 226, 193, 369, 110, 330, 163, 349, 329, 241, 178, 203, 264, 345, 66, 320, 350, 143, 325, 293, + 373, + 71, 331, 58, 309, 203, 310, 241, 73, 83, 252, 252, 180, 95, 335, 75, 172, 309, 305, 143, 232, 325, 310, + 344, 241, 166, 325, 357, 383, 156, 0, 220, 381, 31, 241, 127, 231, 172, 175, 140, 43, 35, 0, 349, 162, + 234, 241, 378, 52, 387, 46, 178, 92, 278, 160, 366, 125, 330, 66, 63, 226, 358, 127, 62, 164, 125, 330, + 370, 127, 332, 354, 383, 127, 143, 363, 162, 40, 40, 40, 40, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 43, + 43, 382, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 33, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, + 52, 53, 53, 53, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56 + }, + { + 129, 40, 347, 252, 58, 348, 232, 232, 354, 236, 241, 348, 143, 125, 354, 264, 228, 47, 20, 346, 180, 336, + 152, 162, 162, 375, 164, 179, 79, 252, 228, 350, 164, 173, 173, 196, 290, 100, 158, 22, 345, 259, 356, + 302, 180, 335, 220, 375, 80, 72, 376, 0, 348, 284, 353, 375, 311, 84, 189, 298, 186, 30, 404, 0, 354, + 329, 378, 102, 331, 375, 90, 90, 291, 130, 282, 87, 154, 62, 306, 97, 100, 391, 171, 175, 59, 375, 14, + 40, 121, 353, 349, 386, 123, 373, 355, 329, 332, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 61, + 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 368, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 311, 65, 65, 65, 65, 65, + 65, 65 + }, + { + 346, 375, 348, 186, 294, 62, 11, 373, 352, 92, 90, 305, 294, 180, 302, 84, 341, 241, 354, 241, 294, 304, + 57, + 102, 299, 164, 216, 332, 59, 164, 356, 375, 360, 162, 262, 335, 316, 258, 386, 199, 375, 332, 209, 249, + 82, 184, 357, 375, 131, 375, 354, 148, 8, 232, 208, 164, 353, 232, 20, 171, 209, 393, 375, 0, 134, 123, + 314, 375, 155, 110, 349, 386, 375, 258, 70, 378, 216, 240, 90, 363, 320, 154, 88, 131, 309, 316, 344, + 178, 175, 97, 393, 384, 9, 241, 375, 154, 163, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 319, 73, 73, 73, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, + 77, 77 + }, + { + 231, 170, 391, 354, 297, 0, 348, 330, 15, 92, 84, 232, 221, 129, 376, 387, 340, 36, 59, 332, 386, 354, + 340, + 375, 142, 97, 261, 299, 261, 92, 141, 278, 189, 375, 92, 175, 297, 92, 350, 326, 249, 0, 348, 120, 245, + 92, 334, 240, 128, 385, 376, 391, 404, 299, 216, 273, 121, 255, 221, 354, 236, 386, 318, 0, 326, 36, 123, + 152, 404, 228, 273, 385, 164, 360, 344, 354, 282, 131, 220, 160, 220, 10, 19, 321, 378, 228, 64, 329, + 321, 43, 220, 334, 36, 147, 57, 385, 340, 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84 + }, + { + 297, 100, 385, 328, 321, 347, 248, 220, 220, 311, 33, 310, 64, 174, 168, 330, 329, 153, 43, 371, 151, + 151, + 36, 52, 168, 362, 51, 127, 248, 70, 362, 173, 245, 40, 284, 84, 243, 40, 114, 241, 109, 283, 82, 191, + 250, 378, 171, 207, 19, 7, 294, 114, 373, 64, 348, 286, 131, 250, 237, 164, 381, 28, 61, 0, 53, 322, 131, + 140, 131, 161, 231, 37, 183, 378, 323, 128, 298, 246, 344, 383, 355, 108, 130, 232, 348, 68, 278, 331, + 378, 199, 97, 245, 193, 10, 278, 229, 171, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 240, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 87, 87, 87, 87, 87, 87, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 105, 91, 91, 91, 91, 91, 0, 93, 93, 94, 94, 94, + 94 + }, + { + 217, 84, 79, 88, 79, 284, 184, 334, 248, 193, 179, 102, 250, 37, 349, 220, 14, 155, 128, 357, 263, 92, + 108, + 376, 157, 58, 27, 84, 316, 164, 159, 134, 100, 332, 107, 352, 331, 375, 36, 298, 378, 393, 313, 124, 90, + 88, 152, 357, 222, 334, 240, 157, 388, 225, 232, 91, 303, 99, 354, 125, 371, 116, 374, 0, 367, 377, 175, + 170, 253, 84, 367, 97, 243, 137, 383, 27, 389, 20, 341, 15, 300, 332, 237, 337, 116, 348, 356, 45, 404, + 329, 68, 334, 92, 129, 337, 186, 79, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, + 101, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, + 104, 104, 104, 104, 104, 104, 105 + }, + { + 71, 83, 378, 114, 245, 249, 191, 243, 97, 284, 357, 110, 305, 356, 39, 267, 374, 212, 243, 334, 173, 231, + 70, 385, 40, 284, 378, 244, 173, 125, 21, 121, 14, 378, 48, 345, 360, 390, 232, 234, 354, 381, 368, 277, + 104, 348, 116, 31, 147, 237, 362, 92, 404, 92, 209, 301, 51, 64, 301, 161, 167, 334, 20, 0, 189, 294, + 305, 168, 57, 84, 125, 193, 153, 56, 128, 381, 160, 334, 175, 284, 360, 241, 225, 241, 232, 88, 134, 175, + 175, 345, 58, 269, 379, 96, 243, 166, 284, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 12, 108, 108, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 196, 110, 110, 110, 110, 110, + 110, 110, 111, 111, 112, 112, 112, 112, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116 + }, + { + 158, 153, 354, 356, 109, 373, 303, 309, 212, 306, 348, 241, 308, 381, 377, 226, 296, 377, 243, 385, 308, + 175, 175, 125, 320, 350, 354, 157, 173, 245, 166, 158, 243, 356, 376, 250, 166, 15, 71, 390, 164, 284, + 179, 350, 356, 385, 354, 79, 282, 372, 282, 405, 110, 208, 53, 370, 243, 368, 232, 8, 329, 276, 141, 0, + 262, 14, 299, 349, 372, 189, 303, 116, 88, 134, 196, 377, 164, 297, 114, 314, 273, 170, 382, 7, 160, 77, + 250, 110, 332, 84, 164, 356, 175, 134, 241, 7, 370, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, + 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 92, 92, 92, 92, 92, 92, 92, 92 + }, + { + 117, 117, 270, 305, 15, 190, 387, 125, 164, 335, 84, 221, 11, 97, 339, 124, 382, 305, 270, 82, 126, 196, + 270, 270, 221, 330, 167, 150, 20, 119, 286, 92, 332, 317, 212, 164, 393, 62, 212, 311, 158, 294, 133, 95, + 374, 133, 353, 92, 29, 377, 343, 356, 126, 354, 129, 323, 258, 326, 249, 199, 386, 315, 215, 0, 85, 129, + 286, 384, 232, 373, 276, 114, 375, 92, 82, 357, 258, 57, 130, 80, 389, 133, 367, 6, 84, 375, 241, 377, + 114, 367, 330, 84, 348, 282, 20, 378, 250, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 140, 125, 125, 125, 125, 125, 125, 125 + }, + { + 171, 378, 280, 88, 346, 84, 320, 373, 56, 40, 284, 376, 341, 389, 132, 8, 250, 196, 286, 391, 152, 131, + 258, + 108, 348, 129, 378, 39, 149, 196, 136, 152, 116, 47, 119, 94, 306, 335, 148, 334, 251, 87, 179, 343, 231, + 332, 84, 331, 314, 261, 311, 349, 162, 335, 135, 106, 65, 314, 294, 126, 333, 121, 136, 0, 125, 341, 375, + 326, 373, 404, 36, 249, 286, 9, 314, 334, 323, 332, 94, 339, 309, 339, 335, 114, 330, 84, 313, 299, 72, + 154, 84, 131, 116, 375, 345, 132, 83, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 220, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 134, 129, 129, 129, 129, 129, 129, 129, 129, 129, 92, 129, 129, 129, 129, 129, 129, 129, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130 + }, + { + 92, 340, 258, 387, 282, 74, 169, 404, 167, 306, 251, 280, 241, 384, 241, 323, 374, 332, 285, 348, 306, + 323, + 89, 324, 13, 383, 23, 104, 389, 178, 172, 348, 369, 14, 46, 171, 190, 241, 245, 310, 387, 122, 388, 330, + 386, 337, 167, 130, 81, 265, 193, 354, 387, 79, 404, 340, 350, 279, 241, 340, 333, 125, 143, 0, 332, 264, + 190, 241, 71, 376, 62, 193, 191, 355, 347, 10, 294, 249, 15, 119, 94, 387, 190, 325, 84, 325, 340, 96, + 191, 335, 166, 387, 233, 357, 349, 309, 98, 130, 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, 132, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, + 135, 135, 135, 136, 136, 136, 136, 136, 136, 128, 136, 136, 136, 137, 137, 137, 137, 137, 137 + }, + { + 375, 357, 36, 31, 56, 331, 355, 387, 340, 350, 325, 94, 0, 350, 130, 348, 383, 208, 9, 116, 226, 377, + 125, + 301, 251, 290, 357, 331, 299, 330, 261, 306, 84, 357, 373, 90, 263, 116, 366, 308, 341, 297, 373, 387, + 306, 120, 23, 14, 83, 50, 164, 301, 349, 330, 387, 162, 381, 243, 182, 375, 404, 198, 234, 0, 166, 341, + 387, 92, 334, 299, 404, 13, 348, 362, 198, 244, 122, 332, 92, 276, 339, 254, 341, 299, 127, 366, 393, + 375, 278, 270, 170, 354, 79, 256, 46, 392, 125, 137, 137, 137, 137, 137, 138, 138, 138, 91, 139, 139, + 139, 139, 139, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, 146, + 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 150, 150, + 150, 150, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, 153 + }, + { + 256, 31, 265, 339, 121, 117, 390, 330, 244, 357, 55, 350, 121, 330, 273, 125, 126, 119, 362, 48, 335, + 385, + 14, 304, 348, 216, 299, 348, 277, 340, 92, 18, 243, 158, 240, 343, 241, 231, 220, 196, 162, 335, 390, + 152, 353, 340, 162, 332, 31, 128, 175, 31, 350, 278, 333, 332, 391, 390, 179, 330, 158, 162, 166, 0, 114, + 258, 378, 373, 65, 330, 350, 306, 357, 332, 299, 335, 85, 85, 241, 20, 237, 333, 371, 89, 350, 100, 392, + 304, 25, 241, 327, 350, 162, 304, 175, 294, 89, 153, 153, 153, 154, 154, 154, 154, 155, 155, 155, 155, + 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, + 161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164 + }, + { + 0, 282, 97, 378, 134, 188, 193, 98, 309, 135, 84, 282, 99, 385, 354, 3, 78, 294, 180, 172, 232, 78, 33, + 325, + 14, 92, 38, 172, 135, 189, 371, 179, 232, 92, 92, 176, 189, 55, 346, 353, 353, 82, 6, 346, 97, 353, 361, + 186, 348, 378, 348, 261, 253, 244, 119, 348, 348, 346, 244, 332, 354, 159, 355, 0, 79, 278, 82, 278, 166, + 400, 244, 114, 38, 82, 114, 37, 52, 84, 331, 230, 156, 238, 175, 375, 354, 330, 335, 330, 143, 121, 121, + 334, 276, 114, 126, 377, 276, 164, 164, 164, 164, 164, 164, 164, 164, 167, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, + 168, 168, 168, 168, 168, 168, 161, 168, 168, 168, 168, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, 173, 173 + }, + { + 37, 341, 37, 387, 323, 121, 115, 110, 234, 166, 250, 5, 170, 230, 127, 5, 121, 341, 59, 0, 96, 96, 96, + 65, + 264, 200, 381, 313, 232, 348, 250, 124, 134, 40, 178, 129, 367, 174, 92, 160, 123, 353, 118, 348, 246, + 357, 57, 114, 375, 0, 373, 34, 374, 353, 385, 311, 405, 344, 372, 0, 109, 283, 169, 0, 131, 14, 62, 104, + 326, 340, 237, 48, 66, 0, 313, 134, 48, 153, 166, 166, 327, 153, 166, 166, 48, 283, 295, 313, 153, 372, + 375, 57, 214, 245, 208, 313, 313, 173, 173, 173, 173, 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 176, 176, 176, 176, 176, 176, 177, 177, 178, 178, 178, 178, + 178, 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182 + }, + { + 173, 371, 294, 297, 371, 348, 249, 144, 26, 241, 62, 119, 37, 258, 263, 355, 29, 246, 82, 229, 227, 353, + 254, 326, 241, 232, 330, 330, 144, 65, 81, 6, 20, 340, 310, 386, 148, 375, 208, 237, 386, 377, 332, 198, + 250, 143, 37, 346, 227, 375, 338, 77, 113, 386, 153, 374, 311, 52, 186, 335, 335, 181, 335, 0, 213, 326, + 326, 339, 145, 353, 113, 228, 278, 313, 186, 45, 282, 250, 307, 391, 92, 353, 336, 320, 36, 318, 69, 203, + 232, 97, 164, 370, 299, 129, 167, 291, 16, 182, 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, 184, + 184, 184, 184, 184, 184, 184, 184, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 191, 191, + 191, 191, 191, 192, 192, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 195, 196 + }, + { + 178, 233, 162, 251, 115, 57, 205, 200, 258, 282, 383, 134, 68, 232, 123, 328, 186, 264, 381, 37, 179, + 223, + 62, 3, 203, 289, 357, 376, 262, 316, 325, 136, 124, 71, 14, 32, 345, 321, 285, 305, 297, 383, 348, 168, + 92, 232, 335, 404, 223, 32, 175, 123, 227, 41, 126, 175, 381, 175, 128, 350, 404, 342, 399, 0, 314, 208, + 168, 52, 153, 334, 319, 226, 375, 128, 329, 52, 0, 333, 0, 82, 379, 57, 150, 216, 136, 40, 135, 156, 166, + 319, 241, 52, 18, 343, 263, 356, 361, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 201, 201, 201, 202, 203, 203, 203, 203, 203, + 204, 205, 205, 206, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, + 209, 209, 210, 210, 211, 211, 212, 212, 212, 212, 212, 212, 212, 213, 214, 214, 214, 214 + }, + { + 332, 16, 337, 154, 169, 345, 175, 123, 358, 179, 250, 361, 176, 208, 360, 332, 328, 132, 170, 132, 128, + 92, + 109, 339, 190, 212, 91, 125, 375, 375, 339, 303, 332, 29, 330, 354, 337, 134, 133, 336, 281, 133, 310, + 284, 304, 240, 240, 100, 241, 310, 331, 59, 79, 224, 303, 79, 79, 175, 171, 331, 248, 227, 149, 0, 84, + 362, 83, 164, 354, 159, 0, 20, 243, 0, 120, 387, 15, 198, 65, 69, 9, 29, 348, 25, 174, 56, 342, 220, 61, + 58, 244, 175, 348, 92, 125, 328, 241, 214, 214, 215, 215, 215, 215, 216, 216, 216, 216, 217, 217, 217, + 405, 218, 219, 219, 221, 221, 221, 221, 222, 223, 223, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, + 224, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, + 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232 + }, + { + 175, 175, 31, 290, 125, 237, 345, 345, 26, 161, 313, 311, 128, 231, 348, 29, 190, 88, 354, 331, 386, 121, + 299, 375, 319, 325, 241, 326, 258, 84, 378, 117, 136, 92, 5, 388, 184, 259, 108, 349, 353, 348, 245, 232, + 309, 62, 164, 352, 11, 348, 378, 208, 224, 19, 339, 220, 332, 114, 393, 68, 65, 212, 116, 0, 186, 283, + 98, 189, 325, 84, 386, 375, 92, 48, 0, 342, 179, 164, 261, 375, 35, 354, 339, 386, 169, 329, 92, 102, 47, + 96, 101, 211, 354, 386, 229, 198, 376, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, 233, + 234, 234, 234, 234, 235, 235, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, + 238, 238, 238, 238, 238, 238, 238, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 10, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242 + }, + { + 243, 378, 119, 84, 87, 302, 42, 131, 77, 3, 127, 37, 237, 243, 160, 286, 382, 55, 27, 354, 70, 325, 164, + 69, + 84, 258, 349, 240, 357, 299, 36, 216, 329, 17, 330, 94, 378, 196, 382, 393, 320, 249, 301, 35, 231, 330, + 337, 350, 34, 137, 345, 54, 107, 54, 124, 324, 353, 262, 334, 332, 326, 129, 201, 0, 198, 316, 0, 183, + 47, 62, 250, 68, 388, 156, 175, 325, 258, 154, 240, 386, 90, 104, 178, 39, 44, 369, 187, 164, 10, 246, + 135, 246, 62, 276, 130, 371, 375, 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 245, 245, 245, 245, 245, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, + 248, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, 250 + }, + { + 94, 149, 246, 345, 324, 13, 377, 125, 170, 304, 310, 59, 116, 110, 45, 32, 119, 84, 157, 276, 345, 348, + 311, + 241, 323, 27, 373, 363, 133, 14, 348, 188, 0, 228, 66, 249, 143, 333, 323, 354, 354, 84, 166, 341, 201, + 27, 328, 45, 334, 233, 198, 3, 350, 155, 155, 126, 190, 393, 393, 389, 262, 330, 347, 0, 345, 250, 125, + 84, 404, 125, 230, 114, 114, 115, 345, 316, 386, 247, 189, 120, 282, 87, 377, 243, 325, 20, 325, 92, 71, + 220, 301, 251, 373, 343, 284, 158, 387, 250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 252, 252, 252, 252, 252, 252, 252, 252, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, + 255, 256, 256, 256, 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 259, 260, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 262, 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, + 264, 264, 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 269, 269, 269, 269, 270, 270 + }, + { + 220, 355, 186, 357, 286, 381, 100, 254, 342, 0, 325, 353, 296, 349, 284, 45, 284, 357, 373, 263, 164, + 252, + 355, 164, 134, 330, 40, 340, 316, 172, 328, 63, 243, 389, 238, 54, 355, 40, 354, 226, 240, 199, 330, 82, + 357, 267, 25, 189, 300, 194, 296, 172, 330, 97, 159, 91, 54, 305, 179, 341, 385, 102, 387, 0, 103, 393, + 311, 27, 229, 0, 282, 159, 171, 311, 339, 184, 314, 378, 3, 166, 387, 237, 340, 130, 317, 129, 325, 318, + 26, 354, 348, 386, 14, 175, 21, 370, 162, 270, 270, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, + 274, 275, 276, 276, 276, 29, 276, 276, 276, 276, 276, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, 283, 283 + }, + { + 244, 182, 345, 171, 330, 234, 103, 107, 62, 175, 281, 279, 62, 343, 20, 62, 367, 282, 341, 116, 5, 189, + 404, + 376, 238, 126, 189, 48, 211, 121, 137, 349, 278, 349, 104, 35, 116, 276, 147, 243, 180, 361, 363, 164, + 325, 92, 343, 283, 188, 223, 31, 63, 265, 162, 354, 127, 378, 149, 125, 181, 357, 10, 353, 0, 175, 220, + 75, 309, 81, 136, 81, 263, 82, 153, 292, 344, 340, 84, 305, 329, 68, 294, 334, 330, 268, 357, 280, 125, + 300, 171, 354, 331, 294, 216, 341, 357, 354, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 282, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286 + }, + { + 334, 109, 2, 121, 121, 92, 386, 333, 323, 192, 163, 126, 24, 282, 273, 166, 143, 355, 55, 375, 305, 369, + 300, 345, 79, 66, 335, 97, 378, 125, 142, 268, 343, 220, 7, 72, 236, 355, 214, 377, 328, 234, 241, 362, + 35, 373, 77, 208, 350, 48, 334, 241, 78, 125, 354, 153, 15, 385, 189, 158, 130, 248, 245, 0, 0, 332, 297, + 404, 348, 340, 335, 348, 156, 162, 128, 62, 375, 11, 220, 196, 119, 228, 296, 304, 318, 248, 127, 325, + 172, 121, 223, 142, 357, 10, 164, 378, 378, 286, 287, 287, 288, 288, 288, 288, 289, 289, 290, 290, 290, + 291, 291, 291, 291, 292, 292, 292, 292, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 284, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 339, 297, 297, 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, 302, 302, 302, 302, 302 + }, + { + 2, 170, 341, 246, 157, 363, 329, 265, 265, 246, 175, 297, 318, 183, 357, 237, 354, 343, 92, 132, 341, + 249, + 297, 132, 83, 20, 333, 348, 332, 354, 134, 332, 332, 349, 244, 350, 173, 315, 117, 356, 171, 220, 186, + 158, 153, 158, 92, 305, 182, 162, 162, 121, 295, 375, 325, 153, 118, 164, 92, 162, 118, 179, 92, 0, 153, + 175, 125, 0, 308, 162, 251, 334, 348, 176, 187, 17, 375, 334, 134, 116, 340, 54, 84, 340, 175, 116, 109, + 128, 134, 10, 345, 369, 369, 153, 18, 330, 286, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, + 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 307, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, 311, 311, 312, 312, 312, 313, 313, 313 + }, + { + 64, 249, 66, 0, 136, 372, 347, 354, 107, 386, 333, 80, 75, 6, 37, 243, 326, 356, 356, 137, 241, 314, 375, + 355, 252, 353, 246, 241, 376, 198, 324, 82, 82, 108, 84, 254, 228, 208, 307, 237, 62, 134, 164, 84, 367, + 340, 232, 232, 332, 64, 17, 19, 369, 312, 97, 350, 179, 47, 121, 183, 84, 169, 348, 0, 332, 164, 348, + 237, 245, 281, 348, 324, 196, 245, 102, 248, 160, 337, 129, 249, 124, 356, 34, 11, 107, 341, 373, 240, + 332, 167, 14, 355, 353, 129, 57, 63, 121, 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 317, 317, 318, 318, 318, 318, 318, 318, 319, 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 325 + }, + { + 295, 134, 241, 354, 137, 330, 178, 164, 65, 306, 154, 107, 107, 9, 81, 325, 319, 357, 301, 243, 325, 208, + 325, 167, 68, 75, 8, 385, 324, 24, 189, 0, 156, 129, 313, 184, 340, 190, 129, 284, 341, 345, 262, 325, + 84, 355, 186, 325, 264, 335, 331, 350, 284, 376, 305, 378, 387, 309, 355, 188, 156, 70, 249, 0, 330, 328, + 357, 354, 350, 126, 8, 294, 47, 330, 327, 166, 226, 261, 92, 329, 339, 107, 348, 232, 117, 348, 70, 207, + 331, 116, 121, 180, 348, 326, 350, 308, 376, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330 + }, + { + 25, 0, 241, 311, 279, 62, 175, 325, 375, 35, 250, 232, 354, 125, 174, 246, 349, 126, 326, 334, 182, 372, + 372, 180, 354, 172, 48, 164, 182, 334, 32, 196, 391, 294, 249, 307, 375, 231, 127, 250, 17, 168, 102, + 330, 241, 381, 81, 168, 136, 136, 349, 309, 128, 256, 334, 329, 376, 343, 294, 40, 36, 58, 164, 0, 320, + 348, 131, 55, 241, 92, 333, 281, 246, 350, 30, 164, 364, 341, 378, 363, 335, 183, 335, 241, 261, 125, + 109, 385, 129, 18, 110, 79, 162, 129, 156, 193, 164, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 332, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 276, 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, 334, 342, 334, 334, 334, 334, 334, 334, 334 + }, + { + 249, 212, 175, 70, 334, 378, 173, 164, 173, 227, 347, 232, 279, 347, 350, 286, 330, 24, 250, 251, 24, + 182, + 129, 378, 385, 120, 405, 229, 376, 181, 77, 143, 192, 330, 140, 355, 250, 171, 341, 286, 314, 333, 354, + 116, 325, 59, 38, 325, 59, 384, 88, 354, 348, 84, 230, 129, 376, 57, 348, 376, 129, 375, 335, 0, 254, + 375, 137, 30, 348, 254, 320, 171, 228, 220, 393, 14, 280, 134, 149, 342, 373, 348, 224, 84, 62, 84, 103, + 375, 375, 254, 348, 320, 199, 96, 341, 372, 250, 334, 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, + 335, 335, 124, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 108, 337, 337, 337, 337, 337, + 338, 338, 338, 338, 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 40, 340, 340, 340, 340, 340, 341, 341, 341, 341, 341, 341 + }, + { + 354, 208, 20, 0, 221, 241, 148, 258, 126, 392, 196, 129, 77, 263, 378, 102, 349, 138, 337, 0, 154, 211, + 286, + 335, 154, 164, 135, 282, 129, 373, 172, 92, 348, 21, 382, 291, 253, 164, 339, 304, 154, 306, 355, 171, + 37, 32, 59, 167, 229, 81, 355, 345, 70, 375, 348, 241, 104, 144, 241, 309, 309, 84, 376, 0, 335, 65, 154, + 317, 353, 353, 355, 84, 354, 317, 345, 348, 228, 57, 357, 302, 96, 118, 261, 355, 200, 132, 301, 226, + 271, 211, 350, 129, 118, 148, 166, 164, 284, 341, 341, 341, 341, 342, 342, 342, 342, 342, 342, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 220, 220, 220, 220 + }, + { + 404, 348, 65, 335, 332, 325, 16, 26, 92, 278, 239, 14, 240, 125, 381, 125, 54, 92, 57, 358, 79, 81, 333, + 343, 17, 256, 182, 158, 5, 363, 121, 26, 299, 216, 57, 166, 58, 286, 369, 14, 158, 240, 375, 0, 286, 321, + 284, 11, 335, 20, 35, 157, 173, 330, 332, 158, 372, 56, 134, 360, 284, 125, 348, 0, 158, 344, 330, 83, + 84, 0, 6, 110, 92, 92, 332, 100, 15, 345, 340, 136, 233, 184, 189, 189, 235, 284, 294, 92, 373, 136, 189, + 311, 166, 220, 375, 137, 330, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349 + }, + { + 278, 325, 330, 310, 354, 158, 75, 70, 246, 227, 92, 194, 350, 96, 250, 369, 130, 100, 61, 125, 179, 250, + 125, 325, 136, 250, 179, 158, 282, 92, 100, 345, 310, 249, 130, 50, 375, 33, 92, 57, 375, 335, 251, 91, + 284, 102, 335, 122, 249, 337, 208, 241, 175, 367, 14, 337, 279, 95, 375, 342, 40, 330, 348, 0, 175, 136, + 330, 345, 330, 345, 66, 84, 249, 249, 128, 92, 79, 343, 64, 114, 30, 306, 340, 129, 348, 258, 343, 349, + 278, 241, 320, 92, 343, 349, 75, 82, 344, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 340, 354, 354, 354, 354, 354, 354, 354, 354, 354 + }, + { + 220, 295, 282, 349, 349, 136, 334, 204, 35, 353, 375, 338, 80, 336, 191, 281, 345, 268, 384, 340, 348, + 348, + 297, 37, 110, 282, 110, 340, 373, 378, 374, 96, 386, 369, 97, 84, 125, 65, 171, 309, 346, 217, 226, 377, + 88, 348, 134, 220, 367, 348, 348, 250, 371, 237, 14, 338, 250, 20, 55, 389, 306, 378, 47, 0, 372, 352, + 340, 343, 348, 120, 110, 284, 245, 334, 284, 112, 70, 115, 102, 251, 121, 129, 117, 87, 346, 325, 282, + 377, 314, 189, 194, 179, 121, 345, 338, 98, 77, 354, 354, 354, 354, 354, 354, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, 356, 356, 220, 356, + 356, 356, 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 359, 359, + 359, 359, 359, 359, 359, 360, 360, 360, 360, 361, 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 363, 363, 363, 363, 364, 365, 366, 366, 28, 366, 367, 367, 367, 367, 367 + }, + { + 19, 311, 348, 162, 378, 152, 250, 329, 92, 375, 258, 50, 159, 75, 152, 348, 313, 57, 11, 31, 353, 145, + 127, + 246, 287, 3, 354, 334, 36, 129, 332, 329, 329, 90, 295, 21, 121, 131, 356, 373, 356, 70, 117, 32, 291, + 129, 143, 250, 48, 334, 299, 324, 332, 81, 157, 302, 348, 208, 349, 377, 232, 385, 31, 0, 35, 384, 92, + 241, 304, 383, 325, 134, 247, 68, 374, 393, 388, 243, 385, 167, 125, 92, 331, 178, 282, 16, 117, 233, + 354, 335, 340, 233, 284, 341, 284, 122, 117, 367, 367, 367, 278, 367, 358, 367, 367, 367, 368, 368, 368, + 368, 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374 + }, + { + 75, 376, 309, 335, 84, 240, 313, 158, 241, 354, 386, 381, 330, 121, 349, 315, 332, 201, 35, 83, 378, 346, + 345, 120, 341, 91, 221, 340, 197, 347, 325, 337, 308, 377, 278, 238, 318, 120, 123, 91, 350, 189, 334, + 189, 331, 244, 373, 342, 309, 297, 9, 37, 369, 348, 126, 355, 335, 334, 306, 220, 220, 375, 354, 0, 234, + 48, 164, 196, 196, 279, 372, 195, 125, 363, 389, 166, 404, 362, 340, 103, 330, 385, 5, 5, 130, 372, 348, + 334, 126, 182, 371, 332, 321, 57, 340, 366, 273, 373, 374, 374, 374, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, + 376, 376, 376, 376, 376, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, + 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378 + }, + { + 330, 367, 72, 374, 334, 158, 75, 350, 136, 92, 392, 127, 20, 121, 381, 329, 365, 367, 375, 127, 304, 365, + 240, 283, 341, 362, 304, 58, 299, 332, 92, 128, 369, 400, 348, 2, 369, 121, 335, 348, 348, 278, 255, 400, + 243, 72, 302, 116, 377, 109, 348, 350, 140, 354, 125, 121, 70, 372, 341, 360, 162, 282, 325, 0, 31, 164, + 348, 15, 372, 345, 75, 39, 325, 39, 220, 31, 255, 349, 158, 35, 335, 212, 119, 360, 348, 58, 369, 345, + 70, 320, 258, 338, 338, 14, 377, 282, 340, 378, 378, 378, 378, 379, 371, 380, 381, 381, 381, 381, 390, + 381, 382, 382, 382, 382, 382, 382, 382, 383, 383, 383, 383, 383, 383, 384, 384, 385, 385, 385, 385, 385, + 385, 385, 385, 372, 385, 385, 386, 386, 386, 386, 386, 386, 386, 386, 359, 386, 386, 386, 386, 386, 386, + 387, 387, 387, 387, 387, 387, 387, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 389, 389, 390, 390, + 391, 391, 391, 391, 392, 392, 393, 393, 393, 367, 393, 393, 393, 393, 0, 0, 0, 0, 0 + }, + { + 243, 114, 331, 92, 114, 107, 173, 330, 330, 168, 107, 70, 173, 241, 164, 61, 15, 286, 332, 83, 375, 375, + 345, 345, 40, 121, 319, 348, 348, 345, 6, 115, 75, 40, 345, 154, 87, 134, 240, 330, 119, 378, 124, 82, + 330, 123, 326, 119, 62, 387, 82, 348, 3, 232, 199, 232, 96, 199, 353, 196, 294, 119, 184, 0, 196, 3, 354, + 208, 14, 354, 124, 317, 184, 330, 348, 354, 40, 304, 119, 136, 11, 373, 357, 84, 23, 95, 307, 348, 108, + 323, 236, 123, 79, 304, 323, 368, 375, 40, 92, 329, 87, 209, 268, 232, 93, 36, 91, 203, 75, 286, 354, + 235, 14, 320, 220, 220, 375, 62, 336, 349, 153, 354, 90, 306, 63, 92, 200, 212, 92, 241, 189, 11, 273, + 97, 363, 281, 54, 345, 136, 294, 347, 345, 250, 238, 102, 153, 15, 363, 98, 353, 27, 348, 326, 131, 148, + 102, 139, 156, 92, 345, 323, 150, 234, 136, 127, 123, 348, 314, 324, 57, 66, 370, 161, 268, 348, 198, + 258, 354, 232, 344, 321, 329, 32, 25, 141, 378, 214, 138, 353, 348, 96 + }, + { + 77, 378, 284, 14, 386, 77, 102, 233, 78, 181, 307, 283, 152, 84, 312, 348, 37, 184, 110, 82, 175, 170, + 121, + 87, 233, 386, 124, 340, 364, 128, 87, 361, 125, 350, 343, 373, 281, 18, 18, 249, 281, 42, 361, 377, 157, + 360, 47, 35, 279, 310, 229, 94, 332, 181, 125, 299, 84, 304, 48, 48, 375, 92, 370, 0, 70, 130, 338, 45, + 357, 10, 359, 157, 83, 25, 92, 283, 348, 390, 84, 96, 269, 363, 168, 348, 7, 35, 323, 375, 383, 16, 357, + 366, 57, 360, 345, 240, 278, 314, 320, 208, 86, 92, 77, 353, 149, 140, 378, 348, 311, 30, 128, 216, 197, + 39, 345, 164, 249, 164, 354, 237, 352, 294, 83, 243, 267, 225, 385, 286, 179, 328, 14, 309, 100, 146, + 134, 82, 345, 335, 92, 325, 387, 404, 305, 18, 221, 37, 330, 131, 125, 128, 133, 314, 341, 57, 314, 319, + 281, 243, 389, 356, 51, 62, 330, 343, 114, 104, 31, 153, 10, 240, 114, 84, 84, 297, 294, 326, 345, 20, + 103, 184, 335, 176, 239, 19, 350, 179, 162, 167, 116, 169, 332 + }, + { + 323, 350, 130, 382, 332, 361, 14, 70, 286, 345, 0, 341, 173, 382, 361, 357, 14, 377, 83, 357, 330, 338, + 330, + 36, 36, 331, 305, 388, 164, 278, 248, 349, 332, 386, 136, 246, 62, 47, 373, 316, 62, 330, 369, 136, 129, + 250, 40, 123, 342, 311, 74, 88, 301, 50, 330, 371, 297, 349, 250, 125, 252, 385, 325, 0, 175, 58, 249, + 386, 309, 250, 37, 120, 127, 127, 128, 362, 356, 77, 389, 329, 143, 136, 35, 227, 356, 224, 241, 320, + 348, 209, 171, 186, 148, 386, 242, 378, 250, 295, 237, 376, 194, 345, 129, 114, 278, 223, 134, 204, 97, + 110, 62, 371, 250, 348, 152, 162, 98, 129, 121, 282, 96, 251, 374, 122, 340, 127, 90, 152, 395, 388, 385, + 325, 354, 282, 31, 299, 35, 125, 342, 347, 75, 354, 341, 3, 62, 386, 233, 196, 58, 297, 284, 189, 372, + 125, 365, 127, 136, 345, 369, 35, 57, 130, 393, 329, 243, 131, 8, 63, 393, 11, 337, 87, 375, 212, 388, + 44, 232, 325, 120, 325, 330, 107, 248, 152, 183, 329, 80, 19, 232, 11, 347 + }, + { + 369, 226, 378, 208, 348, 92, 74, 74, 378, 392, 380, 333, 65, 233, 375, 129, 23, 55, 250, 286, 316, 50, + 145, + 212, 334, 21, 392, 198, 286, 128, 127, 0, 125, 241, 328, 325, 129, 252, 212, 134, 212, 178, 175, 163, + 328, 251, 389, 245, 348, 62, 387, 231, 374, 354, 73, 45, 352, 375, 367, 35, 320, 305, 84, 0, 389, 257, + 367, 318, 244, 369, 63, 309, 92, 172, 360, 14, 38, 175, 168, 305, 375, 297, 330, 153, 92, 385, 244, 375, + 226, 387, 166, 362, 254, 318, 134, 332, 376, 62, 303, 124, 375, 378, 150, 245, 343, 357, 164, 350, 90, + 330, 84, 232, 304, 345, 135, 345, 349, 370, 238, 278, 388, 171, 83, 40, 119, 181, 250, 280, 110, 91, 188, + 340, 335, 296, 335, 136, 125, 278, 58, 32, 294, 15, 12, 249, 12, 75, 78, 286, 92, 352, 110, 340, 329, 91, + 373, 152, 232, 348, 164, 241, 8, 88, 173, 63, 175, 34, 62, 320, 208, 198, 5, 344, 65, 68, 139, 278, 279, + 203, 87, 349, 36, 284, 104, 343, 169, 355, 375, 3, 348, 232, 209 + }, + { + 20, 50, 136, 170, 302, 127, 127, 168, 73, 100, 55, 14, 14, 134, 127, 73, 39, 92, 329, 356, 209, 375, 356, + 375, 40, 71, 325, 173, 170, 332, 325, 158, 255, 335, 212, 302, 250, 252, 51, 390, 330, 153, 241, 170, 57, + 82, 309, 74, 95, 159, 258, 179, 2, 92, 134, 146, 0, 345, 186, 141, 250, 404, 160, 0, 320, 375, 345, 309, + 59, 350, 354, 34, 367, 102, 137, 356, 336, 56, 341, 79, 258, 278, 152, 286, 319, 241, 303, 75, 199, 241, + 184, 264, 152, 243, 381, 114, 116, 231, 316, 272, 56, 148, 65, 349, 163, 115, 91, 355, 182, 352, 167, 37, + 336, 232, 348, 26, 128, 200, 70, 243, 92, 323, 338, 241, 333, 84, 355, 357, 81, 92, 164, 75, 134, 232, + 375, 265, 332, 32, 48, 246, 329, 243, 241, 278, 15, 378, 147, 348, 196, 88, 235, 173, 6, 198, 134, 254, + 247, 37, 84, 171, 211, 349, 184, 350, 248, 193, 311, 243, 348, 256, 14, 47, 134, 314, 121, 378, 313, 127, + 84, 258, 337, 251, 121, 343, 194, 241, 128, 38, 126, 179, 350 + }, + { + 250, 152, 62, 171, 56, 5, 373, 79, 152, 346, 231, 11, 97, 97, 228, 378, 261, 75, 6, 377, 375, 220, 143, + 372, + 375, 284, 237, 77, 95, 134, 334, 101, 344, 139, 251, 377, 386, 375, 281, 167, 354, 280, 353, 355, 349, + 372, 323, 84, 247, 377, 348, 171, 372, 369, 167, 386, 121, 324, 46, 121, 140, 348, 231, 0, 243, 103, 209, + 237, 100, 11, 178, 225, 167, 264, 262, 92, 346, 332, 42, 49, 292, 344, 353, 114, 286, 84, 386, 84, 357, + 12, 369, 354, 357, 306, 97, 373, 331, 343, 93, 130, 181, 300, 114, 377, 140, 14, 284, 328, 353, 75, 186, + 353, 164, 316, 332, 84, 299, 353, 62, 282, 100, 167, 350, 45, 131, 241, 330, 295, 130, 200, 241, 6, 286, + 32, 312, 354, 119, 14, 84, 316, 57, 52, 345, 389, 58, 125, 323, 350, 97, 107, 242, 83, 282, 333, 325, 31, + 139, 241, 153, 330, 75, 10, 224, 313, 174, 225, 341, 124, 373, 284, 263, 196, 76, 11, 327, 109, 92, 164, + 9, 125, 293, 159, 350, 354, 297, 188, 69, 330, 166, 50, 170 + }, + { + 355, 175, 334, 33, 381, 325, 341, 342, 372, 128, 369, 21, 168, 82, 79, 170, 91, 273, 140, 119, 348, 92, + 383, + 77, 354, 125, 114, 162, 229, 164, 164, 175, 170, 56, 377, 167, 357, 47, 391, 15, 156, 47, 348, 15, 15, 0, + 8, 47, 15, 233, 216, 216, 373, 46, 348, 259, 79, 284, 263, 31, 88, 354, 348, 0, 241, 367, 324, 316, 384, + 309, 333, 309, 75, 376, 34, 208, 375, 373, 378, 306, 348, 250, 121, 68, 353, 200, 348, 129, 169, 343, 73, + 132, 353, 249, 62, 131, 348, 250, 147, 340, 168, 121, 343, 136, 265, 391, 92, 188, 79, 241, 114, 335, + 114, 325, 348, 327, 296, 14, 109, 303, 263, 343, 332, 90, 164, 123, 250, 113, 79, 212, 189, 216, 348, + 152, 166, 55, 348, 330, 361, 228, 353, 168, 86, 88, 309, 187, 317, 35, 84, 236, 215, 129, 128, 358, 348, + 404, 137, 310, 347, 2, 199, 92, 104, 7, 134, 239, 169, 243, 100, 65, 367, 344, 246, 354, 3, 341, 19, 153, + 355, 286, 76, 41, 125, 293, 369, 221, 271, 179, 350, 375, 107 + }, + { + 0, 329, 166, 301, 121, 97, 157, 12, 54, 378, 231, 353, 377, 130, 354, 46, 309, 302, 355, 221, 305, 299, + 345, + 37, 309, 284, 373, 353, 357, 75, 123, 302, 325, 201, 220, 39, 343, 302, 284, 375, 355, 297, 180, 100, + 370, 372, 22, 37, 297, 73, 284, 174, 375, 54, 256, 243, 341, 354, 348, 75, 168, 284, 181, 0, 341, 369, + 308, 77, 15, 15, 164, 355, 353, 179, 164, 313, 241, 278, 354, 263, 323, 84, 141, 18, 336, 282, 355, 53, + 123, 9, 134, 15, 321, 152, 102, 284, 148, 372, 335, 175, 392, 51, 88, 119, 232, 337, 385, 123, 390, 202, + 348, 318, 56, 284, 21, 37, 92, 147, 59, 161, 367, 1, 220, 84, 198, 348, 303, 164, 75, 14, 11, 104, 246, + 349, 358, 138, 86, 98, 171, 68, 214, 74, 203, 353, 294, 152, 92, 282, 121, 55, 169, 348, 334, 14, 47, + 101, 121, 339, 348, 225, 150, 74, 92, 192, 189, 367, 216, 93, 197, 181, 37, 160, 94, 76, 367, 301, 362, + 330, 393, 92, 83, 363, 221, 191, 170, 381, 377, 306, 116, 52, 276 + }, + { + 106, 331, 92, 115, 337, 330, 102, 221, 159, 345, 36, 69, 404, 84, 354, 159, 124, 94, 20, 330, 250, 334, + 241, + 247, 377, 388, 237, 162, 208, 353, 239, 333, 134, 352, 127, 348, 186, 267, 11, 286, 354, 357, 115, 153, + 333, 333, 296, 305, 194, 330, 263, 40, 386, 388, 347, 329, 333, 357, 127, 352, 184, 33, 175, 0, 168, 381, + 116, 127, 323, 127, 340, 61, 14, 343, 14, 366, 325, 374, 184, 170, 74, 188, 347, 272, 150, 83, 188, 155, + 166, 360, 31, 353, 241, 345, 31, 360, 251, 351, 57, 20, 66, 159, 164, 287, 46, 367, 55, 201, 164, 153, + 129, 352, 153, 133, 296, 349, 37, 129, 174, 148, 328, 121, 246, 5, 297, 70, 143, 212, 110, 35, 301, 91, + 1, 76, 109, 398, 2, 2, 301, 111, 314, 37, 229, 162, 26, 234, 241, 350, 13, 296, 62, 189, 231, 136, 168, + 240, 41, 128, 222, 246, 175, 28, 61, 109, 130, 342, 348, 269, 232, 263, 29, 123, 202, 325, 125, 201, 178, + 116, 171, 353, 354, 247, 354, 119, 325, 375, 229, 305, 39, 363, 104 + }, + { + 330, 360, 375, 354, 349, 391, 184, 373, 69, 373, 355, 84, 310, 242, 238, 39, 391, 46, 353, 349, 240, 391, + 106, 383, 175, 158, 345, 306, 369, 304, 383, 332, 70, 304, 249, 45, 357, 78, 143, 296, 39, 54, 357, 352, + 4, 367, 126, 234, 35, 354, 164, 362, 348, 126, 304, 238, 216, 348, 345, 348, 210, 263, 285, 0, 345, 171, + 189, 189, 210, 336, 128, 284, 189, 345, 15, 284, 348, 330, 130, 249, 348, 168, 59, 371, 171, 238, 249, 6, + 373, 375, 6, 176, 84, 200, 64, 332, 127, 325, 328, 182, 370, 84, 79, 92, 241, 243, 241, 250, 344, 332, 5, + 399, 158, 6, 116, 143, 68, 124, 339, 56, 96, 184, 193, 348, 68, 127, 343, 374, 160, 157, 295, 345, 97, + 334, 104, 146, 136, 261, 220, 322, 359, 325, 354, 54, 174, 386, 186, 283, 295, 92, 370, 170, 61, 18, 348, + 63, 37, 227, 50, 343, 346, 115, 157, 330, 32, 120, 220, 375, 128, 250, 270, 79, 249, 3, 101, 180, 215, + 357, 331, 228, 81, 261, 150, 285, 300, 14, 135, 164, 354, 332, 349 + }, + { + 147, 42, 386, 79, 354, 329, 107, 89, 241, 183, 260, 62, 294, 330, 348, 30, 348, 316, 330, 405, 243, 249, + 125, 371, 347, 349, 224, 80, 373, 337, 69, 356, 376, 84, 232, 265, 336, 75, 136, 73, 96, 349, 243, 8, + 330, 258, 33, 215, 82, 357, 348, 246, 232, 104, 114, 349, 137, 64, 348, 376, 330, 87, 260, 0, 123, 303, + 141, 355, 175, 0, 326, 74, 386, 208, 316, 284, 193, 232, 143, 171, 19, 303, 116, 20, 232, 354, 294, 393, + 21, 377, 310, 124, 373, 284, 389, 375, 134, 298, 348, 104, 179, 208, 281, 50, 189, 116, 29, 325, 325, + 186, 203, 370, 131, 136, 168, 335, 343, 119, 42, 123, 300, 349, 68, 284, 305, 319, 330, 258, 354, 37, + 348, 333, 20, 354, 122, 29, 296, 196, 339, 130, 270, 381, 202, 232, 329, 102, 228, 339, 333, 320, 3, 354, + 14, 94, 5, 130, 31, 335, 170, 350, 286, 59, 53, 31, 329, 375, 223, 38, 329, 139, 32, 43, 295, 15, 215, + 116, 40, 231, 55, 346, 393, 208, 84, 33, 348, 348, 314, 345, 27, 139, 343 + }, + { + 312, 348, 348, 341, 371, 228, 110, 273, 283, 389, 389, 20, 378, 37, 358, 238, 314, 243, 84, 368, 184, + 345, + 84, 164, 356, 232, 346, 8, 20, 129, 250, 340, 374, 198, 330, 330, 62, 124, 198, 304, 282, 348, 294, 152, + 138, 11, 385, 337, 114, 128, 37, 145, 179, 237, 284, 197, 143, 349, 137, 377, 38, 333, 314, 0, 196, 162, + 92, 354, 340, 258, 392, 375, 293, 164, 332, 337, 251, 232, 348, 378, 333, 194, 149, 220, 332, 332, 339, + 137, 29, 160, 92, 232, 263, 189, 348, 349, 101, 143, 357, 11, 295, 243, 153, 154, 348, 309, 251, 245, + 337, 81, 32, 324, 39, 116, 52, 357, 153, 75, 163, 383, 127, 14, 297, 243, 352, 131, 127, 38, 40, 170, + 188, 310, 121, 289, 345, 325, 114, 193, 141, 302, 404, 154, 133, 159, 354, 32, 330, 326, 122, 75, 250, + 252, 110, 310, 252, 140, 382, 226, 244, 270, 241, 294, 29, 83, 355, 198, 190, 73, 189, 97, 15, 326, 108, + 325, 161, 88, 286, 173, 175, 346, 294, 74, 171, 184, 179, 341, 226, 320, 114, 193, 131 + }, + { + 3, 67, 353, 273, 142, 243, 294, 0, 64, 107, 356, 375, 145, 249, 334, 372, 353, 361, 309, 54, 98, 114, + 376, + 316, 404, 188, 159, 323, 386, 357, 11, 297, 354, 31, 313, 20, 107, 124, 114, 135, 83, 31, 323, 375, 320, + 341, 329, 354, 311, 152, 385, 177, 337, 246, 282, 107, 177, 347, 134, 366, 134, 332, 312, 0, 183, 240, + 164, 226, 356, 36, 90, 164, 307, 19, 378, 373, 316, 172, 391, 134, 32, 355, 125, 89, 64, 306, 32, 178, + 149, 171, 232, 175, 164, 244, 239, 135, 193, 119, 325, 169, 124, 373, 349, 121, 378, 92, 340, 121, 306, + 343, 126, 172, 116, 343, 263, 297, 329, 157, 325, 385, 135, 399, 9, 330, 186, 119, 378, 241, 330, 295, + 70, 385, 232, 190, 88, 81, 48, 282, 100, 175, 289, 335, 345, 190, 249, 296, 120, 340, 230, 125, 341, 328, + 186, 345, 246, 143, 281, 183, 350, 240, 164, 263, 302, 122, 14, 339, 84, 305, 227, 194, 120, 350, 334, + 158, 26, 116, 179, 119, 166, 378, 348, 175, 341, 88, 286, 294, 278, 280, 314, 31, 157 + }, + { + 391, 231, 3, 232, 332, 344, 383, 164, 143, 146, 302, 154, 70, 383, 44, 386, 374, 12, 212, 387, 74, 345, + 66, + 348, 243, 383, 92, 354, 130, 100, 184, 32, 319, 330, 166, 306, 97, 330, 286, 373, 404, 188, 175, 117, 16, + 86, 157, 144, 80, 329, 200, 323, 116, 60, 332, 0, 123, 167, 78, 187, 139, 346, 284, 0, 166, 104, 332, 70, + 316, 325, 323, 84, 262, 92, 75, 137, 373, 309, 367, 116, 346, 71, 331, 354, 145, 283, 120, 325, 84, 371, + 29, 245, 284, 114, 153, 310, 127, 299, 164, 57, 31, 166, 263, 240, 14, 109, 385, 107, 335, 350, 356, 82, + 109, 6, 10, 102, 58, 189, 353, 35, 214, 243, 243, 329, 168, 243, 119, 125, 125, 388, 344, 329, 132, 363, + 348, 77, 124, 131, 56, 115, 227, 21, 164, 249, 334, 309, 253, 153, 325, 119, 175, 42, 120, 249, 331, 5, + 96, 302, 172, 332, 170, 134, 335, 191, 299, 156, 343, 121, 317, 375, 142, 375, 92, 75, 31, 330, 134, 31, + 131, 217, 189, 84, 14, 354, 40, 293, 81, 345, 329, 354, 14 + }, + { + 127, 115, 315, 387, 119, 347, 193, 125, 71, 125, 295, 153, 116, 341, 372, 129, 373, 15, 376, 386, 339, + 347, + 186, 225, 2, 87, 243, 186, 301, 302, 227, 331, 166, 301, 139, 389, 347, 400, 327, 261, 305, 301, 244, + 164, 293, 383, 20, 226, 268, 232, 271, 89, 386, 329, 350, 120, 311, 172, 139, 300, 284, 296, 323, 0, 109, + 373, 373, 179, 348, 355, 305, 212, 330, 124, 91, 180, 135, 295, 389, 301, 0, 83, 326, 199, 175, 301, 223, + 389, 317, 339, 100, 341, 166, 296, 182, 196, 179, 130, 386, 102, 215, 354, 294, 55, 377, 278, 245, 344, + 256, 286, 176, 128, 236, 29, 164, 237, 321, 332, 301, 62, 325, 75, 131, 16, 129, 32, 14, 31, 217, 5, 355, + 313, 329, 96, 196, 232, 2, 236, 37, 164, 345, 244, 234, 32, 162, 370, 330, 278, 14, 211, 196, 290, 86, + 86, 84, 217, 386, 129, 136, 10, 361, 294, 84, 388, 348, 217, 303, 334, 117, 233, 164, 241, 143, 383, 24, + 375, 329, 5, 172, 278, 16, 48, 31, 92, 333, 128, 354, 377, 91, 323, 152 + }, + { + 14, 325, 172, 62, 270, 387, 348, 175, 145, 244, 52, 241, 32, 305, 182, 352, 31, 83, 131, 16, 286, 404, + 339, + 48, 173, 360, 360, 26, 164, 331, 330, 141, 290, 13, 370, 243, 36, 175, 117, 92, 240, 299, 244, 238, 170, + 273, 339, 332, 36, 153, 294, 172, 203, 120, 235, 299, 79, 127, 251, 346, 305, 333, 354, 0, 128, 392, 168, + 245, 160, 73, 336, 360, 241, 125, 376, 61, 344, 350, 73, 136, 400, 360, 240, 312, 0, 370, 66, 278, 139, + 125, 81, 299, 175, 135, 121, 354, 166, 357, 232, 286, 88, 335, 84, 377, 84, 40, 56, 148, 108, 126, 94, + 334, 309, 171, 241, 81, 279, 103, 74, 285, 172, 251, 323, 386, 143, 333, 309, 191, 121, 294, 15, 96, 383, + 193, 130, 373, 263, 90, 164, 348, 125, 18, 234, 182, 162, 195, 272, 335, 168, 366, 126, 243, 127, 119, + 390, 220, 92, 42, 359, 352, 66, 92, 325, 18, 193, 136, 143, 173, 63, 56, 238, 193, 124, 77, 95, 340, 344, + 113, 220, 179, 330, 121, 166, 241, 350, 241, 116, 154, 345, 48, 323 + }, + { + 385, 272, 243, 385, 162, 14, 312, 341, 347, 74, 104, 305, 250, 82, 55, 348, 2, 387, 343, 64, 378, 113, + 383, + 92, 212, 110, 123, 247, 18, 350, 153, 214, 340, 125, 125, 243, 29, 375, 192, 164, 162, 92, 390, 152, 279, + 231, 156, 70, 356, 46, 404, 16, 10, 175, 332, 151, 173, 75, 175, 125, 158, 20, 243, 0, 220, 31, 333, 125, + 330, 100, 25, 212, 162, 51, 250, 226, 179, 390, 176, 393, 348, 136, 305, 378, 158, 330, 346, 337, 228, + 337, 183, 344, 375, 332, 354, 348, 32, 35, 134, 184, 354, 355, 331, 203, 2, 305, 130, 120, 350, 52, 48, + 341, 370, 240, 24, 250, 175, 14, 360, 326, 325, 357, 306, 329, 280, 241, 29, 180, 164, 232, 191, 220, + 265, 125, 40, 36, 48, 334, 80, 224, 378, 200, 375, 372, 173, 133, 237, 175, 331, 334, 353, 375, 320, 375, + 171, 96, 62, 164, 320, 36, 142, 160, 344, 256, 375, 373, 101, 241, 313, 155, 133, 117, 113, 102, 129, + 176, 135, 3, 340, 79, 97, 84, 136, 386, 301, 171, 40, 82, 70, 243, 371 + }, + { + 375, 350, 120, 386, 20, 305, 261, 13, 172, 341, 156, 31, 370, 370, 133, 5, 65, 136, 168, 208, 187, 180, + 289, + 278, 278, 187, 345, 14, 107, 14, 278, 243, 141, 13, 114, 266, 270, 332, 332, 125, 193, 331, 291, 69, 367, + 203, 369, 231, 331, 171, 100, 14, 266, 110, 323, 91, 91, 78, 40, 333, 102, 193, 0, 0, 154, 167, 404, 313, + 276, 134, 356, 356, 31, 250, 170, 305, 277, 154, 345, 326, 345, 354, 122, 354, 326, 333, 10, 333, 250, + 220, 326, 226, 349, 325, 349, 155, 252, 179, 44, 167, 104, 125, 62, 134, 49, 282, 201, 367, 166, 158, 92, + 236, 134, 249, 71, 44, 35, 404, 29, 134, 341, 186, 350, 373, 81, 302, 300, 335, 90, 52, 90, 293, 18, 261, + 378, 335, 130, 244, 241, 40, 305, 378, 116, 88, 356, 247, 320, 136, 127, 246, 175, 392, 330, 134, 355, + 162, 345, 170, 20, 29, 353, 5, 196, 50, 279, 310, 357, 166, 234, 57, 92, 18, 348, 258, 75, 97, 143, 175, + 375, 348, 373, 116, 164, 220, 284, 375, 251, 175, 372, 209, 324 + }, + { + 158, 281, 251, 0, 310, 212, 302, 139, 110, 252, 43, 323, 69, 241, 153, 305, 323, 234, 332, 330, 121, 31, + 232, 305, 119, 302, 326, 0, 107, 139, 281, 121, 302, 119, 161, 336, 348, 375, 349, 346, 69, 75, 283, 229, + 145, 357, 375, 232, 36, 75, 250, 62, 171, 375, 19, 74, 286, 299, 77, 102, 354, 137, 127, 0, 337, 45, 329, + 331, 278, 283, 240, 373, 332, 59, 229, 348, 72, 178, 349, 134, 373, 175, 283, 332, 349, 378, 346, 259, + 331, 38, 345, 349, 354, 62, 325, 212, 383, 46, 386, 49, 175, 170, 325, 125, 244, 124, 92, 92, 140, 61, + 87, 125, 361, 223, 171, 21, 13, 366, 232, 238, 86, 156, 88, 109, 304, 90, 363, 336, 357, 102, 110, 360, + 184, 354, 32, 208, 241, 283, 347, 33, 345, 121, 21, 107, 102, 341, 153, 2, 194, 319, 343, 220, 330, 202, + 12, 284, 152, 348, 375, 386, 87, 130, 373, 157, 249, 92, 57, 84, 31, 92, 330, 62, 354, 96, 130, 250, 125, + 126, 236, 184, 97, 329, 97, 92, 134, 125, 233, 142, 245, 301, 7 + }, + { + 3, 129, 241, 345, 121, 357, 329, 305, 92, 59, 5, 330, 349, 268, 256, 170, 318, 61, 232, 299, 354, 345, + 82, + 208, 77, 92, 59, 349, 375, 173, 330, 164, 164, 252, 375, 348, 246, 243, 119, 96, 391, 116, 358, 354, 39, + 299, 107, 328, 290, 119, 134, 358, 352, 92, 330, 172, 164, 221, 342, 358, 92, 92, 199, 0, 85, 330, 198, + 82, 227, 357, 37, 346, 3, 329, 63, 58, 116, 64, 198, 35, 367, 171, 241, 377, 114, 369, 349, 378, 319, + 171, 68, 350, 329, 171, 171, 114, 349, 91, 20, 184, 198, 52, 125, 270, 286, 32, 175, 240, 250, 235, 59, + 332, 42, 68, 344, 349, 143, 357, 79, 37, 128, 70, 65, 353, 355, 104, 356, 328, 261, 120, 131, 264, 303, + 95, 384, 199, 220, 243, 173, 68, 138, 175, 124, 282, 377, 393, 98, 373, 250, 375, 131, 101, 68, 345, 150, + 268, 106, 233, 373, 189, 319, 179, 54, 228, 323, 211, 131, 345, 81, 354, 387, 66, 125, 49, 201, 190, 321, + 75, 286, 36, 350, 91, 404, 18, 308, 375, 41, 97, 188, 272, 278 + }, + { + 181, 181, 357, 172, 188, 18, 329, 325, 155, 330, 348, 57, 308, 354, 173, 56, 92, 227, 346, 325, 0, 330, + 92, + 329, 188, 162, 164, 301, 2, 81, 56, 173, 171, 348, 83, 164, 10, 110, 110, 110, 19, 247, 310, 373, 36, + 247, 167, 131, 310, 81, 190, 10, 310, 121, 347, 66, 29, 243, 258, 62, 70, 329, 258, 0, 246, 215, 349, + 268, 199, 321, 389, 8, 348, 220, 306, 14, 129, 114, 228, 19, 349, 302, 306, 129, 3, 112, 95, 242, 313, + 350, 299, 311, 341, 146, 13, 302, 370, 166, 170, 354, 330, 348, 276, 336, 330, 16, 268, 134, 296, 16, 16, + 286, 96, 97, 116, 81, 92, 158, 354, 229, 184, 369, 131, 208, 172, 348, 346, 325, 73, 244, 284, 116, 378, + 341, 303, 347, 346, 329, 107, 187, 33, 345, 116, 354, 325, 71, 10, 341, 15, 318, 172, 182, 279, 357, 348, + 354, 79, 299, 332, 136, 51, 294, 306, 340, 330, 164, 116, 132, 116, 81, 284, 294, 332, 375, 250, 116, 84, + 393, 189, 375, 47, 373, 311, 241, 31, 330, 385, 330, 255, 307, 304 + }, + { + 232, 155, 156, 367, 9, 0, 249, 249, 281, 280, 198, 125, 62, 0, 306, 302, 335, 226, 91, 19, 155, 305, 174, + 121, 127, 342, 92, 125, 126, 31, 302, 116, 332, 243, 70, 321, 125, 158, 325, 258, 84, 321, 251, 91, 325, + 280, 107, 32, 155, 262, 357, 281, 325, 91, 84, 306, 96, 357, 90, 14, 342, 299, 70, 0, 321, 70, 84, 133, + 332, 335, 332, 92, 358, 161, 231, 350, 350, 357, 231, 3, 349, 333, 116, 347, 66, 247, 153, 333, 292, 107, + 340, 348, 340, 97, 295, 153, 241, 72, 124, 121, 405, 213, 346, 386, 252, 243, 193, 307, 241, 72, 184, + 187, 89, 354, 354, 302, 342, 191, 92, 88, 58, 117, 34, 73, 344, 385, 15, 83, 78, 2, 164, 173, 367, 314, + 62, 156, 320, 84, 337, 183, 331, 127, 368, 68, 203, 91, 328, 241, 72, 11, 66, 35, 377, 129, 62, 341, 15, + 372, 103, 271, 247, 250, 73, 61, 126, 22, 188, 20, 140, 375, 84, 84, 340, 190, 147, 73, 191, 57, 283, + 355, 348, 299, 386, 37, 197, 157, 125, 62, 301, 344, 208 + }, + { + 108, 354, 323, 82, 73, 62, 63, 226, 238, 171, 34, 131, 162, 246, 127, 75, 75, 325, 335, 155, 282, 348, + 348, + 143, 72, 354, 237, 162, 311, 124, 315, 121, 153, 124, 179, 313, 36, 350, 357, 116, 107, 131, 318, 318, + 236, 157, 318, 386, 386, 44, 66, 157, 304, 107, 243, 151, 389, 332, 246, 348, 269, 309, 75, 0, 75, 345, + 326, 345, 354, 381, 345, 332, 336, 348, 355, 271, 310, 310, 126, 153, 162, 160, 234, 380, 182, 50, 220, + 109, 127, 97, 343, 345, 121, 278, 263, 188, 18, 299, 232, 265, 296, 153, 184, 143, 194, 234, 36, 140, + 170, 97, 66, 14, 251, 310, 79, 373, 281, 323, 317, 84, 89, 97, 164, 345, 232, 158, 164, 92, 366, 110, + 100, 135, 130, 86, 348, 238, 371, 168, 316, 42, 278, 187, 30, 405, 21, 303, 134, 8, 243, 80, 141, 315, + 123, 224, 354, 374, 97, 143, 238, 21, 20, 356, 198, 304, 63, 293, 284, 341, 302, 14, 208, 232, 74, 142, + 160, 77, 353, 36, 124, 203, 347, 36, 64, 349, 139, 378, 66, 67, 117, 251, 105 + }, + { + 332, 236, 175, 170, 212, 251, 313, 132, 239, 350, 354, 162, 83, 67, 98, 84, 331, 369, 228, 268, 84, 303, + 169, 92, 341, 334, 134, 16, 294, 325, 346, 220, 296, 139, 296, 79, 172, 330, 172, 234, 234, 172, 16, 16, + 16, 168, 16, 273, 83, 339, 346, 369, 294, 220, 172, 81, 79, 81, 284, 24, 92, 66, 294, 0, 320, 369, 384, + 258, 354, 346, 284, 349, 79, 79, 300, 349, 378, 348, 393, 14, 129, 306, 10, 47, 312, 294, 10, 284, 74, + 106, 258, 310, 128, 124, 19, 220, 314, 276, 64, 374, 273, 38, 305, 3, 263, 160, 157, 307, 145, 366, 164, + 90, 75, 54, 177, 172, 139, 125, 159, 246, 134, 1, 244, 221, 12, 60, 143, 154, 97, 123, 229, 135, 304, + 386, 245, 139, 294, 75, 29, 296, 119, 2, 174, 244, 81, 186, 196, 91, 135, 199, 172, 348, 124, 18, 16, + 305, 182, 179, 352, 389, 341, 62, 31, 136, 240, 175, 73, 158, 240, 51, 244, 61, 123, 385, 348, 29, 16, + 376, 282, 54, 375, 14, 386, 196, 286, 404, 92, 84, 159, 143, 258 + }, + { + 47, 333, 346, 135, 77, 161, 330, 20, 205, 75, 21, 137, 69, 297, 354, 330, 220, 154, 104, 284, 125, 383, + 19, + 332, 21, 347, 304, 81, 370, 325, 100, 75, 218, 357, 116, 120, 121, 369, 115, 110, 337, 82, 325, 97, 29, + 295, 305, 20, 90, 330, 153, 172, 296, 332, 347, 326, 196, 305, 182, 14, 354, 339, 130, 0, 270, 318, 381, + 278, 37, 57, 348, 241, 256, 36, 325, 333, 369, 82, 106, 188, 345, 196, 31, 333, 179, 360, 202, 66, 320, + 74, 124, 161, 330, 69, 137, 104, 97, 373, 92, 273, 209, 84, 255, 102, 128, 109, 330, 238, 65, 116, 352, + 133, 355, 10, 373, 97, 68, 175, 250, 37, 294, 77, 375, 98, 339, 176, 20, 164, 116, 354, 332, 309, 329, + 191, 3, 11, 45, 116, 75, 47, 186, 329, 220, 125, 350, 372, 172, 168, 128, 133, 354, 116, 175, 100, 19, + 66, 129, 164, 278, 164, 353, 88, 143, 57, 367, 228, 378, 341, 124, 344, 348, 375, 160, 329, 54, 332, 276, + 378, 81, 97, 325, 354, 354, 57, 156, 348, 115, 54, 174, 124, 272 + }, + { + 347, 20, 82, 20, 208, 14, 238, 316, 107, 81, 125, 3, 2, 332, 357, 82, 236, 336, 180, 354, 237, 243, 62, + 320, + 372, 37, 343, 378, 375, 229, 336, 260, 268, 357, 326, 375, 57, 404, 353, 20, 10, 150, 320, 348, 250, 240, + 250, 132, 238, 371, 355, 231, 377, 134, 378, 217, 134, 232, 389, 124, 171, 373, 368, 0, 84, 346, 284, 14, + 320, 320, 294, 172, 180, 233, 306, 375, 261, 308, 68, 343, 251, 282, 132, 77, 106, 20, 378, 349, 179, + 377, 57, 106, 172, 134, 295, 246, 183, 37, 196, 8, 92, 120, 16, 179, 350, 368, 173, 349, 39, 8, 157, 348, + 63, 232, 63, 250, 348, 295, 330, 248, 384, 15, 220, 311, 69, 143, 354, 343, 134, 354, 348, 29, 199, 258, + 130, 186, 226, 58, 242, 91, 144, 166, 36, 166, 125, 16, 40, 309, 14, 134, 74, 55, 11, 10, 404, 15, 158, + 37, 372, 244, 263, 226, 286, 340, 137, 53, 130, 162, 386, 33, 294, 123, 160, 305, 223, 174, 126, 400, + 196, 65, 66, 57, 171, 214, 104, 153, 5, 304, 107, 241, 108 + }, + { + 167, 107, 316, 341, 318, 137, 75, 36, 337, 294, 175, 383, 377, 281, 233, 154, 306, 157, 387, 143, 241, + 241, + 345, 81, 272, 345, 91, 220, 329, 233, 48, 233, 243, 81, 120, 243, 123, 354, 309, 251, 331, 387, 153, 262, + 294, 98, 320, 318, 296, 243, 36, 375, 172, 231, 308, 330, 26, 70, 345, 355, 388, 334, 278, 0, 241, 375, + 290, 175, 330, 179, 370, 196, 220, 24, 234, 48, 250, 14, 375, 354, 340, 117, 20, 297, 334, 170, 369, 73, + 172, 320, 28, 63, 334, 312, 345, 179, 369, 129, 110, 350, 143, 107, 75, 381, 212, 182, 271, 109, 263, + 236, 116, 243, 249, 92, 30, 121, 91, 188, 84, 232, 265, 332, 109, 129, 95, 69, 349, 37, 107, 97, 143, + 164, 353, 254, 367, 249, 171, 36, 353, 248, 124, 203, 375, 294, 250, 313, 155, 241, 128, 346, 197, 282, + 372, 280, 329, 164, 40, 84, 244, 247, 241, 330, 354, 81, 104, 104, 348, 232, 311, 251, 323, 159, 188, 45, + 261, 201, 84, 153, 143, 84, 296, 354, 353, 174, 249, 15, 197, 246, 5, 182, 183 + }, + { + 131, 348, 347, 372, 236, 377, 345, 361, 404, 308, 333, 92, 290, 134, 330, 119, 164, 234, 260, 349, 234, + 337, + 246, 387, 297, 153, 290, 325, 325, 325, 354, 88, 348, 141, 10, 11, 368, 309, 334, 149, 318, 94, 233, 354, + 299, 238, 334, 227, 136, 54, 196, 168, 174, 334, 361, 309, 18, 151, 175, 90, 127, 142, 127, 0, 160, 272, + 154, 309, 80, 339, 254, 57, 154, 18, 78, 232, 78, 309, 10, 14, 262, 84, 77, 261, 250, 95, 356, 231, 379, + 280, 301, 309, 164, 18, 309, 231, 295, 180, 355, 330, 37, 305, 227, 284, 120, 26, 234, 305, 330, 333, + 376, 370, 288, 184, 231, 121, 226, 278, 123, 188, 31, 166, 192, 164, 70, 250, 85, 350, 247, 331, 284, + 378, 354, 92, 70, 92, 125, 371, 386, 116, 248, 238, 55, 283, 363, 96, 164, 294, 311, 124, 15, 37, 147, + 14, 332, 345, 251, 374, 137, 284, 89, 224, 280, 334, 247, 363, 245, 378, 267, 243, 320, 14, 57, 146, 355, + 334, 373, 153, 120, 115, 96, 81, 164, 14, 37, 297, 192, 69, 175, 71, 102 + }, + { + 374, 387, 292, 125, 74, 116, 156, 241, 166, 373, 231, 180, 270, 182, 182, 275, 340, 169, 243, 243, 202, + 155, + 214, 18, 255, 69, 69, 203, 333, 330, 69, 107, 69, 69, 133, 354, 354, 345, 164, 336, 102, 387, 172, 335, + 279, 186, 241, 241, 86, 340, 354, 318, 241, 167, 88, 234, 14, 241, 340, 39, 345, 369, 354, 0, 59, 258, + 129, 6, 114, 320, 64, 92, 354, 117, 245, 301, 108, 319, 196, 129, 282, 8, 355, 232, 404, 326, 116, 175, + 358, 80, 82, 199, 353, 233, 196, 110, 331, 63, 360, 61, 20, 157, 377, 354, 354, 38, 330, 212, 405, 42, + 278, 348, 14, 376, 8, 80, 91, 175, 378, 363, 330, 280, 325, 188, 285, 26, 38, 188, 246, 211, 124, 249, + 276, 14, 62, 244, 301, 129, 305, 330, 332, 189, 6, 164, 311, 330, 47, 24, 170, 387, 270, 115, 360, 47, + 340, 262, 249, 126, 93, 92, 348, 171, 330, 378, 81, 125, 233, 110, 348, 189, 375, 241, 241, 220, 59, 84, + 250, 133, 245, 169, 386, 360, 201, 372, 126, 37, 66, 88, 377, 348, 97 + }, + { + 335, 107, 232, 171, 320, 20, 249, 237, 84, 14, 92, 325, 250, 64, 20, 353, 103, 232, 209, 374, 303, 228, + 84, + 367, 134, 97, 284, 68, 56, 302, 242, 286, 115, 373, 77, 3, 325, 371, 378, 349, 169, 179, 314, 348, 348, + 19, 325, 128, 148, 335, 332, 91, 121, 160, 84, 142, 339, 74, 137, 309, 190, 280, 367, 0, 301, 246, 354, + 205, 372, 103, 94, 297, 329, 249, 282, 240, 119, 311, 164, 276, 276, 142, 188, 36, 164, 388, 330, 352, + 282, 386, 241, 374, 333, 205, 45, 92, 64, 393, 320, 332, 194, 375, 345, 277, 36, 316, 162, 154, 229, 116, + 309, 340, 106, 305, 160, 21, 128, 330, 134, 164, 343, 284, 54, 73, 248, 342, 50, 17, 10, 302, 125, 84, + 244, 375, 84, 278, 164, 320, 124, 20, 303, 153, 127, 14, 332, 332, 92, 128, 167, 92, 46, 118, 37, 375, + 63, 20, 375, 125, 65, 41, 376, 134, 74, 54, 233, 262, 212, 226, 241, 40, 136, 240, 79, 50, 378, 170, 31, + 169, 390, 335, 375, 64, 196, 339, 196, 232, 116, 136, 279, 97, 391 + }, + { + 245, 97, 377, 68, 157, 81, 208, 348, 154, 175, 133, 32, 131, 178, 171, 388, 164, 188, 387, 375, 209, 116, + 354, 62, 284, 282, 119, 309, 115, 374, 378, 156, 387, 364, 15, 15, 119, 251, 364, 325, 325, 354, 45, 262, + 367, 120, 166, 345, 249, 249, 125, 14, 75, 346, 84, 330, 332, 331, 325, 116, 284, 267, 341, 0, 326, 243, + 109, 329, 227, 272, 172, 180, 284, 284, 154, 386, 308, 302, 220, 91, 352, 243, 241, 326, 267, 282, 166, + 5, 161, 121, 193, 92, 311, 250, 125, 282, 182, 95, 297, 375, 386, 247, 167, 354, 164, 326, 313, 92, 229, + 81, 276, 349, 2, 332, 181, 35, 134, 10, 311, 386, 349, 354, 46, 328, 193, 355, 320, 383, 300, 137, 134, + 179, 250, 39, 248, 176, 329, 360, 197, 5, 172, 11, 336, 353, 80, 6, 237, 209, 175, 297, 84, 115, 303, + 102, 129, 325, 77, 92, 128, 333, 343, 94, 164, 166, 125, 284, 311, 103, 276, 119, 92, 247, 171, 388, 81, + 154, 32, 97, 208, 209, 64, 284, 386, 82, 65, 75, 249, 84, 120, 15, 272 + }, + { + 330, 249, 16, 92, 92, 378, 126, 339, 381, 352, 370, 141, 342, 17, 354, 250, 333, 20, 128, 343, 297, 120, + 392, 320, 278, 79, 136, 170, 343, 191, 330, 366, 333, 82, 100, 115, 150, 364, 272, 369, 88, 102, 350, + 164, 32, 162, 286, 2, 263, 92, 354, 116, 286, 164, 169, 179, 192, 373, 333, 75, 175, 100, 164, 0, 332, + 59, 92, 319, 6, 110, 353, 367, 20, 232, 142, 314, 364, 115, 150, 367, 137, 352, 241, 282, 14, 32, 309, + 326, 325, 251, 126, 227, 243, 325, 330, 116, 88, 5, 241, 302, 100, 220, 161, 16, 342, 182, 193, 352, 102, + 278, 392, 164, 55, 346, 55, 127, 182, 125, 134, 262, 96, 11, 129, 315, 148, 97, 62, 115, 91, 143, 14, + 174, 242, 151, 18, 70, 186, 6, 345, 167, 334, 324, 37, 333, 345, 312, 306, 352, 0, 154, 184, 254, 311, + 92, 386, 339, 251, 133, 18, 119, 169, 185, 121, 189, 92, 137, 378, 189, 241, 5, 281, 170, 56, 40, 353, + 331, 348, 250, 70, 164, 247, 24, 3, 82, 353, 329, 345, 330, 249, 107, 367 + }, + { + 369, 100, 252, 348, 84, 164, 375, 21, 345, 84, 371, 92, 83, 263, 345, 284, 83, 194, 10, 355, 375, 116, + 246, + 102, 82, 326, 369, 284, 354, 85, 220, 136, 136, 232, 119, 373, 10, 345, 344, 374, 80, 83, 326, 223, 56, + 91, 263, 171, 192, 84, 320, 326, 164, 15, 375, 91, 355, 47, 250, 334, 37, 57, 134, 0, 220, 97, 376, 354, + 346, 354, 344, 312, 354, 310, 350, 72, 329, 77, 98, 2, 375, 345, 113, 334, 124, 169, 378, 346, 348, 114, + 175, 263, 197, 91, 258, 334, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 377, 37, 179, 113, 209, 75, 176, 124, 92, 316, 135, 320, 240, 329, 135, 354, 20, 137, 137, 14, 330, 137, + 134, 316, 131, 309, 75, 75, 152, 116, 329, 282, 157, 128, 226, 175, 232, 286, 84, 344, 385, 231, 249, + 243, 11, 64, 175, 252, 125, 134, 316, 344, 355, 241, 164, 347, 383, 146, 74, 154, 283, 241, 131, 0, 348, + 348, 247, 386, 157, 68, 241, 317, 94, 134, 250, 348, 392, 92, 286, 0, 37, 191, 262, 344, 249, 309, 116, + 309, 75, 129, 184, 84, 45, 316, 345, 110, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + }, + { + 233, 154, 186, 116, 350, 375, 329, 134, 68, 244, 80, 116, 350, 355, 332, 327, 284, 110, 40, 305, 331, + 267, + 172, 92, 116, 243, 343, 107, 47, 47, 348, 220, 345, 92, 164, 310, 147, 309, 309, 348, 316, 180, 334, 90, + 310, 35, 92, 317, 372, 5, 220, 348, 223, 37, 375, 172, 352, 404, 14, 290, 385, 354, 329, 0, 136, 349, + 309, 294, 128, 348, 117, 14, 350, 297, 120, 79, 128, 168, 345, 90, 133, 332, 332, 316, 181, 392, 354, + 350, 175, 317, 332, 342, 348, 232, 378, 179, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + }, + { + 348, 92, 363, 354, 369, 347, 346, 232, 214, 116, 189, 350, 188, 62, 356, 354, 162, 21, 175, 110, 173, + 290, + 356, 350, 251, 250, 164, 176, 284, 244, 334, 171, 342, 113, 377, 329, 154, 243, 94, 355, 297, 110, 249, + 348, 327, 172, 92, 348, 348, 119, 369, 188, 290, 175, 130, 171, 125, 332, 54, 125, 125, 345, 353, 0, 50, + 228, 50, 228, 378, 125, 189, 354, 172, 35, 253, 170, 208, 133, 253, 131, 294, 333, 345, 124, 189, 164, + 370, 131, 241, 171, 345, 50, 181, 110, 33, 84, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + }, + { + 190, 84, 228, 250, 250, 197, 84, 345, 157, 190, 37, 83, 250, 190, 196, 196, 388, 0, 82, 120, 130, 101, + 310, + 315, 117, 152, 114, 37, 111, 348, 57, 330, 319, 196, 243, 369, 345, 186, 345, 356, 305, 345, 345, 345, + 373, 373, 384, 24, 348, 186, 369, 345, 70, 175, 82, 193, 355, 50, 250, 371, 321, 378, 375, 0, 188, 5, 17, + 320, 14, 371, 189, 373, 386, 97, 68, 82, 355, 32, 90, 241, 355, 305, 308, 286, 81, 326, 81, 64, 320, 376, + 250, 283, 284, 284, 313, 330, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { + 122, 330, 345, 316, 294, 332, 162, 220, 329, 329, 148, 335, 110, 339, 327, 367, 216, 202, 386, 368, 92, + 386, + 92, 92, 37, 35, 35, 110, 344, 349, 335, 10, 363, 335, 386, 37, 345, 367, 311, 171, 171, 40, 251, 335, + 349, 212, 133, 220, 46, 357, 354, 40, 348, 208, 367, 388, 250, 357, 345, 354, 75, 328, 348, 0, 54, 388, + 63, 40, 130, 344, 110, 349, 183, 227, 328, 227, 345, 183, 173, 95, 143, 55, 171, 55, 249, 249, 17, 44, + 110, 136, 335, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + //罗马字母 + private static readonly string[] _charIndex = new string[] + { + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", "", "", "", "", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", + "20", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", + "20", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "", "" + }; + + //希腊字母 + private static readonly string[] _charIndex2 = new string[] + { + "a", "b", "g", "d", "e", "z", "e", "th", "i", "k", "l", "m", "n", "x", "o", "p", "r", + "s", "t", "u", "ph", "kh", "ps", "o" + }; + + #endregion + + public ChineseSpell() + { + } + + /// + /// 获取汉字的汉语拼音 + /// + /// 欲转换的字符串 + /// SpellOptions枚举值的按位 OR 组合 + /// + public static string GetSpellWord(string chineseStr, SpellOptions options) + { + Encoding encoding = Encoding.GetEncoding("GB2312"); + + byte[] local = encoding.GetBytes(chineseStr); + + int i = 0; + int index; + StringBuilder result = new StringBuilder(); + string tmp = ""; + + while (i < local.Length) + { + // 是否为GBK 字符 + if ((local[i] >= 129) + && (local[i + 1] >= 64)) + { + switch ((int) local[i]) + { + case 163: // 全角 ASCII + { + tmp = ((char) (local[i + 1] - 128)).ToString(); + + if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) + && !( + ((tmp[0] >= 97) && (tmp[0] <= 122)) + || ((tmp[0] >= 65) && (tmp[0] <= 90)) + || ((tmp[0] >= 48) && (tmp[0] <= 57)) + ) + ) + { + // 控制不能输出非数字, 字母的字符 + tmp = ""; + } + + break; + } + + case 162: // 罗马数字 + { + if (local[i + 1] > 160) + { + tmp = _charIndex[(int) local[i + 1] - 160]; + } + else if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == + SpellOptions.TranslateUnknowWordToInterrogation) + { + // 在罗马数字区, 不能翻译的字符非罗马数字 + tmp = "?"; + } + else + { + tmp = ""; + } + + break; + } + + case 166: // 希腊字母 + { + // + // TODO:未实现 + // + break; + } + + default: + { + index = _spellCodeIndex[(int) local[i] - 129, local[i + 1] - 64] - 1; + + if (index == 0) // 无此汉字, 不能翻译的字符, GBK 保留 + { + //是否翻译为问号 + if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == + SpellOptions.TranslateUnknowWordToInterrogation) + { + tmp = "?"; + } + else + { + tmp = ""; + } + } + else if ((options & SpellOptions.FirstLetterOnly) == SpellOptions.FirstLetterOnly) //是单拼音 + { + tmp = _spellMusicCode[index].ToUpper().Substring(0, 1); + } + else + { + tmp = _spellMusicCode[index].ToUpper(); + } + + break; + } + } //end of swicth() + + result.Append(tmp); + i += 2; + } + else // 在 GBK 字符集外, 即半角字符 + { + if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) + || ( + ((local[i] >= 97) && (local[i] <= 122)) + || ((local[i] >= 65) && (local[i] <= 90)) + || ((local[i] >= 48) && (local[i] <= 57)) + ) + ) + { + result.Append(((char) local[i]).ToString().ToUpper()); + } + //note:下行修改过的 + else if ((options & SpellOptions.TranslateSpecialWordToConnect) == + SpellOptions.TranslateSpecialWordToConnect) + { + result.Append("-"); + } + + i ++; + } + } + + return result.ToString(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/Cache/CacheUtil.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/Cache/CacheUtil.cs new file mode 100644 index 0000000..898f090 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/Cache/CacheUtil.cs @@ -0,0 +1,203 @@ +/* + * 由SharpDevelop创建。 + * 用户: newmin + * 日期: 2013/11/24 + * 时间: 17:42 + * + * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 + */ + +using System; +using System.Web; + +namespace Ops.Framework.Web.Cache +{ + /// + /// Description of CacheUtil. + /// + public sealed class CacheUtil + { + /// + /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 + /// + /// + /// + public static bool CheckClientCacheExpires(int maxAge) + { + /* + Public 指示响应可被任何缓存区缓存。 + Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 + 部分响应消息,此响应消息对于其他用户的请求无效。 + no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) + 根据什么能被缓存 + no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 + 根据缓存超时 + max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 + min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 + max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 + 接收超出超时期指定值之内的响应消息。 + Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 + 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 + 格式: + */ + + + if (maxAge > 0) + { + HttpResponse response = HttpContext.Current.Response; + HttpRequest request = HttpContext.Current.Request; + + string sinceModified = request.Headers.Get("If-Modified-Since"); + + if (!String.IsNullOrEmpty(sinceModified)) + { + //现在时间 + DateTime nowTime = DateTime.Now.ToUniversalTime(); + + //最后修改时间 + DateTime sinceTime; + DateTime.TryParse(sinceModified, out sinceTime); + sinceTime = sinceTime.ToUniversalTime(); + + if ((nowTime - sinceTime).TotalSeconds < maxAge) + { + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return false; + } + } + } + + return true; + } + + /// + /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 + /// + /// + /// + public static bool CheckClientCacheExpires(string etag) + { + string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); + if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) + { + HttpResponse response = HttpContext.Current.Response; + + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return false; + } + return true; + } + + /// + /// 设置客户端保存缓存 + /// + /// + /// + public static void SetClientCache(HttpResponse response, int maxAge) + { + DateTime nowTime = DateTime.Now.ToUniversalTime(); + response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); + response.AddHeader("Last-Modified", nowTime.ToString("r")); + } + + /// + /// 设置客户端保存缓存 + /// + /// + /// + public static void SetClientCache(HttpResponse response, string etag) + { + response.AddHeader("ETag", "\"" + etag + "\""); + } + + /// + /// 输出缓存内容 + /// + /// + /// + /// + /// 是否缓存在客户端 + public static bool Output(HttpResponse response, int maxage, StringCreatorHandler handler) + { + /* + Public 指示响应可被任何缓存区缓存。 + Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 + 部分响应消息,此响应消息对于其他用户的请求无效。 + no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) + 根据什么能被缓存 + no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 + 根据缓存超时 + max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 + min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 + max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 + 接收超出超时期指定值之内的响应消息。 + Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 + 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 + 格式: + */ + + #region 获取缓存状态 + + HttpRequest request = HttpContext.Current.Request; + + //现在时间 + DateTime nowTime = DateTime.Now.ToUniversalTime(); + + + string sinceModified = request.Headers.Get("If-Modified-Since"); + + if (!String.IsNullOrEmpty(sinceModified)) + { + //最后修改时间 + DateTime sinceTime; + DateTime.TryParse(sinceModified, out sinceTime); + sinceTime = sinceTime.ToUniversalTime(); + + if ((nowTime - sinceTime).TotalSeconds < maxage) + { + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return true; + } + } + + #endregion + + #region 输出内容并缓存 + + response.Write(handler()); + + response.AddHeader("Cache-Control", "max-age=" + maxage.ToString()); + response.AddHeader("Last-Modified", nowTime.ToString("r")); + + #endregion + + return false; + } + + /// + /// 输出缓存内容 + /// + /// + /// + /// + /// 是否缓存在客户端 + public static bool Output(HttpResponse response, string etag, StringCreatorHandler handler) + { + string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); + if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) + { + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return true; + } + + response.AddHeader("ETag", "\"" + etag + "\""); + response.Write(handler()); + + return false; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload.cs new file mode 100644 index 0000000..0c7fb3c --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload.cs @@ -0,0 +1,102 @@ +/* + * 文件上传 + * Copyright 2012 OPS,All right reseved! + * Newmin(ops.cc) @ 2012-09-29 07:09 + * + */ + +using System; +using System.IO; +using System.Web; + +namespace Ops.Framework.Web.UI +{ + /// + /// 文件上传工具 + /// + public class FileUpload + { + /// + /// 保存文件夹 + /// + private readonly string _saveAbsoluteDir; + + /// + /// 文件名 + /// + private readonly string _fileName; + + private UploadFileInfo _fileInfo; + + public FileUpload(string saveAbsoluteDir, string fileName) + { + this._saveAbsoluteDir = saveAbsoluteDir; + this._fileName = fileName; + } + + /// + /// 上传 + /// + /// 异步则返回进程ID,同步返回上传文件的路径 + public string Upload() + { + HttpRequest request = HttpContext.Current.Request; + String baseDir = AppDomain.CurrentDomain.BaseDirectory; + string[] process = request.Form["upload_process"].Split('|'); + string processID = process[1], + field = process[0]; + + var postedFile = request.Files[field]; + if (postedFile == null) + { + return null; + } + string fileExt = postedFile.FileName.Substring(postedFile. + FileName.LastIndexOf('.') + 1); //扩展名 + + _fileInfo = new UploadFileInfo + { + Id = processID, + ContentLength = postedFile.ContentLength, + FilePath = String.Format("{0}{1}.{2}", this._saveAbsoluteDir, _fileName, fileExt) + }; + + InitUplDirectory(baseDir, this._saveAbsoluteDir); + saveStream(postedFile, baseDir + _fileInfo.FilePath); + + return _fileInfo.FilePath; + } + + private static void InitUplDirectory(String baseDir, String absDir) + { + //如果文件夹不存在,则创建文件夹 + String dir = baseDir + absDir; + if (!Directory.Exists(dir)) + { + Directory.CreateDirectory(dir).Create(); + } + } + + private void saveStream(HttpPostedFile postedFile, string path) + { + const int bufferSize = 100; //缓冲区大小 + byte[] buffer = new byte[bufferSize]; //缓冲区 + + int bytes; //从流中读取的值 + using (FileStream fs = new FileStream(path, FileMode.Create)) + { + while (true) + { + bytes = postedFile.InputStream.Read(buffer, 0, bufferSize); + if (bytes == 0) + { + break; + } + fs.Write(buffer, 0, bytes); + } + fs.Flush(); + fs.Close(); + } + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/demo/1.htm b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload/demo/1.htm similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/demo/1.htm rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload/demo/1.htm diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/fileupload.js b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload/fileupload.js similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/fileupload.js rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/FileUpload/fileupload.js diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Page.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Page.cs new file mode 100644 index 0000000..87c5053 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Page.cs @@ -0,0 +1,42 @@ +/* + * Name : UI.Page + * Author : newmin + * Date : 2010/10/22 + */ + +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Web.UI; +using Ops.Framework.Web.unused; +using Ops.Framework.Web.unused.Interface; + +namespace Ops.Framework.Web.UI +{ + public class Page : System.Web.UI.Page, ICompressionable + { + protected override void Render(HtmlTextWriter writer) + { + /* 注:base.Render(writer)应在所有假设性条件后 */ + if (ConfigurationDictionary.EnableCompression) Compression(writer); //是否启用html压缩的话 + else base.Render(writer); + } + + #region ICompressionable 成员 + + public void Compression(System.Web.UI.HtmlTextWriter writer) + { + StringWriter sr = new StringWriter(); + HtmlTextWriter tw = new HtmlTextWriter(sr); + base.Render(tw); + tw.Flush(); + tw.Dispose(); + StringBuilder sb = new StringBuilder(sr.ToString()); + string outhtml = Regex.Replace(sb.ToString(), "\\r+\\n+\\s+", string.Empty); + writer.Write(outhtml); + sr.Dispose(); + } + + #endregion + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/PagedLinkBuilder.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/PagedLinkBuilder.cs similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Web/UI/PagedLinkBuilder.cs rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/PagedLinkBuilder.cs diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/Pager.zip b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Pager.zip similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Web/UI/Pager.zip rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Pager.zip diff --git a/J6/src/core/J6.DevFw.Core/Framework/Web/UI/Pager/pager.go b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Pager/pager.go similarity index 100% rename from J6/src/core/J6.DevFw.Core/Framework/Web/UI/Pager/pager.go rename to src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/Pager/pager.go diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/UploadFileInfo.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/UploadFileInfo.cs new file mode 100644 index 0000000..b2e570f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/UploadFileInfo.cs @@ -0,0 +1,28 @@ +namespace Ops.Framework.Web.UI +{ + /// + /// 上传文件信息 + /// + public struct UploadFileInfo + { + /// + /// 文件编号 + /// + public string Id { get; set; } + + /// + /// 保存路径 + /// + public string FilePath { get; set; } + + /// + /// 文件长度 + /// + public int ContentLength { get; set; } + + /// + /// 已上传长度 + /// + public int UploadedLength { get; set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/UrlPager.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/UrlPager.cs new file mode 100644 index 0000000..ede18ae --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/UrlPager.cs @@ -0,0 +1,430 @@ +/* +* Copyright(C) 2010-2012 OPSoft Inc +* +* File Name : UrlPager +* Author : Administrator +* Create : 2012/10/9 21:49:44 +* Description : +* +*/ + +using System; +using System.Text; +using System.Text.RegularExpressions; + +namespace Ops.Framework.Web.UI +{ + public enum PagingFlag + { + Control = 1, + Previous = 1 << 1, + Next = 1 << 2 + } + + + public interface IPagingGetter + { + string Get(int page, int total, int nowPage, PagingFlag flag, out string text); + } + + internal class DefaultPageingGetter : IPagingGetter + { + private static readonly CustomPagingGetter getter; + + static DefaultPageingGetter() + { + getter = new CustomPagingGetter( + "", + "?page=%d", + "第一页", + "最末页", + "上一页", + "下一页" + ); + } + + public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) + { + return getter.Get(page, total, nowPage, flag, out text); + } + } + + public class CustomPagingGetter : IPagingGetter + { + private int pagerLinkCount; + private string firstPageText; + private string lastPageText; + private string nextPageText; + private string previousPageText; + private string pagerLinkFormat; + private string firstLinkFormat; + + public CustomPagingGetter( + string firstLinkFormat, + string pagerLinkFormat, + string firstPageText, + string lastPageText, + string previousPageText, + string nextPageText + ) + { + this.firstLinkFormat = firstLinkFormat; + this.pagerLinkFormat = pagerLinkFormat; + this.firstPageText = firstPageText; + this.lastPageText = lastPageText; + this.nextPageText = nextPageText; + this.previousPageText = previousPageText; + } + + public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) + { + if ((flag & PagingFlag.Control) != 0) + { + if ((flag & PagingFlag.Previous) != 0) + { + text = this.previousPageText; + if (page == 1) + { + return "javascript:;"; + } + else + { + if (nowPage == 1) + { + return this.firstLinkFormat; + } + return String.Format(this.pagerLinkFormat, nowPage); + } + } + else if ((flag & PagingFlag.Next) != 0) + { + text = this.nextPageText; + if (page == total) + { + return "javascript:;"; + } + else + { + return String.Format(this.pagerLinkFormat, nowPage); + } + } + } + + text = nowPage.ToString(); + if (nowPage == 1 && this.firstLinkFormat.Length != 0) + { + return this.firstLinkFormat; + } + return String.Format(this.pagerLinkFormat, nowPage); + } + } + + + public class UrlPager + { + private int _linkCount; + + + internal UrlPager() + { + } + + internal UrlPager(int currentPageIndex, int pageCount) + { + CurrentPageIndex = currentPageIndex; + PageCount = pageCount; + } + + /// + /// 当前页面索引(从1开始) + /// + public int CurrentPageIndex { get; set; } + + /// + /// 页面总数 + /// + public int PageCount { get; set; } + + //获取分页数据 + public IPagingGetter Getter { get; set; } + + /// + /// 链接长度,创建多少个跳页链接 + /// + public int LinkCount + { + get + { + if (this._linkCount == 0) + { + this._linkCount = 10; + } + return this._linkCount; + } + set { this._linkCount = value; } + } + + /// + /// 记录条数 + /// + public int RecordCount { get; set; } + + + /// + /// 下一栏链接文字 + /// + public string NextPagerLinkText { get; set; } + + /// + /// 选页框文本 + /// + public string SelectPageText { get; set; } + + /// + /// 是否允许输入页码调页 + /// + public bool EnableInput { get; set; } + + /// + /// 使用选页 + /// + public bool EnableSelect { get; set; } + + /// + /// 分页详细记录,如果为空字符则用默认,为空则不显示 + /// + public String PagerTotal { get; set; } + + + /// + /// 输入分页链接HTML代码 + /// + /// 例如:?domain=ops.cc&page={0},{0}将会被解析成页码 + /// + /// + public string Pager() + { + string cls; + string linkText = String.Empty; + string linkUrl; + + StringBuilder sb = new StringBuilder(); + + string _pageCount = (this.PageCount == 0 ? 1 : this.PageCount).ToString(); + + //Div Wrap + sb.Append("
                                                                                                                                            "); + + //输出上一页 + if (this.CurrentPageIndex > 1) + { + cls = "previous"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex - 1, PagingFlag.Control | PagingFlag.Previous, out linkText); + } + else + { + cls = "disabled"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Previous, out linkText); + } + sb.Append(String.Format(@"{2}" + , cls, linkUrl, linkText)); + + + //起始页:CurrentPageIndex / 10 * 10+1 + //结束页:(CurrentPageIndex%10==0?CurrentPageIndex-1: CurrentPageIndex) / 10 * 10 + //当前页数能整除10的时候需要减去10页,否则不能选中 + + + //链接页码数量(默认10) + int c = this.LinkCount; + int startPage = (CurrentPageIndex - 1)/c*c + 1; + + bool _gotoPrevious = false; //是否上一栏分页 + + for (int i = 1, j = startPage; + i <= c && j <= PageCount; + i++, j = (CurrentPageIndex%c == 0 ? CurrentPageIndex - 1 : CurrentPageIndex)/c*c + i) + { + //输出页面 + if (j == CurrentPageIndex) + { + _gotoPrevious = j != 1 && j%c == 1; + + if (_gotoPrevious) + { + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + j - 1, 0, out linkText); + sb.Append(String.Format(@"{2}", + cls, linkUrl, "...")); + } + + //如果为页码为当前页 + + sb.Append("").Append(j.ToString()).Append(""); + + + //如果为最后一个页码,则显示下一栏 + if (!_gotoPrevious && j%c == 0 && j != PageCount) + { + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + j + 1, 0, out linkText); + + sb.Append(String.Format(@"{2}", + cls, linkUrl, "...")); + } + } + else + { + //页码不为当前页,则输出页码 + //如果为第一页,用第一页格式 + + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + j, 0, out linkText); + sb.Append(String.Format("{1}", + linkUrl, linkText)); + } + } + + + //显示输入页码框 + //if (EnableInput) sb.Append("").Append(InputButtonText ?? "跳页").Append(""); + + + //输出下一页链接 + if (this.CurrentPageIndex < this.PageCount) + { + cls = "next"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex + 1, PagingFlag.Control | PagingFlag.Next, out linkText); + } + else + { + cls = "disabled"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Next, out linkText); + } + sb.Append(String.Format(@"{2}" + , cls, linkUrl, linkText)); + + + //显示下拉选页框 + if (EnableSelect) + { + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + 1, 0, out linkText); + + //选页框 + StringBuilder selectSb = new StringBuilder(); + selectSb.Append(""); + + //设置下拉框HTML格式 + if (String.IsNullOrEmpty(this.SelectPageText)) this.SelectPageText = "{0}"; + else if (this.SelectPageText.IndexOf("{0}") == -1) this.SelectPageText += "{0}"; + + //将选页框添加到内容中 + sb.Append(String.Format(String.Concat("", this.SelectPageText, ""), + selectSb.ToString())); + } + + + //显示信息 + if (this.PagerTotal != null) + { + const string _pagerTotalFormat = @" 第{0}/{1}页,共{2}条。"; + string _pagerTotal = this.PagerTotal; + if (_pagerTotal == String.Empty) + { + _pagerTotal = _pagerTotalFormat; + } + sb.Append(String.Format(_pagerTotal, + CurrentPageIndex.ToString(), + _pageCount.ToString(), + this.RecordCount.ToString() + )); + } + + //Wrap Close + sb.Append("
                                                                                                                                            "); + + return Regex.Replace(sb.ToString(), "\\s\\s|\\r|\\t", String.Empty); + } + } + + public static class UrlPaging + { + public static IPagingGetter DefaultGetter = new DefaultPageingGetter(); + + public static UrlPager NewPager(int page, int pageCount, IPagingGetter pg) + { + if (pageCount == 0) pageCount = 1; + if (page == 0) page = 1; + + UrlPager p = new UrlPager(page, pageCount); + if (pg == null) + { + pg = DefaultGetter; + } + else + { + p.Getter = pg; + } + + return p; + } + + /// + /// 创建分页信息 + /// + /// + /// + /// + /// + /// + public static string PagerHtml(string firstFormat, string format, int currentPageIndex, int recordCount, + int pageCount) + { + IPagingGetter pg = new CustomPagingGetter( + firstFormat, + format, + "第一页", + "最末页", + "<<上一页", + ">>下一页" + ); + + + UrlPager p = NewPager(currentPageIndex, pageCount, pg); + + // p.PreviousPageText = "<<"; + // p.NextPageText = ">>"; + p.EnableInput = true; + p.SelectPageText = "跳页"; + p.PagerTotal = String.Empty; + p.RecordCount = recordCount; + p.PagerTotal = String.Empty; + return p.Pager(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/VerifyCode.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/VerifyCode.cs new file mode 100644 index 0000000..09cb054 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/UI/VerifyCode.cs @@ -0,0 +1,399 @@ +/* + * VerifyCode 验证码 + * Copyright 2010 OPSoft ,All right reseved! + * Newmin(ops.cc) @ 2010/11/18 + */ + +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Text; +using System.Web; + +namespace Ops.Framework.Web.UI +{ + /// + /// 验证码组成字符选项 + /// + public enum VerifyWordOptions + { + /// + /// 全数字 + /// + Number, + + /// + /// 全字母 + /// + Letter, + + /// + /// 字母和数字 + /// + LetterAndNumber + + /// + /// 中文字符 + /// + //Chinese + } + + /// + /// 验证码 + /// + public class VerifyCode + { + private delegate bool TestCondition(int number, int[] array); + + private const int _n_s = 48; //数字开始 + private const int _n_e = 57; //数字结束 + private const int _ul_s = 65; //大写字母开始 + private const int _ul_e = 90; //大写字母结束 + private const int _ll_s = 97; //小写字母开始 + private const int _ll_e = 122; //小写字母结束 + private const int wordLength = 62; + + private static int[] wordArray = new int[62]; + + private bool allowRepeat = true; + + static VerifyCode() + { + //初始化,将0-9,A-Z,a-z添加到数组中去 + for (int i = 0; i < 10; i++) + { + wordArray[i] = _n_s + i; + } + for (int i = 0; i < 26; i++) + { + wordArray[36 + i] = _ul_s + i; + wordArray[10 + i] = _ll_s + i; + } + } + + /// + /// 是否允许重复出现 + /// + public bool AllowRepeat + { + get { return allowRepeat; } + set { allowRepeat = value; } + } + + + /* + /// + /// 验证是否与当前验证码输入一致(区分大小写) + /// + /// + /// + public static bool Verify(string verifyString) + { + return Verify(verifyString, false); + } + + + /// + /// 验证是否与当前验证码输入一致 + /// + /// + /// + /// + public static bool Verify(string verifyString, bool ignoreCase) + { + string verifyCode = HttpContext.Current.Session["current_verifycode"] as string; + if (String.IsNullOrEmpty(verifyString)) return false; + return String.Compare(verifyString, verifyCode, ignoreCase) == 0; + } + */ + + /// + /// 获取默认字体 + /// + /// + public Font GetDefaultFont() + { + FontFamily fontFamily; + try + { + fontFamily = FontFamily.GenericSansSerif; + } + catch + { + if (FontFamily.Families.Length != 0) + { + fontFamily = FontFamily.Families[0]; + } + else + { + throw new Exception("计算机上找不到字体!"); + } + } + return new Font(fontFamily, 14, FontStyle.Bold, GraphicsUnit.Pixel); + } + + /// + /// 显示验证码图片 + /// + public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, out string words) + { + return GraphicDrawImage(number, opt, simpleMode, GetDefaultFont(), 22, out words); + } + + /// + /// 显示验证码图片 + /// + public void RenderGraphicImage(int number, VerifyWordOptions opt, bool simpleMode, out string words, + string contentType) + { + HttpContext context = HttpContext.Current; + byte[] data = GraphicDrawImage(number, opt, simpleMode, out words); + + context.Response.BinaryWrite(data); + context.Response.ContentType = contentType ?? "Image/Jpeg"; + } + + /// + /// 显示验证码图片 + /// + public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, Font font, int imageHeight, + out string words) + { + HttpContext context = HttpContext.Current; + + int[] verifyWords = new int[number]; + Random rd = new Random(); + + TestCondition test; + int _tempInt; + + + switch (opt) + { + //纯数字 + case VerifyWordOptions.Number: + + test = (i, array) => + { + if (i == 0) return false; + else if (i < _n_s || i > _n_e) return false; + else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; + return true; + }; + + for (int i = 0; i < number; i++) + { + while (verifyWords[i] == 0) + { + _tempInt = wordArray[rd.Next(wordLength)]; + if (test(_tempInt, verifyWords)) + { + verifyWords[i] = _tempInt; + } + } + } + + break; + + + //纯字母 + case VerifyWordOptions.Letter: + + test = (i, array) => + { + if (i == 0) return false; + else if (i < _ul_s || i > _ll_e || (i > _ul_e && i < _ll_s)) return false; + else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; + return true; + }; + + for (int i = 0; i < number; i++) + { + while (verifyWords[i] == 0) + { + _tempInt = wordArray[rd.Next(wordLength)]; + if (test(_tempInt, verifyWords)) + { + verifyWords[i] = _tempInt; + } + } + } + + break; + + + //字母和数字 + case VerifyWordOptions.LetterAndNumber: + + test = (i, array) => + { + if (i == 0) return false; + else if (!Array.Exists(wordArray, a => a == i)) return false; + else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; + return true; + }; + + for (int i = 0; i < number; i++) + { + while (verifyWords[i] == 0) + { + _tempInt = wordArray[rd.Next(wordLength)]; + if (test(_tempInt, verifyWords)) + { + verifyWords[i] = _tempInt; + } + } + } + + break; + } + + //转换成字母 + StringBuilder sb = new StringBuilder(); + foreach (int i in verifyWords) + { + sb.Append((char) i); + } + + //context.Session["current_verifycode"] = sb.ToString(); + words = sb.ToString(); + + //绘图 + return DrawingImage(verifyWords, simpleMode, font, imageHeight); + } + + /// + /// 绘图 + /// + /// + private byte[] DrawingImage(int[] charNumberArray, bool simpleMode, Font font, int imageHeight) + { + float _fontSize = font.Size; + int _height = imageHeight; + const int _offset = 5; + + Bitmap img = new Bitmap(charNumberArray.Length*(int) _fontSize + _offset, _height); + Graphics g = Graphics.FromImage(img); + g.Clear(Color.White); + + //生成随机生成器 + Random rd = new Random(); + + //画图片的干扰线 + for (int i = 0; i < 25; i++) + { + int x1 = rd.Next(img.Width); + int x2 = rd.Next(img.Width); + int y1 = rd.Next(img.Height); + int y2 = rd.Next(img.Height); + g.DrawLine(new Pen(Color.FromArgb(200, 200, 200)), x1, y1, x2, y2); + } + + FontFamily ffamily = font.FontFamily; + //try + //{ + // ffamily = FontFamily.GenericSerif; + //} + //catch + //{ + // FontFamily[] ffs = FontFamily.Families; + // if (ffs.Length > 1) ffamily = ffs[0]; + // else + // { + // throw new Exception("系统中未找到任何字体!"); + // } + //} + + Brush[] brushs = new SolidBrush[] + { + new SolidBrush(Color.Green), + new SolidBrush(Color.Blue), + new SolidBrush(Color.Red), + new SolidBrush(Color.Black) + //new SolidBrush(Color.Orange) + }; + + + for (int i = 0; i < charNumberArray.Length; i++) + { + g.DrawString(((char) charNumberArray[i]).ToString(), font, brushs[rd.Next(brushs.Length)], + new PointF(_offset + i*(_fontSize - 1), (_height - _fontSize)/2)); + } + + if (!simpleMode) + { + //弯曲图片 + img = TwistImage(img, true, 2, 1); + + //画图片的前景干扰点 + for (int i = 0; i < 100; i++) + { + int x = rd.Next(img.Width); + int y = rd.Next(img.Height); + img.SetPixel(x, y, Color.FromArgb(235, 235, 235)); + } + } + + + MemoryStream stream = new MemoryStream(); + img.Save(stream, ImageFormat.Jpeg); + font.Dispose(); + g.Dispose(); + img.Dispose(); + + byte[] data = stream.ToArray(); + stream.Dispose(); + + return data; + } + + /// + /// 正弦曲线Wave扭曲图片(http://www.51aspx.com/CV/VerifyColorTwistCode/) + /// + /// 图片路径 + /// 如果扭曲则选择为True + /// 波形的幅度倍数,越大扭曲的程度越高,一般为3 + /// 波形的起始相位,取值区间[0-2*PI) + /// + private Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) + { + // const double PI = 3.1415926535897932384626433832795; + + const double PI2 = 6.283185307179586476925286766559; + + Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); + + // 将位图背景填充为白色 + System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); + graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); + graph.Dispose(); + + double dBaseAxisLen = bXDir ? (double) destBmp.Height : (double) destBmp.Width; + + for (int i = 0; i < destBmp.Width; i++) + { + for (int j = 0; j < destBmp.Height; j++) + { + double dx = 0; + dx = bXDir ? (PI2*(double) j)/dBaseAxisLen : (PI2*(double) i)/dBaseAxisLen; + dx += dPhase; + double dy = Math.Sin(dx); + + // 取得当前点的颜色 + int nOldX = 0, nOldY = 0; + nOldX = bXDir ? i + (int) (dy*dMultValue) : i; + nOldY = bXDir ? j : j + (int) (dy*dMultValue); + + System.Drawing.Color color = srcBmp.GetPixel(i, j); + if (nOldX >= 0 && nOldX < destBmp.Width + && nOldY >= 0 && nOldY < destBmp.Height) + { + destBmp.SetPixel(nOldX, nOldY, color); + } + } + } + return destBmp; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/ConfigurationDictionary.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/ConfigurationDictionary.cs new file mode 100644 index 0000000..c9b9d78 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/ConfigurationDictionary.cs @@ -0,0 +1,23 @@ +using System.Configuration; + +namespace Ops.Framework.Web.unused +{ + public static class ConfigurationDictionary + { + /// + /// 是否记录错误 + /// + internal static bool RecordError = ConfigurationManager.AppSettings["recordError"] == "true"; + + /// + /// 报告错误的地址 + /// + internal static string ReportErrorUri = System.Configuration.ConfigurationManager.AppSettings["errorReportUri"]; + + /// + /// 是否启用压缩 + /// + internal static bool EnableCompression = + System.Configuration.ConfigurationManager.AppSettings["enableCompression"] == "True"; + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/ExceptionProcess.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/ExceptionProcess.cs new file mode 100644 index 0000000..34d9623 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/ExceptionProcess.cs @@ -0,0 +1,107 @@ +/* + * file : exceptionProcess + * author: OPS newmin + * Date : 2010/09/20 + */ + +using System; +using System.IO; +using System.Net; +using System.Text; +using System.Web; + +namespace Ops.Framework.Web.unused +{ + public static class ExceptionProcess + { + /// + /// 记录错误,记录的文件路径为~/Logs/error.log + /// + /// + /// 当前请求上下文 + /// 触发的异常 + public static void TraceError(HttpContext context, Exception e) + { + StringBuilder sb = new StringBuilder(3000); + sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) + .Append("\tip:").Append(context.Request.UserHostAddress).Append(" \tpath:") + .Append(context.Request.Url.PathAndQuery).Append("\r\n").Append('-', 100).Append("\r\n") + .Append("[message]:").Append(e.Message).Append(" [type]:").Append(e.GetType().ToString()) + .Append("\r\n").Append("[stack]:").Append(e.StackTrace).Append("\r\n"); + using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) + { + sw.WriteLine(sb.ToString()); + sw.Flush(); + sw.Close(); + } + } + + /// + /// 处理远程提交的错误 + /// + /// + /// 当前请求上下文 + /// 触发的异常 + /// 错误地址 + /// ip地址 + public static void PostError(HttpContext context, string errorUri, string ip, string type, string msg, + string trace) + { + StringBuilder sb = new StringBuilder(3000); + sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) + .Append("\tip:").Append(ip).Append(" \tpath:") + .Append(errorUri).Append("\r\n").Append('-', 100).Append("\r\n") + .Append("[message]:").Append(msg).Append(" [type]:").Append(type) + .Append("\r\n").Append("[stack]:").Append(trace).Append("\r\n"); + + using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) + { + sw.WriteLine(sb.ToString()); + sw.Flush(); + sw.Close(); + } + } + + /// + /// 提交错误到远程地址 + /// + /// 当前请求上下文 + /// 接收错误的远程uri + /// 错误地址 + /// 用户IP + /// 错误异常类型 + /// 错误异常消息 + /// 错误异常堆栈 + public static void PostRemoteError(HttpContext context, string remoteUri, Exception e) + { + string reportUri = remoteUri, param = null; + if (string.IsNullOrEmpty(reportUri)) return; + if (reportUri.IndexOf("?") != -1) + { + param = reportUri.Substring(reportUri.IndexOf("?") + 1) + "&"; + reportUri = reportUri.Substring(0, reportUri.IndexOf("?")); + } + StringBuilder sb = new StringBuilder(); + sb.Append(context.Request.Url.ToString().Replace(",", "__")) + .Append(",").Append(context.Request.UserHostAddress).Append(",").Append(e.GetType().ToString()) + .Append(",").Append(e.Message).Append(",").Append(e.StackTrace.Replace(",", "__")); + + param += "error=" + HttpUtility.HtmlEncode(sb.ToString()); + + // context.Response.Write("提交前的参数
                                                                                                                                            " + param); + + WebRequest wr = WebRequest.Create(reportUri); + wr.Method = "POST"; + wr.ContentType = "application/x-www-form-urlencoded"; + wr.ContentLength = param.Length; + using (Stream stream = wr.GetRequestStream()) + { + stream.Write(Encoding.UTF8.GetBytes(param), 0, param.Length); + wr.GetResponse(); + //StreamReader sr = new StreamReader(wr.GetResponse().GetResponseStream()); + //context.Response.Write("接收到的参数:"+sr.ReadToEnd()); + //context.Response.End(); + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/ExecuteHandler.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/ExecuteHandler.cs new file mode 100644 index 0000000..cd319cd --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/ExecuteHandler.cs @@ -0,0 +1,121 @@ +/* * + * name : ExecuteHandler.cs + * author : OPS newmin + * date : 09/29 2010 + * note : 用来处理请求,请求的URI参数如:Exc.ashx?cmd=IP,GetIP,127.0.0.1 + * + * 要执行操作的类必需要程序集名称命名空间下: + * 如要执行OPS.Security下的User类,则User类的命名空间为:OPS.Security.User + * 调用方式**.ashx?cmd=User,GetScore,newmin + * + * 2010/10/18 [+] newmin:新增Uri参数task + * 2010/10/18 [!] newmin:修正returnObj为空返回ToString()的Bug + * 2010/11/05 [!] newmin:修正不能接收Session的Bug + * 2010/12/03 [!] nwemin:修正_type为静态类不能创建多个ExecuteHandler的Bug + * 2010/12/06 [+] newmin:添加query支持,可采用*.ashx?class,method,parameters调用 + * [+] newmin:添加无参数时候提示信息 + * [!] newmin:修正不传参数无法返回结果的BUG + * [!] newmin:修正query为?xxxx时候xxxx参数不合法的验证 + * [+] newmin:将cmd参数该为do + * */ + +using System; +using System.Reflection; +using System.Web; + +namespace Ops.Framework.Web.unused.Handler +{ + public abstract class ExecuteHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState + { + /// + /// 绑定类型用于获取程序集及类型的命名空间 + /// + protected Type handlerType; + + private static char[] chars = {',', ':'}; + + #region IHttpHandler 成员 + + public bool IsReusable { get; set; } + + public void ProcessRequest(HttpContext context) + { + //包含参数task或query包含,号,如?task=class,method或?class,method + + string task = context.Request["do"] ?? ( + context.Request.Url.Query.IndexOfAny(chars) != -1 + ? context.Request.Url.Query.Replace("?", "") + : context.Request["task"]); + + if (String.IsNullOrEmpty(task)) + { + context.Response.Write("ExecuteHandler组件 Power by OPSoft"); + return; + } + else task = task.Replace("+", " "); //将空格做为+号替换 + string[] args = task.Split(chars); + if (args.Length >= 2) + { + //获取执行当前代码的程序集并创建实例 + Assembly ass = Assembly.GetAssembly(handlerType); + object obj = ass.CreateInstance(handlerType.Namespace + "." + args[0], true); + + //获取实例类型 + Type type; + try + { + type = obj.GetType(); + } + catch + { + throw new Exception("无法在命名空间:" + handlerType.Namespace + "下找到类型:" + args[0]); + } + + //未添加WebExecuteAttribute特性的类将不被执行 + object[] attrs = type.GetCustomAttributes(true); + + bool canExecute = false; + IWebExecute iw; + foreach (object o in attrs) + { + //如果添加IWebExecuteableAttribute特性 + //则调用其PreExecuting方法 + iw = o as IWebExecute; + if (iw != null) iw.PreExecuting(); + else + { + //如果添加了WebExecuteableAttribute特性,则允许执行 + if (o as WebExecuteableAttribute != null) canExecute = true; + } + } + if (!canExecute) + { + context.Response.Write("此模块不允许被执行!请在需要执行的类名上添加WebExecuteable特性!"); + return; + } + + //获取方法,及方法上的IWebExecuteableAttribute特性, + //并调用起PreExecuting方法 + MethodInfo method = type.GetMethod(args[1], + BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); + IWebExecute[] execAttr = Array.ConvertAll(method.GetCustomAttributes(false), a => a as IWebExecute); + foreach (IWebExecute a in execAttr) a.PreExecuting(); + //执行方法 + + object returnObj; + + returnObj = method.GetParameters().Length != 0 && args.Length > 2 + ? method.Invoke(obj, task.Substring(args[0].Length + args[1].Length + 2).Split(',')) + : method.Invoke(obj, null); + + + //如国返回String类型或值类型则输出到页面 + bool isValueType = returnObj is ValueType; + if (isValueType || method.ReturnType == typeof (string)) + context.Response.Write((isValueType ? returnObj : returnObj ?? "").ToString()); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/HttpMethodAttribute.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/HttpMethodAttribute.cs new file mode 100644 index 0000000..b88a86c --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/HttpMethodAttribute.cs @@ -0,0 +1,68 @@ +/* + * Name : HttpMethodAttribute + * Author : OPS newmin + * Date : 2010/10/26 10:05 + */ + +using System; +using System.Web; + +namespace Ops.Framework.Web.unused.Handler +{ + /// + /// Post请求特性 + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class GetAttribute : Attribute, IWebExecute + { + /// + /// 允许刷新的时间戳,在时间内将停止请求 + /// + public int AllowRefreshMillliSecond { get; set; } + + /// + /// 刷新错误提示信息 + /// + public string RefreshErrorMessage { get; set; } + + public void PreExecuting() + { + if (AllowRefreshMillliSecond > 0) + { + TimeSpan t = new TimeSpan(0, 0, 0, 0, AllowRefreshMillliSecond); + object lastAccessDate = HttpContext.Current.Session["_lastaccessdatetime"]; + if (lastAccessDate == null) HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 + else + { + bool isTimeout = DateTime.Now - (DateTime) lastAccessDate < t; //是否超过指定的再次请求时间 + HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 + if (isTimeout) + { + HttpContext.Current.Response.Write(String.IsNullOrEmpty(RefreshErrorMessage) + ? "Service unavailable!" + : RefreshErrorMessage); + HttpContext.Current.Response.End(); + } + } + } + } + } + + /// + /// Post请求特性 + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] + public sealed class PostAttribute : GetAttribute, IWebExecute + { + void IWebExecute.PreExecuting() + { + //POST请求 + if (HttpContext.Current.Request.HttpMethod != "POST") + { + HttpContext.Current.Response.Write("请求非法"); + HttpContext.Current.Response.End(); + } + base.PreExecuting(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/IWebExecute.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/IWebExecute.cs new file mode 100644 index 0000000..8b102fe --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/IWebExecute.cs @@ -0,0 +1,19 @@ +/* + * name : IWebExecuteableAttribute + * author : Newmin + * date : 2010/11/05 + */ + +namespace Ops.Framework.Web.unused.Handler +{ + /// + /// 能被WebHandler(.ashx文件)执行的特性接口 + /// + public interface IWebExecute + { + /// + /// 在执行前触发此方法 + /// + void PreExecuting(); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/WebExecuteableAttribute.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/WebExecuteableAttribute.cs new file mode 100644 index 0000000..be6770a --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Handler/WebExecuteableAttribute.cs @@ -0,0 +1,19 @@ +/* + * name : WebExecuteAttribute + * author : OPS newmin + * Data : 09/20 2010 + * note : 添加此特性才能被ExecuteHandler用反射的方式调用 + */ + +using System; + +namespace Ops.Framework.Web.unused.Handler +{ + /// + /// 可通过页面请求执行类的操作 + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public sealed class WebExecuteableAttribute : Attribute + { + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/HttpModule/HttpModuleBase.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/HttpModule/HttpModuleBase.cs new file mode 100644 index 0000000..a42570b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/HttpModule/HttpModuleBase.cs @@ -0,0 +1,51 @@ +/* + * file : HttpModuleBase + * author:OPS newmin + * createdate:2010/09/20 + */ + +using System; +using System.Web; + +namespace Ops.Framework.Web.unused.HttpModule +{ + public abstract class HttpModuleBase : IHttpModule + { + public void Dispose() + { + } + + public void Init(HttpApplication context) + { + //Bind Events + context.BeginRequest += BeginRequest; + context.Error += ProcessError; + context.EndRequest += EndRequest; + } + + /// + /// 开始处理请求时发生 + /// + /// HttpApplication + /// + public abstract void BeginRequest(object sender, EventArgs e); + + /// + /// 当发生错误的时候处理 + /// + /// + /// + public virtual void ProcessError(object sender, EventArgs e) + { + } + + /// + /// 当请求结束时候发生 + /// + /// + /// + public virtual void EndRequest(object sender, EventArgs e) + { + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/HttpModule/HttpReportModule.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/HttpModule/HttpReportModule.cs new file mode 100644 index 0000000..cc166db --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/HttpModule/HttpReportModule.cs @@ -0,0 +1,42 @@ +/* + * file : HttpReportModule + * author:OPS newmin + * createdate:2010/09/20 + */ + +using System; +using System.Web; + +namespace Ops.Framework.Web.unused.HttpModule +{ + public class HttpReportModule : HttpModuleBase + { + public override void ProcessError(object sender, EventArgs e) + { + HttpContext context = (sender as HttpApplication).Context; + // 记录错误:文件保存在/Logs/error.log + // 以下情况会将错误日志保存在当前应用程序目录下 + // 1.errorReportUri为空 + // 2.web.config中未配置errorReportUri节点 + // 3.errorReportUri键值的domain与当前域一致且当前域不为虚拟目录 + // 其他情况将提交到errorReportUri + + if (ConfigurationDictionary.RecordError) + { + Exception ex = context.Server.GetLastError().InnerException; + string remoteuri = ConfigurationDictionary.ReportErrorUri ?? ""; + string domain = context.Request.Url.Host; + + if (String.IsNullOrEmpty(remoteuri) || + (remoteuri.IndexOf(domain) != -1 && HttpContext.Current.Request.ApplicationPath == "/")) + ExceptionProcess.TraceError(HttpContext.Current, ex); //当前程序域处理错误 + else + ExceptionProcess.PostRemoteError(HttpContext.Current, remoteuri, ex); //不同域或当前域的虚拟目录处理错误 + } + } + + public override void BeginRequest(object sender, EventArgs e) + { + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Interface/ICompressionable.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Interface/ICompressionable.cs new file mode 100644 index 0000000..72ef56b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Web/unused/Interface/ICompressionable.cs @@ -0,0 +1,12 @@ +using System.Web.UI; + +namespace Ops.Framework.Web.unused.Interface +{ + /// + /// 压缩网页接口 + /// + public interface ICompressionable + { + void Compression(HtmlTextWriter writer); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/AutoObjectXml.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/AutoObjectXml.cs new file mode 100644 index 0000000..4658629 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/AutoObjectXml.cs @@ -0,0 +1,512 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Xml; + +namespace Ops.Framework.Xml.AutoObject +{ + /// + /// 对象属性 + /// + public struct XmlObjectProperty + { + private string key; + private string name; + private string descript; + + /// + /// 属性键 + /// + public string Key + { + get { return key; } + } + + /// + /// 属性对应的名称 + /// + public string Name + { + get { return name; } + } + + public string Descript + { + get { return descript; } + } + + public XmlObjectProperty(string key, string name) + { + this.key = key; + this.name = name; + this.descript = ""; + } + + public XmlObjectProperty(string key, string name, string descript) + { + this.key = key; + this.name = name; + this.descript = descript; + } + } + + /// + /// XmlObject特性 + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] + public class XmlObjectAttribute : Attribute + { + public string Name { get; set; } + public string Descript { get; set; } + + public XmlObjectAttribute(string name, string description) + { + this.Name = name; + this.Descript = description; + } + } + + + /// + /// XmlObject + /// + public class XmlObject + { + private string key; + private string name; + private string descript; + + /// + /// 属性键 + /// + public string Key + { + get { return key; } + } + + /// + /// 属性对应的名称 + /// + public string Name + { + get { return name; } + } + + /// + /// 描述/值 + /// + public string Descript + { + get { return descript; } + } + + public XmlObject(string key, string name, string descript) + { + this.key = key; + this.name = name; + this.descript = descript; + } + + public XmlObjectProperty[] Properties { get; set; } + + /// + /// 转换为Json + /// + /// + public string ToJson() + { + StringBuilder sb = new StringBuilder(); + sb.Append("{'key':'") + .Append(this.key.Replace("'", "\\'")) + .Append("','name':'") + .Append((this.name ?? "").Replace("'", "\\'")) + .Append("','descript':'") + .Append((this.descript ?? "").Replace("'", "\\'")) + .Append("','properties':"); + + //添加属性 + if (this.Properties == null || this.Properties.Length == 0) + { + sb.Append("[]"); + } + else + { + int i = 0; + + sb.Append("["); + + foreach (XmlObjectProperty pro in this.Properties) + { + if (i++ != 0) + { + sb.Append(","); + } + sb.Append("{'key':'") + .Append(pro.Key.Replace("'", "\\'")) + .Append("','name':'") + .Append((pro.Name ?? "").Replace("'", "\\'")) + .Append("','descript':'") + .Append((pro.Descript ?? "").Replace("'", "\\'")) + .Append("'}"); + } + + sb.Append("]"); + } + + sb.Append("}"); + + return sb.ToString(); + } + + /// + /// 将对象列表转换为json + /// + /// + /// + public static string ToJson(IEnumerable objects) + { + StringBuilder sb = new StringBuilder(); + int i = 0; + + sb.Append("["); + + foreach (XmlObject obj in objects) + { + if (i++ != 0) + { + sb.Append(","); + } + sb.Append(obj.ToJson()); + } + + sb.Append("]"); + + return sb.ToString(); + } + } + + + /// + /// XmlObject特性 + /// + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] + public class XmlObjectPropertyAttribute : Attribute + { + public string Name { get; set; } + public string Descript { get; set; } + + public XmlObjectPropertyAttribute(string name) + { + this.Name = name; + } + + public XmlObjectPropertyAttribute(string name, string descript) + { + this.Name = name; + this.Descript = descript; + } + } + + public class AutoObjectXml + { + private string filePath; + private XmlDocument xd; + private XmlNode rootNode; + + public AutoObjectXml(string filePath) + { + this.filePath = filePath; + + if (!File.Exists(this.filePath)) + { + File.Create(filePath).Dispose(); + const string initData = "\r\n\r\n"; + + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(this.filePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + + using (TextReader tr = new StreamReader(this.filePath)) + { + xd = new XmlDocument(); + //this.xmlContent = tr.ReadToEnd(); + xd.LoadXml(tr.ReadToEnd()); + + XmlNode xnode = xd.SelectSingleNode("//objects"); + if (xnode == null) + { + throw new NotSupportedException("XML文件中不包含objects节点"); + } + + this.rootNode = xnode; + tr.Dispose(); + } + } + + + /// + /// 获取Objects根节点 + /// + /// + private XmlNode __GetObjectsNode() + { + XmlNode xnode = xd.SelectSingleNode("//objects"); + if (xnode == null) + { + throw new NotSupportedException("XML文件中不包含objects节点"); + } + return xnode; + } + + /// + /// 插入对象到objects节点 + /// + /// + /// + /// + /// + /// + public bool InsertObjectNode(string key, string name, string descript, params XmlObjectProperty[] properties) + { + if (rootNode.SelectSingleNode(String.Format("object[@key='{0}']", key)) != null) return false; //已经存在属性 + XmlNode tempNode; + XmlNode node = xd.CreateElement("object"); + XmlAttribute attr = xd.CreateAttribute("key"); + + //add Key + attr.Value = key; + node.Attributes.Append(attr); + + //add Name + attr = xd.CreateAttribute("name"); + attr.Value = name; + node.Attributes.Append(attr); + + //add Descript + tempNode = xd.CreateElement("descript"); + XmlCDataSection cdd = xd.CreateCDataSection(descript); + tempNode.AppendChild(cdd); + node.AppendChild(tempNode); + + XmlNode attrNode = xd.CreateElement("properties"); + + foreach (XmlObjectProperty obj in properties) + { + //add Property + tempNode = xd.CreateElement("property"); + attr = xd.CreateAttribute("key"); + attr.Value = obj.Key; + tempNode.Attributes.Append(attr); + + attr = xd.CreateAttribute("name"); + attr.Value = obj.Name; + tempNode.Attributes.Append(attr); + + if (!String.IsNullOrEmpty(obj.Descript)) + { + cdd = xd.CreateCDataSection(obj.Descript); + tempNode.AppendChild(cdd); + } + + attrNode.AppendChild(tempNode); + } + node.AppendChild(attrNode); + + //add object + rootNode.AppendChild(node); + + + return true; + } + + /// + /// 从dll读取并插入,对象需指定XmlObject特性,属性可选XmlObjectProperty特性 + /// + /// + /// + public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute, string checkNameSpace) + { + if (!File.Exists(dllPath)) throw new FileNotFoundException(); + Assembly ass = Assembly.LoadFile(dllPath); + bool ckNs = checkNameSpace != null; //是否从指定的命名空间加载 + Type[] types = ass.GetTypes(); + foreach (Type t in types) + { + if (ckNs && !t.Namespace.StartsWith(checkNameSpace)) + { + continue; + } + + this.InsertFromType(t, includeNoProperyAttribute); + } + } + + /// + /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 + /// + /// + /// + public void InsertFromDLL(string dllPath, string checkNameSpace) + { + this.InsertFromDLL(dllPath, false, checkNameSpace); + } + + /// + /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 + /// + /// + /// + public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute) + { + this.InsertFromDLL(dllPath, includeNoProperyAttribute, null); + } + + + private delegate void MemberXmlObjectHandler(MemberInfo member); + + public void InsertFromType(Type type, bool includeNoProperyAttribute) + { + Type t = type; + //加载类型 + object[] objs = t.GetCustomAttributes(typeof (XmlObjectAttribute), false); + if (objs.Length == 0) return; + + XmlObjectAttribute xa = (XmlObjectAttribute) objs[0]; + XmlObjectPropertyAttribute xpa = null; + IList list = new List(); + object[] objAtt; + XmlObjectProperty pro; + + MemberXmlObjectHandler handler = (p) => + { + objAtt = p.GetCustomAttributes(typeof (XmlObjectPropertyAttribute), true); + xpa = objAtt.Length == 0 ? null : (XmlObjectPropertyAttribute) objAtt[0]; + + if (xpa != null || includeNoProperyAttribute) + { + list.Add(new XmlObjectProperty( + p.Name, + xpa == null || xpa.Name == null ? p.Name : xpa.Name, + xpa == null || xpa.Name == null ? "" : xpa.Descript) + ); + } + }; + + + foreach (PropertyInfo p in t.GetProperties(BindingFlags.Public | BindingFlags.Instance)) + { + handler(p); + } + + foreach (MethodInfo p in t.GetMethods(BindingFlags.Public | BindingFlags.Instance)) + { + handler(p); + } + + this.InsertObjectNode(t.Name, xa.Name ?? t.Name, xa.Descript ?? "", list.ToArray()); + } + + /// + /// 删除指定前缀的对象 + /// + /// + public void RemoveObjects(string prefix) + { + XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); + foreach (XmlNode x in list) + { + if (x.Attributes["key"].Value.StartsWith(prefix)) + { + this.rootNode.RemoveChild(x); + } + } + } + + /// + /// 删除所有对象 + /// + public void RemoveAllObjects() + { + XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); + foreach (XmlNode x in list) + { + this.rootNode.RemoveChild(x); + } + } + + public XmlObject GetObject(string objectKey) + { + XmlNode node = this.rootNode.SelectSingleNode(String.Format("object[@key='{0}']", objectKey)); + if (node == null) return null; + + IList prolist = new List(); + XmlObject obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, + node.SelectSingleNode("descript").InnerText); + XmlNodeList proNodes = node.SelectNodes("properties/property"); + foreach (XmlNode n in proNodes) + { + prolist.Add(new XmlObjectProperty( + n.Attributes["key"].Value, + n.Attributes["name"].Value, + n.InnerText)); + } + + obj.Properties = prolist.ToArray(); + + return obj; + } + + /// + /// 获取所有对象 + /// + /// + public IEnumerable GetObjects() + { + IList prolist = new List(); + + XmlNodeList nodes = this.rootNode.SelectNodes("object"); + XmlObject obj; + XmlNodeList proNodes; + foreach (XmlNode node in nodes) + { + obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, + node.SelectSingleNode("descript").InnerText); + proNodes = node.SelectNodes("properties/property"); + + prolist.Clear(); + foreach (XmlNode n in proNodes) + { + prolist.Add(new XmlObjectProperty( + n.Attributes["key"].Value, + n.Attributes["name"].Value, + n.InnerText)); + } + obj.Properties = prolist.ToArray(); + + yield return obj; + } + } + + /// + /// 保存到文件中 + /// + public void Flush() + { + /* + using (TextWriter tr = new StreamWriter(this.filePath)) + { + tr.Write(xmlContent); + tr.Flush(); + tr.Dispose(); + }*/ + + xd.Save(this.filePath); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/AutoXmlTest.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/AutoXmlTest.cs new file mode 100644 index 0000000..edbe7cd --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/AutoXmlTest.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Web; + +namespace Ops.Framework.Xml.AutoObject +{ + public class AutoXmlTest + { + public static void Test() + { + Xml.AutoObject.AutoObjectXml ax = + new Xml.AutoObject.AutoObjectXml(AppDomain.CurrentDomain.BaseDirectory + "templet/template_dict.xml"); + + ax.RemoveAllObjects(); + + //ax.RemoveObjects("Pro"); + + ax.InsertObjectNode("Temp", "客户", "", new XmlObjectProperty("ID", "客户编号", "1234\nretyt\nfdsf"), + new XmlObjectProperty("RealName", "真实姓名")); + ax.InsertFromDLL(AppDomain.CurrentDomain.BaseDirectory + "bin/spc.dll", null); + ax.Flush(); + + HttpResponse response = HttpContext.Current.Response; + + response.Write(XmlObjectDoc.DocStyleSheet); + + //显示单个对象文档 + // XmlObject obj = ax.GetObject("Temp"); + // response.Write(XmlObjectDoc.GetGrid(obj,-1)); + + + IList objects = new List(ax.GetObjects()); + + response.Write("

                                                                                                                                            Objects

                                                                                                                                            "); + + for (int i = 0; i < objects.Count; i++) + { + response.Write(XmlObjectDoc.GetGrid(objects[i], i + 1)); + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/XmlObjectDoc.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/XmlObjectDoc.cs new file mode 100644 index 0000000..fff4c6b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/AutoObject/XmlObjectDoc.cs @@ -0,0 +1,50 @@ +using System.Text; + +namespace Ops.Framework.Xml.AutoObject +{ + public static class XmlObjectDoc + { + public const string DocStyleSheet = @""; + + public static string GetGrid(XmlObject obj, int index) + { + const string tpl = @"
                                                                                                                                            +

                                                                                                                                            %object.index%%object.name%(%object.key%)

                                                                                                                                            +

                                                                                                                                            描述:%object.descript%

                                                                                                                                            +

                                                                                                                                            + + + %object.prop% +
                                                                                                                                            属性键:属性名称:备注:
                                                                                                                                            +

                                                                                                                                            +
                                                                                                                                            "; + + + StringBuilder sb = new System.Text.StringBuilder(); + + if (obj.Properties != null) + { + foreach (XmlObjectProperty p in obj.Properties) + { + sb.Append("").Append(p.Key) + .Append("").Append(p.Name).Append("") + .Append(p.Descript).Append(" "); + } + } + + return tpl.Replace("%object.key%", obj.Key) + .Replace("%object.index%", index < 1 ? "" : index.ToString()) + .Replace("%object.name%", obj.Name) + .Replace("%object.descript%", obj.Descript.Replace("\n", "
                                                                                                                                            ")) + .Replace("%object.prop%", sb.ToString()); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/XmlDocHelper.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/XmlDocHelper.cs new file mode 100644 index 0000000..dfb7f94 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Framework/Xml/XmlDocHelper.cs @@ -0,0 +1,24 @@ +/* + * XMLDocument + * + * Copyright 2010 OPS,All rights reseved! + * date : 2010/11/22 + */ + +using System; +using System.Xml; + +namespace Ops.Framework.Xml +{ + [Obsolete] + public class XmlDocHelper + { + public static object ReadAttributeValue(string xmlPath, string xpath) + { + XmlDocument x = new XmlDocument(); + x.Load(xmlPath); + XmlNode xn = x.SelectSingleNode(xpath); + return xn.Value; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/MicroTemplateEngine.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/MicroTemplateEngine.cs new file mode 100644 index 0000000..36b2fd6 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/MicroTemplateEngine.cs @@ -0,0 +1,131 @@ +/* +* Copyright(C) 2010-2012 OPSoft Inc +* +* File Name : SimpleTemplateEngine +* Author : Administrator +* Create : 2012/10/26 23:49:52 +* Description : +* +*/ + +using System; +using System.Reflection; +using System.Text.RegularExpressions; + +namespace Ops +{ + /// + /// 微型模板引擎 + /// + public sealed class MicroTemplateEngine + { + /// + /// 包含方法的类型实例 + /// + private readonly object _classInstance; + + public MicroTemplateEngine(object classInstance) + { + this._classInstance = classInstance; + } + + /// + /// 数据列正则 + /// + private static Regex fieldRegex = new Regex("{([a-z\\[\\]0-9_\u4e00-\u9fa5]+)}"); + + /// + /// 执行解析模板内容 + /// + /// 包含标签方法的类的实例 + /// + /// + public static string Execute(object instance, string html) + { + string resultTxt = html; //返回结果 + + const string tagPattern = "\\$([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; + const string paramPattern = "\\s*'([^']+)',*|\\s*(?!=')([^,]+),*"; + + Regex tagRegex = new Regex(tagPattern); //方法正则 + Regex paramRegex = new Regex(paramPattern); //参数正则 + + Type type = instance.GetType(); + MethodInfo method; + string tagName; + object[] parameters; + Type[] parameterTypes; //参数类型数组 + MatchCollection paramMcs; + + resultTxt = tagRegex.Replace(resultTxt, m => + { + tagName = m.Groups[1].Value; + //获得参数 + paramMcs = paramRegex.Matches(m.Groups[2].Value); + parameters = new object[paramMcs.Count]; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parameters.Length]; + for (int i = 0; i < parameterTypes.Length; i++) + { + parameterTypes[i] = typeof (String); + } + method = type.GetMethod( + tagName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + //如果方法存在则执行返回结果,否则返回原始值 + if (method == null) + { + return m.Value; + } + else + { + //数字参数 + string intParamValue; + //则给参数数组赋值 + for (int i = 0; i < paramMcs.Count; i++) + { + intParamValue = paramMcs[i].Groups[2].Value; + if (intParamValue != String.Empty) + { + parameters[i] = intParamValue; + } + else + { + parameters[i] = paramMcs[i].Groups[1].Value; + } + } + + //执行方法并返回结果 + return method.Invoke(instance, parameters).ToString(); + } + }); + return resultTxt; + } + + /// + /// 执行解析模板内容 + /// + /// + /// + public string Execute(string html) + { + return Execute(this._classInstance, html); + } + + /// + /// 替换列中的模板字符 + /// + /// + /// + /// + public string FieldTemplate(string format, Func func) + { + return fieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/OPS.Core.cd b/src/OPS.Library/Source Code/OPSoft.CoreLib/OPS.Core.cd similarity index 100% rename from J6/src/core/J6.DevFw.Core/OPS.Core.cd rename to src/OPS.Library/Source Code/OPSoft.CoreLib/OPS.Core.cd diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/OPSoft.Core.csproj b/src/OPS.Library/Source Code/OPSoft.CoreLib/OPSoft.Core.csproj new file mode 100644 index 0000000..97f17ac --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/OPSoft.Core.csproj @@ -0,0 +1,144 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291} + Library + Properties + Ops + opscore + v4.0 + 512 + + + + true + full + false + ..\Bin\ + TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + true + + + ops.core.snk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + + + + + + + + ASPXCodeBehind + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/AtNet.DevFw.Core.csproj.user b/src/OPS.Library/Source Code/OPSoft.CoreLib/OPSoft.Core.csproj.user similarity index 100% rename from J6/src/core/J6.DevFw.Core/AtNet.DevFw.Core.csproj.user rename to src/OPS.Library/Source Code/OPSoft.CoreLib/OPSoft.Core.csproj.user diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..fb546d1 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Properties/AssemblyInfo.cs @@ -0,0 +1,45 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security; + +//公钥: 4c8227bc503db3c5 +// 4C8227BC503DB3C5 + +// 有关程序集的常规信息通过下列属性集 +// 控制。更改这些属性值可修改 +// 与程序集关联的信息。 + +[assembly: AllowPartiallyTrustedCallers] +[assembly: AssemblyTitle("OPSoft.CoreLib ,dotnet平台框架")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("OPSoft INC (www.ops.cc)")] +[assembly: AssemblyProduct("OPSoft.CoreLibrary")] +[assembly: AssemblyCopyright("Copyright © OPSoft 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 属性设置为 true。 + +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID + +[assembly: Guid("bfe2a768-6248-4749-90d9-6b3a754dc758")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("2.1.0.0")] +[assembly: AssemblyFileVersion("2.1.0.0")] \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/JsonParser.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/JsonParser.cs new file mode 100644 index 0000000..16d7b70 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/JsonParser.cs @@ -0,0 +1,215 @@ +// +// Copyright (C) 2007-2008 OPSoft INC,All rights reseved. +// +// Project: OPSoft.JSON +// FileName : JsonAnalyzer.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2011/11/26 21:14:30 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace Ops.Utils +{ + /// + /// JSON分析器 + /// + public class JsonAnalyzer + { + private string jsonString; + private IList keys = new List(); + + public JsonAnalyzer(string json) + { + if (String.IsNullOrEmpty(json)) + { + this.jsonString = "{}"; + } + else + { + this.jsonString = json; + + //将字符中的键存到列表中 + const string pattern = "[\\{,]([^:]+):"; + MatchCollection mc = Regex.Matches(this.jsonString, pattern); + + foreach (Match m in mc) + { + keys.Add(m.Groups[1].Value); + } + } + } + + /// + /// 键的集合 + /// + public string[] Keys + { + get + { + string[] arr = new string[keys.Count]; + keys.CopyTo(arr, 0); + return arr; + } + } + + + /// + /// 获取指定键的值 + /// + /// + /// + public string GetValue(string key) + { + // Regex reg = new Regex(key+String.Intern(":'*(?[^'|,|\\}]+)")); + Regex reg = new Regex(key + String.Intern(":(?'[^']+|(?!')[^,|}]+)")); + if (reg.IsMatch(jsonString)) + { + return reg.Match(jsonString).Groups["value"].Value.Replace("'", String.Empty); + } + return String.Empty; + } + + /// + /// 设置指定键的值并返回新的JSON字符串,如果不存在键,则返回空 + /// + public string SetValue(string key, string value) + { + string newJsonString = String.Empty; + + Regex reg = new Regex(key + String.Intern(":(?'*)(?[^'|,|\\}]+)")); + if (reg.IsMatch(jsonString)) + { + if (reg.Match(jsonString).Groups["reff"].Value == "'") + { + value = "'" + value; + } + newJsonString = reg.Replace(jsonString, String.Format("{0}:{1}", key, value)); + + //更新到数据 + jsonString = newJsonString; + } + + return newJsonString; + } + + /// + /// 添加新的键值,如果存在键返回false + /// + /// + /// + /// + public bool Append(string key, string value) + { + Regex reg = new Regex(key + String.Intern(":(?'*)(?[^'|,|\\}]+)")); + if (reg.IsMatch(jsonString)) return false; + else + { + StringBuilder sb = new StringBuilder(); + sb.Append(this.jsonString.Substring(0, this.jsonString.LastIndexOf('}'))); + if (sb.Length != 1) + { + sb.Append(","); + } + + sb.Append(key).Append(":'").Append(value).Append("'") + .Append("}"); + + keys.Add(key); //添加到KEYS集合 + this.jsonString = sb.ToString(); //更新到数据 + + return true; + } + } + + public IDictionary ConvertToDictionary() + { + return ConvertToDictionary(jsonString); + } + + /// + /// 将JSON转为字典 + /// + /// + /// + public static IDictionary ConvertToDictionary(string jsonString) + { + IDictionary dict = new Dictionary(); + const string pattern = "(?(?!\\{|,|')[^:]+):(?'[^']+|(?!')[^,|}]+)"; //非{和'以及,开头,匹配键和值 + Regex reg = new Regex(pattern); + if (reg.IsMatch(jsonString)) + { + MatchCollection mc = reg.Matches(jsonString); + foreach (Match m in mc) + { + dict.Add(m.Groups["key"].Value, m.Groups["value"].Value.Replace("'", String.Empty)); + } + } + return dict; + } + + /// + /// 将Hashtable转为Json字符串 + /// + /// + /// + public static string ToJson(Hashtable hash) + { + StringBuilder sb = new StringBuilder(); + var fieldCount = hash.Count; + int i = 0; + sb.Append("{"); + foreach (object key in hash.Keys) + { + sb.Append("\"").Append(key).Append("\":"); + if ((hash[key] as string) != null) + { + if (hash[key].ToString().StartsWith("[")) + { + sb.Append(hash[key].ToString()); + } + else + { + sb.Append("\"").Append(hash[key].ToString()).Append("\""); + } + } + else + { + if (hash[key].ToString() == "True" || hash[key].ToString() == "False") + { + sb.Append(hash[key].ToString().ToLower()); + } + else + { + sb.Append(hash[key].ToString()); + } + } + if (++i < fieldCount) + { + sb.Append(","); + } + } + + sb.Append("}"); + + return sb.ToString(); + } + + /// + /// 返回对象的JSON表示 + /// + /// + public override string ToString() + { + return jsonString; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/MultiThreadProcess.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/MultiThreadProcess.cs new file mode 100644 index 0000000..57eaf4c --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/MultiThreadProcess.cs @@ -0,0 +1,119 @@ +/* +* Copyright(C) 2010-2012 OPSoft Inc +* +* File Name : MultiThreadProcess.cs +* Author : Administrator +* Create : 2012/11/11 20:02:29 +* Description : +* +*/ + + +using System; +using System.Collections.Generic; +using System.Threading; + +namespace Ops.Utils +{ + /// + /// 多线程处理事件 + /// + public delegate void ThreadProcessHandler(T t); + + /// + /// 多线程处理 + /// + public class MultiThreadProcess + { + /// + /// 线程数量 + /// + private int threadCount; + + /// + /// 线程堆栈,用于轮询线程 + /// + private Stack threadStack; + + /// + /// 线程集合 + /// + private Thread[] threads; + + private bool isAlive = true; + + /// + /// 是否活动中 + /// + public bool IsAlive + { + get { return isAlive; } + } + + public MultiThreadProcess(int threads, int processTimes) + { + this.threadCount = threads; + this.threads = new Thread[threads]; + + //初始化线程堆栈 + this.threadStack = new Stack(processTimes); + for (int i = processTimes; i > 0; i--) + { + this.threadStack.Push(i); + } + } + + /// + /// 开始执行线程 + /// + /// + /// + /// + public void Start(ThreadProcessHandler handler, T t) + { + while (this.isAlive) + { + for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) + { + if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) + { + threads[i] = new Thread(() => + { + lock (this.threadStack) + { + if (this.threadStack.Count > 0) + { + this.threadStack.Pop(); + handler(t); + } + } + }); + + threads[i].Name = String.Format("thread{0}", i.ToString()); + threads[i].Start(); + } + } + + if (this.threadStack.Count == 0) + { + do + { + bool hasThreadRunning = false; + for (int i = 0; i < threadCount; i++) + { + if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) + hasThreadRunning = true; + } + if (!hasThreadRunning) + { + this.isAlive = false; + } + } while (this.isAlive); + + //设置线程任务完成 + this.isAlive = false; + } + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/ZipUtility.cs b/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/ZipUtility.cs new file mode 100644 index 0000000..e0d8be6 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.CoreLib/Utils/ZipUtility.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Packaging; +using System.Web; + +//(WindowsBase.dll) + +namespace Ops.Utils +{ + public class ZipUtility + { + /// + /// Extract a container Zip. NOTE: container must be created as Open Packaging Conventions (OPC) specification + /// + /// The folder to extract the package to + /// The package file + /// override existing files + /// + public static bool UncompressFile(string folderName, string compressedFileName, bool overrideExisting) + { + bool result = false; + try + { + if (!File.Exists(compressedFileName)) + { + return result; + } + + DirectoryInfo directoryInfo = new DirectoryInfo(folderName); + if (!directoryInfo.Exists) + directoryInfo.Create(); + + using (Package package = Package.Open(compressedFileName, FileMode.Open, FileAccess.Read)) + { + foreach (PackagePart packagePart in package.GetParts()) + { + ExtractPart(packagePart, folderName, overrideExisting); + } + } + + result = true; + } + catch (Exception e) + { + throw new Exception("Error unzipping file " + compressedFileName, e); + } + + return result; + } + + private static void ExtractPart(PackagePart packagePart, string targetDirectory, bool overrideExisting) + { + string stringPart = targetDirectory + HttpUtility.UrlDecode(packagePart.Uri.ToString()).Replace('\\', '/'); + + if (!Directory.Exists(Path.GetDirectoryName(stringPart))) + Directory.CreateDirectory(Path.GetDirectoryName(stringPart)); + + if (!overrideExisting && File.Exists(stringPart)) + return; + using (FileStream fileStream = new FileStream(stringPart, FileMode.Create)) + { + packagePart.GetStream().CopyTo(fileStream); + } + } + + /// + /// Add a folder along with its subfolders to a Package + /// + /// The folder to add + /// The package to create + /// Override exsisitng files + /// + public static bool PackageFolder(string folderName, string compressedFileName, bool overrideExisting) + { + if (folderName.EndsWith(@"\")) + folderName = folderName.Remove(folderName.Length - 1); + bool result = false; + if (!Directory.Exists(folderName)) + { + return result; + } + + if (!overrideExisting && File.Exists(compressedFileName)) + { + return result; + } + try + { + using (Package package = Package.Open(compressedFileName, FileMode.Create)) + { + IEnumerable fileList = null; + // Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); + + + foreach (string fileName in fileList) + { + //The path in the package is all of the subfolders after folderName + string pathInPackage; + pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, string.Empty) + "/" + + Path.GetFileName(fileName); + + Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative)); + PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", + CompressionOption.Maximum); + using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) + { + fileStream.CopyTo(packagePartDocument.GetStream()); + } + } + } + result = true; + } + catch (Exception e) + { + throw new Exception("Error zipping folder " + folderName, e); + } + + return result; + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Core/j6.devfw.snk b/src/OPS.Library/Source Code/OPSoft.CoreLib/ops.core.snk similarity index 100% rename from J6/src/core/J6.DevFw.Core/j6.devfw.snk rename to src/OPS.Library/Source Code/OPSoft.CoreLib/ops.core.snk diff --git a/src/OPS.Library/Source Code/OPSoft.Data/DataTester/DataTester.csproj b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/DataTester.csproj new file mode 100644 index 0000000..2b17f3e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/DataTester.csproj @@ -0,0 +1,70 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {50CB9890-B64F-44F2-BBFF-6D96847E5118} + Exe + Properties + OPS.Data.Test + OPS.Data.Test + v4.0 + + + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693} + OPSoft.Template + + + {A957726C-AF6E-4554-9119-5CDB489937AC} + OPSoft.Data + + + + + \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/DataTester/DataTester.pidb b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/DataTester.pidb new file mode 100644 index 0000000..d443c6c Binary files /dev/null and b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/DataTester.pidb differ diff --git a/src/OPS.Library/Source Code/OPSoft.Data/DataTester/Program.cs b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/Program.cs new file mode 100644 index 0000000..a0f3c11 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/Program.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data.Common; +using Ops.Data; + +namespace Ops.Data.Test +{ + class Program + { + private class Word + { + public int ID { get; set; } + public string Name { get; set; } + public static string ID2 { get; set; } + } + + static void Main(string[] args) + { + + + Test_SQLite(); + + Test_OLEDB(); + + //Test_SQLServer(); + + + Console.ReadLine(); + } + + static void Test_SQLite() + { + const string dbfile = "test.db"; + + DataBaseAccess db = new DataBaseAccess(DataBaseType.SQLite, String.Format("Data Source={0}", dbfile)); + + + // db.ToEntityList("SELECT * FROM test"); + + //return; + + db.ExecuteNonQuery("CREATE TABLE [test](id int,name nvarchar(100))"); + db.ExecuteNonQuery("INSERT INTO [test] values(1,'刘铭')"); + + Random rd = new Random(); + + //插入10条数据 + int i = 0; + do + { + try + { + db.ExecuteNonQuery(String.Format("INSERT INTO [test] values({0},'{1}')", + rd.Next(1, 30) * rd.Next(1, 10), + Guid.NewGuid().ToString())); + } + catch + { + } + + i++; + + } while (i < 5); + + + SqlQuery[] sql=new SqlQuery[5]; + + for (int j = 0; j < sql.Length; j++) + { + sql[j] = new SqlQuery("INSERT INTO [test] values(@id,@name)", new object[,]{ + {"@id",j.ToString()}, + {"@name","user"+j.ToString()} + }); + } + + db.ExecuteNonQuery(sql); + + + //读取第一条数据 + object obj = db.ExecuteScalar("SELECT [name] from test limit 1,2"); + Console.WriteLine(String.Format("第二条数据的值是:{0}", obj)); + + //返回实体读取 + Word w = db.ToEntity("SELECT [id],[name] from test where id=1"); + Console.WriteLine("实体的值为:{0}", w.Name); + + //读取出所有数据 + Console.WriteLine("读取前5条数据"); + db.ExecuteReader("SELECT [id],[name] from test order by id asc limit 0,5", (reader) => + { + while (reader.Read()) + { + Console.WriteLine(String.Format("{0}->{1}", reader.GetInt32(0), reader.GetString(1))); + } + }); + + //读取所有数据 + Console.WriteLine("读取所有数据按ID从小到大排序"); + + IList list = db.ToEntityList("SELECT [ID],[Name] from test order by id asc"); + foreach (Word word in list) + { + Console.WriteLine(String.Format("{0}->{1}", word.ID, word.Name)); + } + + + //删除数据库 + // System.IO.File.Delete(dbfile); + } + + static void Test_SQLServer() + { + Console.WriteLine("\r\n测试MSSqlserver.........."); + + DataBaseAccess db = new DataBaseAccess(DataBaseType.SQLServer, "server=(local);database=fang;uid=sa;pwd=123000"); + db.ExecuteReader("SELECT * FROM ADS", (reader) => + { + while (reader.Read()) + { + Console.WriteLine(reader["Aduser"] + "->" + reader["adtext"]); + } + }); + } + + static void Test_OLEDB() + { + DataBaseAccess db = new DataBaseAccess(DataBaseType.OLEDB, "Provider=Microsoft.JET.OLEDB.4.0;Data Source=test.mdb"); + + db.ExecuteReader("SELECT * FROM test", (reader) => + { + while (reader.Read()) + { + Console.WriteLine(reader["id"] + "->" + reader["name"]); + } + }); + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Data/DataTester/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..456eea5 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("OPS.Data.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("OPS.Data.Test")] +[assembly: AssemblyCopyright("Copyright © 2011")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("f0733143-3e76-4089-aed2-01f7913a1d5a")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/OPS.Library/Source Code/OPSoft.Data/DataTester/app.config b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/app.config new file mode 100644 index 0000000..e365603 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/DataTester/app.config @@ -0,0 +1,3 @@ + + + diff --git a/J6/src/core/J6.DevFw.Data/ClassDiagram1.cd b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ClassDiagram1.cd similarity index 100% rename from J6/src/core/J6.DevFw.Data/ClassDiagram1.cd rename to src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ClassDiagram1.cd diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataBaseAccess.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataBaseAccess.cs new file mode 100644 index 0000000..5a9d652 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataBaseAccess.cs @@ -0,0 +1,676 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : DataBaseAccess.cs +// Date : 8/19/2011 +// Author : +// +// + +using System.Collections; +using System.Text; +using Ops.Data.Extensions; + +namespace Ops.Data +{ + using System; + using System.Collections.Generic; + using System.Data; + using System.Data.Common; + using System.Text.RegularExpressions; + + + public class DataBaseAccess + { + private readonly IDataBase dbFactory; + private static readonly Regex procedureRegex = new Regex("\\s"); + private IList _totalSqls; + private bool _totalOpen; + private int _commandTimeout = 30000; + + /// + /// ʵݿʶ + /// + /// + /// + public DataBaseAccess(DataBaseType type, string connectionString) + { + if (connectionString.IndexOf("$ROOT$") != -1) + { + connectionString = connectionString.Replace("$ROOT$", AppDomain.CurrentDomain.BaseDirectory); + } + + this.DbType = type; + + switch (type) + { + case DataBaseType.OLEDB: + dbFactory = new OleDbFactory(connectionString); + break; + case DataBaseType.SQLite: + dbFactory = new SQLiteFactory(connectionString); + break; + case DataBaseType.MonoSQLite: + dbFactory = new MonoSQLiteFactory(connectionString); + break; + case DataBaseType.SQLServer: + dbFactory = new SqlServerFactory(connectionString); + break; + case DataBaseType.MySQL: + dbFactory = new MySqlFactory(connectionString); + break; + } + } + + /// + /// ִʱʱ䣬ĬΪ30000(30) + /// + public int CommandTimeout + { + get { return this._commandTimeout; } + set + { + if (value <= 2000) + { + throw new ArgumentException("Чֵ"); + } + this._commandTimeout = value; + } + } + + private DbConnection CreateOpenedConnection() + { + DbConnection connection = dbFactory.GetConnection(); + connection.Open(); + return connection; + } + + /// + /// ͳ + /// + public void StartNewTotal() + { + if (!_totalOpen) + _totalOpen = true; + if (_totalSqls == null) + _totalSqls = new List(); + else + _totalSqls.Clear(); + } + + public IList GetTotalSqls() + { + if (this._totalSqls == null) + throw new Exception("ʹStartNewTotal()ʼͳ"); + return this._totalSqls; + } + + private void AddTotalSql(string sql) + { + _totalSqls.Add(sql); + } + + + /// + /// ݿ + /// + public DataBaseType DbType { get; private set; } + + /// + /// ݿ + /// + public IDataBase DataBaseAdapter + { + get { return this.dbFactory; } + } + + /// + /// һ + /// + /// + /// + /// + public DbParameter NewParameter(string name, object value) + { + return dbFactory.CreateParameter(name, value); + } + + private DbCommand CreateCommand(string sql) + { + DbCommand cmd = this.dbFactory.CreateCommand(sql); + cmd.CommandTimeout = this._commandTimeout; + return cmd; + } + + /// + /// һ,ָΪ + /// + /// + /// + /// + /// + public DbParameter NewParameter(string name, object value, ParameterDirection direction) + { + DbParameter parameter = dbFactory.CreateParameter(name, value); + parameter.Direction = direction; + return parameter; + } + + /// + /// ִвѯ + /// + /// + /// + public int ExecuteNonQuery(string commandText) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + return ExecuteNonQuery(commandText, parameters); + } + + /// + /// ִвѯ + /// + /// + /// + /// + public int ExecuteNonQuery(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + + int result = 0; + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; + + cmd.Connection = conn; + if (parameters != null) cmd.Parameters.AddRange(parameters); + + result = cmd.ExecuteNonQuery(); + } + return result; + } + + /// + /// زѯĵһеһֵ + /// + /// + /// + public object ExecuteScalar(string commandText) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + return ExecuteScalar(commandText, parameters); + } + + /// + /// زѯĵһеһֵ + /// + /// + /// + /// + public object ExecuteScalar(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + object obj; + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; + + if (parameters != null) cmd.Parameters.AddRange(parameters); + + obj = cmd.ExecuteScalar(); + } + return obj; + } + + /// + /// ȡDataReaderе + /// + /// + /// + public DbDataReader ExecuteReader(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; + + if (parameters != null) cmd.Parameters.AddRange(parameters); + + return cmd.ExecuteReader(); + } + } + + /// + /// ȡDataReaderе + /// + /// + /// + public void ExecuteReader(string commandText, DataReaderFunc func) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + ExecuteReader(commandText, func, parameters); + } + + /// + /// ȡDataReaderе + /// + /// + /// + /// + public void ExecuteReader(string commandText, DataReaderFunc func, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) + ? CommandType.Text + : CommandType.StoredProcedure; + + if (parameters != null) cmd.Parameters.AddRange(parameters); + + func(cmd.ExecuteReader()); + } + } + + /// + /// ݿжȡݲڴ + /// + /// + /// + public DataSet GetDataSet(string commandText) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + return GetDataSet(commandText, parameters); + } + + /// + /// ݿжȡݲڴ + /// + /// + /// + /// + public DataSet GetDataSet(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + + DataSet ds = new DataSet(); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, commandText); + + + if (parameters != null) + { + adapter.SelectCommand.Parameters.AddRange(parameters); + //ԶжT-SQLǴ洢 + adapter.SelectCommand.CommandType = procedureRegex.IsMatch(commandText) + ? CommandType.Text + : CommandType.StoredProcedure; + } + + adapter.Fill(ds); + } + return ds; + } + + public T ToEntity(string commandText) where T : new() + { + return ToEntity(commandText, null); + } + + + /// + /// ѯתΪʵ + /// + /// + /// + /// + /// + public T ToEntity(string commandText, params DbParameter[] parameters) where T : new() + { + if (this._totalOpen) this.AddTotalSql(commandText); + + T t = default(T); + ExecuteReader(commandText, (reader) => + { + if (reader.HasRows) + { + t = reader.ToEntity(); + } + }, parameters); + return t; + } + + /// + /// DataReaderݲתʵ༯ + /// + /// + /// + /// + public IList ToEntityList(string commandText) where T : new() + { + return ToEntityList(commandText, null); + } + + /// + /// DataReaderݲתʵ༯ + /// + /// + /// + /// + /// + public IList ToEntityList(string commandText, params DbParameter[] parameters) where T : new() + { + if (this._totalOpen) this.AddTotalSql(commandText); + + IList list = null; + + ExecuteReader(commandText, (reader) => + { + if (reader.HasRows) + { + list = reader.ToEntityList(); + } + }, parameters); + + return list ?? new List(); + } + + /// + /// ִнű(Mysql) + /// + /// sqlű + /// ָɴݿ + /// + public int ExecuteScript(string sql, string delimiter) + { + int result = -1; + using (DbConnection conn = this.CreateOpenedConnection()) + { + result = dbFactory.ExecuteScript(conn, sql, delimiter); + } + + return result; + } + + #region µ᷽ʽ + + /// + /// ִвѯ + /// + /// + /// + public int ExecuteNonQuery(params SqlQuery[] sqls) + { + if (this._totalOpen) + foreach (SqlQuery sql in sqls) + this.AddTotalSql(sql.Sql); + + if (sqls.Length == 0) throw new ArgumentOutOfRangeException("sqls", "SQLEntityӦָһ!"); + + DbTransaction trans = null; + DbCommand cmd; + int result = 0; + + DbConnection conn = this.CreateOpenedConnection(); + + //Ӳ + trans = conn.BeginTransaction(); + + + SqlEntityHandler sh = s => + { + //Command, + cmd = this.CreateCommand(s.Sql); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(s.Sql) + ? CommandType.Text + : CommandType.StoredProcedure; + + //Ӳ + if (s.Parameters != null) cmd.Parameters.AddRange(s.ToParams(dbFactory)); + + //ʹ + + cmd.Transaction = trans; + + result += cmd.ExecuteNonQuery(); + }; + + try + { + foreach (SqlQuery sql in sqls) + { + sh(sql); + } + + //ύ + + trans.Commit(); + } + catch (DbException ex) + { + //ִ,ع + trans.Rollback(); + + //׳쳣 + throw ex; + } + finally + { + //ر + conn.Close(); + } + + + return result; + } + + /// + /// ȡDataReaderе + /// + /// + /// + public void ExecuteReader(SqlQuery sql, DataReaderFunc func) + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(sql.Sql); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(sql.Sql) ? CommandType.Text : CommandType.StoredProcedure; + + if (sql.Parameters != null) + cmd.Parameters.AddRange(sql.ToParams(dbFactory)); + + func(cmd.ExecuteReader()); + } + } + + + /// + /// ݿжȡݲڴ + /// + /// + /// + public DataSet GetDataSet(SqlQuery sql) + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + DataSet ds = new DataSet(); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, sql.Sql); + + if (sql.Parameters != null) + { + adapter.SelectCommand.Parameters.AddRange(sql.ToParams(dbFactory)); + //ԶжT-SQLǴ洢 + adapter.SelectCommand.CommandType = procedureRegex.IsMatch(sql.Sql) + ? CommandType.Text + : CommandType.StoredProcedure; + } + + adapter.Fill(ds); + } + + return ds; + } + + + /// + /// زѯĵһеһֵ + /// + /// + /// + public object ExecuteScalar(SqlQuery sql) + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + + object obj; + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(sql.Sql); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(sql.Sql) + ? CommandType.Text + : CommandType.StoredProcedure; + + if (sql.Parameters != null) cmd.Parameters.AddRange(sql.ToParams(dbFactory)); + obj = cmd.ExecuteScalar(); + } + + return obj; + } + + /// + /// ѯתΪʵ + /// + /// + /// + /// + /// + public T ToEntity(SqlQuery sql) where T : new() + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + + T t = default(T); + this.ExecuteReader(sql, (reader) => + { + if (reader.HasRows) + { + t = reader.ToEntity(); + } + }); + + + return t; + } + + /// + /// DataReaderݲתʵ༯ + /// + /// + /// + /// + public IList ToEntityList(SqlQuery sql) where T : new() + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + + IList list = null; + + this.ExecuteReader(sql, (reader) => + { + if (reader.HasRows) + { + list = reader.ToEntityList(); + } + }); + + return list ?? new List(); + } + + #endregion + + #region Hashtableȡ + + public int ExecuteNonQuery(string commandText, Hashtable data) + { + var parameters = GetParametersFromHashTable(data); + return this.ExecuteNonQuery(commandText, parameters); + } + + public object ExecuteScalar(string commandText, Hashtable data) + { + return this.ExecuteScalar(commandText, this.GetParametersFromHashTable(data)); + } + + public void ExecuteReader(string commandText, Hashtable data, DataReaderFunc func) + { + this.ExecuteReader(commandText, func, this.GetParametersFromHashTable(data)); + } + + public DataSet GetDataSet(string commandText, Hashtable data) + { + return this.GetDataSet(commandText, this.GetParametersFromHashTable(data)); + } + + private DbParameter[] GetParametersFromHashTable(Hashtable data) + { + DbParameter[] parameters = new DbParameter[data.Keys.Count]; + + int i = 0; + foreach (DictionaryEntry d in data) + { + parameters[i++] = this.NewParameter("@" + d.Key, d.Value); + } + return parameters; + } + + #endregion + + /* + /// + /// ͷԴ + /// + public void Dispose() + { + if (conn!=null && conn.State != ConnectionState.Closed) + { + conn.Dispose(); + } + } + + ~DataBaseAccess() + { + this.Dispose(); + } + */ + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataBaseType.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataBaseType.cs new file mode 100644 index 0000000..ff94e71 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataBaseType.cs @@ -0,0 +1,41 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : DataBaseType.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace Ops.Data +{ + /// + /// ݿ + /// + public enum DataBaseType + { + SQLServer, + + /// + /// SQLiteݿ + /// + SQLite, + + /// + ///Mono SQLite + /// + MonoSQLite, + + /// + /// mysqlݿ + /// + MySQL, + + /// + /// Accessݿ + /// + OLEDB + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataDelegate.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataDelegate.cs new file mode 100644 index 0000000..3200ee4 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataDelegate.cs @@ -0,0 +1,29 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : ReadDataFunc.cs +// Date : 8/19/2011 +// Author : +// Modify: +// 2013-05-26 18:00 newmin [+]: SqlEntityHandler +// +// + +namespace Ops.Data +{ + using System.Data.Common; + + /// + /// ݶȡ + /// + /// + public delegate void DataReaderFunc(DbDataReader reader); + + /// + /// SQLʵ + /// + /// + public delegate void SqlEntityHandler(SqlQuery sql); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataUtility.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataUtility.cs new file mode 100644 index 0000000..60435b5 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/DataUtility.cs @@ -0,0 +1,75 @@ +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Data.Extensions +// FileName : ObjectExtensions.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2012/05/24 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using Ops.Data.Extensions; + +namespace Ops.Data +{ + using System; + using System.Collections.Generic; + using System.Text; + using System.Data; + using System.Data.Common; + + + /// + /// 数据实用辅助类 + /// + public static class DataUtility + { + /// + /// 转换DataTable为实体列表 + /// + /// + /// + /// + public static IList ConvertToEntityList(DataTable table) where T : new() + { + return table.ToEntityList(); + } + + /// + ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) + /// + public static IList ConvertToEntityList(DbDataReader reader) where T : new() + { + return reader.ToEntityList(); + } + + public static T ConvertToEntity(DataRow row) where T : new() + { + return row.ToEntity(); + } + + /// + ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据) + /// + public static T ConvertToEntity(DbDataReader reader) where T : new() + { + return reader.ToEntity(); + } + + /// + /// 生成SQL语句参数对象数组 + /// + /// 实体类型 + /// + /// 数据库类型 + /// 字段,用空格隔开多个字段。参数名称需与字段名称一致! + /// + public static DbParameter[] GetDbParameter(T obj, DataBaseType dbtype, String fields) + { + return obj.GetDbParameter(dbtype, fields); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Extensions/CLR_DataExtensions.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Extensions/CLR_DataExtensions.cs new file mode 100644 index 0000000..9be312f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Extensions/CLR_DataExtensions.cs @@ -0,0 +1,24 @@ +using System; +using System.Data.Common; + +namespace Ops.Data.Extensions +{ + public static class CLR_DataExtensions + { + /// + /// 获取DataReader的列名 + /// + /// + /// + /// + public static String[] GetColumns(this DbDataReader reader, bool lower) + { + String[] columns = new String[reader.FieldCount]; + for (int i = 0, j = columns.Length; i < j; i++) + { + columns[i] = lower ? reader.GetName(i).ToLower() : reader.GetName(i); + } + return columns; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Extensions/DataExtensions.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Extensions/DataExtensions.cs new file mode 100644 index 0000000..18e4c7c --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Extensions/DataExtensions.cs @@ -0,0 +1,700 @@ +/* + * Copyright 2010 OPS,All rights reseved ! + * name : 泛型扩展 + * author : newmin + * date : 2010/11/08 07:31 + * + * 2010/12/13 00:30 newmin [!]:添加数据表字段为DBNull赋值给对象异常时候忽略的处理 + */ + +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Reflection; +using System.Text; + +namespace Ops.Data.Extensions +{ + public static class DataTableExtensions + { + /// + ///将当前DataTable中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) + /// + public static IList ToEntityList(this DataTable table) where T : new() + { + IList list = new List(); + T t; + object rowData; + + //获取各自的属性 + PropertyInfo[] props = GetTSetterProperties(); + PropertyInfo _p; + + + int propertiesCount = -1, + //对应的属性数量 + hasFoundPropertiesCount = 0; //已经赋值的数量 + + + foreach (DataRow dr in table.Rows) + { + t = new T(); + foreach (DataColumn c in table.Columns) + { + _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); + if (_p == null) continue; + + rowData = dr[c.ColumnName]; + try + { + if (!(rowData is DBNull)) + { + if (_p.PropertyType.IsEnum) + { + if (rowData.GetType() == typeof (Int32)) + { + _p.SetValue(t, Convert.ToInt32(rowData), null); + } + else + { + _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); + } + } + else + { + _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); + } + } + } + catch + { + continue; + } + + //计算是否已经赋值完成 + if (++hasFoundPropertiesCount == propertiesCount) + { + hasFoundPropertiesCount = 0; + break; + } + } + list.Add(t); + + + //对所有属性赋值后跳出循环 + if (propertiesCount == -1) + { + propertiesCount = hasFoundPropertiesCount; + } + } + return list; + } + + /// + ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) + /// + public static IList ToEntityList(this DbDataReader reader) where T : new() + { + IList list = new List(); + T t; + + //获取表结构 + DataTable schemaTable = reader.GetSchemaTable(); + + //表结构列名 + string columnName; + + //获取泛型的的所有属性 + PropertyInfo[] props = GetTSetterProperties(); + PropertyInfo pro; + object rowData; + + int propertiesCount = -1, + //对应的属性数量 + hasFoundPropertiesCount = 0; //已经赋值的数量 + + while (reader.Read()) + { + t = new T(); + + foreach (DataRow dr in schemaTable.Rows) + { + columnName = dr["ColumnName"].ToString(); + pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); + if (pro == null) continue; + + //如果数据库中的值不为空,则赋值 + if (!((rowData = reader[columnName]) is DBNull)) + { + try + { + if (pro.PropertyType.IsEnum) + { + if (rowData.GetType() == typeof (Int32)) + { + pro.SetValue(t, Convert.ToInt32(rowData), null); + } + else + { + pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); + } + } + else + { + pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); + } + } + + catch + { + continue; + } + + //计算是否已经赋值完成 + if (++hasFoundPropertiesCount == propertiesCount) + { + hasFoundPropertiesCount = 0; + break; + } + } + } + list.Add(t); + + + //对所有属性赋值后跳出循环 + if (propertiesCount == -1) + { + propertiesCount = hasFoundPropertiesCount; + } + } + return list; + } + + + public static T ToEntity(this DataRow row) where T : new() + { + T t = new T(); + CopyToEntity(row, t); + return t; + } + + public static void CopyToEntity(this DataRow row, T t) + { + //获取各自的属性 + PropertyInfo[] props = GetTSetterProperties(); + PropertyInfo _p; + object rowData; + int enumValue; + + + foreach (DataColumn c in row.Table.Columns) + { + _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); + rowData = row[c.ColumnName]; + + try + { + if (_p != null && !(rowData is DBNull)) + { + if (_p.PropertyType.IsEnum) + { + int.TryParse(rowData.ToString(), out enumValue); + + if (enumValue != 0) + { + _p.SetValue(t, enumValue, null); + } + else + { + _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); + } + } + else + { + _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); + } + } + } + catch + { + continue; + } + } + } + + private static PropertyInfo[] GetTSetterProperties() + { + return new List(GetEnumeratorProperties()).ToArray(); + } + + private static IEnumerable GetEnumeratorProperties() + { + PropertyInfo[] props = typeof (T).GetProperties(); + + foreach (PropertyInfo pro in props) + { + if (pro.CanWrite && pro.GetIndexParameters().Length == 0) + { + yield return pro; + } + } + } + + public static T ToEntity(this DbDataReader reader) where T : new() + { + T t = new T(); + if (reader.Read()) + { + CopyToEntity(reader, t); + } + return t; + } + + /// + ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据,DataReader游标已经指向实体数据对应位置) + /// + public static void CopyToEntity(this DbDataReader reader, T t) + { + //获取表结构 + DataTable schemaTable = reader.GetSchemaTable(); + + //表结构列名 + string columnName; + + //获取泛型的的所有属性 + PropertyInfo[] props = GetTSetterProperties(); + PropertyInfo pro; + object rowData; + + + int propertiesCount = props.Length, + //属性数量 + hasFoundPropertiesCount = 0; //已经赋值的数量 + + + foreach (DataRow dr in schemaTable.Rows) + { + columnName = dr["ColumnName"].ToString(); + pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); + if (pro == null) continue; + + + if (!((rowData = reader[columnName]) is DBNull)) + { + try + { + if (pro.PropertyType.IsEnum) + { + if (rowData.GetType() == typeof (Int32)) + { + pro.SetValue(t, Convert.ToInt32(rowData), null); + } + else + { + pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); + } + } + else + { + pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); + } + } + catch + { + continue; + } + } + + if (++hasFoundPropertiesCount == propertiesCount) + { + hasFoundPropertiesCount = 0; + break; + } + } + } + + + /// + /// 生成SQL语句参数对象数组 + /// + /// 实体类型 + /// + /// 数据库类型 + /// 字段,用空格隔开多个字段。参数名称需与字段名称一致! + /// + public static DbParameter[] GetDbParameter(this T obj, DataBaseType dbtype, String fields) + { + DbParameter[] parameters; + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + + + type = obj.GetType(); + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + switch (dbtype) + { + case DataBaseType.MonoSQLite: + parameters = new Mono.Data.Sqlite.SqliteParameter[fieldCount]; + break; + + case DataBaseType.OLEDB: + parameters = new System.Data.OleDb.OleDbParameter[fieldCount]; + break; + case DataBaseType.SQLite: + parameters = new System.Data.SQLite.SQLiteParameter[fieldCount]; + break; + case DataBaseType.MySQL: + parameters = new MySql.Data.MySqlClient.MySqlParameter[fieldCount]; + break; + default: + case DataBaseType.SQLServer: + parameters = new System.Data.SqlClient.SqlParameter[fieldCount]; + break; + } + + + string fieldName; + + for (int i = 0; i < fieldCount; i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + + switch (dbtype) + { + case DataBaseType.MonoSQLite: + parameters[i] = new Mono.Data.Sqlite.SqliteParameter(String.Format("@{0}", fieldName), proValue); + break; + + case DataBaseType.SQLite: + parameters[i] = new System.Data.SQLite.SQLiteParameter(String.Format("@{0}", fieldName), + proValue); + break; + case DataBaseType.OLEDB: + parameters[i] = new System.Data.OleDb.OleDbParameter(String.Format("@{0}", fieldName), proValue); + break; + + case DataBaseType.MySQL: + parameters[i] = new MySql.Data.MySqlClient.MySqlParameter(String.Format("@{0}", fieldName), + proValue); + break; + + default: + case DataBaseType.SQLServer: + parameters[i] = new System.Data.SqlClient.SqlParameter(String.Format("@{0}", fieldName), + proValue); + break; + } + } + return parameters; + } + + /// + /// 生成SQL语句参数对象数组 + /// + /// 实体类型 + /// + /// 数据库类型 + /// 字段,用空格隔开多个字段。参数名称需与字段名称一致! + /// + public static object[,] GetDbParameter(this T obj, String fields) + { + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + object[,] parameters; + + type = obj.GetType(); + + bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); + + + if (autoPro) + { + PropertyInfo[] pros = + type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + parameters = new object[pros.Length, 2]; + + int i = 0; + foreach (PropertyInfo _pro in pros) + { + proValue = _pro.GetValue(obj, null); + parameters[i, 0] = String.Format("@{0}", _pro.Name); + parameters[i, 1] = proValue; + ++i; + } + } + else + { + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + + //参数数组 + parameters = new object[fieldCount, 2]; + + + string fieldName; + + for (int i = 0; i < parameters.GetLength(0); i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + + parameters[i, 0] = String.Format("@{0}", fieldName); + parameters[i, 1] = proValue; + } + } + return parameters; + } + + /// + /// 自动生成插入SQL语句 + /// + /// + /// + /// + /// + /// + public static string AutoInsertSQL(this T obj, string fields, bool setValue) + { + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); + + StringBuilder sb = new StringBuilder(); + + type = obj.GetType(); + + + sb.Append("INSERT INTO ").Append(type.Name).Append("("); + + + String temp1 = ""; + String temp2 = ""; + + if (autoPro) + { + PropertyInfo[] pros = + type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + int i = 0; + foreach (PropertyInfo _pro in pros) + { + if (i != 0) + { + temp1 += ","; + temp2 += ","; + } + temp1 += _pro.Name; + + if (setValue) + { + //获取对象的值 + proValue = _pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); + } + temp2 += proValue; + } + else + { + temp2 += "@" + _pro.Name; + } + ++i; + } + } + else + { + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + + + string fieldName; + + for (int i = 0; i < fieldCount; i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + + if (i != 0) + { + temp1 += ","; + temp2 += ","; + } + temp1 += fieldName; + + if (setValue) + { + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + temp2 += proValue; + } + else + { + temp2 += "@" + fieldName; + } + } + } + + + sb.Append(temp1).Append(")VALUES(").Append(temp2).Append(")"); + + return sb.ToString(); + } + + /// + /// 自动生成更新SQL语句 + /// + /// + /// + /// + /// + /// + /// + public static string AutoUpdateSQL(this T obj, string fields, string primaryKey, bool setValue) + { + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); + + StringBuilder sb = new StringBuilder(); + + type = obj.GetType(); + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + + sb.Append("UPDATE ").Append(type.Name).Append(" SET "); + + + string fieldName; + + if (autoPro) + { + string primaryValue = String.Empty; + + PropertyInfo[] pros = + type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + int i = 0; + foreach (PropertyInfo _pro in pros) + { + //主键值 + if (String.Compare(_pro.Name, primaryKey, true) == 0) + { + proValue = _pro.GetValue(obj, null); + primaryValue = proValue.ToString(); + continue; + } + + if (i != 0) + { + sb.Append(","); + } + + sb.Append(_pro.Name).Append("="); + + if (setValue) + { + //获取对象的值 + proValue = _pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); + } + + sb.Append(proValue.ToString()); + } + else + { + sb.Append("@" + _pro.Name); + } + + ++i; + } + sb.Append(" WHERE ").Append(primaryKey).Append("=").Append(setValue ? primaryValue : "@" + primaryKey); + } + else + { + for (int i = 0; i < fieldCount; i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + + if (i != 0) + { + sb.Append(","); + } + + sb.Append(fieldName).Append("="); + + if (setValue) + { + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + sb.Append(proValue); + } + else + { + sb.Append("@" + fieldName); + } + } + } + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/IDataBase.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/IDataBase.cs new file mode 100644 index 0000000..1ab1756 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/IDataBase.cs @@ -0,0 +1,59 @@ +// +// +// Generated by StarUML(tm) C# Add-In +// +// @ Project : OPS.Data +// @ File Name : IDataBase.cs +// @ Date : 8/18/2011 +// @ Author : ���� +// +// + +namespace Ops.Data +{ + using System.Data; + using System.Data.Common; + + + public interface IDataBase + { + string ConnectionString { get; } + DbConnection GetConnection(); + DbParameter CreateParameter(string name, object value); + DbCommand CreateCommand(string sql); + DbDataAdapter CreateDataAdapter(DbConnection connection, string sql); + + /// + /// ִ�нű� + /// + /// Sql�ű� + /// �ָ����Ĭ��Ϊ";" + /// + int ExecuteScript(DbConnection conn, string sql, string delimiter); + } + + public abstract class DataBaseFactory : IDataBase + { + protected string connectionString; + + public DataBaseFactory(string connectionString) + { + this.connectionString = connectionString; + } + + public string ConnectionString + { + get { return this.connectionString; } + } + + public abstract DbConnection GetConnection(); + + public abstract DbParameter CreateParameter(string name, object value); + + public abstract DbCommand CreateCommand(string commandText); + + public abstract DbDataAdapter CreateDataAdapter(DbConnection connection, string commandText); + + public abstract int ExecuteScript(DbConnection connection, string sql, string delimiter); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ISqlFormat.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ISqlFormat.cs new file mode 100644 index 0000000..0354a15 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ISqlFormat.cs @@ -0,0 +1,32 @@ +/* + * 用户: newmin + * 日期: 2013/12/4 + * 时间: 6:26 + * + * 修改说明: + */ + +using System; + +namespace Ops.Data +{ + /// + /// 提供将字符串格式化的函数 + /// + public delegate string ISqlFormatHandler(string source); + + + public interface ISqlFormat + { + string Format(string source, params string[] objs); + } + + public class SqlFormat : ISqlFormat + { + public string Format(string source, params string[] objs) + { + if (objs.Length == 0) return source; + return String.Format(source, objs); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/MonoSQLiteFactory.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/MonoSQLiteFactory.cs new file mode 100644 index 0000000..2ef5367 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/MonoSQLiteFactory.cs @@ -0,0 +1,49 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLiteFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace Ops.Data +{ + using System.Data.Common; + using Mono.Data.Sqlite; + + public class MonoSQLiteFactory : DataBaseFactory + { + public MonoSQLiteFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new SqliteConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new SqliteParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new SqliteCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new SqliteDataAdapter(sql, (SqliteConnection) connection); + } + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/MySqlFactory.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/MySqlFactory.cs new file mode 100644 index 0000000..44c8504 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/MySqlFactory.cs @@ -0,0 +1,57 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLiteFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace Ops.Data +{ + using System.Data.Common; + using MySql.Data.MySqlClient; + + public class MySqlFactory : DataBaseFactory + { + public MySqlFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new MySqlConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new MySqlParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new MySqlCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new MySqlDataAdapter(sql, (MySqlConnection) connection); + } + + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + MySqlScript script = new MySqlScript((MySqlConnection) conn, sql); + + if (!string.IsNullOrEmpty(delimiter)) + { + script.Delimiter = delimiter; + } + + return script.Execute(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OPSoft.Data.csproj b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OPSoft.Data.csproj new file mode 100644 index 0000000..510a4c4 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OPSoft.Data.csproj @@ -0,0 +1,100 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {A957726C-AF6E-4554-9119-5CDB489937AC} + Library + Properties + Ops.Data + Ops.Data + v4.0 + 512 + + + + true + full + false + ..\..\Bin\ + DEBUG;TRACE + prompt + 4 + AnyCPU + + + pdbonly + true + ..\..\Bin\ + TRACE + prompt + 4 + + + true + + + ops.data.snk + + + + + + + + ..\..\..\DLL\mysql.data.dll + + + ..\..\..\DLL\System.Data.SQLite.dll + + + False + ..\..\..\DLL\Mono.Data.Sqlite.dll + + + + + + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/AtNet.DevFw.Data.csproj.user b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OPSoft.Data.csproj.user similarity index 100% rename from J6/src/core/J6.DevFw.Data/AtNet.DevFw.Data.csproj.user rename to src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OPSoft.Data.csproj.user diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/EntityHelper.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/EntityHelper.cs new file mode 100644 index 0000000..127c914 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/EntityHelper.cs @@ -0,0 +1,22 @@ +using System; +using System.Reflection; +using Ops.Data.ORM.Mapping; + +namespace Ops.Data.ORM +{ + public static class EntityHelper + { + public static IEntityManager GetManager(DataBaseAccess db) where Entity : class + { + return new EntityManager(db); + } + + public static PropertyInfo GetProperty(string properName) where Entity : class + { + Type type = typeof (Entity); + PropertyInfo p = type.GetProperty(properName); + if (p == null) throw new DataMappingException("该实体:" + type.ToString() + "没有属性:" + properName); + return p; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/EntityManager.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/EntityManager.cs new file mode 100644 index 0000000..856c7a7 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/EntityManager.cs @@ -0,0 +1,293 @@ +/*------------------------------------------- + * Name : 实体操作管理 + * Author : Sonven + * Create : 2009-10-06 10:30 + * LastModify 2009-10-08 14:17 + * + * 1.修正Get方法如果没有返回数据行返回对象不为空 | Sonven 14:18 08/10 + * + * Note + * --------------------------------------------*/ + +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Linq; +using System.Reflection; +using System.Text; +using Ops.Data.ORM.Mapping; + +namespace Ops.Data.ORM +{ + /// + /// 实体管理器 + /// + /// + public class EntityManager : IEntityManager where Entity : class + { + private string tableName; + private PropertyInfo[] properties; + private DataBaseAccess db; + + public EntityManager(DataBaseAccess db) + { + object[] attrs; //datatableAttribtue + attrs = typeof (Entity).GetCustomAttributes(typeof (DataTableAttribute), true); + if (attrs.Length == 0) throw new DataMappingException("此类未加上DataTable特性!"); + DataTableAttribute tb = attrs[0] as DataTableAttribute; + tableName = tb.Name; + + properties = typeof (Entity).GetProperties(); + + this.db = db; + } + + /// + /// 向数据库添加一个实体 + /// + /// + public void Insert(Entity entity) + { + ColumnAttribute col; //列 + + string filedStr = null; + string paramStr = null; + IList parameters = new List(); + object[] attrs; //columnAttributes + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + col = attrs[0] as ColumnAttribute; + if (col.AutoGeneried) continue; //如果为自动创建 + else + { + if (col.Name == null) col.Name = p.Name; + filedStr += col.Name + ","; + paramStr += "@" + col.Name + ","; + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); + } + } + db.ExecuteNonQuery("insert into " + tableName + " (" + filedStr.Remove(filedStr.Length - 1) + + ")values(" + paramStr.Remove(paramStr.Length - 1) + ")", + parameters.ToArray()); + } + + + public void Save(object primaryValue, Entity entity) + { + if (primaryValue == null) + { + Insert(entity); + return; + } + StringBuilder sb = new StringBuilder(300); + sb.Append("UPDATE " + tableName + " SET "); + + IList parameters = new List(); + string fieldName = null; + ColumnAttribute col; //列 + object[] attrs; + string primaryKey = "id"; + + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + col = attrs[0] as ColumnAttribute; + if (col.AutoGeneried) continue; //如果为自动创建 + else if (col.IsPrimaryKey) + { + primaryKey = col.Name; + continue; + } + else + { + if (col.Name == null) col.Name = p.Name; + sb.Append(col.Name).Append("=@").Append(col.Name).Append(","); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); + } + } + + sb.Remove(sb.Length - 1, 1); //删除最后的, + + + // fieldName = primaryField.GetFieldName(); + sb.Append(" where " + primaryKey + "=@" + primaryKey); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + primaryKey, primaryValue)); + db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); + } + + + /// + /// 根据主键删除数据库记录 + /// + /// + public void Delete(FieldValueDictionary field) + { + string fieldName = field.GetFieldName(); + db.ExecuteNonQuery("delete from " + tableName + " where " + fieldName + + "=@" + fieldName, db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); + } + + /// + /// 更新实体 + /// + /// + /// + public void Update(PrimaryKeyValueDictionary primaryField, params FieldValueDictionary[] fields) + { + StringBuilder sb = new StringBuilder(300); + sb.Append("update " + tableName + " set "); + + IList parameters = new List(); + string fieldName = null; + foreach (FieldValueDictionary f in fields) + { + fieldName = f.GetFieldName(); + sb.Append(fieldName + "=@" + fieldName + ","); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, f.Value)); + } + sb.Remove(sb.Length - 1, 1); //删除最后的, + fieldName = primaryField.GetFieldName(); + sb.Append(" where " + fieldName + "=@" + fieldName); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, primaryField.Value)); + + db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); + } + + + /// + /// 根据主键获取单个实体 + /// + /// + /// + public Entity Get(PrimaryKeyValueDictionary primaryField) + { + string fieldName = primaryField.GetFieldName(); + string sql = "SELECT TOP 1 * FROM " + tableName + + " WHERE " + fieldName + "=@" + fieldName; + + Entity obj = null; + ColumnAttribute attr; + Type type = typeof (Entity); + Assembly ass = type.Assembly; + + + db.ExecuteReader(new SqlQuery(sql, new object[,] + { + {"@" + fieldName, primaryField.Value} + }), rd => + { + object[] attrs; //columnAttributes + while (rd.Read()) + { + obj = ass.CreateInstance(type.ToString(), true) as Entity; + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + attr = attrs[0] as ColumnAttribute; + p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], + p.PropertyType), null); + } + break; + } + }); + + return obj; + } + + public Entity Get(FieldValueDictionary field) + { + string fieldName = field.GetFieldName(); + string sql = "SELECT TOP 1 * FROM " + tableName + + " WHERE " + fieldName + "=@" + fieldName; + + Entity obj = null; + ColumnAttribute attr; + Type type = typeof (Entity); + Assembly ass = type.Assembly; + + + db.ExecuteReader(new SqlQuery(sql, new object[,] + { + {"@" + fieldName, field.Value} + }), rd => + { + object[] attrs; //columnAttributes + while (rd.Read()) + { + obj = ass.CreateInstance(type.ToString(), true) as Entity; + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + attr = attrs[0] as ColumnAttribute; + p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], + p.PropertyType), null); + } + break; + } + }); + + return obj; + } + + public IEnumerable GetEntityList(params FieldValueDictionary[] fields) + { + string fieldName = null; + IList parameters = new List(); + StringBuilder sb = new StringBuilder("select * from " + tableName, 400); + + if (fields.Count() != 0) + { + sb.Append(" WHERE "); + int i = 0; + foreach (FieldValueDictionary field in fields) + { + fieldName = field.GetFieldName(); + if (i != 0) + { + sb.Append("AND "); + } + sb.Append(fieldName + "=@" + fieldName).Append(" "); + + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); + ++i; + } + } + + ColumnAttribute attr; + Type type = typeof (Entity); + Assembly ass = type.Assembly; + + IList list = new List(); + Entity entity; //单个实体 + + object[] attrs; //特性集合 + db.ExecuteReader(sb.ToString(), + rd => + { + while (rd.Read()) + { + entity = ass.CreateInstance(type.ToString(), true) as Entity; + + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + attr = attrs[0] as ColumnAttribute; + + p.SetValue(entity, Convert.ChangeType(rd[attr.Name ?? p.Name], p.PropertyType), null); + } + list.Add(entity); + } + }, + parameters.ToArray()); //获取数据 + + + return list; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/FieldValueDectionary.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/FieldValueDectionary.cs new file mode 100644 index 0000000..6b9ff88 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/FieldValueDectionary.cs @@ -0,0 +1,60 @@ +using System.Reflection; +using Ops.Data.ORM.Mapping; + +namespace Ops.Data.ORM +{ + /// + /// 数据库字段与值字典 + /// + public class FieldValueDictionary + { + public FieldValueDictionary() + { + } + + public FieldValueDictionary(PropertyInfo proper, object value) + { + Field = proper; + Value = value; + } + + /// + /// 数据库字段对应的属性 + /// + public PropertyInfo Field { get; set; } + + /// + /// 数据库字段对应属性的值 + /// + public object Value { get; set; } + + /// + /// 是否对应数据库主键字段 + /// + public virtual bool IsPrimaryKeyField + { + get + { + object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), false); + if (attrs.Length > 0) + { + ColumnAttribute att = attrs[0] as ColumnAttribute; + return att != null && att.IsPrimaryKey; + } + return false; + } + } + + /// + /// 获取属性对应的数据库字段 + /// + /// + public string GetFieldName() + { + object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) return null; + ColumnAttribute attr = attrs[0] as ColumnAttribute; + return attr.Name == null || attr.Name == "" ? Field.Name : attr.Name; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/FieldValueException.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/FieldValueException.cs new file mode 100644 index 0000000..41bc82e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/FieldValueException.cs @@ -0,0 +1,20 @@ +using System; + +namespace Ops.Data.ORM +{ + public class FieldValueException : ApplicationException + { + public FieldValueException() + { + } + + public FieldValueException(string message) : base(message) + { + } + + public override string Message + { + get { return base.Message ?? "数据库字段与映射发生错误!"; } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/IEntityManager.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/IEntityManager.cs new file mode 100644 index 0000000..e2b4548 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/IEntityManager.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace Ops.Data.ORM +{ + public interface IEntityManager where Entity : class + { + void Insert(Entity entity); + void Delete(FieldValueDictionary field); + void Update(PrimaryKeyValueDictionary parmaryField, params FieldValueDictionary[] filds); + Entity Get(PrimaryKeyValueDictionary parmaryField); + Entity Get(FieldValueDictionary parmaryField); + IEnumerable GetEntityList(params FieldValueDictionary[] fileds); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataColumnAttribute.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataColumnAttribute.cs new file mode 100644 index 0000000..fb606e5 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataColumnAttribute.cs @@ -0,0 +1,48 @@ +/*----------------------------------- + * Name : DataColumnMappingAttribute + * Author : Sonven + * Create : 2009-12-04 10:15 + * LastModify + * Note + * ---------------------------------*/ + +using System; + +namespace Ops.Data.ORM.Mapping +{ + /// + ///提供对数据表的列的映射 + /// + [AttributeUsage(AttributeTargets.Property, Inherited = true)] + public class ColumnAttribute : Attribute + { + public ColumnAttribute() + { + } + + public ColumnAttribute(string name) + { + Name = name; + } + + /// + /// 列名,如果列名与属性名称相同可省略 + /// + public string Name { get; set; } + + /// + /// 是否为主键 + /// + public bool IsPrimaryKey { get; set; } + + /// + /// 是否由数据库自动创建 + /// + public bool AutoGeneried { get; set; } + + /// + /// 匹配模式(Regex,用于验证数据是否正确) + /// + public string Parttern { get; set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataMappingException.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataMappingException.cs new file mode 100644 index 0000000..20a0b99 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataMappingException.cs @@ -0,0 +1,45 @@ +/*-------------------------------------- + * Name : DataMappingException + * Author : Sonven + * Create : 2009-12-04 10:18 + * LastModify + * Note + *-------------------------------------*/ + +using System; + +namespace Ops.Data.ORM.Mapping +{ + public class DataMappingException : ApplicationException + { + private string message; + private object source; + private string sourceId; + + public DataMappingException(string message) + { + this.message = message; + } + + public DataMappingException(string source, string message) : this(message) + { + this.sourceId = source; + } + + public DataMappingException(object source, string message) : this(message) + { + this.source = source; + } + + public override string Message + { + get { return message; } + } + + public override string Source + { + get { return sourceId; } + set { base.Source = value; } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataTableAttribute.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataTableAttribute.cs new file mode 100644 index 0000000..98154b3 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/Mapping/DataTableAttribute.cs @@ -0,0 +1,52 @@ +/* --------------------------------- + * Name : DataTableMapping + * Author : Sonven + * Create : 2009-12-04 10:20 + * LastModify + * Note + * ---------------------------------*/ + +using System; + +namespace Ops.Data.ORM.Mapping +{ + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)] + public class DataTableAttribute : Attribute + { + private string name; + private Type type; + private ISqlFormat format; + + public DataTableAttribute(string name) + { + this.name = name; + } + + /// + /// 数据库表的名称 + /// + public string Name + { + get + { + if (name == null) + throw new DataMappingException("数据映射的表名不能为空!"); + return this.format == null ? name : this.format.Format(name); + } + set { name = value; } + } + + /// + /// 实现了Ops.Data.ISqlFormat接口的类型 + /// + public Type Format + { + get { return type; } + set + { + type = value; + format = Activator.CreateInstance(value) as ISqlFormat; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/PriamaryKeyValueDictionary.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/PriamaryKeyValueDictionary.cs new file mode 100644 index 0000000..44b7676 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ORM/PriamaryKeyValueDictionary.cs @@ -0,0 +1,27 @@ +using System.Reflection; + +namespace Ops.Data.ORM +{ + public class PrimaryKeyValueDictionary : FieldValueDictionary + { + public PrimaryKeyValueDictionary() + { + } + + public PrimaryKeyValueDictionary(PropertyInfo proper, object value) + { + base.Field = proper; + base.Value = value; + } + + public override bool IsPrimaryKeyField + { + get + { + if (!base.IsPrimaryKeyField) + throw new FieldValueException("不是主键不能用做选取和删除操作!"); + return true; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OleDbFactory.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OleDbFactory.cs new file mode 100644 index 0000000..173483b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/OleDbFactory.cs @@ -0,0 +1,49 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : OLEDBFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace Ops.Data +{ + using System.Data.Common; + using System.Data.OleDb; + + public class OleDbFactory : DataBaseFactory + { + public OleDbFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new OleDbConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new OleDbParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new OleDbCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new OleDbDataAdapter(sql, (OleDbConnection) connection); + } + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/core/J6.DevFw.Data/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/Properties/AssemblyInfo.cs diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SQLiteFactory.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SQLiteFactory.cs new file mode 100644 index 0000000..53c21ab --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SQLiteFactory.cs @@ -0,0 +1,50 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLiteFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace Ops.Data +{ + using System.Data.Common; + using System.Data.SQLite; + + public class SQLiteFactory : DataBaseFactory + { + public SQLiteFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new SQLiteConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new SQLiteParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new SQLiteCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new SQLiteDataAdapter(sql, (SQLiteConnection) connection); + } + + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SqlQuery.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SqlQuery.cs new file mode 100644 index 0000000..fece151 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SqlQuery.cs @@ -0,0 +1,83 @@ +// +// +// Copryright 2013 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : SqlEntity.cs +// Date : 05/27/2013 +// Author : 刘铭 +// +// + +namespace Ops.Data +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using System.Data.Common; + + /// + /// SQL查询实体 + /// + public class SqlQuery + { + private object[,] _parameters; + + + public SqlQuery(string sql) + { + this.Sql = sql; + } + + public SqlQuery(string sql, object[,] parameters) + { + if (parameters != null) + { + if (parameters.GetLength(0) != 0 && parameters.GetLength(1) != 2) + { + throw new ArgumentOutOfRangeException("Parameters", "多纬数组的二维长度必须为2"); + } + } + this._parameters = parameters; + + this.Sql = sql; + } + + /// + /// SQL语句 + /// + public String Sql { get; set; } + + /// + /// 参数 + /// + /// this.Parameters = new object[,]{ + /// {"@age","age"}, + /// {"@name","name"} + /// }; + /// + public object[,] Parameters + { + get { return this._parameters; } + } + + + /// + /// 转换为参数 + /// + /// + /// + public DbParameter[] ToParams(IDataBase db) + { + DbParameter[] parameters = new DbParameter[this.Parameters.GetLength(0)]; + + for (int i = 0; i < parameters.Length; i++) + { + parameters[i] = db.CreateParameter(this.Parameters[i, 0].ToString(), this.Parameters[i, 1]); + } + + return parameters; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SqlServerFactory.cs b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SqlServerFactory.cs new file mode 100644 index 0000000..67fefb0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/SqlServerFactory.cs @@ -0,0 +1,49 @@ +// +// +// Copryright 2011 @ OPSoft INC.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLServerFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace Ops.Data +{ + using System.Data.Common; + using System.Data.SqlClient; + + public class SqlServerFactory : DataBaseFactory + { + public SqlServerFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new SqlConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new SqlParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new SqlCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new SqlDataAdapter(sql, (SqlConnection) connection); + } + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Data/ops.data.snk b/src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ops.data.snk similarity index 100% rename from J6/src/core/J6.DevFw.Data/ops.data.snk rename to src/OPS.Library/Source Code/OPSoft.Data/OPSoft.Data/ops.data.snk diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/collection.uml b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/collection.uml new file mode 100644 index 0000000..65887e0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/collection.uml @@ -0,0 +1,1185 @@ + + + + + + +UMLStandard +CSharp + + + + +Untitled +2 + +Requirements +WX+KsIF15kGB3KZUKJ7K8QAA +2 + +Business Concept Model +GU6hMgFsv0+yrD21bGu/1gAA +1 + +Business Concept Diagram ++WMb7vpuzUaMhJud2TEz6wAA + +2YJmvhwBwk2vCF6kMzY2HgAA + + + + +Use Case Model +GU6hMgFsv0+yrD21bGu/1gAA +1 + +Use Case Diagram +True +kqBCMtW2Rk6IK4SQ2uemEAAA + +ASnw18UpL02a0rTWRUmCsQAA +10 + +clMaroon +$00B9FFFF +416 +156 +86 +78 +hmIy73tPTkGDlkCzeLTpmQAA + + +1 +用户 + + +False + + +False + + + +False +hmIy73tPTkGDlkCzeLTpmQAA + + +False +hmIy73tPTkGDlkCzeLTpmQAA + + + +clMaroon +$00B9FFFF +192 +244 +101 +45 +C5m/jYszKUyANt7Knc6OswAA + + +1 +添加规则 + + +False + + +False + + + +False +C5m/jYszKUyANt7Knc6OswAA + + +False +C5m/jYszKUyANt7Knc6OswAA + + +False +C5m/jYszKUyANt7Knc6OswAA + + + +clMaroon +$00B9FFFF +lsRectilinear +458,156;458,144;242,144;242,244 +4/xFWSi8ukCLrN73MEGJXAAA +QYpEviwBJ0CYKMVb13q8TgAA +DrI6+OGqJEaVT90oeYilxAAA + +False +1.5707963267949 +15 +4/xFWSi8ukCLrN73MEGJXAAA + + +False +1.5707963267949 +30 +4/xFWSi8ukCLrN73MEGJXAAA + + +False +-1.5707963267949 +15 +4/xFWSi8ukCLrN73MEGJXAAA + + +False +-0.523598775598299 +30 +epHead +DkzjFegzFUO4iqxpZr7jzQAA + + +False +0.523598775598299 +30 +epTail +6ArtwTzvNESC2apL4WZUlQAA + + +False +0.523598775598299 +25 +epHead +DkzjFegzFUO4iqxpZr7jzQAA + + +False +-0.523598775598299 +25 +epTail +6ArtwTzvNESC2apL4WZUlQAA + + +False +-0.785398163397448 +40 +epHead +DkzjFegzFUO4iqxpZr7jzQAA + + +False +0.785398163397448 +40 +epTail +6ArtwTzvNESC2apL4WZUlQAA + + +False +-1000 +-1000 +50 +8 +DkzjFegzFUO4iqxpZr7jzQAA + + +False +-1000 +-1000 +50 +8 +6ArtwTzvNESC2apL4WZUlQAA + + + +clMaroon +$00B9FFFF +556 +244 +124 +45 +mWSKAvSU5kK+moWm6RhTqAAA + + +1 +采集页面配置 + + +False + + +False + + + +False +mWSKAvSU5kK+moWm6RhTqAAA + + +False +mWSKAvSU5kK+moWm6RhTqAAA + + +False +mWSKAvSU5kK+moWm6RhTqAAA + + + +clMaroon +$00B9FFFF +lsRectilinear +458,156;458,144;616,144;616,244 +False +5MnYEbWci0SLDxkyW07L6gAA +SKK1ZpAhUEa0IvrnDTWJGwAA +DrI6+OGqJEaVT90oeYilxAAA + +False +1.5707963267949 +15 +5MnYEbWci0SLDxkyW07L6gAA + + +False +1.5707963267949 +30 +5MnYEbWci0SLDxkyW07L6gAA + + +False +-1.5707963267949 +15 +5MnYEbWci0SLDxkyW07L6gAA + + +False +-0.523598775598299 +30 +epHead +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +0.523598775598299 +30 +epTail +IWChGG+Pok2AH4TZQcrqFwAA + + +False +0.523598775598299 +25 +epHead +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +-0.523598775598299 +25 +epTail +IWChGG+Pok2AH4TZQcrqFwAA + + +False +-0.785398163397448 +40 +epHead +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +0.785398163397448 +40 +epTail +IWChGG+Pok2AH4TZQcrqFwAA + + +False +-1000 +-1000 +50 +8 +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +-1000 +-1000 +50 +8 +IWChGG+Pok2AH4TZQcrqFwAA + + + +clMaroon +$00B9FFFF +lsRectilinear +556,264;322,264;322,266;292,266 +bmff9ATAXECYLrDZttEglQAA +QYpEviwBJ0CYKMVb13q8TgAA +SKK1ZpAhUEa0IvrnDTWJGwAA + +False +1.5707963267949 +15 +bmff9ATAXECYLrDZttEglQAA + + +False +1.5707963267949 +30 +bmff9ATAXECYLrDZttEglQAA + + +False +-1.5707963267949 +15 +bmff9ATAXECYLrDZttEglQAA + + + +clMaroon +$00B9FFFF +408 +372 +108 +45 +rY+ACFau8kmczokqAz/H8gAA + + +1 +采集操作 + + +False + + +False + + + +False +rY+ACFau8kmczokqAz/H8gAA + + +False +rY+ACFau8kmczokqAz/H8gAA + + +False +rY+ACFau8kmczokqAz/H8gAA + + + +clMaroon +$00B9FFFF +lsRectilinear +460,233;460,372 +YWu9vJKYKkO2Zzg00O3KkwAA +vgkh46m+f0+M3BF5vioBMQAA +DrI6+OGqJEaVT90oeYilxAAA + +False +1.5707963267949 +15 +YWu9vJKYKkO2Zzg00O3KkwAA + + +False +1.5707963267949 +30 +YWu9vJKYKkO2Zzg00O3KkwAA + + +False +-1.5707963267949 +15 +YWu9vJKYKkO2Zzg00O3KkwAA + + +False +-0.523598775598299 +30 +epHead +o9+gXLoduky9EZZZrGiGdgAA + + +False +0.523598775598299 +30 +epTail +ogYBB8oXVEakTUPq3HiHQQAA + + +False +0.523598775598299 +25 +epHead +o9+gXLoduky9EZZZrGiGdgAA + + +False +-0.523598775598299 +25 +epTail +ogYBB8oXVEakTUPq3HiHQQAA + + +False +-0.785398163397448 +40 +epHead +o9+gXLoduky9EZZZrGiGdgAA + + +False +0.785398163397448 +40 +epTail +ogYBB8oXVEakTUPq3HiHQQAA + + +False +-1000 +-1000 +50 +8 +o9+gXLoduky9EZZZrGiGdgAA + + +False +-1000 +-1000 +50 +8 +ogYBB8oXVEakTUPq3HiHQQAA + + + +clMaroon +$00B9FFFF +400 +544 +121 +45 +QchNdqZuQUWjfkIEWL8+LgAA + + +1 +入库 + + +False + + +False + + + +False +QchNdqZuQUWjfkIEWL8+LgAA + + +False +QchNdqZuQUWjfkIEWL8+LgAA + + +False +QchNdqZuQUWjfkIEWL8+LgAA + + + +clMaroon +$00B9FFFF +lsRectilinear +460,416;460,544 +1MdauM9X8Uu2hHKr7hTWFAAA +6O7dBemOR02PYtnEwXxO7gAA +vgkh46m+f0+M3BF5vioBMQAA + +False +1.5707963267949 +15 +1MdauM9X8Uu2hHKr7hTWFAAA + + +False +1.5707963267949 +30 +1MdauM9X8Uu2hHKr7hTWFAAA + + +False +-1.5707963267949 +15 +1MdauM9X8Uu2hHKr7hTWFAAA + + +False +-0.523598775598299 +30 +epHead +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +0.523598775598299 +30 +epTail ++47X/E6a/kyvJ7TY0/mv3QAA + + +False +0.523598775598299 +25 +epHead +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +-0.523598775598299 +25 +epTail ++47X/E6a/kyvJ7TY0/mv3QAA + + +False +-0.785398163397448 +40 +epHead +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +0.785398163397448 +40 +epTail ++47X/E6a/kyvJ7TY0/mv3QAA + + +False +-1000 +-1000 +50 +8 +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +-1000 +-1000 +50 +8 ++47X/E6a/kyvJ7TY0/mv3QAA + + + + +10 + +用户 +kqBCMtW2Rk6IK4SQ2uemEAAA +3 +DrI6+OGqJEaVT90oeYilxAAA +OAFVbYhR9USbiNYDqMjKNwAA +RR0P78PQBEe6EDzPMWfQbQAA +3 +6ArtwTzvNESC2apL4WZUlQAA +IWChGG+Pok2AH4TZQcrqFwAA +ogYBB8oXVEakTUPq3HiHQQAA + + +添加规则 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +QYpEviwBJ0CYKMVb13q8TgAA +i6tXjcuSq0irQPCl9YFrmQAA +JDk/kqcQgUiUB2aoHA8VkAAA +wXoeXZPt00Omrf7ZSx93PQAA +1 +bmff9ATAXECYLrDZttEglQAA +1 +DkzjFegzFUO4iqxpZr7jzQAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +cMUsrR8MM0yaJSH/meO6xAAA +r/cBz4QJU0ulz+kdhZAOdAAA +YqMcQirQAEG/YLJYfjyOfgAA +u+bYcZZdvkGBaV666SLy7AAA +2 + +4/xFWSi8ukCLrN73MEGJXAAA +hmIy73tPTkGDlkCzeLTpmQAA +4 +lActi0A3TUeodrffXs7quwAA +EE+iGAGHhkiimidSS8/cLAAA +ovG84HVtz0OrSclZmwa1GgAA +HzojmvB3nkm0vvFsypZXtwAA + + +4/xFWSi8ukCLrN73MEGJXAAA +C5m/jYszKUyANt7Knc6OswAA +4 +VOz0esOWuUOkdDRF32uO6wAA +tCxqO8FN+UKbPAhZvTMANQAA +19VzsgcSpEuFEVNJIh70JAAA +AKkkokusYUi4arvD4Pa4LQAA + + + +采集页面配置 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +SKK1ZpAhUEa0IvrnDTWJGwAA +oSAo82/+x0OYDXWcycz9ZQAA +oUpqrp85g0uEi0Cybw9GPAAA +OOzFDIx2+E6U0fksO2EECAAA +1 +bmff9ATAXECYLrDZttEglQAA +1 +XAJKOfIAhEKfwXnb2AW4sQAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +MfJU+ftNZkWdU1bZq1nNcQAA +s1xhsX0OWUKSkEN2ZdDNPwAA ++R8oRnhZQ0+LgDY0H75aNAAA +Mux6KfdUokC7T0xJfSBS1QAA +2 + +5MnYEbWci0SLDxkyW07L6gAA +hmIy73tPTkGDlkCzeLTpmQAA +4 +GFpcGTp6WkG14ImVgfyiKwAA ++eE6DbaDDU6xU+5yKZjG7QAA +yMCCOf+oYUmiGEpeKXI5WQAA +ovtlbnDmDUGjoBHU5CnEBQAA + + +5MnYEbWci0SLDxkyW07L6gAA +mWSKAvSU5kK+moWm6RhTqAAA +4 +8DQC7B7UvUW42VKhIL//kAAA +felXbeD2Ek2WYSdl+cSoMgAA +/ZYT+R0poUWnWwawlOSA7QAA +btI+jR5OvEag6yXFHa+g2wAA + + + +kqBCMtW2Rk6IK4SQ2uemEAAA +mWSKAvSU5kK+moWm6RhTqAAA +C5m/jYszKUyANt7Knc6OswAA +4 +2wY1FpgoykOLDPFhvVr8pwAA +RutZz+DNpEStB6ih8dhE6AAA +5/l0pf75qEqLtwHZdCa3IgAA +0v32P21jtEWzlZtstelqXwAA + + +采集操作 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +vgkh46m+f0+M3BF5vioBMQAA +MjLYf73z6kCDAnm9RD99vgAA +xep1T7IQ20aNaIUfO4EeYAAA +qGpR8/ekNEeMoUToh38QCQAA +2 +o9+gXLoduky9EZZZrGiGdgAA ++47X/E6a/kyvJ7TY0/mv3QAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +/stlD+BuBES2+X4GeQGSNwAA +CZC8B6WByUOmwHg7JfqdmQAA +krE2W2Ann0upP0CoKau4SAAA +S4hNOk1To0mv7C/AWAhACwAA +2 + +YWu9vJKYKkO2Zzg00O3KkwAA +hmIy73tPTkGDlkCzeLTpmQAA +4 +ZllWZ9SwuUulciviUPkkPwAA +b9AKIumm/kyWINdRkJAoVwAA +FAU7P7MgIkCgeL3Ey0er9gAA +4ooTZMHg6E6Cq6B/vHYThgAA + + +YWu9vJKYKkO2Zzg00O3KkwAA +rY+ACFau8kmczokqAz/H8gAA +4 +VFOljScNTEOmpDhYzGWapAAA +/Q4C1f4feEm/XbuJ2J41MAAA +Z2O4fN4PqkeaHfjf/WjTMwAA +gITSFSnvEUqW7SPvnDanEQAA + + + +入库 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +6O7dBemOR02PYtnEwXxO7gAA +aM+/jm79ckK0gMI+wgICUwAA +lfH/zfaV2Ui2EnNgZsvzmwAA +NrvbE+mUOU+HLzsO7tN8qAAA +1 +1KujVfdQ5kWzuVbYGdAz4gAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +4Ei33lPgFU+wvgmCz1EcsAAA +Zp54uzpl7EqVQLjawCsvVgAA +mok2cjSTN0emX3Pw1h/R+QAA +w9XEw8WMukSTGgAdL4S1lwAA +2 + +1MdauM9X8Uu2hHKr7hTWFAAA +rY+ACFau8kmczokqAz/H8gAA +4 +WCHWREjvmEOKFrvM2Bu51gAA +/lN1p7YP3EmClBb/iWgT6QAA +FXgwvuEOW0qLJiFrBsZWdAAA +Re8ca0AG8EuqiCDuThHYZQAA + + +1MdauM9X8Uu2hHKr7hTWFAAA +QchNdqZuQUWjfkIEWL8+LgAA +4 +zScKEscVw0yqIyKysa9NVQAA +aB416WAVDkKpBtrTjXsrwQAA +yqw1EKzI1ECoqvkOAnDszAAA +yTYsL7Wd1EOqK7kt2erfZQAA + + + + + +Specifications +WX+KsIF15kGB3KZUKJ7K8QAA +4 + +Business Type Model +yhEt2aWkLkOtxgYio/ciIgAA +1 + +Business Type Model Diagram +ZV09+cqePUmz0JvbbukngQAA + +J/qYIBWlJkuAWnthQoCntQAA +5 + +clMaroon +$00B9FFFF +208 +128 +91 +43 +qab8Sc0yRkabTi6imSS1oAAA + + +1 +Director + + +False + + +False + + + +qab8Sc0yRkabTi6imSS1oAAA + + +qab8Sc0yRkabTi6imSS1oAAA + + +False +qab8Sc0yRkabTi6imSS1oAAA + + + +clMaroon +$00B9FFFF +288 +224 +225 +212 +BsyPnxA8CE+U/vX45FOo3QAA + + +1 +Project + + +False + + +False + + + +BsyPnxA8CE+U/vX45FOo3QAA + + +BsyPnxA8CE+U/vX45FOo3QAA + + +False +BsyPnxA8CE+U/vX45FOo3QAA + + + +clMaroon +$00B9FFFF +604 +196 +190 +95 +y+kHmBIHSEy6KkhnFRJJ9AAA + + +1 +DataPack + + +False + + +False + + + +y+kHmBIHSEy6KkhnFRJJ9AAA + + +y+kHmBIHSEy6KkhnFRJJ9AAA + + +False +y+kHmBIHSEy6KkhnFRJJ9AAA + + + +clMaroon +$00B9FFFF +612 +420 +190 +95 +UnZpH0P5MEmLGqqpdMSkFgAA + + +1 +PropertyRule + + +False + + +False + + + +UnZpH0P5MEmLGqqpdMSkFgAA + + +UnZpH0P5MEmLGqqpdMSkFgAA + + +False +UnZpH0P5MEmLGqqpdMSkFgAA + + + +clMaroon +$00B9FFFF +288 +468 +104 +82 +sb+zkV9feUudDLY23dlQYQAA + + +1 +State + + +False + + +False + + + +sb+zkV9feUudDLY23dlQYQAA + + +sb+zkV9feUudDLY23dlQYQAA + + +False +sb+zkV9feUudDLY23dlQYQAA + + + + +5 + +Director +ZV09+cqePUmz0JvbbukngQAA +4 +0J3IsT6sXEaK4pNZnqnqhAAA +MA451DkuIUOBb1e+VpBPggAA +rVAcXuRUgkmLJpfakBTjywAA +y6ddIVesAkmV38k6i1+n2AAA + + +Project +ZV09+cqePUmz0JvbbukngQAA +4 +yuSw0hl9SEmnlZkdVOaT8wAA +OSqwwar6h0aM1kZhWgEnbwAA +KAXGvY3I/kSwE76+xnjHXQAA +OGXNMfdV10W/CUIZ1CkQRAAA +2 + +Collect +BsyPnxA8CE+U/vX45FOo3QAA +1 + +pdkReturn +IList< DataPack> +Jo66Lx9oXU6Oa8Q6+XsnPwAA + + + +Invoke +BsyPnxA8CE+U/vX45FOo3QAA +3 + +pdkReturn +void +vNbxus93/0ahaWbSw/cugQAA + + +func +Func<DataPack +vNbxus93/0ahaWbSw/cugQAA + + +void> +vNbxus93/0ahaWbSw/cugQAA + + +11 + +ListUriRule +string +BsyPnxA8CE+U/vX45FOo3QAA + + +ListBlockRule +string +BsyPnxA8CE+U/vX45FOo3QAA + + +PageUriRule +string +BsyPnxA8CE+U/vX45FOo3QAA + + +Rules +PropertyRule +BsyPnxA8CE+U/vX45FOo3QAA + + +RequetTimeOut +int +BsyPnxA8CE+U/vX45FOo3QAA + + +Encode +Encoding +BsyPnxA8CE+U/vX45FOo3QAA + + +FilterWords +string +BsyPnxA8CE+U/vX45FOo3QAA + + +SaveResouce +bool +BsyPnxA8CE+U/vX45FOo3QAA + + +SaveResourceExtension +string +BsyPnxA8CE+U/vX45FOo3QAA + + +ResouceSavePath +string +BsyPnxA8CE+U/vX45FOo3QAA + + +CollectState +State +sb+zkV9feUudDLY23dlQYQAA +BsyPnxA8CE+U/vX45FOo3QAA + + + +DataPack +ZV09+cqePUmz0JvbbukngQAA +4 +G9q++nTJQEqeBIqJCR/nFgAA +tmPTrWJuCUS0H6pYirGuFgAA +wmHt3rRlnUKKyKD+mjKt0AAA +Fc6GdBNxxkuro4BzDlIXrgAA +3 + +DataPack +y+kHmBIHSEy6KkhnFRJJ9AAA +1 + +property +w92ZwwBuaEuZrIvDNx2CjAAA +UnZpH0P5MEmLGqqpdMSkFgAA + + + +this[key +y+kHmBIHSEy6KkhnFRJJ9AAA +1 + +pdkReturn +string]:string +3pFPwjKwbkqiWKglYB01nwAA + + + +Clone +y+kHmBIHSEy6KkhnFRJJ9AAA + +1 +DmYqitAnEk+PyRMLpN13wgAA +1 + +dict +vkPrivate +IDictionary<string,string> +y+kHmBIHSEy6KkhnFRJJ9AAA + + + +PropertyRule +ZV09+cqePUmz0JvbbukngQAA +4 +ec00yVTJVUiOwGk5g9beagAA +VVUofFfjqUuLWP0+2zQ/MQAA +P2sPO47pzUqthoUrR2x8MgAA +LINf4mSkdUuiOF9JUKwPuwAA +2 + +Add +UnZpH0P5MEmLGqqpdMSkFgAA +3 + +pdkReturn +void +2+mSS/Rg+kC4pIpVjhepyQAA + + +key +string +2+mSS/Rg+kC4pIpVjhepyQAA + + +value +string +2+mSS/Rg+kC4pIpVjhepyQAA + + + +this[key +UnZpH0P5MEmLGqqpdMSkFgAA +1 + +pdkReturn +string]:string +6F0BztqFM06gbzS/qlcLcAAA + + +1 +l1lJDcpqjUaOf5y+fvwTpAAA +2 + +dict +IDictionary<string,string> +UnZpH0P5MEmLGqqpdMSkFgAA + + +ID +string +UnZpH0P5MEmLGqqpdMSkFgAA + + + +State +ZV09+cqePUmz0JvbbukngQAA +4 +P3V6W6H9X0yuSSMX8u9i/AAA +rUTS4vN9Aky1YqbjoJ14cAAA +N/Z32hYzpU2BsedA2URIgAAA +o08PE8AvGk63zDa8iMNCewAA +1 +QSRKN3CAHEmBUAIR8xmldwAA +3 + +TotalCount +int +sb+zkV9feUudDLY23dlQYQAA + + +FailCount +int +sb+zkV9feUudDLY23dlQYQAA + + +SuccessCount +int +sb+zkV9feUudDLY23dlQYQAA + + + + +Interface Specifications +yhEt2aWkLkOtxgYio/ciIgAA + + +Component Specifications +yhEt2aWkLkOtxgYio/ciIgAA + + +Component Architecture +yhEt2aWkLkOtxgYio/ciIgAA +1 + +Component Architecture Diagram +True +EUE1J0yUQUqmkHol+Cp/UQAA + +bGWTUDp0F0m2o2JWP9qnwgAA + + +1 + +Interactions +EUE1J0yUQUqmkHol+Cp/UQAA + + + + + + diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/collection.~ml b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/collection.~ml new file mode 100644 index 0000000..fbe6df4 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/collection.~ml @@ -0,0 +1,1180 @@ + + + + + + +UMLStandard +CSharp + + + + +Untitled +2 + +Requirements +WX+KsIF15kGB3KZUKJ7K8QAA +2 + +Business Concept Model +GU6hMgFsv0+yrD21bGu/1gAA +1 + +Business Concept Diagram ++WMb7vpuzUaMhJud2TEz6wAA + +2YJmvhwBwk2vCF6kMzY2HgAA + + + + +Use Case Model +GU6hMgFsv0+yrD21bGu/1gAA +1 + +Use Case Diagram +True +kqBCMtW2Rk6IK4SQ2uemEAAA + +ASnw18UpL02a0rTWRUmCsQAA +10 + +clMaroon +$00B9FFFF +416 +156 +86 +78 +hmIy73tPTkGDlkCzeLTpmQAA + + +1 +用户 + + +False + + +False + + + +False +hmIy73tPTkGDlkCzeLTpmQAA + + +False +hmIy73tPTkGDlkCzeLTpmQAA + + + +clMaroon +$00B9FFFF +192 +244 +101 +45 +C5m/jYszKUyANt7Knc6OswAA + + +1 +添加规则 + + +False + + +False + + + +False +C5m/jYszKUyANt7Knc6OswAA + + +False +C5m/jYszKUyANt7Knc6OswAA + + +False +C5m/jYszKUyANt7Knc6OswAA + + + +clMaroon +$00B9FFFF +lsRectilinear +458,156;458,144;242,144;242,244 +4/xFWSi8ukCLrN73MEGJXAAA +QYpEviwBJ0CYKMVb13q8TgAA +DrI6+OGqJEaVT90oeYilxAAA + +False +1.5707963267949 +15 +4/xFWSi8ukCLrN73MEGJXAAA + + +False +1.5707963267949 +30 +4/xFWSi8ukCLrN73MEGJXAAA + + +False +-1.5707963267949 +15 +4/xFWSi8ukCLrN73MEGJXAAA + + +False +-0.523598775598299 +30 +epHead +DkzjFegzFUO4iqxpZr7jzQAA + + +False +0.523598775598299 +30 +epTail +6ArtwTzvNESC2apL4WZUlQAA + + +False +0.523598775598299 +25 +epHead +DkzjFegzFUO4iqxpZr7jzQAA + + +False +-0.523598775598299 +25 +epTail +6ArtwTzvNESC2apL4WZUlQAA + + +False +-0.785398163397448 +40 +epHead +DkzjFegzFUO4iqxpZr7jzQAA + + +False +0.785398163397448 +40 +epTail +6ArtwTzvNESC2apL4WZUlQAA + + +False +-1000 +-1000 +50 +8 +DkzjFegzFUO4iqxpZr7jzQAA + + +False +-1000 +-1000 +50 +8 +6ArtwTzvNESC2apL4WZUlQAA + + + +clMaroon +$00B9FFFF +556 +244 +124 +45 +mWSKAvSU5kK+moWm6RhTqAAA + + +1 +采集页面配置 + + +False + + +False + + + +False +mWSKAvSU5kK+moWm6RhTqAAA + + +False +mWSKAvSU5kK+moWm6RhTqAAA + + +False +mWSKAvSU5kK+moWm6RhTqAAA + + + +clMaroon +$00B9FFFF +lsRectilinear +458,156;458,144;616,144;616,244 +False +5MnYEbWci0SLDxkyW07L6gAA +SKK1ZpAhUEa0IvrnDTWJGwAA +DrI6+OGqJEaVT90oeYilxAAA + +False +1.5707963267949 +15 +5MnYEbWci0SLDxkyW07L6gAA + + +False +1.5707963267949 +30 +5MnYEbWci0SLDxkyW07L6gAA + + +False +-1.5707963267949 +15 +5MnYEbWci0SLDxkyW07L6gAA + + +False +-0.523598775598299 +30 +epHead +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +0.523598775598299 +30 +epTail +IWChGG+Pok2AH4TZQcrqFwAA + + +False +0.523598775598299 +25 +epHead +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +-0.523598775598299 +25 +epTail +IWChGG+Pok2AH4TZQcrqFwAA + + +False +-0.785398163397448 +40 +epHead +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +0.785398163397448 +40 +epTail +IWChGG+Pok2AH4TZQcrqFwAA + + +False +-1000 +-1000 +50 +8 +XAJKOfIAhEKfwXnb2AW4sQAA + + +False +-1000 +-1000 +50 +8 +IWChGG+Pok2AH4TZQcrqFwAA + + + +clMaroon +$00B9FFFF +lsRectilinear +556,264;322,264;322,266;292,266 +bmff9ATAXECYLrDZttEglQAA +QYpEviwBJ0CYKMVb13q8TgAA +SKK1ZpAhUEa0IvrnDTWJGwAA + +False +1.5707963267949 +15 +bmff9ATAXECYLrDZttEglQAA + + +False +1.5707963267949 +30 +bmff9ATAXECYLrDZttEglQAA + + +False +-1.5707963267949 +15 +bmff9ATAXECYLrDZttEglQAA + + + +clMaroon +$00B9FFFF +408 +372 +108 +45 +rY+ACFau8kmczokqAz/H8gAA + + +1 +采集操作 + + +False + + +False + + + +False +rY+ACFau8kmczokqAz/H8gAA + + +False +rY+ACFau8kmczokqAz/H8gAA + + +False +rY+ACFau8kmczokqAz/H8gAA + + + +clMaroon +$00B9FFFF +lsRectilinear +460,233;460,372 +YWu9vJKYKkO2Zzg00O3KkwAA +vgkh46m+f0+M3BF5vioBMQAA +DrI6+OGqJEaVT90oeYilxAAA + +False +1.5707963267949 +15 +YWu9vJKYKkO2Zzg00O3KkwAA + + +False +1.5707963267949 +30 +YWu9vJKYKkO2Zzg00O3KkwAA + + +False +-1.5707963267949 +15 +YWu9vJKYKkO2Zzg00O3KkwAA + + +False +-0.523598775598299 +30 +epHead +o9+gXLoduky9EZZZrGiGdgAA + + +False +0.523598775598299 +30 +epTail +ogYBB8oXVEakTUPq3HiHQQAA + + +False +0.523598775598299 +25 +epHead +o9+gXLoduky9EZZZrGiGdgAA + + +False +-0.523598775598299 +25 +epTail +ogYBB8oXVEakTUPq3HiHQQAA + + +False +-0.785398163397448 +40 +epHead +o9+gXLoduky9EZZZrGiGdgAA + + +False +0.785398163397448 +40 +epTail +ogYBB8oXVEakTUPq3HiHQQAA + + +False +-1000 +-1000 +50 +8 +o9+gXLoduky9EZZZrGiGdgAA + + +False +-1000 +-1000 +50 +8 +ogYBB8oXVEakTUPq3HiHQQAA + + + +clMaroon +$00B9FFFF +400 +544 +121 +45 +QchNdqZuQUWjfkIEWL8+LgAA + + +1 +入库 + + +False + + +False + + + +False +QchNdqZuQUWjfkIEWL8+LgAA + + +False +QchNdqZuQUWjfkIEWL8+LgAA + + +False +QchNdqZuQUWjfkIEWL8+LgAA + + + +clMaroon +$00B9FFFF +lsRectilinear +460,416;460,544 +1MdauM9X8Uu2hHKr7hTWFAAA +6O7dBemOR02PYtnEwXxO7gAA +vgkh46m+f0+M3BF5vioBMQAA + +False +1.5707963267949 +15 +1MdauM9X8Uu2hHKr7hTWFAAA + + +False +1.5707963267949 +30 +1MdauM9X8Uu2hHKr7hTWFAAA + + +False +-1.5707963267949 +15 +1MdauM9X8Uu2hHKr7hTWFAAA + + +False +-0.523598775598299 +30 +epHead +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +0.523598775598299 +30 +epTail ++47X/E6a/kyvJ7TY0/mv3QAA + + +False +0.523598775598299 +25 +epHead +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +-0.523598775598299 +25 +epTail ++47X/E6a/kyvJ7TY0/mv3QAA + + +False +-0.785398163397448 +40 +epHead +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +0.785398163397448 +40 +epTail ++47X/E6a/kyvJ7TY0/mv3QAA + + +False +-1000 +-1000 +50 +8 +1KujVfdQ5kWzuVbYGdAz4gAA + + +False +-1000 +-1000 +50 +8 ++47X/E6a/kyvJ7TY0/mv3QAA + + + + +10 + +用户 +kqBCMtW2Rk6IK4SQ2uemEAAA +3 +DrI6+OGqJEaVT90oeYilxAAA +OAFVbYhR9USbiNYDqMjKNwAA +RR0P78PQBEe6EDzPMWfQbQAA +3 +6ArtwTzvNESC2apL4WZUlQAA +IWChGG+Pok2AH4TZQcrqFwAA +ogYBB8oXVEakTUPq3HiHQQAA + + +添加规则 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +QYpEviwBJ0CYKMVb13q8TgAA +i6tXjcuSq0irQPCl9YFrmQAA +JDk/kqcQgUiUB2aoHA8VkAAA +wXoeXZPt00Omrf7ZSx93PQAA +1 +bmff9ATAXECYLrDZttEglQAA +1 +DkzjFegzFUO4iqxpZr7jzQAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +cMUsrR8MM0yaJSH/meO6xAAA +r/cBz4QJU0ulz+kdhZAOdAAA +YqMcQirQAEG/YLJYfjyOfgAA +u+bYcZZdvkGBaV666SLy7AAA +2 + +4/xFWSi8ukCLrN73MEGJXAAA +hmIy73tPTkGDlkCzeLTpmQAA +4 +lActi0A3TUeodrffXs7quwAA +EE+iGAGHhkiimidSS8/cLAAA +ovG84HVtz0OrSclZmwa1GgAA +HzojmvB3nkm0vvFsypZXtwAA + + +4/xFWSi8ukCLrN73MEGJXAAA +C5m/jYszKUyANt7Knc6OswAA +4 +VOz0esOWuUOkdDRF32uO6wAA +tCxqO8FN+UKbPAhZvTMANQAA +19VzsgcSpEuFEVNJIh70JAAA +AKkkokusYUi4arvD4Pa4LQAA + + + +采集页面配置 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +SKK1ZpAhUEa0IvrnDTWJGwAA +oSAo82/+x0OYDXWcycz9ZQAA +oUpqrp85g0uEi0Cybw9GPAAA +OOzFDIx2+E6U0fksO2EECAAA +1 +bmff9ATAXECYLrDZttEglQAA +1 +XAJKOfIAhEKfwXnb2AW4sQAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +MfJU+ftNZkWdU1bZq1nNcQAA +s1xhsX0OWUKSkEN2ZdDNPwAA ++R8oRnhZQ0+LgDY0H75aNAAA +Mux6KfdUokC7T0xJfSBS1QAA +2 + +5MnYEbWci0SLDxkyW07L6gAA +hmIy73tPTkGDlkCzeLTpmQAA +4 +GFpcGTp6WkG14ImVgfyiKwAA ++eE6DbaDDU6xU+5yKZjG7QAA +yMCCOf+oYUmiGEpeKXI5WQAA +ovtlbnDmDUGjoBHU5CnEBQAA + + +5MnYEbWci0SLDxkyW07L6gAA +mWSKAvSU5kK+moWm6RhTqAAA +4 +8DQC7B7UvUW42VKhIL//kAAA +felXbeD2Ek2WYSdl+cSoMgAA +/ZYT+R0poUWnWwawlOSA7QAA +btI+jR5OvEag6yXFHa+g2wAA + + + +kqBCMtW2Rk6IK4SQ2uemEAAA +mWSKAvSU5kK+moWm6RhTqAAA +C5m/jYszKUyANt7Knc6OswAA +4 +2wY1FpgoykOLDPFhvVr8pwAA +RutZz+DNpEStB6ih8dhE6AAA +5/l0pf75qEqLtwHZdCa3IgAA +0v32P21jtEWzlZtstelqXwAA + + +采集操作 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +vgkh46m+f0+M3BF5vioBMQAA +MjLYf73z6kCDAnm9RD99vgAA +xep1T7IQ20aNaIUfO4EeYAAA +qGpR8/ekNEeMoUToh38QCQAA +2 +o9+gXLoduky9EZZZrGiGdgAA ++47X/E6a/kyvJ7TY0/mv3QAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +/stlD+BuBES2+X4GeQGSNwAA +CZC8B6WByUOmwHg7JfqdmQAA +krE2W2Ann0upP0CoKau4SAAA +S4hNOk1To0mv7C/AWAhACwAA +2 + +YWu9vJKYKkO2Zzg00O3KkwAA +hmIy73tPTkGDlkCzeLTpmQAA +4 +ZllWZ9SwuUulciviUPkkPwAA +b9AKIumm/kyWINdRkJAoVwAA +FAU7P7MgIkCgeL3Ey0er9gAA +4ooTZMHg6E6Cq6B/vHYThgAA + + +YWu9vJKYKkO2Zzg00O3KkwAA +rY+ACFau8kmczokqAz/H8gAA +4 +VFOljScNTEOmpDhYzGWapAAA +/Q4C1f4feEm/XbuJ2J41MAAA +Z2O4fN4PqkeaHfjf/WjTMwAA +gITSFSnvEUqW7SPvnDanEQAA + + + +入库 +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +6O7dBemOR02PYtnEwXxO7gAA +aM+/jm79ckK0gMI+wgICUwAA +lfH/zfaV2Ui2EnNgZsvzmwAA +NrvbE+mUOU+HLzsO7tN8qAAA +1 +1KujVfdQ5kWzuVbYGdAz4gAA + + +kqBCMtW2Rk6IK4SQ2uemEAAA +4 +4Ei33lPgFU+wvgmCz1EcsAAA +Zp54uzpl7EqVQLjawCsvVgAA +mok2cjSTN0emX3Pw1h/R+QAA +w9XEw8WMukSTGgAdL4S1lwAA +2 + +1MdauM9X8Uu2hHKr7hTWFAAA +rY+ACFau8kmczokqAz/H8gAA +4 +WCHWREjvmEOKFrvM2Bu51gAA +/lN1p7YP3EmClBb/iWgT6QAA +FXgwvuEOW0qLJiFrBsZWdAAA +Re8ca0AG8EuqiCDuThHYZQAA + + +1MdauM9X8Uu2hHKr7hTWFAAA +QchNdqZuQUWjfkIEWL8+LgAA +4 +zScKEscVw0yqIyKysa9NVQAA +aB416WAVDkKpBtrTjXsrwQAA +yqw1EKzI1ECoqvkOAnDszAAA +yTYsL7Wd1EOqK7kt2erfZQAA + + + + + +Specifications +WX+KsIF15kGB3KZUKJ7K8QAA +4 + +Business Type Model +yhEt2aWkLkOtxgYio/ciIgAA +1 + +Business Type Model Diagram +ZV09+cqePUmz0JvbbukngQAA + +J/qYIBWlJkuAWnthQoCntQAA +5 + +clMaroon +$00B9FFFF +208 +128 +91 +43 +qab8Sc0yRkabTi6imSS1oAAA + + +1 +Director + + +False + + +False + + + +qab8Sc0yRkabTi6imSS1oAAA + + +qab8Sc0yRkabTi6imSS1oAAA + + +False +qab8Sc0yRkabTi6imSS1oAAA + + + +clMaroon +$00B9FFFF +288 +224 +225 +199 +BsyPnxA8CE+U/vX45FOo3QAA + + +1 +Project + + +False + + +False + + + +BsyPnxA8CE+U/vX45FOo3QAA + + +BsyPnxA8CE+U/vX45FOo3QAA + + +False +BsyPnxA8CE+U/vX45FOo3QAA + + + +clMaroon +$00B9FFFF +604 +196 +190 +95 +y+kHmBIHSEy6KkhnFRJJ9AAA + + +1 +DataPack + + +False + + +False + + + +y+kHmBIHSEy6KkhnFRJJ9AAA + + +y+kHmBIHSEy6KkhnFRJJ9AAA + + +False +y+kHmBIHSEy6KkhnFRJJ9AAA + + + +clMaroon +$00B9FFFF +612 +420 +190 +95 +UnZpH0P5MEmLGqqpdMSkFgAA + + +1 +PropertyRule + + +False + + +False + + + +UnZpH0P5MEmLGqqpdMSkFgAA + + +UnZpH0P5MEmLGqqpdMSkFgAA + + +False +UnZpH0P5MEmLGqqpdMSkFgAA + + + +clMaroon +$00B9FFFF +288 +468 +104 +82 +sb+zkV9feUudDLY23dlQYQAA + + +1 +State + + +False + + +False + + + +sb+zkV9feUudDLY23dlQYQAA + + +sb+zkV9feUudDLY23dlQYQAA + + +False +sb+zkV9feUudDLY23dlQYQAA + + + + +5 + +Director +ZV09+cqePUmz0JvbbukngQAA +4 +0J3IsT6sXEaK4pNZnqnqhAAA +MA451DkuIUOBb1e+VpBPggAA +rVAcXuRUgkmLJpfakBTjywAA +y6ddIVesAkmV38k6i1+n2AAA + + +Project +ZV09+cqePUmz0JvbbukngQAA +4 +yuSw0hl9SEmnlZkdVOaT8wAA +OSqwwar6h0aM1kZhWgEnbwAA +KAXGvY3I/kSwE76+xnjHXQAA +OGXNMfdV10W/CUIZ1CkQRAAA +2 + +Collect +BsyPnxA8CE+U/vX45FOo3QAA +1 + +pdkReturn +IList< DataPack> +Jo66Lx9oXU6Oa8Q6+XsnPwAA + + + +Invoke +BsyPnxA8CE+U/vX45FOo3QAA +3 + +pdkReturn +void +vNbxus93/0ahaWbSw/cugQAA + + +func +Func<DataPack +vNbxus93/0ahaWbSw/cugQAA + + +void> +vNbxus93/0ahaWbSw/cugQAA + + +10 + +ListUriRule +string +BsyPnxA8CE+U/vX45FOo3QAA + + +PageUriRule +string +BsyPnxA8CE+U/vX45FOo3QAA + + +Rules +PropertyRule +BsyPnxA8CE+U/vX45FOo3QAA + + +RequetTimeOut +int +BsyPnxA8CE+U/vX45FOo3QAA + + +Encode +Encoding +BsyPnxA8CE+U/vX45FOo3QAA + + +FilterWords +string +BsyPnxA8CE+U/vX45FOo3QAA + + +SaveResouce +bool +BsyPnxA8CE+U/vX45FOo3QAA + + +SaveResourceExtension +string +BsyPnxA8CE+U/vX45FOo3QAA + + +ResouceSavePath +string +BsyPnxA8CE+U/vX45FOo3QAA + + +CollectState +State +sb+zkV9feUudDLY23dlQYQAA +BsyPnxA8CE+U/vX45FOo3QAA + + + +DataPack +ZV09+cqePUmz0JvbbukngQAA +4 +G9q++nTJQEqeBIqJCR/nFgAA +tmPTrWJuCUS0H6pYirGuFgAA +wmHt3rRlnUKKyKD+mjKt0AAA +Fc6GdBNxxkuro4BzDlIXrgAA +3 + +DataPack +y+kHmBIHSEy6KkhnFRJJ9AAA +1 + +property +w92ZwwBuaEuZrIvDNx2CjAAA +UnZpH0P5MEmLGqqpdMSkFgAA + + + +this[key +y+kHmBIHSEy6KkhnFRJJ9AAA +1 + +pdkReturn +string]:string +3pFPwjKwbkqiWKglYB01nwAA + + + +Clone +y+kHmBIHSEy6KkhnFRJJ9AAA + +1 +DmYqitAnEk+PyRMLpN13wgAA +1 + +dict +vkPrivate +IDictionary<string,string> +y+kHmBIHSEy6KkhnFRJJ9AAA + + + +PropertyRule +ZV09+cqePUmz0JvbbukngQAA +4 +ec00yVTJVUiOwGk5g9beagAA +VVUofFfjqUuLWP0+2zQ/MQAA +P2sPO47pzUqthoUrR2x8MgAA +LINf4mSkdUuiOF9JUKwPuwAA +2 + +Add +UnZpH0P5MEmLGqqpdMSkFgAA +3 + +pdkReturn +void +2+mSS/Rg+kC4pIpVjhepyQAA + + +key +string +2+mSS/Rg+kC4pIpVjhepyQAA + + +value +string +2+mSS/Rg+kC4pIpVjhepyQAA + + + +this[key +UnZpH0P5MEmLGqqpdMSkFgAA +1 + +pdkReturn +string]:string +6F0BztqFM06gbzS/qlcLcAAA + + +1 +l1lJDcpqjUaOf5y+fvwTpAAA +2 + +dict +IDictionary<string,string> +UnZpH0P5MEmLGqqpdMSkFgAA + + +ID +string +UnZpH0P5MEmLGqqpdMSkFgAA + + + +State +ZV09+cqePUmz0JvbbukngQAA +4 +P3V6W6H9X0yuSSMX8u9i/AAA +rUTS4vN9Aky1YqbjoJ14cAAA +N/Z32hYzpU2BsedA2URIgAAA +o08PE8AvGk63zDa8iMNCewAA +1 +QSRKN3CAHEmBUAIR8xmldwAA +3 + +TotalCount +int +sb+zkV9feUudDLY23dlQYQAA + + +FailCount +int +sb+zkV9feUudDLY23dlQYQAA + + +SuccessCount +int +sb+zkV9feUudDLY23dlQYQAA + + + + +Interface Specifications +yhEt2aWkLkOtxgYio/ciIgAA + + +Component Specifications +yhEt2aWkLkOtxgYio/ciIgAA + + +Component Architecture +yhEt2aWkLkOtxgYio/ciIgAA +1 + +Component Architecture Diagram +True +EUE1J0yUQUqmkHol+Cp/UQAA + +bGWTUDp0F0m2o2JWP9qnwgAA + + +1 + +Interactions +EUE1J0yUQUqmkHol+Cp/UQAA + + + + + + diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/tagsplugin.uml b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/tagsplugin.uml new file mode 100644 index 0000000..55d4d32 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/tagsplugin.uml @@ -0,0 +1,372 @@ + + + + + + +UMLStandard +CSharp + + + + +tagsplugin +2 + +Requirements +8ENhoUPFW0urPy2DEVKL8AAA +2 + +Business Concept Model +cqLSy9Srrkuw3hnX0Io5awAA +1 + +Business Concept Diagram +cVI4uIUZV06wkp3Hls/riAAA + +XENdl9QFIk2Sr1prPlqv0AAA + + + + +Use Case Model +cqLSy9Srrkuw3hnX0Io5awAA +1 + +Use Case Diagram +True +KrrgbjDYUEyEPYRZEw+a+QAA + +wNGyLGlo+E6xKnzqMqYAogAA + + + + + +Specifications +8ENhoUPFW0urPy2DEVKL8AAA +4 + +Business Type Model +DOCzGhsQsEirtck6pYNDJgAA +1 + +Business Type Model Diagram +AZoe8fcv306zN2koGhOqgwAA + +rYIfndyxHkOaVhZMYt9RIwAA +3 + +clMaroon +$00B9FFFF +68 +84 +314 +121 +jCQ1DkmSS0y5BfbkrEjuwgAA + + +1 +Tags + + +False + + +False + + + +jCQ1DkmSS0y5BfbkrEjuwgAA + + +jCQ1DkmSS0y5BfbkrEjuwgAA + + +False +jCQ1DkmSS0y5BfbkrEjuwgAA + + + +clMaroon +$00B9FFFF +456 +84 +105 +95 +waOMn7Mwf0CR/5u+gOU8vgAA + + +1 +Tag + + +False + + +False + + + +waOMn7Mwf0CR/5u+gOU8vgAA + + +waOMn7Mwf0CR/5u+gOU8vgAA + + +False +waOMn7Mwf0CR/5u+gOU8vgAA + + + +clMaroon +$00B9FFFF +64 +260 +155 +95 +fRz99KHRf06kLCvqYw/zpQAA + + +1 +TagsCollection + + +False + + +False + + + +fRz99KHRf06kLCvqYw/zpQAA + + +fRz99KHRf06kLCvqYw/zpQAA + + +False +fRz99KHRf06kLCvqYw/zpQAA + + + + +3 + +Tags +AZoe8fcv306zN2koGhOqgwAA +4 +76f6H5wThkS/zdof6UzOaQAA +EOWXDDjApk6+lazLK+MWkwAA +8HbUaV2tnUCGJFMpORF5wwAA +KE1q1jszL0KMw8mVTHNhEgAA +6 + +LoadAllTags +jCQ1DkmSS0y5BfbkrEjuwgAA +1 + +pdkReturn +Tag[] +fk5x2R8zdkuDcthpd0JcuwAA + + + +AddTag +jCQ1DkmSS0y5BfbkrEjuwgAA +2 + +pdkReturn +bool +uEuvz6m4G0+cwapQ0jHj9gAA + + +tag +uEuvz6m4G0+cwapQ0jHj9gAA +waOMn7Mwf0CR/5u+gOU8vgAA + + + +UpdateTag +jCQ1DkmSS0y5BfbkrEjuwgAA +2 + +pdkReturn +void +LqDrsMB54kq3xw/Ad/0BngAA + + +tag +LqDrsMB54kq3xw/Ad/0BngAA +waOMn7Mwf0CR/5u+gOU8vgAA + + + +Delete +jCQ1DkmSS0y5BfbkrEjuwgAA +2 + +pdkReturn +void +CYXLmJdTyEmajr1G9vUqPwAA + + +id +string +CYXLmJdTyEmajr1G9vUqPwAA + + + +Clear +jCQ1DkmSS0y5BfbkrEjuwgAA +1 + +pdkReturn +void +z99i5+tokU+TZhQPVHttaAAA + + + +Replace +jCQ1DkmSS0y5BfbkrEjuwgAA +3 + +pdkReturn +string +bTKbR00HA0WNaJDlnhXlGgAA + + +defaultTagLinkFormat +string +bTKbR00HA0WNaJDlnhXlGgAA + + +content +string +bTKbR00HA0WNaJDlnhXlGgAA + + + + +Tag +AZoe8fcv306zN2koGhOqgwAA +4 +Wj83lTqg20KA8dcYhfHxQQAA +5abbO+mkcUanc1u4dQoCSAAA +s5RoGzwL7kClBPyCggsxuQAA +FkBZAQZB6k2dRLFjV4A9dQAA +4 +FPopMBHga0GavcW0rU6OkQAA +sjaEa5JQ8Eq75SabSgAHcwAA +n2EtOLVyH0e+uL9kyV/dPgAA +f73hNmUTKEG5GAtDNjA2cQAA +4 + +ID +string +waOMn7Mwf0CR/5u+gOU8vgAA + + +Name +string +waOMn7Mwf0CR/5u+gOU8vgAA + + +Description +string +waOMn7Mwf0CR/5u+gOU8vgAA + + +LinkUri +string +waOMn7Mwf0CR/5u+gOU8vgAA + + + +TagsCollection +AZoe8fcv306zN2koGhOqgwAA +4 +Kzz510n6eEuZ680+Q5TrsAAA +uFV1T+7RUUO1qf6CMm9XogAA +/vIkh+tSN0Ov8bUfW5It5gAA +n1b6Io1/zEORLXBij5EY5wAA +3 + +Remove +fRz99KHRf06kLCvqYw/zpQAA +2 + +pdkReturn +void +AkflhL4EAkyk5mylUeAfewAA + + +id +string +AkflhL4EAkyk5mylUeAfewAA + + + +Clear +fRz99KHRf06kLCvqYw/zpQAA +1 + +pdkReturn +void +1CCphKAe8EyumUXnaTT6GQAA + + + +Add +fRz99KHRf06kLCvqYw/zpQAA +2 + +pdkReturn +bool +NlNITI+q40GAek/Gb/og0wAA + + +tag +NlNITI+q40GAek/Gb/og0wAA +waOMn7Mwf0CR/5u+gOU8vgAA + + +1 + +dict +vkPrivate +IDirectory<string,Tag> +fRz99KHRf06kLCvqYw/zpQAA + + + + +Interface Specifications +DOCzGhsQsEirtck6pYNDJgAA + + +Component Specifications +DOCzGhsQsEirtck6pYNDJgAA + + +Component Architecture +DOCzGhsQsEirtck6pYNDJgAA +1 + +Component Architecture Diagram +True +bLE2WlmykkqsndNsB4v8sQAA + +CyZogpPfw06sAQPmbLKujwAA + + +1 + +Interactions +bLE2WlmykkqsndNsB4v8sQAA + + + + + + diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/tagsplugin.~ml b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/tagsplugin.~ml new file mode 100644 index 0000000..eaa2a81 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/Docs/tagsplugin.~ml @@ -0,0 +1,372 @@ + + + + + + +UMLStandard +CSharp + + + + +tagsplugin +2 + +Requirements +8ENhoUPFW0urPy2DEVKL8AAA +2 + +Business Concept Model +cqLSy9Srrkuw3hnX0Io5awAA +1 + +Business Concept Diagram +cVI4uIUZV06wkp3Hls/riAAA + +XENdl9QFIk2Sr1prPlqv0AAA + + + + +Use Case Model +cqLSy9Srrkuw3hnX0Io5awAA +1 + +Use Case Diagram +True +KrrgbjDYUEyEPYRZEw+a+QAA + +wNGyLGlo+E6xKnzqMqYAogAA + + + + + +Specifications +8ENhoUPFW0urPy2DEVKL8AAA +4 + +Business Type Model +DOCzGhsQsEirtck6pYNDJgAA +1 + +Business Type Model Diagram +AZoe8fcv306zN2koGhOqgwAA + +rYIfndyxHkOaVhZMYt9RIwAA +3 + +clMaroon +$00B9FFFF +68 +84 +314 +121 +jCQ1DkmSS0y5BfbkrEjuwgAA + + +1 +Tags + + +False + + +False + + + +jCQ1DkmSS0y5BfbkrEjuwgAA + + +jCQ1DkmSS0y5BfbkrEjuwgAA + + +False +jCQ1DkmSS0y5BfbkrEjuwgAA + + + +clMaroon +$00B9FFFF +456 +84 +105 +95 +waOMn7Mwf0CR/5u+gOU8vgAA + + +1 +Tag + + +False + + +False + + + +waOMn7Mwf0CR/5u+gOU8vgAA + + +waOMn7Mwf0CR/5u+gOU8vgAA + + +False +waOMn7Mwf0CR/5u+gOU8vgAA + + + +clMaroon +$00B9FFFF +56 +240 +155 +95 +fRz99KHRf06kLCvqYw/zpQAA + + +1 +TagsCollection + + +False + + +False + + + +fRz99KHRf06kLCvqYw/zpQAA + + +fRz99KHRf06kLCvqYw/zpQAA + + +False +fRz99KHRf06kLCvqYw/zpQAA + + + + +3 + +Tags +AZoe8fcv306zN2koGhOqgwAA +4 +76f6H5wThkS/zdof6UzOaQAA +EOWXDDjApk6+lazLK+MWkwAA +8HbUaV2tnUCGJFMpORF5wwAA +KE1q1jszL0KMw8mVTHNhEgAA +6 + +LoadAllTags +jCQ1DkmSS0y5BfbkrEjuwgAA +1 + +pdkReturn +Tag[] +fk5x2R8zdkuDcthpd0JcuwAA + + + +AddTag +jCQ1DkmSS0y5BfbkrEjuwgAA +2 + +pdkReturn +bool +uEuvz6m4G0+cwapQ0jHj9gAA + + +tag +uEuvz6m4G0+cwapQ0jHj9gAA +waOMn7Mwf0CR/5u+gOU8vgAA + + + +UpdateTag +jCQ1DkmSS0y5BfbkrEjuwgAA +2 + +pdkReturn +void +LqDrsMB54kq3xw/Ad/0BngAA + + +tag +LqDrsMB54kq3xw/Ad/0BngAA +waOMn7Mwf0CR/5u+gOU8vgAA + + + +Delete +jCQ1DkmSS0y5BfbkrEjuwgAA +2 + +pdkReturn +void +CYXLmJdTyEmajr1G9vUqPwAA + + +id +string +CYXLmJdTyEmajr1G9vUqPwAA + + + +Clear +jCQ1DkmSS0y5BfbkrEjuwgAA +1 + +pdkReturn +void +z99i5+tokU+TZhQPVHttaAAA + + + +Replace +jCQ1DkmSS0y5BfbkrEjuwgAA +3 + +pdkReturn +string +bTKbR00HA0WNaJDlnhXlGgAA + + +defaultTagLinkFormat +string +bTKbR00HA0WNaJDlnhXlGgAA + + +content +string +bTKbR00HA0WNaJDlnhXlGgAA + + + + +Tag +AZoe8fcv306zN2koGhOqgwAA +4 +Wj83lTqg20KA8dcYhfHxQQAA +5abbO+mkcUanc1u4dQoCSAAA +s5RoGzwL7kClBPyCggsxuQAA +FkBZAQZB6k2dRLFjV4A9dQAA +4 +FPopMBHga0GavcW0rU6OkQAA +sjaEa5JQ8Eq75SabSgAHcwAA +n2EtOLVyH0e+uL9kyV/dPgAA +f73hNmUTKEG5GAtDNjA2cQAA +4 + +ID +string +waOMn7Mwf0CR/5u+gOU8vgAA + + +Name +string +waOMn7Mwf0CR/5u+gOU8vgAA + + +Description +string +waOMn7Mwf0CR/5u+gOU8vgAA + + +LinkUri +string +waOMn7Mwf0CR/5u+gOU8vgAA + + + +TagsCollection +AZoe8fcv306zN2koGhOqgwAA +4 +Kzz510n6eEuZ680+Q5TrsAAA +uFV1T+7RUUO1qf6CMm9XogAA +/vIkh+tSN0Ov8bUfW5It5gAA +n1b6Io1/zEORLXBij5EY5wAA +3 + +Remove +fRz99KHRf06kLCvqYw/zpQAA +2 + +pdkReturn +void +AkflhL4EAkyk5mylUeAfewAA + + +id +string +AkflhL4EAkyk5mylUeAfewAA + + + +Clear +fRz99KHRf06kLCvqYw/zpQAA +1 + +pdkReturn +void +1CCphKAe8EyumUXnaTT6GQAA + + + +Add +fRz99KHRf06kLCvqYw/zpQAA +2 + +pdkReturn +bool +NlNITI+q40GAek/Gb/og0wAA + + +tag +NlNITI+q40GAek/Gb/og0wAA +waOMn7Mwf0CR/5u+gOU8vgAA + + +1 + +dict +vkPrivate +IDirectory<string,Tag> +fRz99KHRf06kLCvqYw/zpQAA + + + + +Interface Specifications +DOCzGhsQsEirtck6pYNDJgAA + + +Component Specifications +DOCzGhsQsEirtck6pYNDJgAA + + +Component Architecture +DOCzGhsQsEirtck6pYNDJgAA +1 + +Component Architecture Diagram +True +bLE2WlmykkqsndNsB4v8sQAA + +CyZogpPfw06sAQPmbLKujwAA + + +1 + +Interactions +bLE2WlmykkqsndNsB4v8sQAA + + + + + + diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPS.Collection.sln b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPS.Collection.sln new file mode 100644 index 0000000..f1bee94 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPS.Collection.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPS.Collection", "OPS.Collection\OPS.Collection.csproj", "{74914743-7506-414A-8F6B-45E5479F0127}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OPS.Collection.TestApp", "OPS.Collection.TestApp\OPS.Collection.TestApp.csproj", "{F19EC62A-FCC9-4495-AF2A-D3B37995F32E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Collection.Web", "Collection.Web\Collection.Web.csproj", "{FDF44A96-D75E-4CF6-950F-E845B1D13339}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74914743-7506-414A-8F6B-45E5479F0127}.Release|Any CPU.Build.0 = Release|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F19EC62A-FCC9-4495-AF2A-D3B37995F32E}.Release|Any CPU.Build.0 = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDF44A96-D75E-4CF6-950F-E845B1D13339}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Collector.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Collector.cs new file mode 100644 index 0000000..89b473f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Collector.cs @@ -0,0 +1,324 @@ +// +// +// Copyright 2011 @ OPSoft Inc.all rights reseved. +// +// Project : Untitled +// File Name : Director.cs +// Date : 2011/8/25 +// Author : +// +// + +using System; +using System.IO; +using System.Text; +using System.Xml; + +namespace OPSoft.Plugin.NetCrawl +{ + public class Collector + { + /// + /// ļ· + /// + private string configFilePath; + + + internal Collector(string configFile) + { + this.configFilePath = configFile; + } + + /// + /// µIJɼִж + /// + /// + /// + public static Collector Create(string configFile) + { + Collector dirc = new Collector(configFile); + dirc.init(); + return dirc; + } + + + /// + /// Ŀ + /// + private static Project[] projects; + + private void init() + { + if (this.configFilePath == "") throw new ArgumentException("ļΪգ"); + if (!File.Exists(configFilePath)) + { + //ļ,򴴽ʼ + File.Create(configFilePath).Dispose(); + const string initData = @" + + + + + \s+([\s\S]+?)\s+]]> + + + + \s*([\s\S]+?)\s*]]> + \s*([\s\S]+?)\s*]]> + + + +"; + + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + } + + public Project GetProject(string id) + { + foreach (Project pro in this.GetProjects()) + { + if (pro.Id == id) return pro; + } + return null; + } + + /// + /// Ŀ + /// + /// + /// + public bool CreateProject(Project project) + { + XmlNode newPrj, + propertyNode; + + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNodeList xnodelist = xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); + if (xnodelist.Count != 0) return false; + + XmlNode projectsNode = xd.SelectSingleNode("/config/projects"); + XmlAttribute xa; + + newPrj = xd.CreateElement("project"); + + xa = xd.CreateAttribute("id"); + xa.Value = project.Id; + newPrj.Attributes.Append(xa); + + xa = xd.CreateAttribute("name"); + xa.Value = project.Name; + newPrj.Attributes.Append(xa); + + xa = xd.CreateAttribute("encoding"); + xa.Value = project.RequestEncoding; + newPrj.Attributes.Append(xa); + + + //бַ + propertyNode = xd.CreateElement("listUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); + newPrj.AppendChild(propertyNode); + + //б + propertyNode = xd.CreateElement("listBlockRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); + newPrj.AppendChild(propertyNode); + + //ҳ + propertyNode = xd.CreateElement("pageUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); + newPrj.AppendChild(propertyNode); + + //˴ʹ + propertyNode = xd.CreateElement("filterWordsRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); + newPrj.AppendChild(propertyNode); + + //Թ + propertyNode = xd.CreateElement("propertyRules"); + XmlNode pn; + foreach (string pname in project.Rules) + { + pn = xd.CreateElement("add"); + + // + xa = xd.CreateAttribute("name"); + xa.Value = pname; + pn.Attributes.Append(xa); + pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); + + propertyNode.AppendChild(pn); + } + newPrj.AppendChild(propertyNode); + + projectsNode.AppendChild(newPrj); + xd.Save(configFilePath); + return true; + } + + /// + /// Ŀ + /// + /// + /// + /// + public bool SaveProject(string projectId, Project project) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode projectNode, + propertyNode; + + //ȡĿڵ + projectNode = + xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), projectId)); + + //ڵΪգ򷵻false + if (projectNode == null) return false; + + //µıѾ򷵻 + if (projectId != project.Id && + xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), project.Id)) != + null) return false; + + projectNode.Attributes["id"].Value = project.Id; + projectNode.Attributes["name"].Value = project.Name; + projectNode.Attributes["encoding"].Value = project.RequestEncoding; + + //Ƴڵ + projectNode.RemoveChild(projectNode["listUriRule"]); + projectNode.RemoveChild(projectNode["listBlockRule"]); + projectNode.RemoveChild(projectNode["pageUriRule"]); + projectNode.RemoveChild(projectNode["filterWordsRule"]); + projectNode.RemoveChild(projectNode["propertyRules"]); + + /*********** ӽڵ ***************/ + + //бַ + propertyNode = xd.CreateElement("listUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); + projectNode.AppendChild(propertyNode); + + //б + propertyNode = xd.CreateElement("listBlockRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); + projectNode.AppendChild(propertyNode); + + //ҳ + propertyNode = xd.CreateElement("pageUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); + projectNode.AppendChild(propertyNode); + + //˴ʹ + propertyNode = xd.CreateElement("filterWordsRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); + projectNode.AppendChild(propertyNode); + + //Թ + propertyNode = xd.CreateElement("propertyRules"); + XmlNode pn; + XmlAttribute xa; + foreach (string pname in project.Rules) + { + pn = xd.CreateElement("add"); + + // + xa = xd.CreateAttribute("name"); + xa.Value = pname; + pn.Attributes.Append(xa); + pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); + + propertyNode.AppendChild(pn); + } + projectNode.AppendChild(propertyNode); + + + // + xd.Save(configFilePath); + + return true; + } + + /// + /// ƳĿ + /// + /// + /// + public bool RemoveProject(Project project) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode prjsNode = xd.SelectSingleNode("/config/projects"); + XmlNode prjNode = xd.SelectSingleNode(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); + if (prjNode == null) return false; + + prjsNode.RemoveChild(prjNode); + + xd.Save(configFilePath); + return true; + } + + public Project[] GetProjects() + { + if (projects == null) + { + Project pro; + XmlNodeList propertyNodes; + + //ļ + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + //ȡĿб + XmlNodeList projectList = xd.SelectNodes("/config/projects/project"); + + projects = new Project[projectList.Count]; + + int i = 0; + + foreach (XmlNode node in projectList) + { + //ĿΪĿԹ + pro = new Project(); + pro.Rules = new PropertyRule(); + + pro.Id = node.Attributes["id"].Value; + pro.Name = node.Attributes["name"].Value; + pro.RequestEncoding = node.Attributes["encoding"].Value; + pro.ListUriRule = node["listUriRule"].InnerText; + pro.ListBlockRule = node["listBlockRule"].InnerText; + pro.PageUriRule = node["pageUriRule"].InnerText; + pro.FilterWordsRule = node["filterWordsRule"].InnerText; + + propertyNodes = + xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]/propertyRules/add", pro.Id)); + foreach (XmlNode pnode in propertyNodes) + { + pro.Rules.Add(pnode.Attributes["name"].Value, pnode.InnerText); + } + projects[i] = pro; + ++i; + } + } + return projects; + } + + + /// + /// Ŀ + /// + public void ClearProjects() + { + projects = null; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/DataPack.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/DataPack.cs new file mode 100644 index 0000000..3a1d425 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/DataPack.cs @@ -0,0 +1,76 @@ +// +// Copyright 2011 @ OPSoft Inc.all rights reseved. +// +// Project : Untitled +// File Name : DataPack.cs +// Date : 2011/8/25 +// Author : +// +// + +using System; +using System.Collections; +using System.Collections.Generic; + +namespace OPSoft.Plugin.NetCrawl +{ + /// + /// ɼݰ + /// + public class DataPack : ICloneable, IEnumerable> + { + private PropertyRule property; + + /// + /// ݼ + /// + private IDictionary dict = new Dictionary(); + + public DataPack(PropertyRule property, string referenceUrl) + { + this.property = property; + this.ReferenceUrl = referenceUrl; + + foreach (string key in property) + { + dict.Add(key, key); + } + } + + /// + /// ɼԴַ + /// + public string ReferenceUrl { get; private set; } + + //ȡ + public string this[string key] + { + get { return dict.Keys.Contains(key) ? dict[key] : null; } + set + { + if (dict.Keys.Contains(key)) dict[key] = value; + else dict.Add(key, value); + } + } + + /// + /// ¡һµDataPack󣬲 + /// + /// + object ICloneable.Clone() + { + DataPack pack = new DataPack(property, this.ReferenceUrl); + return pack; + } + + public IEnumerator> GetEnumerator() + { + foreach (KeyValuePair pair in dict) yield return pair; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Project.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Project.cs new file mode 100644 index 0000000..d7d2b23 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Project.cs @@ -0,0 +1,470 @@ +// +// +// Copyright 2011 (C) OPSoft INC,All rights reseved. +// ----------------------------- +// Project : OPSoft.Plugin.NetCrawl +// File Name : Project.cs +// Date : 2011/8/25 +// Author : Newmin +// ----------------------------- +// 2011-09-06 [+] newmin:Ӽ·Ĺܣɼба"/news/12.html" +// +// + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using Ops.Utils; + +namespace OPSoft.Plugin.NetCrawl +{ + public delegate void DataPackFunc(DataPack datapack); + + public class Project + { + private State state = new State(); + + public bool SaveResouce; + + public string SaveResourceExtension; + + public string ResouceSavePath; + + /// + /// ·ĸ· + /// + private string basePath; + + /// + /// Եַƥʽ + /// + private static Regex absoluteUriRegex = new Regex("^(?!http)", RegexOptions.IgnoreCase); + + /// + /// Ŀ + /// + public string Id { get; set; } + + /// + /// Ŀ + /// + public string Name { get; set; } + + /// + /// Ĭ30볬ʱ + /// + public int RequestTimeOut = 30000; + + private string _formatedPageUriRule; + + /// + /// + /// + public string RequestEncoding { get; set; } + + /// + /// Ƿʹọ̈߳Ĭ϶߳ + /// + public bool UseMultiThread { get; set; } + + /// + /// + /// + private Encoding Encode + { + get + { + int codepage; + switch (RequestEncoding.ToLower()) + { + default: + codepage = 65001; + break; + case "default": + return Encoding.Default; + case "gb2312": + codepage = 936; + break; + case "big5": + codepage = 950; + break; + } + return Encoding.GetEncoding(codepage); + } + } + + /// + /// бҳURI + /// + public string ListUriRule { get; set; } + + /// + /// б,ڻȡҳURIб + /// + public string ListBlockRule { get; set; } + + /// + /// ҳURI + /// + public string PageUriRule { get; set; } + + /// + /// ʽ + /// + public string FormatedPageUriRule + { + get + { + return this._formatedPageUriRule ?? + (this._formatedPageUriRule = RuleFormat.Format(this.PageUriRule)); + } + } + + /// + /// Ҫ˵Ĵ,ᱻ滻{filter:˵Ĵ} + /// + public string FilterWordsRule { get; set; } + + /// + /// Թ + /// + public PropertyRule Rules { get; set; } + + /// + /// ɼ״̬ + /// + public State State + { + get { return state; } + } + + /// + /// ü״̬ + /// + public void ResetState() + { + state.TotalCount = 0; + state.SuccessCount = 0; + state.FailCount = 0; + } + + + /// + /// ɼбҳݼ + /// + /// + /// + public IList Collect(object listUriParameter) + { + //ReadPage(parameter); + string uri = String.Format(this.ListUriRule, listUriParameter); + IList packs = new List(); + + AnalysisListPage(uri, dp => { packs.Add(dp); }); + + +#if DEBUG + // ȡҳ + // int i=0; + // DataPack pack= GetPageData("http://news.163.com/11/0824/10/7C7DG91H00011229.html", ref i); +#endif + + return packs; + } + + /// + /// ɼбҳԲɼĽִв + /// + /// бURIеIJ"{0}"ֵ + /// + public void InvokeList(object listUriParameter, DataPackFunc func) + { + string uri = String.Format(this.ListUriRule, listUriParameter); + AnalysisListPage(uri, func); + } + + /// + /// ɼбҳԲɼĽִв + /// + /// бҳַ + /// + public void InvokeList(string listUri, DataPackFunc func) + { + AnalysisListPage(listUri, func); + } + + /// + /// ɼƪ + /// + /// + /// + public void InvokeSingle(string pageUri, DataPackFunc func) + { + int i = 0; + this.State.TotalCount = 1; + GetPageData(pageUri, ref i, func); + } + + + /// + /// бҳ,Խִлִ + /// + /// + private void AnalysisListPage(string pageUri, DataPackFunc func) + { + int taskCount = 0, + // + taskNumbers = 0; //һжǷ + + string html; //صбҳHtml + + int bufferLength = 1; + byte[] buffer = new byte[bufferLength]; //صݻ + StringBuilder sb = new StringBuilder(); //췵صĽ + MatchCollection listMatches; //бƥ估ҳַƥ + + +#if DEBUG + Console.WriteLine("ʼ:{0}...", pageUri); +#endif + + + //бҳ + HttpWebRequest request = (HttpWebRequest) WebRequest.Create(pageUri); + request.Timeout = this.RequestTimeOut; + + Stream stream = request.GetResponse().GetResponseStream(); + + + using (StreamReader sr = new StreamReader(stream, this.Encode)) + { + html = sr.ReadToEnd(); + } + +#if DEBUG + Console.WriteLine("صΪ:{0}", html); +#endif + + + //бҳ + listMatches = Regex.Matches(html, RuleFormat.Format(this.ListBlockRule)); + + + //ûҵƥ + if (listMatches.Count == 0) + { +#if DEBUG + Console.WriteLine("ûҵƥ!"); +#endif + return; + } + + + //ƥ + +#if DEBUGS + Console.WriteLine("\r\n------------------------------\r\nõƥбΪ:\r\n"); +#endif + + Regex pageUriRegex = new Regex(this.FormatedPageUriRule); + + //ʵ + IList pageUrls = new List(); + + foreach (Match m in listMatches) + { +#if DEBUG + Console.WriteLine("\r\n------------------------------------------------\r\n{0}", m.Value); +#endif + foreach (Match pm in pageUriRegex.Matches(m.Value)) + { +#if DEBUG + Console.WriteLine(pm.Value); +#endif + pageUrls.Add(pm.Value); + + + //ȡҳݣִ + + //̻߳ȡ + //if (!UseSingleThread) + //{ + // new Thread(() => + // { + // //ûִ + // GetPageData(pm.Value, ref taskNumbers, func); + // } + // ).Start(); + //} + //else //̵߳ + //{ + // //ûִ + // GetPageData(pm.Value, ref taskNumbers, func); + //} + } + } + + // + taskCount = pageUrls.Count; + + if (!this.UseMultiThread) //߳ + { + foreach (string pageUrl in pageUrls) + { + //ûִ + GetPageData(pageUrl, ref taskNumbers, func); + } + } + else + { + MultiThreadProcess mp = new MultiThreadProcess(5, taskCount); + mp.Start>(urls => + { + lock (urls) + { + //ûִ + GetPageData(urls[0], ref taskNumbers, func); + pageUrls.Remove(urls[0]); + } + }, pageUrls); + } + + // + state.TotalCount = taskCount; + + //ֱִ߳̾ϣ򷵻 + do + { + } while (taskNumbers != taskCount); + + +#if DEBUG + Console.WriteLine("....!ɼ{0}", taskCount); +#endif + } + + /// + /// ȡһҳݲ + /// + /// ҳַ + /// άһ,жǷ + /// + private DataPack GetPageData(string pageUri, ref int number, DataPackFunc func) + { + DataPack dp; + int bufferLength = 10; + byte[] buffer = new byte[bufferLength]; //صݻ + StringBuilder sb = new StringBuilder(); //췵صĽ + Match match; //ƥ + + + //ҳַҳַƥ䣡 + + if (!Regex.IsMatch(pageUri, this.FormatedPageUriRule)) + { + ++number; + state.FailCount++; + return null; + + //throw new ArgumentException("ҳַҳַƥ䣡", pageUri); + } + + //ҳַΪ· + if (absoluteUriRegex.IsMatch(pageUri)) pageUri = GetBasePath(pageUri) + pageUri; + + + //ҳHTML + string html = String.Empty; + + try + { + HttpWebRequest req = (HttpWebRequest) WebRequest.Create(pageUri); + req.Timeout = this.RequestTimeOut; + + + Stream stream = req.GetResponse().GetResponseStream(); + + html = sb.ToString(); + using (StreamReader sr = new StreamReader(stream, this.Encode)) + { + html = sr.ReadToEnd(); + } + } + catch (Exception exc) + { + state.FailCount++; + return null; + } + + //ص +#if DEBUG + Console.WriteLine("\r\n------------------------------\r\nõƥбΪ:{0}",html); +#endif + dp = new DataPack(Rules, pageUri); + + + foreach (string propertyName in this.Rules) + { + match = Regex.Match(html, this.Rules[propertyName]); + if (match != null) + { + dp[propertyName] = match.Groups[1].Value; + } + } + +#if DEBUG + Console.WriteLine("\r\n-------------------------\r\n"); + foreach (KeyValuePair pair in dp) + { + Console.WriteLine("{0}->{1}\r\n", pair.Key, pair.Value); + } +#endif + + + //¼ + ++number; + + +#if DEBUG + Console.WriteLine("flish"); +#endif + //ִлִ + if (func != null) func(dp); + + + //һɹļ + state.SuccessCount++; + + return dp; + } + + private string GetBasePath(string pageUri) + { + //Ѿ·ֱӷ + if (basePath != null) return basePath; + + //·"/"ͷ + if (pageUri.StartsWith("/")) + { + Regex reg = new Regex("^(http://[^/]+/)", RegexOptions.IgnoreCase); + if (reg.IsMatch(ListUriRule)) + { + basePath = reg.Match(ListUriRule).Groups[1].Value; + } + } + else + { + Regex reg = new Regex("([^/]+)$", RegexOptions.IgnoreCase); + if (reg.IsMatch(ListUriRule)) + { + string filePath = reg.Match(ListUriRule).Value; + basePath = ListUriRule.Replace(filePath, String.Empty); + } + } + return basePath; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ce53571 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/Properties/AssemblyInfo.cs @@ -0,0 +1,40 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 + +[assembly: AssemblyTitle("OPSoft采集组件")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("OPSoft INC")] +[assembly: AssemblyProduct("OPS.NetCrawl")] +[assembly: AssemblyCopyright("Copyright © 2012 OPSoft")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 + +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID + +[assembly: Guid("2f6fdd9a-7484-4f3e-83d8-6b20567b2b3e")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("1.2.0.0")] +[assembly: AssemblyFileVersion("1.2.0.0")] \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/PropertyRule.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/PropertyRule.cs new file mode 100644 index 0000000..64e5e9c --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/PropertyRule.cs @@ -0,0 +1,57 @@ +// +// +// Copyright 2011 @ OPSoft Inc.all rights reseved. +// +// Project : Untitled +// File Name : PropertyRule.cs +// Date : 2011/8/25 +// Author : +// +// + +using System.Collections; +using System.Collections.Generic; + +namespace OPSoft.Plugin.NetCrawl +{ + /// + /// Թʽ + /// + public class PropertyRule : IEnumerable + { + private IDictionary dict = new Dictionary(); + + public string ID { get; set; } + + /// + /// Թ + /// + /// + /// + public void Add(string key, string value) + { + dict.Add(key, value); + } + + /// + /// ȡԹ + /// + /// + /// + public string this[string key] + { + get { return dict.Keys.Contains(key) ? dict[key] : null; } + } + + public IEnumerator GetEnumerator() + { + foreach (string key in dict.Keys) yield return key; + } + + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/RuleFormat.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/RuleFormat.cs new file mode 100644 index 0000000..6804d62 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/RuleFormat.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OPSoft.Plugin.NetCrawl +{ + internal class RuleFormat + { + public static string Format(string rule) + { + return rule.Replace("$$", "\\s*([\\s\\S]+?)\\s*"); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/State.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/State.cs new file mode 100644 index 0000000..499d2b6 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/State.cs @@ -0,0 +1,35 @@ +// +// +// Copyright 2011 @ OPSoft Inc.all rights reseved. +// +// Project : Untitled +// File Name : State.cs +// Date : 2011/8/25 +// Author : +// +// + + +namespace OPSoft.Plugin.NetCrawl +{ + /// + /// ɼ״̬ + /// + public class State + { + /// + /// + /// + public int TotalCount { get; internal set; } + + /// + /// ʧ + /// + public int FailCount { get; internal set; } + + /// + /// ɹ + /// + public int SuccessCount { get; internal set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage.cs b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage.cs new file mode 100644 index 0000000..8bfb3fb --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage.cs @@ -0,0 +1,582 @@ +using System; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using System.Web; + +namespace OPSoft.Plugin.NetCrawl +{ + public class WebManage : IHttpHandler, System.Web.SessionState.IRequiresSessionState + { + private static string subtitle = "-采集管理插件 Power by OPSoft"; + private static string ct_css = ""; + private static string navigator = WebManageResource.partial_navigator; + + protected HttpRequest request; + protected HttpResponse response; + private Collector director; + + public WebManage(Collector director) + { + this.director = director; + } + + public bool IsReusable + { + get { return false; } + } + + public void ProcessRequest(HttpContext context) + { + Begin_Request(); + + string action = context.Request["action"]; + string httpMethod = context.Request.HttpMethod; + + //未指定动作,则显示欢迎页面 + if (String.IsNullOrEmpty(action)) + { + Show_WelcomePage(); + return; + } + + request = context.Request; + response = context.Response; + + Type type = this.GetType(); + MethodInfo method = type.GetMethod(String.Format("{0}_{1}", action, httpMethod), + BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (method == null) + { + context.Response.Write("执行出错"); + return; + } + context.Response.Write(method.Invoke(this, null) as string); + } + + public virtual void Begin_Request() + { + } + + /// + /// 加载样式表 + /// + protected string Css_Get() + { + return WebManageResource.webmanagestyle; + } + + protected string Show_WelcomePage() + { + return WebManageResource.welcome_page.Replace("${ct_css}", ct_css) + .Replace("${navigator}", WebManageResource.partial_navigator); + } + + protected string Help_Get() + { + return "文档整理中,请上我们官网www.ops.cc查询相关信息!"; + } + + /// + /// 项目列表 + /// + protected string List_Get() + { + string prjsListHtml, + //项目列表Html + propertyHtml; + + + StringBuilder sb = new StringBuilder(); + StringBuilder propertyStr = new StringBuilder(); + + + Project[] projects = this.director.GetProjects(); + if (projects == null) + { + sb.Append("
                                                                                                                                          • 暂无采集项目![点击添加]
                                                                                                                                          • "); + } + else + { + foreach (Project prj in projects) + { + //项目属性 + foreach (string key in prj.Rules) + { + propertyStr.Append("[").Append(key).Append("],"); + } + if (propertyStr.Length == 0) + { + propertyHtml = "无"; + } + else + { + propertyHtml = propertyStr.Remove(propertyStr.Length - 1, 1).ToString(); + propertyStr.Remove(0, propertyStr.Length); + } + + //项目基本信息 + sb.Append("

                                                                                                                                            项目名称:") + .Append(prj.Name) + .Append("(编号:") + .Append(prj.Id) + .Append(")

                                                                                                                                            编码方式:").Append(prj.RequestEncoding).Append("
                                                                                                                                            列表规则:") + .Append(prj.ListUriRule).Append("
                                                                                                                                            页面规则:") + .Append(prj.PageUriRule).Append("
                                                                                                                                            采集属性:").Append(propertyHtml) + .Append("

                                                                                                                                            开始采集 ]  [ 修改 ]  [ 删除 ]
                                                                                                                                            "); + } + } + + prjsListHtml = sb.ToString(); + + return WebManageResource.project_list + .Replace("${ct_css}", ct_css) + .Replace("${subtitle}", subtitle) + .Replace("${navigator}", WebManageResource.partial_navigator) + .Replace("${listHtml}", prjsListHtml); + } + + #region 创建项目 + + protected string CreateProject_Get() + { + return WebManageResource.create_project.Replace("${ct_css}", ct_css) + .Replace("${subtitle}", subtitle) + .Replace("${navigator}", WebManageResource.partial_navigator); + } + + protected string CreateProject_Post() + { + bool result; //新建项目是否成功 + + Project project = new Project(); + project.Rules = new PropertyRule(); + + string id = request.Form["id"], + name = request.Form["name"], + encoding = request.Form["encoding"], + listRule = request.Form["listRule"], + blockRule = request.Form["listBlockRule"], + pageRule = request.Form["pageRule"], + filterRule = request.Form["filterWordsRule"]; + + +#if DEBUG + response.Write(HttpContext.Current.Server.HtmlEncode(String.Format("ID:{0}
                                                                                                                                            Name:{1}\r\nListRule:{2}\r\nListBlockRule:{3}\r\nPageRule:{4}\r\nFilterRule:{5}\r\nencoding:{6}", + id, name, listRule, blockRule, pageRule, filterRule,encoding))); + + response.Write("
                                                                                                                                            "); +#endif + + if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name)) + { + return ""; + } + + + project.Id = id; + project.Name = name; + project.RequestEncoding = encoding; + project.ListUriRule = listRule; + project.ListBlockRule = blockRule; + project.PageUriRule = pageRule; + project.FilterWordsRule = filterRule; + + + //添加属性并赋值 + //客户端属性与规则匹配:p1 <-> r1 + Regex propertyNameRegex = new Regex("^p(\\d+)$"); + string propertyIndex; //属性编号 + + foreach (string key in request.Form) + { + if (propertyNameRegex.IsMatch(key)) + { + propertyIndex = propertyNameRegex.Match(key).Groups[1].Value; + + //如果值不为空,则添加属性 + if (request.Form[key] != String.Empty) + { + project.Rules.Add(request.Form[key], request.Form["r" + propertyIndex]); + } + } + } + + /* + //输出添加到的属性 + foreach (string key in project.Rules) + { + response.Write(HttpContext.Current.Server.HtmlEncode(key + "->" + project.Rules[key]+"
                                                                                                                                            ")); + } + */ + + result = this.director.CreateProject(project); + + //清除项目缓存 + this.director.ClearProjects(); + + return result + ? "" + : ""; + } + + #endregion + + #region 更新项目 + + protected string Edit_Get() + { + string projectId = request.QueryString["projectId"]; + Project prj = this.director.GetProject(projectId); + if (prj == null) + { + return WebManageResource.error.Replace("${ct_css}", ct_css) + .Replace("${subtitle}", subtitle) + .Replace("${navigator}", WebManageResource.partial_navigator) + .Replace("${msg}", "项目不存在"); + } + + StringBuilder sb = new StringBuilder(); + int i = 0; + + foreach (string key in prj.Rules) + { + ++i; + sb.Append("

                                                                                                                                            ") + .Append( + "删除 ]

                                                                                                                                            "); + } + + return WebManageResource.update_project + .Replace("${ct_css}", ct_css) + .Replace("${subtitle}", subtitle) + .Replace("${navigator}", WebManageResource.partial_navigator) + .Replace("${id}", projectId) + .Replace("${name}", prj.Name) + .Replace("${encoding}", prj.RequestEncoding) + .Replace("${listUriRule}", prj.ListUriRule) + .Replace("${listBlockRule}", prj.ListBlockRule) + .Replace("${pageUriRule}", prj.PageUriRule) + .Replace("${filterWordsRule}", prj.FilterWordsRule) + .Replace("${propertiesHtml}", sb.ToString()); + } + + protected string Edit_Post() + { + string projectId = request.QueryString["projectId"]; + + + bool result; //编辑项目是否成功 + + Project project = new Project(); + project.Rules = new PropertyRule(); + + string id = request.Form["id"], + name = request.Form["name"], + encoding = request.Form["encoding"], + listRule = request.Form["listRule"], + blockRule = request.Form["listBlockRule"], + pageRule = request.Form["pageRule"], + filterRule = request.Form["filterWordsRule"]; + + +#if DEBUG + response.Write(HttpContext.Current.Server.HtmlEncode(String.Format("ID:{0}
                                                                                                                                            Name:{1}\r\nListRule:{2}\r\nListBlockRule:{3}\r\nPageRule:{4}\r\nFilterRule:{5}\r\nencoding:{6}", + id, name, listRule, blockRule, pageRule, filterRule, encoding))); + + response.Write("
                                                                                                                                            "); +#endif + + if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name)) + { + return ""; + } + + + project.Id = id; + project.Name = name; + project.RequestEncoding = encoding; + project.ListUriRule = listRule; + project.ListBlockRule = blockRule; + project.PageUriRule = pageRule; + project.FilterWordsRule = filterRule; + + + //添加属性并赋值 + //客户端属性与规则匹配:p1 <-> r1 + Regex propertyNameRegex = new Regex("^p(\\d+)$"); + string propertyIndex; //属性编号 + + foreach (string key in request.Form) + { + if (propertyNameRegex.IsMatch(key)) + { + propertyIndex = propertyNameRegex.Match(key).Groups[1].Value; + + //如果值不为空,则添加属性 + if (request.Form[key] != String.Empty) + { + project.Rules.Add(request.Form[key], request.Form["r" + propertyIndex]); + } + } + } + + /* + //输出添加到的属性 + foreach (string key in project.Rules) + { + response.Write(HttpContext.Current.Server.HtmlEncode(key + "->" + project.Rules[key]+"
                                                                                                                                            ")); + } + */ + + result = this.director.SaveProject(projectId, project); + + //清除项目缓存 + this.director.ClearProjects(); + + return result + ? "" + : ""; + } + + #endregion + + #region 删除项目 + + protected string Delete_Get() + { + string projectId = request.QueryString["projectId"]; + string confirm = request["confirm"]; + + string msg; //返回信息 + + + Project prj = this.director.GetProject(projectId); + if (prj == null) + { + msg = "项目不存在!\">"; + } + + + if (String.IsNullOrEmpty(confirm)) + { + msg = String.Format( + "您确定删除项目:{0} 吗?
                                                                                                                                            确定 取消" + , prj.Name, projectId); + } + else + { + msg = "项目删除成功!"; + + this.director.RemoveProject(prj); + + //更新项目缓存 + this.director.ClearProjects(); + } + + + return WebManageResource.delete_project + .Replace("${ct_css}", ct_css) + .Replace("${subtitle}", subtitle) + .Replace("${navigator}", WebManageResource.partial_navigator) + .Replace("${msg}", msg); + } + + #endregion + + /******************************************************** + * + * 采集说明: + * + * 1.开始采集时读取继承类返回的Html代码,供重写Invoke方法读取某些参数! + * + * 2.客户端通过设置HiddenField [typeid]的值,来识别采集单页或是列表 + * [typeid]:1:采集单页,2:传递列表页参数采集,3:输入列表页参数采集 + * + * 3.通过识别采集方式,来调用继承类的采集处理代码。执行完毕,想客户端传送 + * 采集完成指令! + * + */ + + /// + /// 开始执行采集 + /// + protected string Invoke_Get() + { + string projectId = request.QueryString["projectId"]; + + Project prj = this.director.GetProject(projectId); + if (prj == null) + { + return ""; + } + + return WebManageResource.invoke_collect + .Replace("${ct_css}", ct_css) + .Replace("${subtitle}", subtitle) + .Replace("${navigator}", WebManageResource.partial_navigator) + .Replace("${customHtml}", Return_InvokePageHtml()) + .Replace("${pageUriRule}", HttpContext.Current.Server.HtmlEncode(prj.PageUriRule)) + .Replace("${listUriRule}", HttpContext.Current.Server.HtmlEncode(prj.ListUriRule) + .Replace("{0}", "{0}")) + .Replace("${listBlockRule}", HttpContext.Current.Server.HtmlEncode(prj.ListBlockRule)); + } + + protected string Invoke_Post() + { + string typeID = request.Form["ct_typeid"]; + string projectId = request.QueryString["projectId"]; + + //执行采集返回的数据 + string invoke_returnData = String.Empty; + + Project prj = this.director.GetProject(projectId); + if (prj == null) + { + return ""; + } + + switch (typeID) + { + case "1": + invoke_returnData = Invoke_SinglePage(prj, request.Form["singlePageUri"]); + break; + case "2": + invoke_returnData = Invoke_ListPage(prj, (object) request.Form["listPageParameter"]); + break; + case "3": + invoke_returnData = Invoke_ListPage(prj, request.Form["listPageUri"]); + break; + } + + return ""; + } + + /// + /// 返回一段Html代码,并呈现在采集页面上 + /// 如:返回一段分类的标签,并在采集中读取选中的分类,从而实现将采集的内容发布到指定分类中 + /// + public virtual string Return_InvokePageHtml() + { + return "您好,欢迎使用采集系统!
                                                                                                                                            "; + } + + + /// + /// 采集单页,并返回提示数据 + /// + /// + /// + public virtual string Invoke_SinglePage(Project project, string pageUri) + { + project.InvokeSingle(pageUri, dp => + { +#if DEBUG + saveLog("\r\n----------------------------------------\r\n标题:"+dp["title"] + "
                                                                                                                                            \r\n内容:" + dp["content"]+"\r\n"); +#endif + }); + + //重置计数 + project.ResetState(); + + return null; + } + + /// + ///根据列表页的地址采集页面,并返回提示数据 + /// + /// + /// + /// + public virtual string Invoke_ListPage(Project project, string listPageUri) + { + string returnData; + + int i = 0; + object obj = String.Empty; + + project.UseMultiThread = true; + + project.InvokeList(listPageUri, dp => + { + lock (obj) + { + ++i; +#if DEBUG + saveLog(String.Format("采集到第{0}条->{1}", i, dp["title"])); +#endif + } + }); + + returnData = String.Format("任务总数:{0},成功:{1},失败:{2}", project.State.TotalCount, project.State.SuccessCount, + project.State.FailCount); + + //重置计数 + project.ResetState(); + + return returnData; + } + + /// + /// 向列表页规则传递参数,并返回提示数据 + /// + /// + /// + /// + public virtual string Invoke_ListPage(Project project, object parameter) + { + string returnData; + + int i = 0; + object obj = String.Empty; + + project.UseMultiThread = true; + + project.InvokeList(parameter, dp => + { + lock (obj) + { + ++i; +#if DEBUG + saveLog(String.Format("采集到第{0}条->{1}", i, dp["title"])); +#endif + } + }); + + returnData = String.Format("任务总数:{0},成功:{1},失败:{2}", project.State.TotalCount, project.State.SuccessCount, + project.State.FailCount); + + //重置计数 + project.ResetState(); + + return returnData; + } + + protected void saveLog(string str) + { + using ( + System.IO.StreamWriter sr = + new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "collection.log", true)) + { + sr.WriteLine(str); + sr.Flush(); + sr.Dispose(); + } + } + + /// + /// 向客户端发送提示信息 + /// + /// + protected void SendTipMessage(string msg) + { + response.Write(String.Format("", msg)); + response.End(); + } + } +} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/create_project.html b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/create_project.html similarity index 98% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/create_project.html rename to src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/create_project.html index feb93c9..c0782bb 100644 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/create_project.html +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/create_project.html @@ -9,7 +9,7 @@ + +${navigator} + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            + ${customHtml} +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            + 根据单页地址采集 +
                                                                                                                                            页面地址规则为:${pageUriRule}
                                                                                                                                            +   输入地址: +
                                                                                                                                            + +
                                                                                                                                            + 根据列表参数采集 +
                                                                                                                                            + 列表地址规则为:${listUriRule}
                                                                                                                                            +
                                                                                                                                            参数为规则{0}部分
                                                                                                                                            +
                                                                                                                                            +   输入参数: +
                                                                                                                                            + +
                                                                                                                                            + 根据列表地址采集 +
                                                                                                                                            + 地址填写提示:直接输入包含采集内容链接的列表地址,可与列表规则完全匹配。
                                                                                                                                            +
                                                                                                                                            + 也可以输入与 + 列表块规则:${listBlockRule}匹配的页面地址。 +
                                                                                                                                            +
                                                                                                                                            + +   输入地址: +
                                                                                                                                            + +
                                                                                                                                            + +
                                                                                                                                            + + + + \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/partial_navigator.html b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/partial_navigator.html similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/partial_navigator.html rename to src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/partial_navigator.html diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/project_list.html similarity index 98% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html rename to src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/project_list.html index bf2e281..b03c0fa 100644 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/WebManage/html_template/project_list.html @@ -8,7 +8,7 @@ + \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj.user b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/com.NetCrawl.csproj.user similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj.user rename to src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/com.NetCrawl.csproj.user diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/config/picker.conf similarity index 97% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf rename to src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/config/picker.conf index eb46bf4..4cb4191 100644 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf +++ b/src/OPS.Library/Source Code/OPSoft.Plugin/OPSoft.Picker/OPSoft.Picker/config/picker.conf @@ -1,7 +1,7 @@ 
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            商户号:
                                                                                                                                            支付版本号:
                                                                                                                                            订单号:
                                                                                                                                            订单金额:
                                                                                                                                            货币代码:
                                                                                                                                            订单日期:
                                                                                                                                            交易类型:
                                                                                                                                            后台返回地址:
                                                                                                                                            页面返回地址:
                                                                                                                                            网关号:
                                                                                                                                            备注:
                                                                                                                                            签名:
                                                                                                                                            + +
                                                                                                                                            "; + + + decimal product_fee = (decimal)hash["order_fee"]; //商品费用 + decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 + + string MerId = ChinaPaySignData.MerchantID;//商户号 + string OrdId = hash["order_no"] as string;//订单号 + string TransAmt = String.Format("{0:D12}",(int)((product_fee + transport_fee)*100));//订单金额 + string CuryId = "156";//货币代码 (人民币) + string TransDate = DateTime.Now.ToString("yyyyMMdd");//订单日期 + string TransType = "0001"; //交易类型 + string Priv1 = hash["order_desc"] as string;//备注 + + + //准备签名的数据 + string plain = MerId + OrdId + TransAmt + CuryId + TransDate + TransType + Priv1; + + string ChkValue = null; + //Response.Write("MerId:" + MerId); + ChkValue = ChinaPaySignData.sign(MerId, plain); + //Response.Write("ChkValue:" + ChkValue); + + //签名长度256位 + if (ChkValue == null || ChkValue.Length != 256) + { + return "签名不正确,无法支付!"; + } + + return gatewayHTML.Template( + MerId, + "20070129", + OrdId, + TransAmt, + CuryId, + TransDate, + TransType, + PayUtil.GetNotifyUrl(PayMethods.ChinaPay, PayApiType.Normal), + PayUtil.GetReturnUrl(PayMethods.ChinaPay, PayApiType.Normal), + "", //网关留空,为银联支付 + Priv1, + ChkValue); + } + + public PaidHandleResult Return(PayMointor proc) where T:class + { + var request = HttpContext.Current.Request; + + string MerId = request["MerId"];//商户号 + string OrdId = request["OrderNo"];//订单号 + string TransAmt = request["Amount"];//订单金额 + string CuryId = request["CurrencyCode"];//货币代码 + string TransDate = request["TransDate"];//订单日期 + string TransType = request["TransType"];//交易类型 + string Priv1 = request["Priv1"];//备注 + string GateId = request["GateId"];//网关 + string status = request["status"]; + + proc.Init(OrdId); + + string CheckValue = request["checkvalue"];//签名数据 + bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); + if (res) + { + return PaidHandleResult.Fail; + } + else + { + return PaidHandleResult.Success; + } + + } + + public string Notify(PayMointor proc) where T : class + { + + var request = HttpContext.Current.Request; + + string MerId = request["MerId"];//商户号 + string OrdId = request["OrderNo"];//订单号 + string TransAmt = request["Amount"];//订单金额 + string CuryId = request["CurrencyCode"];//货币代码 + string TransDate = request["TransDate"];//订单日期 + string TransType = request["TransType"];//交易类型 + string Priv1 = request["Priv1"];//备注 + string GateId = request["GateId"];//网关 + string status = request["status"]; + + proc.Init(OrdId); + + string CheckValue = request["checkvalue"];//签名数据 + bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); + if (res) + { + proc.PaidFail(); + return "0"; + } + else + { + proc.PaidSuccess(); + return "1"; + + } + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/ChinaPay/ChinaPaySignData.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/ChinaPay/ChinaPaySignData.cs new file mode 100644 index 0000000..41c0477 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/ChinaPay/ChinaPaySignData.cs @@ -0,0 +1,83 @@ +using System; +using System.Data; +using System.Configuration; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; +using System.Web.UI.HtmlControls; + + +namespace Ops.Plugin.NetPay +{ + public class ChinaPaySignData + { + internal static string PrivateKeyPath = ""; + internal static string PublicKeyPath = ""; + internal static string MerchantID = "808080201301103"; + + static ChinaPaySignData() + { + PrivateKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/prk.key"; + PublicKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/pk.key"; + } + + //签名 + public static string sign(string MerId, string plain) + { + global::NetPay netPay = new global::NetPay(); + Boolean flag = netPay.buildKey(MerId, 0, ChinaPaySignData.PrivateKeyPath); + string sign = null; + if (flag) + { + if (netPay.PrivateKeyFlag) + { + sign = netPay.Sign(plain); + } + } + return sign; + + } + + //验签 + public static bool check(string MerId, string OrdId, string TransAmt, string CuryId, string TransDate, string TransType, string status, string ChkValue) + { + + global::NetPay netPay = new global::NetPay(); + Boolean flag = netPay.buildKey(ChinaPaySignData.MerchantID, 0, ChinaPaySignData.PublicKeyPath); + if (flag) + { + if (netPay.PublicKeyFlag) + { + flag = netPay.verifyTransResponse(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, ChkValue); + } + else + { + flag = false; + } + } + else + { + flag = false; + } + + return flag; + + } + + + //得到交易日期 + public static string getTransDate() + { + return DateTime.Now.ToString("yyyyMMdd"); + } + + //得到订单号16位 + public static string getOrdId() + { + return DateTime.Now.ToString("yyyyMMHHmmffffff"); + } + + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/IPay.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/IPay.cs new file mode 100644 index 0000000..0dea71e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/IPay.cs @@ -0,0 +1,43 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : IPay.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System.Collections; + + public interface IPay + { + /// + /// 获取支付请求,可返回链接或表单 + /// + /// + /// + string GetPayRequest(Hashtable hash); + + /// + /// 返回信息 + /// + /// + /// + PaidHandleResult Return(PayMointor proc) where T : class; + + /// + /// 主动通知 + /// + /// + /// + /// + string Notify(PayMointor proc) where T : class; + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaidHandleResult.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaidHandleResult.cs new file mode 100644 index 0000000..8dea53d --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaidHandleResult.cs @@ -0,0 +1,42 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PaidHandleResult.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + + /// + /// 支付处理结果 + /// + public enum PaidHandleResult + { + + /// + /// 支付成功 + /// + Success, + + /// + /// 支付失败 + /// + Fail, + /// + /// 准备支付 + /// + Repair + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaidMointor.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaidMointor.cs new file mode 100644 index 0000000..5ee169b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaidMointor.cs @@ -0,0 +1,138 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PaidHandler.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + + /// + /// 支付时处理方法 + /// + /// + /// + public delegate void PaidHandler(T t) where T : class; + + public delegate void PaidAsyncHandler(T t,PaymentAsyncState state) where T : class; + + /// + /// 支付同步状态 + /// + public enum PaymentAsyncState + { + WAIT_BUYER_PAY, + WAIT_SELLER_SEND_GOODS + } + + /// + /// + /// + public sealed class PayMointor where T : class + { + /// + /// 当初始化时发生,通常用于根据订单号获取订单 + /// + public event PaidHandler OnInit; + + /// + /// 支付成功 + /// + public event PaidHandler OnSuccessed; + + /// + /// 同步状态 + /// + public event PaidAsyncHandler OnAsync; + + /// + /// 准备支付 + /// + public event PaidHandler OnRepairPay; + + /// + /// 当支付失败时 + /// + public event PaidHandler OnFailed; + + private T instance; + + public T Instance { get { return instance; } set { instance = value; } } + + public PayMointor(T t) + { + this.instance = t; + } + + /// + /// 支付成功 + /// + public void PaidSuccess() + { + if (this.OnSuccessed != null) + { + this.OnSuccessed(this.instance); + } + } + + /// + /// 支付失败 + /// + public void PaidFail() + { + if (this.OnFailed != null) + { + this.OnFailed(this.instance); + } + } + + /// + /// 准备支付 + /// + public void RepairPay() + { + if (this.OnRepairPay != null) + { + this.OnRepairPay(this.instance); + } + } + + /// + /// 同步状态 + /// + /// + public void AsyncState(PaymentAsyncState state) + { + if (OnAsync != null) + { + OnAsync(this.instance,state); + } + } + + /// + /// 初始化 + /// + /// + public void Init(string orderNo) + { + if (this.OnInit != null) + { + this.OnInit(orderNo); + } + } + + } + +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayApiType.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayApiType.cs new file mode 100644 index 0000000..08ea3d8 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayApiType.cs @@ -0,0 +1,47 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayApiType.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + + /// + /// 支付接口 + /// + public enum PayApiType + { + /// + /// 标准双接口 + /// + Normal = 1, + + /// + /// 担保交易 + /// + Guarantee = 2, + + /// + /// 即时到帐 + /// + Direct = 3, + + /// + /// 手机网站支付 + /// + Mobile=4 + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayMethods.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayMethods.cs new file mode 100644 index 0000000..2ffee0f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayMethods.cs @@ -0,0 +1,54 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayMethods.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + + /// + /// 支付方式 + /// + public enum PayMethods + { + + /// + /// 未指定 + /// + Unknown = -1, + + /// + /// 支付宝 + /// + Alipay = 1, + + /// + /// 腾讯财付通 + /// + Tenpay = 2, + + + /// + /// 银联支付 + /// + ChinaPay = 3, + + /// + /// 在线支付 + /// + OnlinePay = 4 + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayUtil.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayUtil.cs new file mode 100644 index 0000000..5c88248 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PayUtil.cs @@ -0,0 +1,288 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayApiType.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Collections.Specialized; + using System.Linq; + using System.Text; + using System.Web; + + public static class PayUtil + { + /// + /// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组 + /// + /// request回来的信息组成的数组 + internal static SortedDictionary GetRequestGet() + { + int i = 0; + SortedDictionary sPara = new SortedDictionary(); + NameValueCollection coll; + //Load Form variables into NameValueCollection variable. + + var request = HttpContext.Current.Request; + coll = request.QueryString; + + // Get names of all forms into a string array. + String[] requestItem = coll.AllKeys; + + for (i = 0; i < requestItem.Length; i++) + { + sPara.Add(requestItem[i], request.QueryString[requestItem[i]]); + } + + return sPara; + } + /// + /// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组 + /// + /// request回来的信息组成的数组 + internal static SortedDictionary GetRequestPost() + { + int i = 0; + SortedDictionary sPara = new SortedDictionary(); + NameValueCollection coll; + //Load Form variables into NameValueCollection variable. + var request = HttpContext.Current.Request; + coll = request.Form; + //coll = request.QueryString; + + // Get names of all forms into a string array. + String[] requestItem = coll.AllKeys; + + for (i = 0; i < requestItem.Length; i++) + { + sPara.Add(requestItem[i], request.Form[requestItem[i]]); + } + + return sPara; + } + + + /// + /// 设置支付日志记录 + /// + /// + public static void SetLogMessage(string msg) + { + global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] = msg; + } + + /// + /// 获取支付日志记录 + /// + /// + public static string GetLogMessage() + { + return global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] as string; + } + + /// + /// 获取提示的地址 + /// + /// 支付方式编号 + /// 接口类型,默认为1 + /// + internal static string GetNotifyUrl(PayMethods ap, PayApiType at) + { + global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; + + return String.Format("http://{0}{1}/netpay/notify_{2}_{3}.html", + req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); + } + + /// + /// 获取返回的地址 + /// + /// 支付方式编号 + /// 接口类型,默认为1 + /// + internal static string GetReturnUrl(PayMethods ap, PayApiType at) + { + global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; + + + return String.Format("http://{0}{1}/netpay/return_{2}_{3}.html", + req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); + + /* + return String.Format("http://{0}{1}/pay/return_{2}_{3}.html", + "www.lmgdto.com","", ((int)ap).ToString(), ((int)at).ToString()); + */ + } + + + /// + /// 获取网关地址 + /// + /// + /// + /// + /// + public static string GetGatewayStr(PayMethods pm, PayApiType pt, Hashtable ht) + { + IPay _pay = null; + if (pm == PayMethods.Alipay) + { + if (ht.Contains("bank")) + { + pt = PayApiType.Direct; + } + + if (pt == PayApiType.Direct) + { + _pay = new AlipayRedirect(); + } + else if (pt == PayApiType.Normal) + { + _pay = new AlipayNormal(); + } + else if(pt== PayApiType.Mobile) + { + + _pay=new AlipayMobile(); + } + else + { + _pay = new AlipayComfireApi(); + } + + } + else if (pm == PayMethods.Tenpay) + { + //财付通默认支持所有 + _pay = new Tenpay(); + } + else if (pm == PayMethods.ChinaPay) + { + _pay = new ChinaPayApi(); + } + + + return _pay == null ? String.Empty : _pay.GetPayRequest(ht); + + + } + + + + public static PaidHandleResult PayReturn(PayMethods pm, PayApiType pt, PayMointor proc) where T:class + { + IPay _pay = null; + if (pm == PayMethods.Alipay) + { + if (pt == PayApiType.Direct) + { + _pay = new AlipayRedirect(); + } + else if (pt == PayApiType.Normal) + { + _pay = new AlipayNormal(); + } + else if(pt== PayApiType.Mobile) + { + _pay=new AlipayMobile(); + } + else + { + _pay = new AlipayComfireApi(); + } + + } + else if (pm == PayMethods.Tenpay) + { + //财付通默认支持所有 + _pay = new Tenpay(); + } + else if (pm == PayMethods.ChinaPay) + { + _pay = new ChinaPayApi(); + } + + + if (_pay == null) + { + SetLogMessage("不支持的支付方式"); + return PaidHandleResult.Fail; + } + else + { + return _pay.Return(proc); + } + } + + public static string PayNotify(PayMethods pm, PayApiType pt, PayMointor proc) where T : class + { + IPay _pay = null; + if (pm == PayMethods.Alipay) + { + if (pt == PayApiType.Direct) + { + _pay = new AlipayRedirect(); + } + else if (pt == PayApiType.Normal) + { + _pay = new AlipayNormal(); + } + else if(pt== PayApiType.Mobile) + { + _pay=new AlipayMobile(); + } + else + { + _pay = new AlipayComfireApi(); + } + + } + else if (pm == PayMethods.Tenpay) + { + //财付通默认支持所有 + _pay = new Tenpay(); + } + else if (pm == PayMethods.ChinaPay) + { + _pay = new ChinaPayApi(); + } + + + return _pay == null ? "不支持的支付方式" : _pay.Notify(proc); + + } + + + public static string GetGatewaySubmit(string url, SortedDictionary dict) + { + const string format = "
                                                                                                                                            %fields%
                                                                                                                                            "; + if (dict == null || !dict.Keys.Contains("order_no")) + { + throw new ArgumentException("字典不能为空,且必须包括orderNo键值!"); + } + + StringBuilder sb = new StringBuilder(); + + foreach (string key in dict.Keys) + { + sb.Append(""); + } + + return format.Replace("%url%", url).Replace("%fields%", sb.ToString()); + } + } + +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaymentHandler.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaymentHandler.cs new file mode 100644 index 0000000..1ab8828 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/PaymentHandler.cs @@ -0,0 +1,268 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayHandler.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections; + using System.Web; + + /// + /// 支付处理类 + /// + /// + public abstract class PaymentHandler where T : class + { + + /// + /// 提交支付请求(收货信息仅支付宝担保时传递) + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public string SubmitRequest( + PayMethods pm, + PayApiType pt, + string partner_id, + string partner_secret, + string seller_account, + BankSign bank, + string orderNo, + float order_fee, + float order_exp_fee, + string order_desc, + string order_show_url, + string subject, + string receive_name, + string receive_address, + string receive_zip, + string receive_phone, + string receive_mobile, + string return_url, + string notify_url + ) + { + Hashtable ht = new Hashtable(); + + // OrderInfo order; + + // order = new Order(orderNo); + + + // if (order == null) + // { + // p.PayUtil.SetLogMessage("订单不存在!"); + // return Result((int)p.PaidHandleResult.Fail); + // } + + + // orderPM = this.LoadOrderPM(order); + if (String.IsNullOrEmpty(return_url)) + { + return_url = PayUtil.GetReturnUrl(pm, pt); + } + if (String.IsNullOrEmpty(notify_url)) + { + notify_url = PayUtil.GetNotifyUrl(pm, pt); + } + + ht.Add("order_subject",subject??"支付订单"+orderNo); + ht.Add("order_no", orderNo); //订单编号 + ht.Add("order_fee", order_fee); + ht.Add("order_exp_fee", order_exp_fee); //订单快递金额 + try{ + ht.Add("usr_host", HttpContext.Current.Request.UserHostAddress); //用户IP地址 + }catch{} + ht.Add("order_showurl", order_show_url); //订单显示地址 + ht.Add("return_url", return_url); //返回地址 + ht.Add("notify_url", notify_url); //通知地址 + ht.Add("order_desc", order_desc); //订单描述 + ht.Add("seller_account", seller_account); //帐号 + + //收货信息 + ht.Add("receive_name", receive_name); + ht.Add("receive_address", receive_address); + ht.Add("receive_mobile", receive_mobile); + ht.Add("receive_zip", receive_zip); + ht.Add("receive_phone", receive_phone); + + + if(bank!=BankSign.Default) + { + ht.Add("bank",bank.ToString()); + } + + + if (pm != PayMethods.Unknown) + { + + string payHtml = String.Empty; + + switch (pm) + { + //财付通 + case PayMethods.Tenpay: + + ht.Add("tenpay_key", partner_id); + ht.Add("tenpay_secret", partner_secret); + ht.Add("trade_mode", -((int)pt-4)); //1:即时到帐,2:中介担保,3:自己选择 + + payHtml = String.Format("", + PayUtil.GetGatewayStr(PayMethods.Tenpay, pt, ht)); + + break; + + //支付宝 + case PayMethods.Alipay: + ht.Add("alipay_key", partner_id); + ht.Add("alipay_secret", partner_secret); + + payHtml = PayUtil.GetGatewayStr(PayMethods.Alipay, pt, ht); + + break; + + //在线支付 + default: + case PayMethods.OnlinePay: + // + //UNDONE: + // + throw new NotImplementedException("暂不支持银行支付!"); + } + + + //准备支付 + // orderPM.RepairPay(); + + + //跳转到支付页面 + return payHtml; + } + + else + { + + return "不支持的支付方式!"; + } + + } + + + /// + /// 页面回调 + /// + /// + /// 接口类型ID + /// + public PaidHandleResult Return(PayMethods pm, PayApiType pt, PayMointor proc) + { + PaidHandleResult result; + //PayMointor proc = new PayMointor(String.Empty); + //proc.OnInit += orderNo => + //{ + // proc.Instance= + //}; + + this.AttachEvent(proc); + + // PayMethods pm = (PayMethods)pmid; //支付方式 + //PayApiType pt = (PayApiType)ptid; //接口类型 + + result = PayUtil.PayReturn(pm, pt, proc); + if(result== PaidHandleResult.Success) + { + proc.PaidSuccess(); + } + else if(result== PaidHandleResult.Fail) + { + proc.PaidFail(); + } + return result; + } + + /// + /// 主动通知 + /// + /// + /// + public string Notify(PayMethods pm, PayApiType pt, PayMointor proc) + { + + // PaidMointor proc = new PaidMointor(null); + + // proc.OnInit += orderNo => + // { + // var itm = this.LoadOrderPM(orderNo.ToString()); + //proc.Instance = itm.Instance; + // this.AttachEvent(proc); + // }; + + this.AttachEvent(proc); + + return PayUtil.PayNotify(pm, pt, proc); + } + + + private void AttachEvent(PayMointor proc) + { + if (proc == null) + { + throw new ArgumentNullException("参数proc不能为空!"); + } + else + { + //添加事件 + proc.OnFailed += OnOrderPaidFail; + proc.OnSuccessed += OnOrderPaidSuccess; + proc.OnRepairPay += OnOrderRepairPay; + } + } + + /// + /// 支付失败时操作 + /// + /// + public abstract void OnOrderPaidFail(T t); + + /// + /// 支付成功时操作 + /// + /// + public abstract void OnOrderPaidSuccess(T t); + + /// + /// 准备支付时操作 + /// + /// + private void OnOrderRepairPay(T t) + { + + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/ReceiveInfo.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/ReceiveInfo.cs new file mode 100644 index 0000000..1057109 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/ReceiveInfo.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +/******************************************* +* 文 件 名: ReceiveInfo +* 作 者: 刘成文 +* 创建时间: 2013-4-28 10:23:56 +* 修改说明: +********************************************/ + +namespace Ops.Plugin.NetPay +{ + /// + /// 收货信息 + /// + public struct ReceiveInfo + { + public string Name { get; set; } + public string Address { get; set; } + public string Zip { get; set; } + public string Phone { get; set; } + public string Mobile { get; set; } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/ClientResponseHandler.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/ClientResponseHandler.cs new file mode 100644 index 0000000..e0dc27f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/ClientResponseHandler.cs @@ -0,0 +1,165 @@ +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Text; +using System.Web; +using System.Xml; + +/** + * 后台应答类 + * ============================================================================ + * api说明: + * getKey()/setKey(),获取/设置密钥 + * getContent() / setContent(), 获取/设置原始内容 + * getParameter()/setParameter(),获取/设置参数值 + * getAllParameters(),获取所有参数 + * isTenpaySign(),是否财付通签名,true:是 false:否 + * getDebugInfo(),获取debug信息 + * + * ============================================================================ + * + */ + +namespace tenpayApp +{ + public class ClientResponseHandler + { + /** 密钥 */ + private string key; + + /** 应答的参数 */ + protected Hashtable parameters; + + /** debug信息 */ + private string debugInfo; + + //原始内容 + protected string content; + + private string charset = "gb2312"; + + + //获取服务器通知数据方式,进行参数获取 + public ClientResponseHandler() + { + parameters = new Hashtable(); + } + + public string getContent() + { + return this.content; + } + + public virtual void setContent(string content) + { + this.content = content; + XmlDocument xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(content); + XmlNode root = xmlDoc.SelectSingleNode("root"); + XmlNodeList xnl = root.ChildNodes; + + foreach (XmlNode xnf in xnl) + { + this.setParameter(xnf.Name, xnf.InnerXml); + } + } + + /** 获取密钥 */ + public string getKey() + { return key; } + + /** 设置密钥 */ + public void setKey(string key) + { this.key = key; } + + /** 获取参数值 */ + public string getParameter(string parameter) + { + string s = (string)parameters[parameter]; + return (null == s) ? "" : s; + } + + /** 设置参数值 */ + public void setParameter(string parameter, string parameterValue) + { + if (parameter != null && parameter != "") + { + if (parameters.Contains(parameter)) + { + parameters.Remove(parameter); + } + + parameters.Add(parameter, parameterValue); + } + } + + /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 + * @return boolean */ + public virtual Boolean isTenpaySign() + { + StringBuilder sb = new StringBuilder(); + + ArrayList akeys = new ArrayList(parameters.Keys); + akeys.Sort(); + + foreach (string k in akeys) + { + string v = (string)parameters[k]; + if (null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); + + //debug信息 + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + + /** 获取debug信息 */ + public string getDebugInfo() + { return debugInfo; } + + /** 设置debug信息 */ + protected void setDebugInfo(String debugInfo) + { this.debugInfo = debugInfo; } + + protected virtual string getCharset() + { + return this.charset; + } + + public void setCharset(String charset) + { + this.charset = charset; + } + + /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 + * @return boolean */ + public virtual Boolean _isTenpaySign(ArrayList akeys) + { + StringBuilder sb = new StringBuilder(); + + foreach (string k in akeys) + { + string v = (string)parameters[k]; + if (null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); + + //debug信息 + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/MD5Util.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/MD5Util.cs new file mode 100644 index 0000000..3ae5fb5 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/MD5Util.cs @@ -0,0 +1,45 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace tenpayApp +{ + /// + /// MD5Util ժҪ˵ + /// + public class MD5Util + { + public MD5Util() + { + // + // TODO: ڴ˴ӹ캯߼ + // + } + + /** ȡдMD5ǩ */ + public static string GetMD5(string encypStr, string charset) + { + string retStr; + MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider(); + + //md5 + byte[] inputBye; + byte[] outputBye; + + //ʹGB2312뷽ʽַתΪֽ飮 + try + { + inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr); + } + catch (Exception ex) + { + inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr); + } + outputBye = m5.ComputeHash(inputBye); + + retStr = System.BitConverter.ToString(outputBye); + retStr = retStr.Replace("-", "").ToUpper(); + return retStr; + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/RequestHandler.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/RequestHandler.cs new file mode 100644 index 0000000..16b2814 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/RequestHandler.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections; +using System.Text; +using System.Web; + +namespace tenpayApp +{ + /// + /// RequestHandler ժҪ˵ + /// + public class RequestHandler + { + public RequestHandler(HttpContext httpContext) + { + parameters = new Hashtable(); + + this.httpContext = httpContext; + this.setGateUrl("https://www.tenpay.com/cgi-bin/v1.0/service_gate.cgi"); + } + + /** urlַ */ + private string gateUrl; + + /** Կ */ + private string key; + + /** IJ */ + protected Hashtable parameters; + + /** debugϢ */ + private string debugInfo; + + protected HttpContext httpContext; + + /** ʼ*/ + public virtual void init() + { + //nothing to do + } + + /** ȡڵַ,ֵ */ + public String getGateUrl() + { + return gateUrl; + } + + /** ڵַ,ֵ */ + public void setGateUrl(String gateUrl) + { + this.gateUrl = gateUrl; + } + + /** ȡԿ */ + public String getKey() + { + return key; + } + + /** Կ */ + public void setKey(string key) + { + this.key = key; + } + + /** ȡURL @return String */ + public virtual string getRequestURL() + { + this.createSign(); + + StringBuilder sb = new StringBuilder(); + ArrayList akeys=new ArrayList(parameters.Keys); + akeys.Sort(); + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + TenpayUtil.UrlEncode(v, getCharset()) + "&"); + } + } + + //ȥһ& + if(sb.Length > 0) + { + sb.Remove(sb.Length-1, 1); + } + + return this.getGateUrl() + "?" + sb.ToString(); + } + + /** + * md5ժҪ,:a-z,ֵIJμǩ + */ + protected virtual void createSign() + { + StringBuilder sb = new StringBuilder(); + + ArrayList akeys=new ArrayList(parameters.Keys); + akeys.Sort(); + + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); + + this.setParameter("sign", sign); + + //debugϢ + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + } + + /** ȡֵ */ + public string getParameter(string parameter) + { + string s = (string)parameters[parameter]; + return (null == s) ? "" : s; + } + + /** òֵ */ + public void setParameter(string parameter,string parameterValue) + { + if(parameter != null && parameter != "") + { + if(parameters.Contains(parameter)) + { + parameters.Remove(parameter); + } + + parameters.Add(parameter,parameterValue); + } + } + + public void doSend() + { + this.httpContext.Response.Redirect(this.getRequestURL()); + } + + /** ȡdebugϢ */ + public String getDebugInfo() + { + return debugInfo; + } + + /** debugϢ */ + public void setDebugInfo(String debugInfo) + { + this.debugInfo = debugInfo; + } + + public Hashtable getAllParameters() + { + return this.parameters; + } + + protected virtual string getCharset() + { + return this.httpContext.Request.ContentEncoding.BodyName; + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/ResponseHandler.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/ResponseHandler.cs new file mode 100644 index 0000000..99eaf91 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/ResponseHandler.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Text; +using System.Web; + +namespace tenpayApp +{ + /// + /// ResponseHandler ժҪ˵ + /// + public class ResponseHandler + { + /** Կ */ + private string key; + + /** ӦIJ */ + protected Hashtable parameters; + + /** debugϢ */ + private string debugInfo; + + protected HttpContext httpContext; + + //ȡ֪ͨݷʽвȡ + public ResponseHandler(HttpContext httpContext) + { + parameters = new Hashtable(); + + this.httpContext = httpContext; + NameValueCollection collection; + if(this.httpContext.Request.HttpMethod == "POST") + { + collection = this.httpContext.Request.Form; + } + else + { + collection = this.httpContext.Request.QueryString; + } + + foreach(string k in collection) + { + string v = (string)collection[k]; + this.setParameter(k, v); + } + } + + /** ȡԿ */ + public string getKey() + { return key;} + + /** Կ */ + public void setKey(string key) + { this.key = key;} + + /** ȡֵ */ + public string getParameter(string parameter) + { + string s = (string)parameters[parameter]; + return (null == s) ? "" : s; + } + + /** òֵ */ + public void setParameter(string parameter,string parameterValue) + { + if(parameter != null && parameter != "") + { + if(parameters.Contains(parameter)) + { + parameters.Remove(parameter); + } + + parameters.Add(parameter,parameterValue); + } + } + + /** ǷƸͨǩ,:a-z,ֵIJμǩ + * @return boolean */ + public virtual Boolean isTenpaySign() + { + StringBuilder sb = new StringBuilder(); + + ArrayList akeys=new ArrayList(parameters.Keys); + akeys.Sort(); + + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); + + //debugϢ + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + + /** + * ʾ + * @param show_url ʾurlַ,urlַʽ(http://www.xxx.com/xxx.aspx) + * @throws IOException + */ + public void doShow(string show_url) + { + string strHtml = "\r\n" + + "\r\n" + + "\r\n" + + " "; + + this.httpContext.Response.Write(strHtml); + + this.httpContext.Response.End(); + } + + /** ȡdebugϢ */ + public string getDebugInfo() + { return debugInfo;} + + /** debugϢ */ + protected void setDebugInfo(String debugInfo) + { this.debugInfo = debugInfo;} + + protected virtual string getCharset() + { + return this.httpContext.Request.ContentEncoding.BodyName; + + } + + /** ǷƸͨǩ,:a-z,ֵIJμǩ + * @return boolean */ + public virtual Boolean _isTenpaySign(ArrayList akeys) + { + StringBuilder sb = new StringBuilder(); + + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); + + //debugϢ + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/TenpayHttpClient.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/TenpayHttpClient.cs new file mode 100644 index 0000000..aa762d7 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/TenpayHttpClient.cs @@ -0,0 +1,233 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Net; +using System.Security.Cryptography.X509Certificates; +using System.Net.Security; + + +using System.Collections; +using System.Configuration; +using System.Data; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.HtmlControls; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; + +/** + * http、https通信类 + * ============================================================================ + * api说明: + * setReqContent($reqContent),设置请求内容,无论post和get,都用get方式提供 + * getResContent(), 获取应答内容 + * setMethod($method),设置请求方法,post或者get + * getErrInfo(),获取错误信息 + * setCertInfo($certFile, $certPasswd, $certType="PEM"),设置证书,双向https时需要使用 + * setCaInfo($caFile), 设置CA,格式未pem,不设置则不检查 + * setTimeOut($timeOut), 设置超时时间,单位秒 + * getResponseCode(), 取返回的http状态码 + * call(),真正调用接口 + * + * ============================================================================ + * + */ + +namespace tenpayApp +{ + public class TenpayHttpClient + { + //请求内容,无论post和get,都用get方式提供 + private string reqContent; + + //应答内容 + private string resContent; + + //请求方法 + private string method; + + //错误信息 + private string errInfo; + + //证书文件 + private string certFile; + + //证书密码 + private string certPasswd; + + //ca证书文件 + private string caFile; + + //超时时间,以秒为单位 + private int timeOut; + + //http应答编码 + private int responseCode; + + //字符编码 + private string charset; + + public TenpayHttpClient() + { + this.caFile = ""; + this.certFile = ""; + this.certPasswd = ""; + + this.reqContent = ""; + this.resContent = ""; + this.method = "POST"; + this.errInfo = ""; + this.timeOut = 1 * 60;//5分钟 + + this.responseCode = 0; + this.charset = "gb2312"; + + } + + //设置请求内容 + public void setReqContent(string reqContent) + { + this.reqContent = reqContent; + } + + //获取结果内容 + public string getResContent() + { + return this.resContent; + } + + //设置请求方法post或者get + public void setMethod(string method) + { + this.method = method; + } + + //获取错误信息 + public string getErrInfo() + { + return this.errInfo; + } + + //设置证书信息 + public void setCertInfo(string certFile, string certPasswd) + { + this.certFile = certFile; + this.certPasswd = certPasswd; + } + + //设置ca + public void setCaInfo(string caFile) + { + this.caFile = caFile; + } + + //设置超时时间,以秒为单位 + + public void setTimeOut(int timeOut) + { + this.timeOut = timeOut; + } + + + //获取http状态码 + public int getResponseCode() + { + return this.responseCode; + } + + public void setCharset(string charset) + { + this.charset = charset; + } + + //验证服务器证书 + public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) + { + return true; + } + + //执行http调用 + public bool call() + { + StreamReader sr = null; + HttpWebResponse wr = null; + + HttpWebRequest hp = null; + try + { + string postData = null; + if (this.method.ToUpper() == "POST") + { + string[] sArray = System.Text.RegularExpressions.Regex.Split(this.reqContent, "\\?"); + + hp = (HttpWebRequest)WebRequest.Create(sArray[0]); + + if (sArray.Length >= 2) + { + postData = sArray[1]; + } + + } + else + { + hp = (HttpWebRequest)WebRequest.Create(this.reqContent); + } + + + ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); + if (this.certFile != "") + { + hp.ClientCertificates.Add(new X509Certificate2(this.certFile, this.certPasswd)); + } + hp.Timeout = this.timeOut * 1000; + + System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(this.charset); + if (postData != null) + { + byte[] data = encoding.GetBytes(postData); + + hp.Method = "POST"; + + hp.ContentType = "application/x-www-form-urlencoded"; + + hp.ContentLength = data.Length; + + Stream ws = hp.GetRequestStream(); + + // 发送数据 + + ws.Write(data, 0, data.Length); + ws.Close(); + + + } + + + wr = (HttpWebResponse)hp.GetResponse(); + sr = new StreamReader(wr.GetResponseStream(), encoding); + + + + this.resContent = sr.ReadToEnd(); + sr.Close(); + wr.Close(); + } + catch (Exception exp) + { + this.errInfo += exp.Message; + if (wr != null) + { + this.responseCode = Convert.ToInt32(wr.StatusCode); + } + + return false; + } + + this.responseCode = Convert.ToInt32(wr.StatusCode); + + return true; + } + } +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/TenpayUtil.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/TenpayUtil.cs new file mode 100644 index 0000000..61b8e39 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Code/TenpayUtil.cs @@ -0,0 +1,107 @@ +using System; +using System.Text; +using System.Web; +namespace tenpayApp +{ + /// + /// TenpayUtil ժҪ˵ + /// + public class TenpayUtil + { + public static string tenpay ="1"; + public static string bargainor_id = "1900000113"; //Ƹ̻ͨ + public static string tenpay_key = "e82573dc7e6136ba414f2e2affbe39fa"; //ƸͨԿ; + public static string tenpay_return = "http://********/payReturnUrl.aspx";//ʾ֧֪ͨҳ; + public static string tenpay_notify ="http://*****/payReturnUrl.aspx"; //֧ɺĻصҳ; + + public TenpayUtil() + { + /*tenpay = System.Configuration.ConfigurationSettings.AppSettings["tenpay"]; + bargainor_id = System.Configuration.ConfigurationSettings.AppSettings["bargainor_id"]; + tenpay_key = System.Configuration.ConfigurationSettings.AppSettings["tenpay_key"]; + tenpay_return = System.Configuration.ConfigurationSettings.AppSettings["tenpay_return"]; + tenpay_show = System.Configuration.ConfigurationSettings.AppSettings["tenpay_show"];*/ + } + /** ַURL */ + public static string UrlEncode(string instr, string charset) + { + //return instr; + if(instr == null || instr.Trim() == "") + return ""; + else + { + string res; + + try + { + res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding(charset)); + + } + catch (Exception ex) + { + res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding("GB2312")); + } + + + return res; + } + } + + /** ַURL */ + public static string UrlDecode(string instr, string charset) + { + if(instr == null || instr.Trim() == "") + return ""; + else + { + string res; + + try + { + res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding(charset)); + + } + catch (Exception ex) + { + res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding("GB2312")); + } + + + return res; + + } + } + + /** ȡʱ漴,滻׵еĺ10λˮ */ + public static UInt32 UnixStamp() + { + TimeSpan ts = DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + return Convert.ToUInt32(ts.TotalSeconds); + } + /** ȡ */ + public static string BuildRandomStr(int length) + { + Random rand = new Random(); + + int num = rand.Next(); + + string str = num.ToString(); + + if(str.Length > length) + { + str = str.Substring(0,length); + } + else if(str.Length < length) + { + int n = length - str.Length; + while(n > 0) + { + str.Insert(0, "0"); + n--; + } + } + + return str; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Tenpay.cs b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Tenpay.cs new file mode 100644 index 0000000..780777e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/NetPay/Tenpay/Tenpay.cs @@ -0,0 +1,442 @@ + +// +// Copyright (C) 2007-2012 OPSoft INC,All rights reseved. +// +// Project: OPS.Plugin +// FileName : Tenpay.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace Ops.Plugin.NetPay +{ + using System; + using System.Collections; + using System.Web; + using tenpayApp; + + /// + /// 财付通 + /// + internal class Tenpay : IPay + { + public string GetPayRequest(Hashtable hash) + { + /*接口需要的参数如下: + * ---------------------------------- + * @product_fee : 产品价格 + * @express_fee : 快递费用 + * @orderno : 订单号 + * @desc : 订单描述 + * ----------------------------------- + */ + + //商户号 + string partner = hash["tenpay_key"] as string; + //密钥 + string key = hash["tenpay_secret"] as string; + + + TenpayUtil.bargainor_id = partner; + TenpayUtil.tenpay_key = key; + TenpayUtil.tenpay_return = PayUtil.GetReturnUrl(PayMethods.Tenpay, PayApiType.Direct); + TenpayUtil.tenpay_notify = PayUtil.GetNotifyUrl(PayMethods.Tenpay, PayApiType.Direct); + + int product_fee = (int)(((decimal)hash["order_fee"]) * 100); //商品费用 + decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 + + string bankCode = hash.Contains("bank") ? hash["bank"].ToString() : "DEFAULT"; + + string order_desc = hash["order_desc"] as string;//HttpUtility.UrlEncode( ht["order_desc"] as string); + + //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 + string out_trade_no = hash["order_no"] as string; + string host = hash["usr_host"] as string; + + + //当前时间 yyyyMMdd + string date = DateTime.Now.ToString("yyyyMMdd"); + + + //创建RequestHandler实例 + RequestHandler reqHandler = new RequestHandler(HttpContext.Current); + //初始化 + reqHandler.init(); + //设置密钥 + reqHandler.setKey(TenpayUtil.tenpay_key); + reqHandler.setGateUrl("https://gw.tenpay.com/gateway/pay.htm"); + + + //----------------------------- + //设置支付参数 + //----------------------------- + reqHandler.setParameter("partner", TenpayUtil.bargainor_id); //商户号 + reqHandler.setParameter("out_trade_no", out_trade_no); //商家订单号 + reqHandler.setParameter("total_fee", product_fee.ToString()); //商品金额,以分为单位 + reqHandler.setParameter("return_url", TenpayUtil.tenpay_return); //交易完成后跳转的URL + reqHandler.setParameter("notify_url", TenpayUtil.tenpay_notify); //接收财付通通知的URL + reqHandler.setParameter("body", order_desc); //商品描述 + reqHandler.setParameter("bank_type", bankCode); //银行类型(中介担保时此参数无效) + reqHandler.setParameter("spbill_create_ip", host); //用户的公网ip,不是商户服务器IP + reqHandler.setParameter("fee_type", "1"); //币种,1人民币 + reqHandler.setParameter("subject", out_trade_no); //商品名称(中介交易时必填) + + + //系统可选参数 + reqHandler.setParameter("sign_type", "MD5"); + reqHandler.setParameter("service_version", "1.0"); + reqHandler.setParameter("input_charset", "UTF-8"); + reqHandler.setParameter("sign_key_index", "1"); + + //业务可选参数 + + reqHandler.setParameter("attach", ""); //附加数据,原样返回 + reqHandler.setParameter("product_fee", "0"); //商品费用,必须保证transport_fee + product_fee=total_fee + reqHandler.setParameter("transport_fee", "0"); //物流费用,必须保证transport_fee + product_fee=total_fee + reqHandler.setParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //订单生成时间,格式为yyyymmddhhmmss + reqHandler.setParameter("time_expire", ""); //订单失效时间,格式为yyyymmddhhmmss + reqHandler.setParameter("buyer_id", ""); //买方财付通账号 + reqHandler.setParameter("goods_tag", ""); //商品标记 + reqHandler.setParameter("trade_mode", "1"); //交易模式,1即时到账(默认),2中介担保,3后台选择(买家进支付中心列表选择) + reqHandler.setParameter("transport_desc", ""); //物流说明 + reqHandler.setParameter("trans_type", "1"); //交易类型,1实物交易,2虚拟交易 + reqHandler.setParameter("agentid", ""); //平台ID + reqHandler.setParameter("agent_type", ""); //代理模式,0无代理(默认),1表示卡易售模式,2表示网店模式 + reqHandler.setParameter("seller_id", ""); //卖家商户号,为空则等同于partner + + + + + + + //获取请求带参数的url + string requestUrl = reqHandler.getRequestURL(); + + //Response.Redirect(requestUrl); + return requestUrl; + //Get的实现方式 + // string a_link = "" + "财付通支付" + ""; + // Response.Write(a_link); + // return a_link; + + + //post实现方式 + + /* Response.Write("
                                                                                                                                            \n"); + Hashtable ht = reqHandler.getAllParameters(); + foreach(DictionaryEntry de in ht) + { + Response.Write("\n"); + } + Response.Write("\n
                                                                                                                                            \n");*/ + + + //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 + // string debuginfo = reqHandler.getDebugInfo(); + // Response.Write("
                                                                                                                                            requestUrl:" + requestUrl + "
                                                                                                                                            "); + // Response.Write("
                                                                                                                                            debuginfo:" + debuginfo + "
                                                                                                                                            "); + } + + public PaidHandleResult Return(PayMointor proc) where T : class + { + //商户号 + string partner = TenpayUtil.bargainor_id;// p.PayApiKey; + //密钥 + string key = TenpayUtil.tenpay_key;// p.PayApiSecret; + + + //创建ResponseHandler实例 + ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); + resHandler.setKey(key); + + //判断签名 + if (true || resHandler.isTenpaySign()) + { + + ///通知id + string notify_id = resHandler.getParameter("notify_id"); + //商户订单号 + string out_trade_no = resHandler.getParameter("out_trade_no"); + //财付通订单号 + string transaction_id = resHandler.getParameter("transaction_id"); + //金额,以分为单位 + string total_fee = resHandler.getParameter("total_fee"); + //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee + string discount = resHandler.getParameter("discount"); + //支付结果 + string trade_state = resHandler.getParameter("trade_state"); + //交易模式,1即时到账,2中介担保 + string trade_mode = resHandler.getParameter("trade_mode"); + + + proc.Init(out_trade_no); + + + if ("1".Equals(trade_mode)) + { + + //即时到账 + if ("0".Equals(trade_state)) + { + //------------------------------ + //即时到账处理业务开始 + //------------------------------ + + //处理数据库逻辑 + //注意交易单不要重复处理 + //注意判断返回金额 + + + + + + + //------------------------------ + //即时到账处理业务完毕 + //------------------------------ + + + //SetLogMessage("即时到帐付款成功"); + return PaidHandleResult.Success; + + + + //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 + + } + else + { + //SetLogMessage("即时到账支付失败"); + return PaidHandleResult.Fail; + } + + } + else if ("2".Equals(trade_mode)) + { //中介担保 + if ("0".Equals(trade_state)) + { + //------------------------------ + //中介担保处理业务开始 + //------------------------------ + + //处理数据库逻辑 + //注意交易单不要重复处理 + //注意判断返回金额 + + //------------------------------ + //中介担保处理业务完毕 + //------------------------------ + + + //Response.Write("中介担保付款成功"); + //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 + + //SetLogMessage("中介担保付款成功"); + return PaidHandleResult.Success; + } + else + { + PayUtil.SetLogMessage("trade_state=" + trade_state); + return PaidHandleResult.Fail; + } + } + } + else + { + //Response.Write("认证签名失败"); + PayUtil.SetLogMessage("认证签名失败"); + return PaidHandleResult.Fail; + } + + return PaidHandleResult.Fail; + + } + + public string Notify(PayMointor proc) where T : class + { + //商户号 + string partner = TenpayUtil.bargainor_id; + //密钥 + string key = TenpayUtil.tenpay_key; + + + //创建ResponseHandler实例 + ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); + resHandler.setKey(key); + + //判断签名 + if (resHandler.isTenpaySign()) + { + + ///通知id + string notify_id = resHandler.getParameter("notify_id"); + + + //通过通知ID查询,确保通知来至财付通 + //创建查询请求 + RequestHandler queryReq = new RequestHandler(System.Web.HttpContext.Current); + queryReq.init(); + queryReq.setKey(key); + queryReq.setGateUrl("https://gw.tenpay.com/gateway/verifynotifyid.xml"); + queryReq.setParameter("partner", partner); + queryReq.setParameter("notify_id", notify_id); + + //通信对象 + TenpayHttpClient httpClient = new TenpayHttpClient(); + httpClient.setTimeOut(5); + //设置请求内容 + httpClient.setReqContent(queryReq.getRequestURL()); + + //后台调用 + if (httpClient.call()) + { + //设置结果参数 + ClientResponseHandler queryRes = new ClientResponseHandler(); + queryRes.setContent(httpClient.getResContent()); + queryRes.setKey(key); + + //判断签名及结果 + //只有签名正确,retcode为0,trade_state为0才是支付成功 + if (queryRes.isTenpaySign() && queryRes.getParameter("retcode") == "0" && queryRes.getParameter("trade_state") == "0" && queryRes.getParameter("trade_mode") == "1") + { + //取结果参数做业务处理 + string out_trade_no = queryRes.getParameter("out_trade_no"); + //财付通订单号 + string transaction_id = queryRes.getParameter("transaction_id"); + //金额,以分为单位 + string total_fee = queryRes.getParameter("total_fee"); + //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee + string discount = queryRes.getParameter("discount"); + //支付结果 + string trade_state = resHandler.getParameter("trade_state"); + //交易模式,1即时到帐 2中介担保 + string trade_mode = resHandler.getParameter("trade_mode"); + + proc.Init(out_trade_no); + + + //判断签名及结果 + if (queryRes.isTenpaySign() && "0".Equals(queryRes.getParameter("retcode"))) + { + // Response.Write("id验证成功"); + + if ("1".Equals(trade_mode)) + { //即时到账 + if ("0".Equals(trade_state)) + { + + proc.PaidSuccess(); + + return "Success"; + + } + else + { + proc.PaidFail(); + //SetLogMessage("即时到账支付失败"); + return "即时到账支付失败"; + + } + } + else if ("2".Equals(trade_mode)) + { //中介担保 + //------------------------------ + //中介担保处理业务开始 + //------------------------------ + //处理数据库逻辑 + //注意交易单不要重复处理 + //注意判断返回金额 + + int iStatus = 0; + switch (iStatus) + { + case 0: //付款成功 + + break; + case 1: //交易创建 + + break; + case 2: //收获地址填写完毕 + + break; + case 4: //卖家发货成功 + + break; + case 5: //买家收货确认,交易成功 + + break; + case 6: //交易关闭,未完成超时关闭 + + break; + case 7: //修改交易价格成功 + + break; + case 8: //买家发起退款 + + break; + case 9: //退款成功 + + break; + case 10: //退款关闭 + + break; + + } + + + //------------------------------ + //中介担保处理业务开始 + //------------------------------ + + + //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 + + proc.PaidSuccess(); + return "Success"; + + } + } + else + { + //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。 + //通知财付通处理失败,需要重新通知\ + + + + // SetLogMessage("查询验证签名失败或id验证失败\r\nretcode:" + queryRes.getParameter("retcode")); + + proc.PaidFail(); + return "查询验证签名失败或id验证失败retcode:" + queryRes.getParameter("retcode"); ; + + } + + } + else + { + //通知财付通处理失败,需要重新通知 + + //SetLogMessage("后台调用通信失败\r\ncall err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "); + + proc.PaidFail(); + + return "后台调用通信失败call err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "; + + } + + + } + else + { + proc.PaidFail(); + return "通知签名验证失败"; + } + } + return ""; + } + } + +} diff --git a/src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plugin.csproj b/src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plugin.csproj new file mode 100644 index 0000000..1e94c1b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plugin.csproj @@ -0,0 +1,165 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {D1FBD275-BF29-4823-970A-0F341BF99A9F} + Library + Properties + Ops.Plugin + Ops.Plugin + v4.0 + 512 + + + + true + full + false + ..\bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\bin\ + TRACE + prompt + 4 + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + bin\Debug\OPS.Plus.dll.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + true + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + bin\Release\OPS.Plus.dll.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets + true + ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules + true + + + + ..\..\DLL\NetPay.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + BankRes.resx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {D5FE86B4-D9B2-451C-921F-7AFAEB7AD291} + OPSoft.Core + + + + + ResXFileCodeGenerator + BankRes.Designer.cs + + + + + \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/AtNet.DevFw.Template.csproj.user b/src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plugin.csproj.user similarity index 100% rename from J6/src/core/J6.DevFw.Template/AtNet.DevFw.Template.csproj.user rename to src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plugin.csproj.user diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/OPSoft.Plus.pidb b/src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plus.pidb similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/OPSoft.Plus.pidb rename to src/OPS.Library/Source Code/OPSoft.Plus/OPSoft.Plus.pidb diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/OPSoft.Plus/Properties/AssemblyInfo.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/OPSoft.Plus/Properties/AssemblyInfo.cs diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/CSharpProvider.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/CSharpProvider.cs new file mode 100644 index 0000000..139778b --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/CSharpProvider.cs @@ -0,0 +1,298 @@ +using System; +using System.CodeDom.Compiler; +using System.Text; +using Microsoft.CSharp; +using Ops.Template.Compiler.Text; + +namespace Ops.Template.Compiler +{ + public class CSharpProvider : IDisposable + { + #region Private fields + + private CSharpCodeProvider _CSharpCodePrivoder; + private CompilerParameters _CompilerParameters = new CompilerParameters(); + private CompilerResults _Clr; + private string _Code; + private DateTime _LstFileTime = DateTime.Parse("1900-1-1"); + private AppDomain _AppDomain; + private string _AssemblyFileName = "DynamicTemp.dll"; + private bool _RemoveAssemblyFile; + private Encoding _SourceCodeFileEncoding = Encoding.Default; + private DotNetReferences _DotNetReferences = new DotNetReferences(); + + #endregion + + #region Public Properties + + /// + /// Manage the references + /// + public DotNetReferences References + { + get { return _DotNetReferences; } + } + + /// + /// Get or set the output assembly file name for the dynamic source code + /// + public string AssemblyFileName + { + get { return _AssemblyFileName; } + + set { _AssemblyFileName = value; } + } + + /// + /// The compilier parameters + /// + public CompilerParameters CompilerParameters + { + get { return _CompilerParameters; } + } + + /// + /// If this property set to true, + /// When the object intance from this class dispose, + /// the assembly File that is compiled will be deleted. + /// + public bool RemoveAssemblyFile + { + get { return _RemoveAssemblyFile; } + + set { _RemoveAssemblyFile = value; } + } + + /// + /// Get or set the encoding of source code file + /// + public Encoding SourceCodeFileEncoding + { + get { return _SourceCodeFileEncoding; } + + set { _SourceCodeFileEncoding = value; } + } + + #endregion + + #region Private methods + + private void LoadReference(string code) + { + foreach (string reference in References.GetReferences()) + { + if (reference != null) + { + if (_CompilerParameters.ReferencedAssemblies.IndexOf(reference) < 0) + { + _CompilerParameters.ReferencedAssemblies.Add(reference); + } + } + } + + foreach (string nameSpace in ReferenceInCode.GetNameSpacesInSourceCode(code)) + { + string referenceDll = References[nameSpace]; + if (referenceDll != null) + { + if (_CompilerParameters.ReferencedAssemblies.IndexOf(referenceDll) < 0) + { + _CompilerParameters.ReferencedAssemblies.Add(referenceDll); + } + } + } + } + + + /// + /// Create the instance named or inherited by typeFullName + /// + /// code string or source code file name + /// the full name of type + /// from file or from code string + /// instance object + /// If the type named or inherited by typefullname does not exits, return null + private object InnerCreateInstance(string code, string typeFullName, bool fromFile) + { + bool reCompile = false; + + if (fromFile) + { + reCompile = CompileFromFile(code); + } + else + { + reCompile = Compile(code); + } + + if (reCompile) + { + AppDomainSetup appDomainSetup; + + appDomainSetup = new AppDomainSetup(); + appDomainSetup.LoaderOptimization = LoaderOptimization.SingleDomain; + appDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; + appDomainSetup.ShadowCopyDirectories = appDomainSetup.ApplicationBase; + appDomainSetup.ShadowCopyFiles = "true"; + _AppDomain = AppDomain.CreateDomain(AssemblyFileName, null, appDomainSetup); + } + + RemoteLoader remoteLoader = + (RemoteLoader) _AppDomain.CreateInstance("Compiler.Dynamic", "RemoteAccess.RemoteLoader").Unwrap(); + return remoteLoader.Create(AssemblyFileName, typeFullName, null); + } + + #endregion + + #region Constructor + + public CSharpProvider() + { + } + + ~CSharpProvider() + { + try + { + Dispose(); + } + catch + { + } + } + + #endregion + + #region Public methods + + /// + /// Compiler From source code file + /// + /// The file name of source code + /// + public bool CompileFromFile(string sourceCodeFileName) + { + DateTime fileTime = System.IO.File.GetLastWriteTime(sourceCodeFileName); + + if (_LstFileTime == fileTime) + { + return false; + } + + _LstFileTime = fileTime; + + string code = File.ReadFileToString(sourceCodeFileName, SourceCodeFileEncoding); + + bool removeAssemblyFile = RemoveAssemblyFile; + RemoveAssemblyFile = true; + Dispose(); + RemoveAssemblyFile = removeAssemblyFile; + + _CSharpCodePrivoder = new CSharpCodeProvider(); + + LoadReference(code); + _Code = code; + _CompilerParameters.GenerateInMemory = false; + _CompilerParameters.OutputAssembly = AssemblyFileName; + + string[] files = new string[1]; + files[0] = sourceCodeFileName; + + _Clr = _CSharpCodePrivoder.CompileAssemblyFromFile(_CompilerParameters, files); + + if (_Clr.Errors.HasErrors) + { + throw new CompilerException(code, _Clr.Errors); + } + + return true; + } + + public bool Compile(string code) + { + if (code == _Code) + { + return false; + } + + bool removeAssemblyFile = RemoveAssemblyFile; + RemoveAssemblyFile = true; + Dispose(); + RemoveAssemblyFile = removeAssemblyFile; + + _Code = code; + _CSharpCodePrivoder = new CSharpCodeProvider(); + + LoadReference(code); + + _CompilerParameters.GenerateInMemory = false; + _CompilerParameters.OutputAssembly = AssemblyFileName; + + _Clr = _CSharpCodePrivoder.CompileAssemblyFromSource(_CompilerParameters, code); + + if (_Clr.Errors.HasErrors) + { + throw new CompilerException(code, _Clr.Errors); + } + + return true; + } + + + /// + /// Create the instance named or inherited by typeFullName + /// + /// source code string + /// the full name of type + /// instance object + /// If the type named or inherited by typefullname does not exits, return null + public object CreateInstance(string code, string typeFullName) + { + return InnerCreateInstance(code, typeFullName, false); + } + + /// + /// Create the instance named or inherited by typeFullName + /// + /// source code file + /// the full name of type + /// instance object + /// If the type named or inherited by typefullname does not exits, return null + public object CreateInstanceFromFile(string fileName, string typeFullName) + { + return InnerCreateInstance(fileName, typeFullName, true); + } + + #endregion + + #region IDisposable Members + + public void Dispose() + { + if (_AppDomain != null) + { + AppDomain.Unload(_AppDomain); + _AppDomain = null; + } + + _Clr = null; + + GC.Collect(); + + if (RemoveAssemblyFile) + { + if (System.IO.File.Exists(AssemblyFileName)) + { + System.IO.File.Delete(AssemblyFileName); + } + + if (System.IO.File.Exists(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb")) + { + System.IO.File.Delete(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb"); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/CompilerException.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/CompilerException.cs new file mode 100644 index 0000000..cff3ca0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/CompilerException.cs @@ -0,0 +1,40 @@ +using System; +using System.CodeDom.Compiler; +using System.Text; + +namespace Ops.Template.Compiler +{ + public class CompilerException : Exception + { + private string _Code; + private CompilerErrorCollection _Errors; + + public string Code + { + get { return _Code; } + } + + public CompilerErrorCollection Errors + { + get { return _Errors; } + } + + public CompilerException(string code, CompilerErrorCollection errors) + { + _Code = code; + _Errors = errors; + } + + public override string ToString() + { + StringBuilder message = new StringBuilder(); + + foreach (CompilerError err in _Errors) + { + message.AppendFormat("({0}): error {1}: {2}", err.Line, err.ErrorNumber, err.ErrorText); + } + + return message.ToString(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/DotNetReferences.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/DotNetReferences.cs new file mode 100644 index 0000000..792b0f5 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/DotNetReferences.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using Ops.Template.Compiler.Text; + +namespace Ops.Template.Compiler +{ + public class DotNetReferences + { + #region Private fields + + private List _References = new List(); + + #endregion + + #region Private methods + + #endregion + + #region Public methods + + public void Add(string reference) + { + _References.Add(reference); + } + + public void Remove(string reference) + { + _References.Remove(reference); + } + + public IEnumerable GetReferences() + { + foreach (string reference in _References) + { + yield return reference; + } + } + + public string this[string nameSpace] + { + get { return ReferenceInCode.GetDefaultReferenceDllName(nameSpace); } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/RemoteLoader.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/RemoteLoader.cs new file mode 100644 index 0000000..93322d9 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/RemoteLoader.cs @@ -0,0 +1,82 @@ +using System; +using System.Reflection; + +namespace Ops.Template.Compiler +{ + /// + /// Factory class to create objects exposing IRemoteInterface + /// + internal class RemoteLoader : MarshalByRefObject + { + private Type _Type; + + public RemoteLoader() + { + } + + /// Factory method to create an instance of the type whose name is specified, + /// using the named assembly file and the constructor that best matches the specified parameters. + /// The name of a file that contains an assembly where the type named typeName is sought. + /// The name of the preferred type. + /// An array of arguments that match in number, order, and type the parameters of the constructor to invoke, or null for default constructor. + /// The return value is the created object represented as ILiveInterface. + public object Create(string assemblyFile, string typeName, object[] constructArgs) + { + if (_Type == null) + { + string asmName = System.IO.Path.GetFileNameWithoutExtension(assemblyFile); + + AppDomain.CurrentDomain.Load(asmName); + + Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies(); + Assembly asm = null; + + foreach (Assembly a in asms) + { + if (System.IO.Path.GetFileName(a.Location) + .Equals(assemblyFile, StringComparison.CurrentCultureIgnoreCase)) + { + asm = a; + } + } + + Type[] types = asm.GetTypes(); + + Type matchType = null; + + foreach (Type type in types) + { + if (type.FullName == typeName) + { + matchType = type; + break; + } + + if (type.BaseType != null) + { + if (type.BaseType.FullName == typeName) + { + matchType = type; + break; + } + } + + if (type.GetInterface(typeName) != null) + { + matchType = type; + break; + } + } + + if (matchType == null) + { + return null; + } + + _Type = matchType; + } + + return Activator.CreateInstance(_Type); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/File.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/File.cs new file mode 100644 index 0000000..1b3f9b3 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/File.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Text; + +namespace Ops.Template.Compiler.Text +{ + internal class File + { + public static String ReadFileToString(String fileName, Encoding encoding) + { + using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) + { + StreamReader sr = new StreamReader(fs, encoding); + return sr.ReadToEnd(); + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/ReferenceInCode.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/ReferenceInCode.cs new file mode 100644 index 0000000..0ffe119 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/ReferenceInCode.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; + +namespace Ops.Template.Compiler.Text +{ + internal class ReferenceInCode + { + private static readonly string[] _SystemSpecRefs = + { + "System.Configuration", + "System.Configuration.Install", + "System.Data", + "System.Data.SqlClient", + "System.Data.SqlXml", + "System.Deployment", + "System.Design", + "Sysemt.DirecoryServices", + "System.DirectoryServices.Protocols", + "System.Drawing", + "System.Drawing.Design", + "System.EnterpriseServices", + "System.Management", + "System.Messaging", + "System.Runtime.Remoting", + "System.Runtime.Serialization.Formatters.Soap", + "System.Security", + "System.ServiceProcess", + "System.Transactions", + "System.Web", + "System.Web.Mobile", + "System.Web.RegularExpressions", + "System.Web.Services", + "System.Windows.Forms", + "System.Xml" + }; + + private static string GetSystemReferenceDllName(string namespaceText) + { + foreach (string sysSpecRef in _SystemSpecRefs) + { + if (namespaceText.IndexOf(sysSpecRef) == 0) + { + return sysSpecRef + ".dll"; + } + } + + return "System.dll"; + } + + public static List GetNameSpacesInSourceCode(string code) + { + return Regx.GetMatchStrings(code, @"using\s+(.+?)\s*;", false); + } + + public static string GetDefaultReferenceDllName(string namespaceText) + { + namespaceText = namespaceText.Trim(); + + if (namespaceText.IndexOf("System") == 0) + { + return GetSystemReferenceDllName(namespaceText); + } + else + { + return namespaceText + ".dll"; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/Regx.cs b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/Regx.cs new file mode 100644 index 0000000..337e317 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Compiler/Text/Regx.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace Ops.Template.Compiler.Text +{ + internal class Regx + { + public static List GetMatchStrings(String text, String regx, + bool ignoreCase) + { + List output = new List(); + + Regex reg; + + int index = 0; + int begin = 0; + index = regx.IndexOf("(.+)"); + if (index < 0) + { + index = regx.IndexOf("(.+?)"); + if (index >= 0) + { + begin = index + 5; + } + } + else + { + begin = index + 4; + } + + if (index >= 0) + { + String endText = regx.Substring(begin); + + if (GetMatch(text, endText, ignoreCase) == "") + { + return output; + } + } + + if (ignoreCase) + { + reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); + } + else + { + reg = new Regex(regx, RegexOptions.Singleline); + } + + MatchCollection m = reg.Matches(text); + + if (m.Count == 0) + { + return output; + } + + for (int j = 0; j < m.Count; j++) + { + int count = m[j].Groups.Count; + + for (int i = 1; i < count; i++) + { + output.Add(m[j].Groups[i].Value.Trim()); + } + } + + return output; + } + + public static String GetMatch(String text, String regx, bool ignoreCase) + { + Regex reg; + + int index = 0; + int begin = 0; + index = regx.IndexOf("(.+)"); + if (index < 0) + { + index = regx.IndexOf("(.+?)"); + if (index >= 0) + { + begin = index + 5; + } + } + else + { + begin = index + 4; + } + + if (index >= 0) + { + String endText = regx.Substring(begin); + + if (endText != "") + { + if (GetMatch(text, endText, ignoreCase) == "") + { + return ""; + } + } + } + + if (ignoreCase) + { + reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); + } + else + { + reg = new Regex(regx, RegexOptions.Singleline); + } + + String ret = ""; + Match m = reg.Match(text); + + if (m.Groups.Count > 0) + { + ret = m.Groups[m.Groups.Count - 1].Value; + } + + return ret; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Embed.Designer.cs b/src/OPS.Library/Source Code/OPSoft.Template/Embed.Designer.cs new file mode 100644 index 0000000..6fd3163 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Embed.Designer.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18408 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace Ops.Template { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Embed { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Embed() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Ops.Template.Embed", typeof(Embed).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找类似 <!DOCTYPE HTML> + ///<html> + /// <head> + /// <title>${title} - ASP.NET模板系统 - Power by opsoft</title> + /// <style type="text/css"> + /// body{margin:0;} + /// *{font-size:12px;font-family:Tahoma;} + /// .center{text-align:Center;} + /// #footer{background:#e5e5e5;color:#006699;text-align:center;line-height:30px;} + /// a{color:#006699;outline:none;text-decoration:none;} + /// a:hover{color:black;} + /// </style> + /// </head> + /// <body> + /// ${content} + /// <div id="footer">Copyright&nbsp;&nbs [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string SysTemplatePage { + get { + return ResourceManager.GetString("SysTemplatePage", resourceCulture); + } + } + } +} diff --git a/J6/src/core/J6.DevFw.Template/Embed.resources b/src/OPS.Library/Source Code/OPSoft.Template/Embed.resources similarity index 100% rename from J6/src/core/J6.DevFw.Template/Embed.resources rename to src/OPS.Library/Source Code/OPSoft.Template/Embed.resources diff --git a/J6/src/core/J6.DevFw.Template/Embed.resx b/src/OPS.Library/Source Code/OPSoft.Template/Embed.resx similarity index 100% rename from J6/src/core/J6.DevFw.Template/Embed.resx rename to src/OPS.Library/Source Code/OPSoft.Template/Embed.resx diff --git a/src/OPS.Library/Source Code/OPSoft.Template/OPSoft.Template.csproj b/src/OPS.Library/Source Code/OPSoft.Template/OPSoft.Template.csproj new file mode 100644 index 0000000..661d577 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/OPSoft.Template.csproj @@ -0,0 +1,102 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {275CAE3E-A9E0-4DE0-8031-E9137BBDD693} + Library + Properties + Ops.Template + Ops.Template + v4.0 + 512 + + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + true + + + template.snk + + + + + + + + + + + + + + + + + True + True + Embed.resx + + + + + + + + + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Embed.Designer.cs + + + + + + + + + + + \ No newline at end of file diff --git a/J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.csproj.user b/src/OPS.Library/Source Code/OPSoft.Template/OPSoft.Template.csproj.user similarity index 100% rename from J6/src/examples/com.plugin.helloworld/com.plugin.helloworld.csproj.user rename to src/OPS.Library/Source Code/OPSoft.Template/OPSoft.Template.csproj.user diff --git a/src/OPS.Library/Source Code/OPSoft.Template/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/OPSoft.Template/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..61102a7 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/Properties/AssemblyInfo.cs @@ -0,0 +1,44 @@ +using System.Reflection; +using System.Security; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +//publicKey:7baff2e0bbd0ef52 + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 + +[assembly: AllowPartiallyTrustedCallers] +[assembly: AssemblyTitle("ASP.NET模板引擎 v2.2")] +[assembly: AssemblyDescription("asp.net模板引擎")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("OPSoft(www.ops.cc)")] +[assembly: AssemblyProduct("OPSoft.Template")] +[assembly: AssemblyCopyright("Copyright © OPSoft 2013")] +[assembly: AssemblyTrademark("OPSoft")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 + +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID + +[assembly: Guid("129b8456-d420-43e2-9376-b16530a1d6af")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("2.3.0.0")] +[assembly: AssemblyFileVersion("2.3.0.0")] \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/embed/SysTemplatePage.html b/src/OPS.Library/Source Code/OPSoft.Template/embed/SysTemplatePage.html new file mode 100644 index 0000000..ef77e9a --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/embed/SysTemplatePage.html @@ -0,0 +1,38 @@ + + + + ${title} - ASP.NET模板系统 - Power by opsoft + + + +${content} + + + \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/Config.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/Config.cs new file mode 100644 index 0000000..1d8f7a3 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/Config.cs @@ -0,0 +1,41 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:ITemplate.cs +// Author:newmin +// Create:2011/06/05 +// + +namespace Ops.Template +{ + public delegate void TemplatePageHandler(TemplatePage page); + + public class Config + { + private static readonly string _version; + + public static string Version + { + get { return "2.1"; } + } + + /// + /// 是否启用Html压缩 + /// + public static bool EnabledCompress = true; + + /// + /// 是否将模板缓存 + /// + public static bool EnabledCache = true; + + /// + /// 是否共享URL参数值 + /// + public static bool UrlQueryShared = true; + + /// + /// 共享HttpItem传递的数据 + /// + public static bool HttpItemShared = true; + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/Delegate.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/Delegate.cs new file mode 100644 index 0000000..dcd3b9a --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/Delegate.cs @@ -0,0 +1,18 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:delegate.cs +// Author:newmin +// Create:2011/06/28 +// + +namespace Ops.Template +{ + /// + /// 模板呈现处理 + /// + /// 模板内容 + /// 数据对象 + public delegate void TemplateHandler(T obj, ref string templateContent); + + public delegate void TemplateBehavior(); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/Eval.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/Eval.cs new file mode 100644 index 0000000..eec5c0e --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/Eval.cs @@ -0,0 +1,444 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2013/09/05 +// + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Web; + +namespace Ops.Template +{ + public sealed class Eval + { + /// + /// 添加到数据项 + /// + /// + public static void ToItem(string expression) + { + //$item:x=123 + } + + /// + /// 赋值到变量 + /// + /// + public static string SetToVariable(IDataContrainer dc, string content) + { + //正则模式,支持以下 + // //$menu="123456\" f" sdf + // $menu=12 fsdf + // $menu=item:123456 + // $menu=>getmenu(test,item,get) + const string expressionPattern = + "(/*/*)\\$([_a-zA-Z][a-zA-Z0-9_]*)=(\"(\\\\\"|[^\"\\\\\\n])*\"|[^<>\\s\\\\\\n\"\\$/]+)(\\s+\\B)*"; + //设置表达式 + const string specialVarPattern = "(item|cache|query):(.+)"; //特殊数据 + + string outHtml, + varName, + varValue, + varKey; + + Match valueMatch; + + outHtml = Regex.Replace(content, expressionPattern, m => + { + //注释 + if (m.Groups[1].Value != "") return String.Empty; + + + //获取变量及表达式 + varName = m.Groups[2].Value; + varValue = m.Groups[3].Value; + + if (Regex.IsMatch(varValue, specialVarPattern, RegexOptions.IgnoreCase)) + { + valueMatch = Regex.Match(varValue, specialVarPattern, RegexOptions.IgnoreCase); + varKey = valueMatch.Groups[2].Value; + + switch (valueMatch.Groups[1].Value.ToLower()) + { + case "item": + dc.DefineVariable(varName, HttpContext.Current.Items[varKey]); + break; + case "cache": + dc.DefineVariable(varName, HttpRuntime.Cache[varKey]); + break; + case "query": + dc.DefineVariable(varName, HttpContext.Current.Request[varKey]); + break; + } + } + else + { + string varRealValue = Regex.Replace(varValue, "\\B\"|\"\\B", String.Empty); + + //如果为字符,否则读取指定值的变量 + if (Regex.IsMatch(varValue, "\\B\"|\"\\B")) + { + dc.DefineVariable(varName, varRealValue); + } + else + { + object obj = dc.GetVariable(varRealValue); + if (obj != null) + { + if (obj is Variable) + { + dc.DefineVariable(varName, (Variable) obj); + } + else + { + dc.DefineVariable(varName, obj.ToString()); + } + } + else + { + string message = ""; + int i = 0; + foreach (string key in dc.GetDefineVariable().Keys) + { + message += (++i == 1 ? "" : "," + key); + } + throw new NotSupportedException("数据引用键错误:" + m.Value + "\n" + + + (message != "" + ? "受支持可引用的数据键包括" + message + "\n使用\"$" + varName + + "=>键\"进行调用!" + : "")); + } + } + } + + return String.Empty; + }, RegexOptions.Singleline); + return outHtml; + } + + /// + /// 执行方法并将返回值赋予变量 + /// + /// + /// + /// + public static string EvalMethodToVar(IDataContrainer dc, string content, object data) + { + //正则模式,支持以下 + // //$menu="123456\" f" sdf + // $menu=12 fsdf + // $menu=item:123456 + // $menu=>getmenu(test,item,get) + const string expressionPattern = + "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)=>([a-zA-Z][a-zA-Z0-9_]*)\\((([^\\)]|\\\\\\))*)\\)(\\s+\\B)*"; //设置表达式 + + string outHtml, + varName, + methodName, + paramArray; + + Type type = data.GetType(); + MethodInfo method; + Type[] parameterTypes; + object[] parameters; + int parametersNum; + + + outHtml = Regex.Replace(content, expressionPattern, m => + { + //注释 + if (m.Groups[1].Value != "") return String.Empty; + + + //获取变量及表达式 + varName = m.Groups[2].Value; + methodName = m.Groups[3].Value; + paramArray = m.Groups[4].Value.Replace("\\,", "__CSP__"); + + parameters = paramArray.Trim().Length == 0 ? new object[0] : paramArray.Split(','); + parametersNum = parameters.Length; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parametersNum]; + for (int i = 0; i < parametersNum; i++) + { + parameterTypes[i] = typeof (String); + parameters[i] = + Regex.Replace(parameters[i].ToString(), "\\B\"|\"\\B", String.Empty).Replace("__CSP__", ","); + } + + method = type.GetMethod( + methodName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + if (method != null) + { + Type returnType = method.ReturnType; + if (returnType != typeof (void)) + { + object result = method.Invoke(data, parameters); + if (result != null) + { + if (returnType.IsPrimitive || returnType == typeof (String)) + { + dc.DefineVariable(varName, (result ?? "").ToString()); + } + else + { + dc.DefineVariable(varName, + new Variable {Key = varName, Value = result, Type = returnType}); + } + } + } + } + + /* + else + { + //throw new MissingMethodException("在对象中找不到"); + + Config.DC.DefineVar(varName, "在对象中找不到方法"+methodName+""+ + (parametersNum==0?"":",参数"+parametersNum.ToString()+"个") + +"。"); + } + */ + + return String.Empty; + }, RegexOptions.Singleline); + return outHtml; + } + + /// + /// 执行方法并将返回值赋予变量 + /// + /// + /// + /// + [Obsolete] + public static string EntityVariable(IDataContrainer dc, string content) + { + //正则模式,支持以下 + // //$menu="123456\" f" sdf + // $menu=12 fsdf + // $menu=item:123456 + // $menu=>getmenu(test,item,get) + const string expressionPattern = "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)=>([a-zA-Z0-9_]+)(\\s+\\B)*"; //设置表达式 + + string outHtml = content, + varName, + entityName; + + + outHtml = Regex.Replace(content, expressionPattern, m => + { + //注释 + if (m.Groups[1].Value != "") return String.Empty; + + //获取变量及表达式 + varName = m.Groups[2].Value; + entityName = m.Groups[3].Value; + + object obj = dc.GetVariable(entityName); + if (obj != null && obj is Variable) + { + Variable var = (Variable) obj; + obj = var.Value; + Type type = var.Type; + + //解析属性的值 + PropertyInfo[] pros = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); + foreach (PropertyInfo pro in pros) + { + outHtml = Regex.Replace(outHtml, + String.Format("\\$\\{0}{1}\\.{1}{2}", "\\{", varName, pro.Name, "\\}"), + m2 => { return (pro.GetValue(obj, null) ?? "").ToString(); }, RegexOptions.IgnoreCase); + } + } + return String.Empty; + }, RegexOptions.Singleline); + return outHtml; + } + + + public static string Complie(IDataContrainer dc, string html, object data) + { + string outHtml; + + //======= 设置变量 ======// + outHtml = SetToVariable(dc, html); + + //======= 求方法 =======// + if (data != null) + { + outHtml = EvalMethodToVar(dc, outHtml, data); + } + + // outHtml = EntityVariable(dc, outHtml); + + return outHtml; + } + + internal static string ResolveEntityProperties(IDataContrainer dc, string templateHtml) + { + const string keyParttern = "\\$\\{([a-zA-Z][a-zA-Z0-9_]*)\\.([A-Z_a-z][a-zA-Z0-9_]*)\\}"; + IDictionary entityKeys = new Dictionary(); + IDictionary entityValues = new Dictionary(); + + string entityName, proName; + Variable var; + PropertyInfo pro; + object varValue; + + templateHtml = Regex.Replace(templateHtml, keyParttern, m => + { + entityName = m.Groups[1].Value; + proName = m.Groups[2].Value; + + if (!entityValues.Keys.Contains(entityName)) + { + varValue = dc.GetVariable(entityName); + entityValues.Add(entityName, varValue != null ? (Variable) varValue : default(Variable)); + } + + var = entityValues[entityName]; + if (var.Value != null) + { + //解析属性的值 + pro = var.Type.GetProperty(entityName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro != null) + { + return (pro.GetValue(var.Value, null) ?? "").ToString(); + } + + string message = ""; + int i = 0; + foreach ( + PropertyInfo p in + var.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | + BindingFlags.IgnoreCase)) + { + message += (++i == 1 ? "" : ",") + p.Name; + } + + throw new NotSupportedException("不支持的属性调用${" + var.Key + "." + proName + "}\n" + var.Key + + "支持可选的属性:" + message + "\n使用\"${" + var.Key + ".属性}\"进行调用!"); + } + return String.Empty; + }); + return templateHtml; + } + + /// + /// 解析变量 + /// + /// + /// + /// + internal static string ResolveVariable(string templateHtml, Variable variable) + { + // + // ${obj.name}; + // 字典方式 ${obj.__dict__[key]} + // 不支持的属性,默认以_开头 + // a-z下划线或中文开头 + // + string keyParttern = "\\$\\{" + variable.Key + + "\\.([A-Z_a-z\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*|__dict__\\[([^\\]]+)\\])\\}"; + string proName, dictKey; + PropertyInfo pro = null; + IDictionary propDict = null; + + templateHtml = Regex.Replace(templateHtml, keyParttern, m => + { + proName = m.Groups[1].Value; + if (variable.Value != null) + { + //解析属性的值 + pro = variable.Type.GetProperty(proName, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.IgnoreCase); + if (pro != null) + { + return (pro.GetValue(variable.Value, null) ?? "").ToString(); + } + + #region 获取字典 + + if (!String.IsNullOrEmpty(m.Groups[2].Value)) + { + //获取属性字典,并缓存 + if (propDict == null) + { + pro = variable.Type.GetProperty("__dict__", + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | + BindingFlags.IgnoreCase); + if (pro != null) + { + if (pro.PropertyType != typeof (IDictionary)) + { + throw new TypeLoadException("__dict__属性的类型应为IDictionary"); + } + else + { + propDict = pro.GetValue(variable.Value, null) as IDictionary; + } + } + else + { + //未定义字典 + throw new TypeLoadException("字典不存在!"); + } + } + + //获取值 + dictKey = m.Groups[2].Value; + if (propDict.ContainsKey(dictKey)) + { + return propDict[dictKey]; + } + else + { + //字典不存在值 + return String.Empty; + } + } + + #endregion + + string message = ""; + TemplateVariableFieldAttribute[] attr; + int i = 0; + foreach ( + PropertyInfo p in + variable.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | + BindingFlags.NonPublic | BindingFlags.IgnoreCase)) + { + if (!p.Name.StartsWith("_")) + { + attr = + (TemplateVariableFieldAttribute[]) + p.GetCustomAttributes(typeof (TemplateVariableFieldAttribute), true); + //message += (++i == 1 ? "" : ",") + p.Name; + message += (++i == 1 ? "\n=================================\n" : "\n") + p.Name + "\t : \t" + + (attr.Length > 0 ? attr[0].Descript : ""); + } + } + + throw new NotSupportedException("不支持的属性调用${" + variable.Key + "." + proName + "}\n\n" + variable.Key + + "支持下列可选属性:" + message + "\n\n注:使用\"${" + variable.Key + + ".属性}\"进行调用,属性不区分大小写。"); + } + return m.Value; + }); + return templateHtml; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/HttpDataContainer.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/HttpDataContainer.cs new file mode 100644 index 0000000..30152f0 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/HttpDataContainer.cs @@ -0,0 +1,124 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2013/09/05 +// + +using System; +using System.Collections.Generic; +using System.Web; + +namespace Ops.Template +{ + /// + /// HTTP数据容器 + /// + internal sealed class HttpDataContrainer : IDataContrainer + { + private IDictionary varDict; + + public HttpDataContrainer() + { + object obj = HttpContext.Current.Items["__tpl_var_define__"]; + if (obj != null) + { + varDict = obj as IDictionary; + } + else + { + varDict = new Dictionary(); + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + } + } + + public string GetTemplatePageCacheContent(string templateID) + { + if (TemplateCache.templateDictionary.ContainsKey(templateID)) + { + return HttpRuntime.Cache["tpl_cache_" + templateID] as string; + } + return null; + } + + public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) + { + HttpRuntime.Cache.Insert("tpl_cache_" + templateID, content, + new System.Web.Caching.CacheDependency(dependFileName), DateTime.Now.AddDays(30), TimeSpan.Zero); + } + + public void DefineVariable(string key, T value) + { + if (value == null) return; //防止非法参数 + + /* + IDictionary varDict; + object obj = HttpContext.Current.Items["__tpl_var_define__"]; + if (obj != null) + { + varDict = obj as IDictionary; + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + } + else + { + varDict = new Dictionary(); + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + }*/ + + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + + //如果不是基元类型,则保存类型 + Type t = typeof (T); + if (t == typeof (String) || t.IsPrimitive) + { + varDict.Add(key, value); + } + else + { + varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); + } + + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + } + + public void DefineVariable(string key, Variable variable) + { + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + variable.Key = key; + varDict.Add(key, variable); + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + } + + public object GetVariable(string key) + { + if (this.varDict.Keys.Contains(key)) + { + return varDict[key]; + } + return null; + } + + public IDictionary GetDefineVariable() + { + /* + object obj = HttpContext.Current.Items["__tpl_var_define__"]; + if (obj != null) + { + return obj as IDictionary; + } + return null; + */ + + return this.varDict; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/IDataContrainer.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/IDataContrainer.cs new file mode 100644 index 0000000..f1460a4 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/IDataContrainer.cs @@ -0,0 +1,59 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2013/09/05 +// + +using System.Collections.Generic; + +namespace Ops.Template +{ + /// + /// IDataContainer接口 + /// + public interface IDataContrainer + { + /// + /// 获取模板页缓存内容 + /// + /// + /// + string GetTemplatePageCacheContent(string templateID); + + /// + /// 设置模板页缓存内容 + /// + /// + /// + /// + void SetTemplatePageCacheContent(string templateID, string content, string dependFileName); + + /// + /// 设置变量 + /// + /// + /// + void DefineVariable(string key, T variable); + + /// + /// 定义变量 + /// + /// + /// + void DefineVariable(string key, Variable variable); + + /// + /// 获取变量 + /// + /// + /// + object GetVariable(string key); + + /// + /// 获取自定义变量 + /// + /// + IDictionary GetDefineVariable(); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/ITemplate.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/ITemplate.cs new file mode 100644 index 0000000..ee634f1 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/ITemplate.cs @@ -0,0 +1,39 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:ITemplate.cs +// Author:newmin +// Create:2011/06/05 +// + +namespace Ops.Template +{ + public interface ITemplate + { + /// + /// 读取模板 + /// + /// + /// + string Read(string templateID); + + /// + /// 压缩模板 + /// + /// + void Compress(string templateID); + + /// + /// 压缩Html + /// + /// + string CompressHtml(string html); + + /// + /// 根据模板路径获取模板的ID + /// 计算规则:小写文件名的16位md5 + /// + /// + /// + string GetTemplateID(string filePath); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/ITemplateVariableObject.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/ITemplateVariableObject.cs new file mode 100644 index 0000000..1f123b7 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/ITemplateVariableObject.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +namespace Ops.Template +{ + /// + /// 模板变量对象 + /// + public interface ITemplateVariableObject + { + /// + /// 数据字典 + /// + IDictionary __dict__ { get; } + + /// + /// 添加数据 + /// + /// + /// + void AddData(string key, string data); + + /// + /// 删除数据 + /// + /// + void RemoveData(string key); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/MD5.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/MD5.cs new file mode 100644 index 0000000..52e8254 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/MD5.cs @@ -0,0 +1,39 @@ +using System; +using System.Text; + +namespace Ops.Template +{ + internal class MD5 + { + /// + /// 用md5加密 + /// + /// + /// + public static string Encode(String str) + { + StringBuilder sb = new StringBuilder(); + var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 + // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  + byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); + foreach (byte b in s) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString(); + } + + /// + /// 16位MD5加密 + /// + /// + /// + public static string EncodeTo16(String str) + { + //取32位的中间部分 + var md5 = System.Security.Cryptography.MD5.Create(); + return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8) + .Replace("-", String.Empty); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/NormalDataContrainer.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/NormalDataContrainer.cs new file mode 100644 index 0000000..889fcb6 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/NormalDataContrainer.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; + +namespace Ops.Template +{ + internal class NormalDataContrainer : IDataContrainer + { + private IDictionary varDict; + + public string GetTemplatePageCacheContent(string templateID) + { + throw new Exception(); + } + + public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) + { + } + + public void DefineVariable(string key, T value) + { + if (value == null) return; //防止非法参数 + + + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + + //如果不是基元类型,则保存类型 + Type t = typeof (T); + if (t == typeof (String) || t.IsPrimitive) + { + varDict.Add(key, value); + } + else + { + varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); + } + } + + public void DefineVariable(string key, Variable variable) + { + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + variable.Key = key; + varDict.Add(key, variable); + } + + public object GetVariable(string key) + { + if (this.varDict.Keys.Contains(key)) + { + return varDict[key]; + } + return null; + } + + public IDictionary GetDefineVariable() + { + if (varDict == null) + { + varDict = new Dictionary(); + } + return varDict; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/SimpleTplEngine.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/SimpleTplEngine.cs new file mode 100644 index 0000000..e079d91 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/SimpleTplEngine.cs @@ -0,0 +1,255 @@ +/* +* Copyright(C) 2010-2012 OPSoft Inc +* +* File Name : SimpleTemplateEngine +* Author : Administrator +* Create : 2012/10/26 23:49:52 +* Description : +* Mofify: +* 2013-04-11 10:29 newmin [+]: 添加TemplateAttribute特性判断是否为返回数据, 返回数据的方法不再限制为私有 +* 2013-04-23 22:45 newmin [+]: 支持私有,公共,受保护的成员调用 +* 2013-04-23 22:46 newmin [+]: 支持int参数,如$tpl(3,'c,a,r') +* 2013-04-26 17:15 newmin [+]: 支持method +*/ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text.RegularExpressions; + +namespace Ops.Template +{ + /// + /// 简单模板解析类 + /// + public sealed class SimpleTplEngine + { + /// + /// 包含方法的类型实例 + /// + private object classInstance; + + public SimpleTplEngine(object classInstance, bool counter) + { + this.classInstance = classInstance; + if (counter) + { + this.Count = new List(); + } + } + + /// + /// 计数 + /// + public IList Count; + + + /// + /// 数据列正则 + /// + private static Regex fieldRegex = new Regex("{([a-z0-9_\\]\\[\u4e00-\u9fa5]+)}"); + + /// + /// 编译模版方法 + /// + /// + private void ComplieTemplateMethod(ref string html) + { + //返回结果 + const string methodPattern = "\\@([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)\\s*([\\S\\s]+)@each\\s*off"; + //@each(id){ $nav() } + const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; + + Regex methodRegex = new Regex(methodPattern); //方法正则 + + //如果不包括方法,则直接返回 + if (!methodRegex.IsMatch(html)) + { + return; + } + + + Regex paramRegex = new Regex(paramPattern); //参数正则 + + Type type = this.classInstance.GetType(); + MethodInfo method; + string tagName; + string tagFormat; + object[] parameters; + Type[] parameterTypes; //参数类型数组 + MatchCollection paramMcs; + + + html = methodRegex.Replace(html, m => + { + tagName = m.Groups[1].Value; + tagFormat = m.Groups[3].Value; + + //获得参数 + paramMcs = paramRegex.Matches(m.Groups[2].Value); + + //参数,多添加一个tagFormat参数 + parameters = new object[paramMcs.Count + 1]; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parameters.Length]; + for (int i = 0; i < parameterTypes.Length; i++) + { + parameterTypes[i] = typeof (String); + } + + method = type.GetMethod( + tagName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + + //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 + if (method == null || method.GetCustomAttributes(typeof (TemplateMethodAttribute), true) == null) + { + return m.Value; + } + else + { + //数字参数 + string intParamValue; + //则给参数数组赋值 + for (int i = 0; i < paramMcs.Count; i++) + { + intParamValue = paramMcs[i].Groups[2].Value; + if (intParamValue != String.Empty) + { + parameters[i] = intParamValue; + } + else + { + parameters[i] = paramMcs[i].Groups[1].Value; + } + } + + parameters[parameters.Length - 1] = tagFormat; + + if (this.Count != null) + this.Count.Add(String.Format("Method:{0},{1:mmssfff}", method.Name, DateTime.Now)); + + //执行方法并返回结果 + return method.Invoke(this.classInstance, parameters).ToString(); + } + }); + } + + /// + /// 执行解析模板内容 + /// + /// + /// + public void ComplieTemplateTag(ref string html) + { + //返回结果 + + const string tagPattern = "\\$([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; + const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; + + Regex tagRegex, + paramRegex; + + tagRegex = new Regex(tagPattern); //方法正则 + + if (!tagRegex.IsMatch(html)) + { + return; + } + + paramRegex = new Regex(paramPattern); //参数正则 + + Type type = this.classInstance.GetType(); + MethodInfo method; + string tagName; + object[] parameters; + Type[] parameterTypes; //参数类型数组 + MatchCollection paramMcs; + + html = tagRegex.Replace(html, m => + { + tagName = m.Groups[1].Value; + + //获得参数 + paramMcs = paramRegex.Matches(m.Groups[2].Value); + + //参数 + parameters = new object[paramMcs.Count]; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parameters.Length]; + for (int i = 0; i < parameterTypes.Length; i++) + { + parameterTypes[i] = typeof (String); + } + + method = type.GetMethod( + tagName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + + //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 + if (method == null || method.GetCustomAttributes(typeof (TemplateTagAttribute), true) == null) + { + return m.Value; + } + else + { + //数字参数 + string intParamValue; + //则给参数数组赋值 + for (int i = 0; i < paramMcs.Count; i++) + { + intParamValue = paramMcs[i].Groups[2].Value; + if (intParamValue != String.Empty) + { + parameters[i] = intParamValue; + } + else + { + parameters[i] = paramMcs[i].Groups[1].Value; + } + } + + if (this.Count != null) + this.Count.Add(String.Format("Tag:{0},{1:mmssfff}", method.Name, DateTime.Now)); + + //执行方法并返回结果 + return method.Invoke(this.classInstance, parameters).ToString(); + } + }); + } + + /// + /// 执行解析模板内容 + /// + /// + /// + public string Execute(string html) + { + string resultHtml = html; + this.ComplieTemplateMethod(ref resultHtml); + this.ComplieTemplateTag(ref resultHtml); + return resultHtml; + } + + /// + /// 替换列中的模板字符 + /// + /// + /// + /// + public static string FieldTemplate(string format, Func func) + { + return fieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/Template.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/Template.cs new file mode 100644 index 0000000..226dda5 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/Template.cs @@ -0,0 +1,106 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:Template.cs +// Author:newmin +// Create:2011/06/13 +// + +using System; +using System.IO; +using System.Text.RegularExpressions; + +namespace Ops.Template +{ + /// + /// 模板实体 + /// + public sealed class Template + { + /// + /// 模板ID + /// + public string ID { get; set; } + + /// + /// 模板路径 + /// + public string FilePath { get; set; } + + /// + /// 模板注释(第一个html注释) + /// + public string Comment + { + get + { + //读取文件开头部分注释 + Regex reg = new Regex("", RegexOptions.Multiline); + + //保存内容到变量,避免重复读取 + string content = null; + + using (StreamReader sr = new StreamReader(FilePath)) + { + content = sr.ReadToEnd(); + } + Match match = reg.Match(content); + + + return match == null ? String.Empty : match.Groups[1].Value; + } + } + + + /// + /// 模板内容 + /// + public string Content + { + get + { + string content; + IDataContrainer dc = new HttpDataContrainer(); + + //从缓存中读取模板内容 + if (Config.EnabledCache) + { + content = dc.GetTemplatePageCacheContent(this.ID); + if (content != null) return content; + } + + if (String.IsNullOrEmpty(this.FilePath)) throw new ArgumentNullException("模板文件不存在!" + this.FilePath); + + //读取内容并缓存 + StreamReader sr = new StreamReader(this.FilePath); + content = sr.ReadToEnd(); + sr.Dispose(); + + + string partialFilePath = ""; + //读取模板里的部分视图 + content = TemplateRegexUtility.partialRegex.Replace(content, m => + { + string _path = m.Groups[1].Value; + string tplID = TemplateUtility.GetPartialTemplateID(_path, this.FilePath, out partialFilePath); + return Regex.Replace(m.Value, _path, tplID); + }); + + + //替换系统标签 + content = TemplateRegexUtility.Replace(content, m => { return TemplateCache.Tags[m.Groups[1].Value]; }); + + + //压缩模板代码 + if (false || Config.EnabledCompress) + { + content = TemplateUtility.CompressHtml(content); + } + + //缓存模板 + if (Config.EnabledCache) dc.SetTemplatePageCacheContent(this.ID, content, this.FilePath); + + return content; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateAttribute.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateAttribute.cs new file mode 100644 index 0000000..4f84163 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateAttribute.cs @@ -0,0 +1,32 @@ +using System; + +namespace Ops.Template +{ + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] + public class TemplateTagAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] + public class TemplateMethodAttribute : Attribute + { + } + + /// + /// 变量字段属性 + /// + [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)] + public class TemplateVariableFieldAttribute : Attribute + { + public TemplateVariableFieldAttribute() + { + } + + public TemplateVariableFieldAttribute(string descript) + { + this.Descript = descript; + } + + public string Descript { get; set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateCache.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateCache.cs new file mode 100644 index 0000000..88c89e3 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateCache.cs @@ -0,0 +1,105 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplateCache.cs +// Author:newmin +// Create:2011/06/05 +// + +using System; +using System.Collections.Generic; + +namespace Ops.Template +{ + /// + /// 模板缓存 + /// + public static class TemplateCache + { + /// + /// 模板编号列表 + /// + internal static IDictionary templateDictionary = new Dictionary(); + + /// + /// 标签词典 + /// + public static readonly TagCollection Tags = new TagCollection(); + + + /// + /// 标签 + /// + public class TagCollection + { + private static IDictionary tagDictionary = new Dictionary(); + + public string this[string key] + { + get + { + if (!tagDictionary.ContainsKey(key)) return "${" + key + "}"; + return tagDictionary[key]; + } + set + { + if (tagDictionary.ContainsKey(key)) tagDictionary[key] = value; + else tagDictionary.Add(key, value); + } + } + + public void Add(string key, string value) + { + if (tagDictionary.ContainsKey(key)) + throw new ArgumentException("键:" + key + "已经存在!"); + else tagDictionary.Add(key, value); + } + } + + /// + /// 注册模板 + /// + /// + /// + internal static void RegisterTemplate(string templateID, string filePath) + { + templateID = templateID.ToLower(); + if (!templateDictionary.ContainsKey(templateID)) + { + templateDictionary.Add(templateID, new Template + { + ID = templateID, + FilePath = filePath + }); + } + } + + /// + /// 如果模板字典包含改模板则获取缓存 + /// + /// + /// + internal static string GetTemplateContent(string templateID) + { + string _templateID = templateID.ToLower(); + + if (templateDictionary.ContainsKey(_templateID)) + { + return templateDictionary[_templateID].Content; + } + //throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在,ID:", templateID)); + throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在。", templateID)); + } + + /// + /// 清除所有模板缓存 + /// + //internal static void Clear() + //{ + // templateDictionary = null; + // foreach (System.Collections.DictionaryEntry k in HttpRuntime.Cache) + // { + // if (k.Key.ToString().StartsWith("tpl_")) HttpRuntime.Cache.Remove(k.Key.ToString()); + // } + //} + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateNames.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateNames.cs new file mode 100644 index 0000000..5b5d58f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateNames.cs @@ -0,0 +1,22 @@ +// +// File : TemplateNames.cs +// Name : 模板命名 +// Author : newmin +// Date : 2012-03-04 +// + +namespace Ops.Template +{ + public enum TemplateNames + { + /// + /// 以16位md5标识的ID + /// + ID, + + /// + /// 以文件名为标识 + /// + FileName + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplatePage.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplatePage.cs new file mode 100644 index 0000000..ba63668 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplatePage.cs @@ -0,0 +1,284 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplatePage.cs +// Author:newmin +// Create:2011/06/06 +// + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; +using System.Web; +using System.Threading; + +namespace Ops.Template +{ + /// + /// 模板页 + /// + public class TemplatePage + { + /// + /// 模板初始化,替换数据之前发生的事件 + /// + public event TemplateHandler OnPreInit; + + /// + /// 模板呈现之前发生的事件 + /// + public event TemplateHandler OnPreRender; + + + private string templateID; + private IDataContrainer dc; + + /// + /// 模板数据 + /// + private IDictionary data = new Dictionary(); + + private string templateHtml; + + public TemplatePage() + { + if (HttpContext.Current != null) + { + dc = new HttpDataContrainer(); + } + else + { + dc = new NormalDataContrainer(); + } + } + + public TemplatePage(string templateId) + : this() + { + this.templateID = templateId; + } + + public TemplatePage(string templateId, object templateData) + : this(templateId) + { + this.AddDataObject(templateData); + } + + /// + /// 模板编号 + /// + public string TemplateID + { + get { return templateID; } + set { templateID = value; } + } + + /// + /// 模板内容 + /// + public string TemplateContent + { + get { return templateHtml; } + set + { + if (!String.IsNullOrEmpty(templateID)) + throw new ArgumentException("已经指定模板ID,将自动读取模板内容,无法在过程中设置模板的内容!", "TemplateContent"); + templateHtml = value; + } + } + + /// + /// 模板处理对象,用于在OnPreInit和OnInit事件中处理的数据对象 + /// + public object TemplateHandleObject { get; set; } + + /// + /// 添加变量 + /// + /// + /// + public TemplatePage AddVariable(string key, T value) + { + dc.DefineVariable(key, value); + return this; + } + + /// + /// 添加匿名对象实例 + /// + /// + public void AddDataObject(object templateData) + { + //替换传入的标签参数 + PropertyInfo[] properties = templateData.GetType().GetProperties(); + object dataValue; + foreach (PropertyInfo p in properties) + { + dataValue = p.GetValue(templateData, null); + if (dataValue != null) + { + data.Add(p.Name, dataValue); + } + } + } + + + internal void PreRender(object obj, ref string content) + { + if (this.OnPreRender != null) + { + this.OnPreRender(obj, ref content); + } + } + + internal void PreInit(object obj, ref string content) + { + if (this.OnPreInit != null && obj != null) + { + this.OnPreInit(obj, ref content); + } + } + + + public override string ToString() + { + DateTime dt = DateTime.Now; + + //指定了模板ID + if (!String.IsNullOrEmpty(templateID)) + { + //读取内容 + templateHtml = TemplateUtility.Read(templateID); + + //替换部分视图 + templateHtml = TemplateRegexUtility.ReplacePartial(templateHtml); + } + + //HttpContext.Current.Response.Write("
                                                                                                                                            1." + (DateTime.Now - dt).Milliseconds.ToString()); + //初始化之前发生 + this.PreInit(this.TemplateHandleObject, ref templateHtml); + + //如果参数不为空,则替换标签并返回内容 + if (this.data.Count != 0) + { + foreach (string key in this.data.Keys) + { + templateHtml = TemplateRegexUtility.ReplaceHtml(templateHtml, key, this.data[key].ToString()); + } + } + + // HttpContext.Current.Response.Write("
                                                                                                                                            2." + (DateTime.Now - dt).Milliseconds.ToString()); + //执行模板语法 + templateHtml = Eval.Complie(dc, templateHtml, this.TemplateHandleObject); + + + //替换自定义变量 + IDictionary defineVars = dc.GetDefineVariable(); + + if (defineVars != null && defineVars.Count != 0) + { + foreach (string key in defineVars.Keys) + { + if (defineVars[key] is Variable) + { + templateHtml = Eval.ResolveVariable(templateHtml, (Variable) defineVars[key]); + } + else + { + templateHtml = TemplateRegexUtility.ReplaceHtml(templateHtml, key, + (defineVars[key] ?? "").ToString()); + } + } + } + + // HttpContext.Current.Response.Write("
                                                                                                                                            3." + (DateTime.Now - dt).Milliseconds.ToString()); + + //解析实体的值 + //templateHtml = Eval.ExplanEntityProperties(dc,templateHtml); + + //呈现之前处理 + this.PreRender(this.TemplateHandleObject, ref templateHtml); + + // HttpContext.Current.Response.Write("
                                                                                                                                            4."+(DateTime.Now - dt).Milliseconds.ToString()); + + return templateHtml; + } + + /// + /// 压缩后的字符 + /// + /// + public string ToCompressedString() + { + return TemplateUtility.CompressHtml(ToString()); + } + + /// + /// 输出Html,并终止响应 + /// + public void Render() + { + HttpContext.Current.Response.Write(this.ToString()); + try + { + HttpContext.Current.Response.End(); + } + catch (ThreadAbortException exc) + { + + } + } + + /// + /// 使用指定编码保存成为本地文件 + /// + /// 包含路径的文件名称,如:/html/default.html + /// + /// + /// + public void SaveToFile(string fileName, Encoding coder, bool compressed, out string html) + { + string filePath = AppDomain.CurrentDomain.BaseDirectory + fileName; + + //FileShare.None 独占方式打开 + + FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None); + + //byte[] bytes = coder.GetBytes(this.ToString()); + //fs.Write(bytes, 0, bytes.Length); + + StreamWriter sr = new StreamWriter(fs, coder); + + html = compressed + ? this.ToCompressedString() + : this.ToString(); + + sr.Write(html); + + sr.Flush(); + fs.Flush(); + sr.Dispose(); + fs.Dispose(); + } + + /// + /// 保存成为本地文件(Unicode) + /// + /// 包含路径的文件名称,如:/html/default.html + public void SaveToFile(string fileName) + { + string html; + SaveToFile(fileName, Encoding.UTF8, false, out html); + } + + /// + /// 保存成为本地文件(Unicode) + /// + /// 包含路径的文件名称,如:/html/default.html + public void SaveToFile(string fileName, out string html) + { + SaveToFile(fileName, Encoding.UTF8, false, out html); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateRegexUtility.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateRegexUtility.cs new file mode 100644 index 0000000..9925f1f --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateRegexUtility.cs @@ -0,0 +1,85 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:RegexUtility.cs +// Author:newmin +// Create:2011/06/05 +// + +using System.Text.RegularExpressions; + +namespace Ops.Template +{ + public sealed class TemplateRegexUtility + { + private static readonly Regex tagRegex = new Regex("\\${([a-zA-Z\u4e00-\u9fa5\\._]+)}"); + + //部分页匹配模式 + internal static Regex partialRegex = new Regex("\\${partial:\"(.+?)\"}"); + + public static string Replace(string templateID, string tagKey, string tagValue) + { + return null; + } + + /// + /// 替换模板数据 + /// + /// + /// + /// + internal static string ReplaceTemplate(string templateID, MatchEvaluator eval) + { + string html = TemplateUtility.Read(templateID); + + return TemplateRegexUtility.Replace(html, eval); + } + + /// + /// 替换标签 + /// + /// + /// + /// + public static string Replace(string html, MatchEvaluator eval) + { + //如果包含部分视图,则替换成部分视图的内容 + //ReplacePartial(html); + + //替换匹配 + return tagRegex.Replace(html, eval); + } + + internal static string ReplaceHtml(string html, string tagKey, string tagValue) + { + return Regex.Replace(html, "\\${" + tagKey + "}", tagValue, RegexOptions.IgnoreCase); + } + + + /// + /// 替换模板的部分视图 + /// + /// + /// + internal static string ReplacePartial(string html) + { + //匹配的部分视图编号 + string matchValue; + + //如果包含部分视图,则替换成部分视图的内容 + if (partialRegex.IsMatch(html)) + { + //替换模板里的部分视图,并将内容添加到模板内容中 + html = Regex.Replace(html, "\\${partial:\"(.+?)\"}", match => + { + matchValue = match.Groups[1].Value; + return Regex.IsMatch(matchValue, "^[a-z0-9]+$", RegexOptions.IgnoreCase) + ? TemplateUtility.Read(match.Groups[1].Value) + : match.Value; + }); + } + + //返回替换部分视图后的内容 + return html; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateRegister.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateRegister.cs new file mode 100644 index 0000000..f6c1f31 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateRegister.cs @@ -0,0 +1,80 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplateRegister.cs +// Author:newmin +// Create:2011/06/28 +// + +using System; +using System.IO; +using System.Text.RegularExpressions; + +namespace Ops.Template +{ + /// + /// 模板注册 + /// + public class TemplateRegister + { + private DirectoryInfo directory; + private TemplateNames nametype; + + /// + /// 注册模板时发生 + /// + public event TemplateBehavior OnRegister; + + public TemplateRegister(string directoryPath, TemplateNames nametype) + { + this.nametype = nametype; + this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); + if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); + } + + public TemplateRegister(string directoryPath) + { + this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); + if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); + } + + public TemplateRegister(DirectoryInfo templateDirectory, TemplateNames nametype) + { + this.nametype = nametype; + this.directory = templateDirectory; + if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); + } + + /// + /// 注册模板 + /// + public void Register() + { + //注册模板 + RegisterTemplates(directory, this.nametype); + + //触发注册模板事件 + if (OnRegister != null) OnRegister(); + } + + //递归方式注册模板 + private static void RegisterTemplates(DirectoryInfo dir, TemplateNames nametype) + { + Regex allowExt = new Regex("(.html|.phtml)$", RegexOptions.IgnoreCase); + foreach (FileInfo file in dir.GetFiles()) + { + if (allowExt.IsMatch(file.Extension)) + { + TemplateCache.RegisterTemplate(TemplateUtility.GetTemplateID(file.FullName, nametype), file.FullName); + } + } + foreach (DirectoryInfo _dir in dir.GetDirectories()) + { + //如果文件夹是可见的 + if ((_dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) + { + RegisterTemplates(_dir, nametype); + } + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateUtility.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateUtility.cs new file mode 100644 index 0000000..5f7b696 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/TemplateUtility.cs @@ -0,0 +1,251 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2011/06/05 +// + +using System; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; + +namespace Ops.Template +{ + public sealed class TemplateUtility + { + internal static string Read(string templateID) + { + //从缓存中获取模板内容 + return TemplateCache.GetTemplateContent(templateID); + } + + /// + /// 使用模板引擎自带的压缩程序压缩代码 + /// + /// + /// + public static string CompressHtml(string html) + { + //html = Regex.Replace(html, ">(\\s)+<", "><"); + ////html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); + //html = Regex.Replace(html, "|\r|\n|\t|(\\s\\s)", String.Empty); + //return html; + + html = Regex.Replace(html, ">(\\s)+<", "><"); + + //替换 //单行注释 + html = Regex.Replace(html, "[\\s|\\t]+\\/\\/[^\\n]*(?=\\n)", String.Empty); + + //替换多行注释 + //const string multCommentPattern = ""; + html = Regex.Replace(html, "/\\*[^\\*]+\\*/", String.Empty); + + //替换 + html = Regex.Replace(html, "", String.Empty); + + //html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); + html = Regex.Replace(html, "\r|\n|\t|(\\s\\s)", String.Empty); + + return html; + } + + internal static string GetTemplateID(string filePath, TemplateNames nametype) + { + Match match = Regex.Match(filePath, "templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase); + if (String.IsNullOrEmpty(match.Value)) throw new Exception("模版页文件名:" + filePath + "不合法"); + + string fileName = match.Groups[2].Value; + if (!fileName.ToLower().EndsWith(".phtml") && nametype == TemplateNames.FileName) + { + string id = String.Format("{0}{1}", + match.Groups[1].Value, + match.Groups[2].Value) + .Replace('\\', '/'); + + return id.Substring(0, id.LastIndexOf('.')); + } + else + { + return MD5.EncodeTo16(Regex.Replace(fileName, "/|\\\\", String.Empty).ToLower()); + } + } + + /// + /// 获取部分模板的编号 + /// + /// + /// + /// + internal static string GetPartialTemplateID(string _path, string tmpPath, out string partialFilePath) + { + string _filepath = tmpPath; + string _filename = _path; + + // + // inc/header.html + // + + if (!_path.StartsWith("/")) + { + DirectoryInfo p_wrap = null, + p_par = null, + p_curr = new FileInfo(_filepath).Directory; + + + //exsample path: ../../inc/top.phtml + if (Regex.IsMatch(_path, "^\\.\\./")) + { + Regex pathRegex = new Regex("\\.\\./"); + int dirlayer = pathRegex.Matches(_path).Count; + _filename = pathRegex.Replace(_filename, String.Empty); + + int i = 0; + do + { + if (p_par != null) + { + p_wrap = p_par; + p_par = p_par.Parent; + } + else + { + p_par = p_curr.Parent; + } + + if (p_wrap != null) + { + p_curr = p_wrap; + } + } while (++i <= dirlayer); + + _filename = String.Format("{0}/{1}", p_curr.Name, _filename); + } + else + { + // + //exsample path: inc/top.phtml + // + + do + { + if (p_par != null) + { + p_wrap = p_par; + p_par = p_par.Parent; + } + else + { + p_par = p_curr.Parent; + } + + if (p_wrap != null) + { + p_curr = p_wrap; + } + + _filename = String.Format("{0}/{1}", p_curr.Name, _filename); + } while (String.Compare(p_par.Name, "templates", true) != 0); + } + } + + // + //TODO:测试 + // + partialFilePath = _filename; + + return MD5.EncodeTo16(Regex.Replace(_filename, "/|\\\\", String.Empty).ToLower()); + } + + /// + /// 显示模板信息到页面 + /// + public static void PrintTemplatesInfo() + { + string templateContent = Embed.SysTemplatePage; + StringBuilder sb = new StringBuilder(); + + sb.Append(@" + + + + + + "); + + Template tpl; + string tplFileName, tplContent; //模板文件名,内容 + int i = 0; + + foreach (string key in TemplateCache.templateDictionary.Keys) + { + tpl = TemplateCache.templateDictionary[key]; + tplFileName = + new Regex("templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase).Match(tpl.FilePath).Groups[2].Value + .Replace("\\", "/"); + tplContent = tpl.Content; + + sb.Append("
                                                                                                                                            模板编号模板类型文件名模板注释文件路径
                                                                                                                                            ").Append((++i).ToString()).Append("") + .Append(key.ToLower()).Append("") + .Append( + + //RegexUtility.partialRegex.IsMatch(tplContent) && tplContent.IndexOf("") != -1 + !tpl.FilePath.EndsWith(".phtml") + ? "<span style=\"color:#333\">模板页面</span>" + : "<span style=\"color:#006699\">部分视图</span>") + .Append("</td><td>/").Append(tplFileName).Append("</td><td>").Append(tpl.Comment) + .Append("</td><td>").Append(tpl.FilePath).Append("</td></tr>"); + } + + sb.Append(@"<tr><td colspan=""6"" align=""center"" style=""background:#f0f0f0;color:#333""> + 部分视图扩展名为“.phtml”,可允许格式如: +   A:${partial:""inc/header.phtml""} +   B:${partial:""/tmpdir/inc/header.phtml""} +   C:${partial:""../../inc/header.phtml""} + </td></tr>"); + + sb.Append( + "</table><script type=\"text/javascript\">dynamicTable(document.getElementsByTagName('table')[0]);</script>"); + + templateContent = TemplateRegexUtility.Replace(templateContent, match => + { + switch (match.Groups[1].Value) + { + case "title": + return "模板信息"; + case "content": + return sb.ToString(); + case "year": + return DateTime.Now.Year.ToString(); + } + return String.Empty; + }); + + System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; + response.Write(TemplateUtility.CompressHtml(templateContent)); + response.End(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/Variable.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/Variable.cs new file mode 100644 index 0000000..3af86d3 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/Variable.cs @@ -0,0 +1,21 @@ +// +// Copyright 2011 @ OPS Inc,All right reseved. +// Name:Variable.cs +// Author:newmin +// Create:2013/09/10 +// + +using System; + +namespace Ops.Template +{ + /// <summary> + /// 变量 + /// </summary> + public struct Variable + { + public string Key { get; set; } + public object Value { get; set; } + public Type Type { get; set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/temp/EventLog.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/temp/EventLog.cs new file mode 100644 index 0000000..9dffce6 --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/temp/EventLog.cs @@ -0,0 +1,50 @@ +// +// Copyright (C) 2011 OPS Inc,All right reseved. +// Name:EventLog.cs +// Author:newmin +// Create:2011/06/13 +// + +using System; +using System.Text; + +namespace Ops.Template.temp +{ + /// <summary> + /// 事件日志 + /// </summary> + [Obsolete] + internal sealed class EventLog + { + private static StringBuilder _csb = new StringBuilder(); + + + internal EventLog() + { + } + + public string Content + { + get { return _csb.ToString(); } + } + + /// <summary> + /// 附加日志 + /// </summary> + /// <param name="logText"></param> + public void Append(string logText) + { + _csb.Append(logText); + } + + public void Clear() + { + _csb.Remove(0, _csb.Length); + } + + public override string ToString() + { + return _csb.ToString(); + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/temp/~Example.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/temp/~Example.cs similarity index 100% rename from J6/src/core/J6.DevFw.Template/old/temp/~Example.cs rename to src/OPS.Library/Source Code/OPSoft.Template/old/temp/~Example.cs diff --git a/src/OPS.Library/Source Code/OPSoft.Template/old/test.cs b/src/OPS.Library/Source Code/OPSoft.Template/old/test.cs new file mode 100644 index 0000000..4ba26cf --- /dev/null +++ b/src/OPS.Library/Source Code/OPSoft.Template/old/test.cs @@ -0,0 +1,15 @@ +namespace Ops.Template +{ + internal class test + { + private void Main() + { + TemplatePage tp = new TemplatePage(); + tp.TemplateContent = "$m=item KEY:${item.key} Note:${item.note}<br />${m.key}"; + tp.AddVariable("item", new {Key = "Key", Note = "Note"}); + var x = System.Web.HttpContext.Current.Items; + string y = tp.ToString(); + // return y; + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Template/old/test.html b/src/OPS.Library/Source Code/OPSoft.Template/old/test.html similarity index 100% rename from J6/src/core/J6.DevFw.Template/old/test.html rename to src/OPS.Library/Source Code/OPSoft.Template/old/test.html diff --git a/J6/src/core/J6.DevFw.Template/template.snk b/src/OPS.Library/Source Code/OPSoft.Template/template.snk similarity index 100% rename from J6/src/core/J6.DevFw.Template/template.snk rename to src/OPS.Library/Source Code/OPSoft.Template/template.snk diff --git a/src/OPS.Library/Source Code/Tester/Payment.cs b/src/OPS.Library/Source Code/Tester/Payment.cs new file mode 100644 index 0000000..4bbd611 --- /dev/null +++ b/src/OPS.Library/Source Code/Tester/Payment.cs @@ -0,0 +1,75 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2013/12/12 + * Time: 21:23 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using Ops.Plugin.NetPay; +using Ops; +using System.Collections; + +namespace Test +{ + /// <summary> + /// Description of Paymetn. + /// </summary> + public class Payment:PaymentHandler<string> + { + private static string apiUser,apiSecret,apiAccount; + + static Payment() + { + apiAccount="clientinfo@roadchina.com.cn"; + apiUser="2088201937033268"; + apiSecret="htdf7tjk1c5cdu6qi7rigeqpbanisrbt"; + } + + public string GetPaymentSubmit(bool isMobile,string orderNo) + { + + return base.SubmitRequest(PayMethods.Alipay, + isMobile?PayApiType.Mobile:PayApiType.Direct, + apiUser, + apiSecret, + apiAccount, + BankSign.Default, + orderNo, + 30, + 0f, + String.Format("订单{0}",orderNo), + "", + "春运保障产品", + "", + "", + "", + "", + "", + "http://127.0.0.1/return", + "http://127.0.0.1/notify" + ); + } + + public string GetReturn() + { + return ""; + } + + public string GetNotify() + { + return ""; + } + + public override void OnOrderPaidFail(string t) + { + } + + public override void OnOrderPaidSuccess(string order) + { + + } + + } +} diff --git a/src/OPS.Library/Source Code/Tester/Program.cs b/src/OPS.Library/Source Code/Tester/Program.cs new file mode 100644 index 0000000..889ddaf --- /dev/null +++ b/src/OPS.Library/Source Code/Tester/Program.cs @@ -0,0 +1,188 @@ +using Ops.Framework; +using Ops.Framework.Extensions; +using Ops.Template; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; +using Ops.Template; +using Ops.Utils; + + +namespace Tester +{ + class Program + { + static void Main(string[] args) + { + //Payment_Test(); + // SettingFile_Test(); + // OPSoft_Json_JsonAnalyzer_Test(); + + // TestTemplate2(); + + TestUrlParams(); + Console.ReadLine(); + } + + private static void TestUrlParams() + { + string paramMappings = "caseNo:案件编号; partnerCode:供应商代码;contractNo:合同号;createTime:案件发生时间; importTime:导入时间;state:状态"; + Hashtable hash = new Hashtable(); + Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); + MatchCollection mcs = regex.Matches(paramMappings); + foreach (Match m in mcs) + { + hash.Add(m.Groups[1].Value, m.Groups[2].Value); + Console.WriteLine("{0}>{1}", m.Groups[1].Value, m.Groups[2].Value); + } + } + + private static void TestTemplate2() + { + TemplatePage page = new TemplatePage(); + page.TemplateContent = "$ada('fsdf')=========$ad('x')"; + Console.WriteLine(page.ToString()); + } + + private static void SettingFile_Test() + { + SettingFile file = new SettingFile(AppDomain.CurrentDomain.BaseDirectory + "json.xml"); + + + // file.Append("banner", "{uri:'#',img:'/images/banner1.jpg'}"); + + //Console.WriteLine(file["banner"]); + //[CDATA[{uri:'#',img:'/images/banner1.jpg'} + //file["banner"] = "fadfa"; + + + + Console.WriteLine(file["db_type"]); + if (file.Contains("db_type")) + { + file["db_type"] = "mssql" + "".RandomLetters(5); + } + + Console.WriteLine(file["db_conn"]); + Console.WriteLine(file["db_type"]); + + string key; + for (int i = 0; i < 100; i++) + { + key = "".RandomLetters(2) + "_" + String.Empty.RandomLetters(5); + if (!file.Contains(key)) + { + file.Add(key,String.Empty.RandomLetters(5)); + System.Threading.Thread.Sleep(500); + } + } + + foreach (KeyValuePair<string, string> k in file.SearchKey("")) + { + Console.WriteLine(k.Key + "->" + k.Value); + } + + file.Flush(); + } + + private static void Payment_Test() + { + Ops.Framework.LogFile file=new Ops.Framework.LogFile(AppDomain.CurrentDomain.BaseDirectory+"1.txt"); + + + string result=new Test.Payment().GetPaymentSubmit(!false,"20133131313"); + file.Truncate(); + file.Println(result); + Console.WriteLine(result); + + } + + /// <summary> + /// JSON分析器测试 + /// </summary> + private static void OPSoft_Json_JsonAnalyzer_Test() + { + JsonAnalyzer json = new JsonAnalyzer("{id:123,uri:'#',alt:'我的家在中国,你的呢?',img:'/images/banner1.jpg'}"); + + Console.WriteLine(json.GetValue("img")); + Console.WriteLine(json.GetValue("id")); + Console.WriteLine("alt=" + json.GetValue("alt")); + + + Console.WriteLine(json.SetValue("uri", "http://www.ops.cc")); + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + IDictionary<string, string> dict = JsonAnalyzer.ConvertToDictionary("{id:123,uri:'#',alt:'我的家在中国,你的呢?',img:'/images/banner1.jpg'}"); + foreach (KeyValuePair<string, string> k in dict) + { + Console.WriteLine(k.Key + "->" + k.Value); + } + + + } + + + + internal class TPLObject + { + [TemplateTag] + protected string Tpl() + { + return "tpl"; + } + + [TemplateTag] + public string Tpl(string str) + { + return str; + } + [TemplateTag] + private string Tpl(string num, string str) + { + return String.Format("{0}*{1}", num, str); + } + + [TemplateMethod] + private string EachTpl(string str,string num,string url,string format) + { + StringBuilder sb = new StringBuilder(); + string[] strArr = str.Split(','); + foreach (string _str in strArr) + { + sb.Append(SimpleTplEngine.FieldTemplate(format, a => + { + if (a == num) return _str; + if (a == url) return "http://" + _str + ".com"; + return "{" + a + "}"; + })); + } + return sb.ToString(); + } + } + + private static void TestTemplate() + { + const string templateStr = "$tpl(),$tpl('str'),$tpl(3),$tpl(3,'car')"; + const string templateStr2 = @"@eachtpl('1,2,3',num,url){ + {num}({url}) -> + $tpl(3,'{str}') + }@endeach"; + + SimpleTplEngine tpl = new SimpleTplEngine(new TPLObject(),false); + Console.WriteLine("template output:{0}", tpl.Execute(templateStr)); + + Console.WriteLine("output:@eachtpl('1,2,3',num,url){{num} -> $tpl(3,'{str}')}"); + + Console.WriteLine("template output:{0}", tpl.Execute(templateStr2)); + + Console.WriteLine("=================================="); + + + + } + + } +} diff --git a/src/OPS.Library/Source Code/Tester/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/Tester/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..169f162 --- /dev/null +++ b/src/OPS.Library/Source Code/Tester/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Tester")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tester")] +[assembly: AssemblyCopyright("Copyright © 2011")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("fb6af648-5d9f-4759-ae45-381710cd2de3")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/OPS.Library/Source Code/Tester/Tester.csproj b/src/OPS.Library/Source Code/Tester/Tester.csproj new file mode 100644 index 0000000..5da889d --- /dev/null +++ b/src/OPS.Library/Source Code/Tester/Tester.csproj @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{013C1760-AC0F-4EEA-BB4A-CFE0CC8744B9}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Tester</RootNamespace> + <AssemblyName>Tester</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <TargetFrameworkProfile> + </TargetFrameworkProfile> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <PlatformTarget>x86</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <PlatformTarget>x86</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Payment.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="app.config" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\OPSoft.CoreLib\OPSoft.Core.csproj"> + <Project>{D5FE86B4-D9B2-451C-921F-7AFAEB7AD291}</Project> + <Name>OPSoft.Core</Name> + </ProjectReference> + <ProjectReference Include="..\OPSoft.Plus\OPSoft.Plugin.csproj"> + <Project>{D1FBD275-BF29-4823-970A-0F341BF99A9F}</Project> + <Name>OPSoft.Plugin</Name> + </ProjectReference> + <ProjectReference Include="..\OPSoft.Template\OPSoft.Template.csproj"> + <Project>{275cae3e-a9e0-4de0-8031-e9137bbdd693}</Project> + <Name>OPSoft.Template</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/src/OPS.Library/Source Code/Tester/Tester.pidb b/src/OPS.Library/Source Code/Tester/Tester.pidb new file mode 100644 index 0000000..d4753bb Binary files /dev/null and b/src/OPS.Library/Source Code/Tester/Tester.pidb differ diff --git a/src/OPS.Library/Source Code/Tester/app.config b/src/OPS.Library/Source Code/Tester/app.config new file mode 100644 index 0000000..e365603 --- /dev/null +++ b/src/OPS.Library/Source Code/Tester/app.config @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<configuration> +<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> diff --git a/J6/src/core/J6.DevFw.PluginKernel/demo/Plugin/Print.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/demo/Plugin/Print.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/demo/Plugin/Print.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/demo/Plugin/Print.cs diff --git a/J6/src/core/J6.DevFw.PluginKernel/demo/Plugin/Print2.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/demo/Plugin/Print2.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/demo/Plugin/Print2.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/demo/Plugin/Print2.cs diff --git a/J6/src/core/J6.DevFw.PluginKernel/demo/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/demo/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/demo/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/demo/Properties/AssemblyInfo.cs diff --git a/J6/src/core/J6.DevFw.PluginKernel/demo/pluginDemo.csproj b/src/OPS.Library/Source Code/com/Com.PluginKernel/demo/pluginDemo.csproj similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/demo/pluginDemo.csproj rename to src/OPS.Library/Source Code/com/Com.PluginKernel/demo/pluginDemo.csproj diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/BasePluginHost.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/BasePluginHost.cs new file mode 100644 index 0000000..4809785 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/BasePluginHost.cs @@ -0,0 +1,354 @@ +using Ops.Framework; +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text.RegularExpressions; + +namespace Com.PluginKernel +{ + /// <summary> + /// + /// </summary> + public abstract class BasePluginHost : IPluginHost + { + internal static IDictionary<IPlugin, PluginPackAttribute> plugins; + + protected static LogFile Log; + private PluginHostAttribute _attr = null; + + + static BasePluginHost() + { + plugins = new Dictionary<IPlugin, PluginPackAttribute>(); + + string appDirectory = AppDomain.CurrentDomain.BaseDirectory; + + string pluginDirectory = String.Concat( + appDirectory, + PluginConfig.PLUGIN_DIRECTORY); + + //清空日志 + Log = new LogFile(String.Format("{0}{1}load_{2:yyyyMMdd}.log", + appDirectory, + PluginConfig.PLUGIN_TMP_DIRECTORY, + DateTime.Now), false); + Log.Truncate(); + + if (Directory.Exists(pluginDirectory)) + { + LoadPluginFromDirectory(pluginDirectory); + } + else + { + Directory.CreateDirectory(pluginDirectory).Create(); + } + + //加载程序集的.so文件 + loadFromAppDomain(); + } + + /// <summary> + /// 从目录中加载插件 + /// </summary> + /// <param name="pluginDirectory"></param> + private static void LoadPluginFromDirectory(string pluginDirectory) + { + bool loadResult = true; + + //多个后缀的情况下 + IList<String> files = new List<string>(10); + + string[] multExt = PluginConfig.GetFilePartterns(); + foreach (String ext in multExt) + { + String[] searchedExt = Directory.GetFiles(pluginDirectory, ext); + foreach (String sext in searchedExt) + { + files.Add(sext); + } + } + + if (Log != null) + { + Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading" + + "\r\n========================================\r\n" + + "Directory:{1} \t Total DLL:{2}\r\n", + DateTime.Now, pluginDirectory.Replace("\\", "/"), + files.Count.ToString())); + } + foreach (string file in files) + { + if (!LoadPlugin(file)) + { + loadResult = false; + } + } + + if (Log != null) + { + Log.Println(String.Format("load complete!result:{0}", loadResult ? "Ok" : "Error")); + } + } + + /// <summary> + /// 加载单个插件 + /// </summary> + /// <param name="pluginFile"></param> + public static bool LoadPlugin(string pluginFile) + { + try + { + byte[] bytes = File.ReadAllBytes(pluginFile); + Assembly ass = Assembly.Load(bytes); + loadFromAssembly(ass); + } + catch (ReflectionTypeLoadException exc) + { + if (Log != null) + { + Log.Println(String.Format("Assembly {0} happend exception:{1}\r\nExceptions:\r\n", + pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] { '/', '\\' }) + 1), + exc.Message)); + foreach(Exception e in exc.LoaderExceptions){ + Log.Println(e.Message); + } + + } + return false; + } + catch (Exception err) + { + if (Log != null) + { + Log.Println(String.Format("\r\nAssembly {0} happend exception:{1}", + pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] {'/', '\\'}) + 1), + err.Message)); + } + return false; + } + return true; + } + + /// <summary> + /// + /// </summary> + private static void loadFromAppDomain() + { + string dir = AppDomain.CurrentDomain.BaseDirectory + "bin"; + if (!Directory.Exists(dir)) return; + string[] dllFiles = Directory.GetFiles(dir, "*.so"); + + Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading From Bin" + + "\r\n========================================\r\n" + + "Total .so file : {1}\r\n", + DateTime.Now, + dllFiles.Length.ToString())); + + foreach (string f in dllFiles) + { + LoadPlugin(f); + } + } + + /// <summary> + /// 从程序集中加载插件 + /// </summary> + /// <param name="assembly"></param> + /// <returns></returns> + private static bool loadFromAssembly(Assembly assembly) + { + PluginPackAttribute attribute = null; + IPlugin plugin = null; + + var attbs = assembly.GetCustomAttributes(typeof (PluginPackAttribute), false); + + if (attbs.Length != 0) + { + attribute = (PluginPackAttribute) attbs[0]; + } + else + { +// foreach (Attribute attr in assembly.GetCustomAttributes(false)) +// { +// if (attr.ToString().IndexOf("PluginPackAttribute") != -1) +// { +// attribute = (PluginPackAttribute) attr; +// +// Log.Println(attribute.Name); +// } +// else +// { +// Log.Println(attr.ToString()); +// } +// } +// +// Log.Println(assembly.GetName().Name+" not a plugin!"); + return false; + } + + var types = assembly.GetTypes(); + foreach (Type type in types) + { + if (type.IsClass) + { + foreach (Type t in type.GetInterfaces()) + { + if (t == typeof (IPlugin)) + { + plugin = Activator.CreateInstance(type) as IPlugin; + if (plugin == null) + { + continue; + } + + if (attribute != null) + { + plugins.Add(plugin, attribute); + } + } + } + } + } + + if (Log != null) + { + Log.Println(String.Format("{0}({1}) be found ; version is {2}.", + attribute.Name, + assembly.GetName().Name, + attribute.Version)); + } + return true; + } + + public bool LoadFromAssembly(Assembly assembly) + { + return loadFromAssembly(assembly); + } + + /// <summary> + /// 连接插件 + /// </summary> + /// <returns></returns> + public virtual bool Connect() + { + Iterate( + (p, a) => + { + if (a.State == PluginState.Normal) + { + p.Connect(this); + } + } + ); + return true; + } + + /// <summary> + /// 迭代插件 + /// </summary> + /// <param name="handler"></param> + public void Iterate(PluginHandler handler) + { + foreach (IPlugin p in plugins.Keys) + { + if (CanAdapter(p)) + { + handler(p, plugins[p]); + } + } + } + + public virtual void Run() + { + Iterate((p, i) => + { + if (i.State == PluginState.Normal) + { + p.Run(); + } + }); + } + + public virtual void Pause() + { + Iterate((p, i) => { i.State = PluginState.Stop; }); + } + + public bool Run(string pluginId) + { + var runed = false; + Iterate((p, i) => + { + if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) + { + p.Run(); + runed = true; + } + }); + return runed; + } + + public bool Pause(string pluginId) + { + var runed = false; + Iterate((p, i) => + { + if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) + { + i.State = PluginState.Stop; + runed = true; + } + }); + return runed; + } + + /// <summary> + /// 检查是否能适配插件 + /// </summary> + public bool CanAdapter(IPlugin plugin) + { + if (this.Attribute == null || String.IsNullOrEmpty(this.Attribute.TypePattern)) + { + return true; + } + return Regex.IsMatch(plugin.GetType().Name, this.Attribute.TypePattern, RegexOptions.IgnoreCase); + } + + /// <summary> + /// 附加日志 + /// </summary> + /// <param name="content"></param> + public void Logln(string content) + { + if (Log != null) + { + Log.Printf("{0:yyyy-MM-dd HH:mm:ss}\r\n========================================\r\n{1}\r\n\r\n", + DateTime.Now, content); + } + } + + private PluginHostAttribute Attribute + { + get + { + if (_attr == null) + { + var ppas = GetType().GetCustomAttributes(typeof (PluginHostAttribute), true); + if (ppas.Length != 0) + { + _attr = (PluginHostAttribute) ppas[0]; + } + } + return _attr; + } + } + + + public PluginPackAttribute GetAttribute(IPlugin plugin) + { + return PluginUtil.GetAttribute(plugin); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Com.PluginKernel.csproj b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Com.PluginKernel.csproj new file mode 100644 index 0000000..a5849c3 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Com.PluginKernel.csproj @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{CAD14DCC-112C-4B28-98EB-1CE143D09033}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Com.PluginKernel</RootNamespace> + <AssemblyName>Com.PluginKernel</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\Bin\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile>..\..\..\Bin\Com.PluginKernel.XML</DocumentationFile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <SignAssembly>true</SignAssembly> + </PropertyGroup> + <PropertyGroup> + <DelaySign>false</DelaySign> + </PropertyGroup> + <PropertyGroup> + <AssemblyOriginatorKeyFile>pluginKernel.snk</AssemblyOriginatorKeyFile> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Web" /> + </ItemGroup> + <ItemGroup> + <Compile Include="DefaultSettingKeys.cs" /> + <Compile Include="Demo\DemoPluginApp.cs" /> + <Compile Include="IPlugin.cs" /> + <Compile Include="IPluginHost.cs" /> + <Compile Include="IPluginHandleProxy.cs" /> + <Compile Include="Logger.cs" /> + <Compile Include="BasePluginHost.cs" /> + <Compile Include="PluginConfig.cs" /> + <Compile Include="PluginConnectionResult.cs" /> + <Compile Include="PluginException.cs" /> + <Compile Include="PluginHandleProxy.cs" /> + <Compile Include="PluginHandler.cs" /> + <Compile Include="PluginInfoAttribute.cs" /> + <Compile Include="PluginPackAttribute.cs" /> + <Compile Include="PluginState.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="PluginHostAttribute.cs" /> + <Compile Include="PluginUtil.cs" /> + <Compile Include="Web\BaseExtendPluginHost.cs" /> + <Compile Include="Web\IExtendPluginHost.cs" /> + <Compile Include="Web\PluginWebHandleProxy.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="pluginKernel.snk" /> + <None Include="README.md" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\OPSoft.CoreLib\OPSoft.Core.csproj"> + <Project>{d5fe86b4-d9b2-451c-921f-7afaeb7ad291}</Project> + <Name>OPSoft.Core</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/AtNet.DevFw.PluginKernel.csproj.user b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Com.PluginKernel.csproj.user similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/kernel/AtNet.DevFw.PluginKernel.csproj.user rename to src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Com.PluginKernel.csproj.user diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/DefaultSettingKeys.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/DefaultSettingKeys.cs new file mode 100644 index 0000000..3430141 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/DefaultSettingKeys.cs @@ -0,0 +1,17 @@ +using System; + +namespace Com.PluginKernel +{ + public static class DefaultSettingKeys + { + /// <summary> + /// 插件状态 + /// </summary> + public static String State = "state"; + + /// <summary> + /// 重写的URL标识 + /// </summary> + public static String OverrideUrlIndent = "override.url.indent"; + } +} diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Demo/DemoPluginApp.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Demo/DemoPluginApp.cs new file mode 100644 index 0000000..995fd01 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Demo/DemoPluginApp.cs @@ -0,0 +1,29 @@ +using System; + +namespace Com.PluginKernel.Demo +{ + public class DemoPluginApp : BasePluginHost + { + public event PluginHandler<string> OnPrinting; + + public override bool Connect() + { + Iterate((p, i) => + { + Console.WriteLine("连接插件:" + i.Name + " 作者:" + i.Author + " 版本:" + i.Version); + p.Connect(this); + }); + + return true; + } + + public void Print(string message) + { + var result = true; + if (OnPrinting != null) + { + OnPrinting(message, ref result); + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPlugin.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPlugin.cs new file mode 100644 index 0000000..320e721 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPlugin.cs @@ -0,0 +1,59 @@ +namespace Com.PluginKernel +{ + using System; + using System.Collections.Generic; + using System.Linq; + + public interface IPlugin + { + PluginConnectionResult Connect(IPluginHost app); + + + /// <summary> + /// 安装 + /// </summary> + bool Install(); + + /// <summary> + /// 卸载 + /// </summary> + /// <returns></returns> + bool Uninstall(); + + /// <summary> + /// 运行 + /// </summary> + void Run(); + + /// <summary> + /// 暂停运行 + /// </summary> + void Pause(); + + /// <summary> + /// 返回插件操作的消息 + /// </summary> + /// <returns></returns> + string GetMessage(); + + /// <summary> + /// 获取插件的属性 + /// </summary> + /// <returns></returns> + PluginPackAttribute GetAttribute(); + + /// <summary> + /// 打印日志 + /// </summary> + /// <param name="line"></param> + void Logln(string line); + + /// <summary> + /// 开放调用 + /// </summary> + /// <param name="method"></param> + /// <param name="parameters"></param> + /// <returns></returns> + object Call(string method, params object[] parameters); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPluginHandleProxy.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPluginHandleProxy.cs new file mode 100644 index 0000000..34fe489 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPluginHandleProxy.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Com.PluginKernel +{ + public interface IPluginHandleProxy<T> + { + /// <summary> + /// 处理请求,如在Web中可用来处理Get请求 + /// </summary> + /// <param name="context"></param> + /// <param name="pluginWorkIndent"></param> + /// <param name="handleResult"></param> + void HandleRequest(T context, + string pluginWorkIndent, + ref bool handleResult); + + /// <summary> + /// 使用指定的类型处理请求,如果action不正确则抛出异常 + /// </summary> + /// <typeparam name="HandleClass"></typeparam> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="action"></param> + /// <returns>返回请求的结果,这通常返回String</returns> + object HandleRequestUse<HandleClass>( + HandleClass t, + T context, + string action); + + /// <summary> + /// 使用指定的类型处理请求,如果action不正确则抛出异常 + /// </summary> + /// <typeparam name="HandleClass"></typeparam> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="action"></param> + /// <param name="source">请求来源</param> + /// <returns>返回请求的结果,这通常返回String</returns> + object HandleRequestUse<HandleClass>( + HandleClass t, + T context, + string action, + string source); + + /// <summary> + /// 注册处理事件 + /// </summary> + /// <param name="plugin"></param> + /// <param name="reqHandler"></param> + /// <param name="postReqHandler"></param> + /// <returns></returns> + bool Register(IPlugin plugin, PluginHandler<T> reqHandler); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPluginHost.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPluginHost.cs new file mode 100644 index 0000000..bb1dd5e --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/IPluginHost.cs @@ -0,0 +1,63 @@ +namespace Com.PluginKernel +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Reflection; + + /// <summary> + /// 插件宿主接口 + /// </summary> + public interface IPluginHost + { + /// <summary> + /// 连接所有插件 + /// </summary> + /// <returns></returns> + bool Connect(); + + /// <summary> + /// 从程序集中加载插件 + /// </summary> + /// <param name="assembly"></param> + /// <returns></returns> + bool LoadFromAssembly(Assembly assembly); + + /// <summary> + /// 获取插件信息 + /// </summary> + /// <param name="plugin"></param> + /// <returns></returns> + PluginPackAttribute GetAttribute(IPlugin plugin); + + /// <summary> + /// 迭代插件集合 + /// </summary> + /// <param name="handler"></param> + void Iterate(PluginHandler handler); + + /// <summary> + /// 运行所有插件 + /// </summary> + void Run(); + + /// <summary> + /// 停用所有插件 + /// </summary> + void Pause(); + + /// <summary> + /// 运行指定的插件 + /// </summary> + /// <param name="pluginId"></param> + /// <returns></returns> + bool Run(string pluginId); + + /// <summary> + /// 停用指定的插件 + /// </summary> + /// <param name="pluginId"></param> + /// <returns></returns> + bool Pause(string pluginId); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Logger.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Logger.cs new file mode 100644 index 0000000..46056d7 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Logger.cs @@ -0,0 +1,83 @@ +using Ops.Framework; +using Ops.Framework.Extensions; +using System; +using System.Collections; +using System.IO; +using System.Text; + +namespace Com.PluginKernel +{ + /// <summary> + /// + /// </summary> + public static class Logger + { + private static LogFile _logFile; + + private static LogFile GetFile() + { + DateTime dt = DateTime.Now; + int unixInt = dt.Date.DayOfYear; + + if (_logFile == null || unixInt != _logFile.Seed) + { + string logDir = AppDomain.CurrentDomain.BaseDirectory + PluginConfig.PLUGIN_TMP_DIRECTORY; + + //创建日志目录 + if (!Directory.Exists(logDir)) + { + Directory.CreateDirectory(logDir).Create(); + } + + _logFile = new LogFile(String.Format("{0}/{1:yyyyMMdd}.log", logDir, dt), false); + _logFile.Seed = unixInt; + _logFile.FileEncoding = Encoding.UTF8; + } + return _logFile; + } + + /// <summary> + /// 记录异常 + /// </summary> + /// <param name="addr">引起异常的地址,比如网址</param> + /// <param name="except"></param> + public static void PrintException(string addr, Exception except) + { + if (!PluginConfig.PLUGIN_LOG_OPENED) return; + + LogFile log = GetFile(); + DateTime dt = DateTime.Now; + + Exception exc = except; + + if (exc.InnerException != null) + { + exc = except.InnerException; + } + + Hashtable hash = new Hashtable(); + hash.Add("addr", addr ?? "application"); + hash.Add("message", exc.Message); + hash.Add("stack", exc.StackTrace); + hash.Add("time", String.Format("{0:yyyy-MM-dd HH:mm:ss}", dt)); + hash.Add("source", exc.Source); + + //附加记录 + log.Println(PluginConfig.PLUGIN_LOG_EXCEPT_FORMAT.Template(hash)); + + throw except; //继续抛出异常 + } + + /// <summary> + /// + /// </summary> + /// <param name="line"></param> + public static void Println(string line) + { + if (!PluginConfig.PLUGIN_LOG_OPENED) return; + + LogFile log = GetFile(); + log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} {1}", DateTime.Now, line)); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginConfig.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginConfig.cs new file mode 100644 index 0000000..e377a34 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginConfig.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Com.PluginKernel +{ + /// <summary> + /// + /// </summary> + public class PluginConfig + { + /// <summary> + /// 插件目录名称,以"/"结尾 + /// </summary> + public static string PLUGIN_DIRECTORY = "plugins/"; + + /// <summary> + /// 插件临时文件存放目录,以"/"结尾。用于存放日志,临时文件等 + /// </summary> + public static string PLUGIN_TMP_DIRECTORY = "plugins/"; + + /// <summary> + /// 插件日志是否打开,默认为关闭 + /// </summary> + public static bool PLUGIN_LOG_OPENED = false; + + /// <summary> + /// 插件异常日志格式,默认为:<{time}>:{message}\r\nSource:{source}\r\nAddress:{addr}\r\nStack:{stack}\r\n\r\n + /// </summary> + public static string PLUGIN_LOG_EXCEPT_FORMAT = + "{time} - [Exeption]:{message}\r\nSource:{source}\r\nAddress:{addr}\r\nStack:{stack}\r\n\r\n"; + + /// <summary> + /// 插件文件后缀,多个后缀用","隔开 + /// 默认加载bin目录下的.so文件 + /// </summary> + public static string PLUGIN_FILE_PARTTERN = "*.so,*.dll"; + + /// <summary> + /// + /// </summary> + /// <returns></returns> + public static string[] GetFilePartterns() + { + return (PLUGIN_FILE_PARTTERN ?? "*.dll").Split(','); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginConnectionResult.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginConnectionResult.cs new file mode 100644 index 0000000..a1be239 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginConnectionResult.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Com.PluginKernel +{ + /// <summary> + /// 表示插件与主程序连接的结果 + /// + /// </summary> + public enum PluginConnectionResult + { + /// <summary> + /// + /// </summary> + Failed, + + /// <summary> + /// 与版本号不匹配 + /// </summary> + NotMatch, + + /// <summary> + /// + /// </summary> + Success + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginException.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginException.cs new file mode 100644 index 0000000..3370f11 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginException.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件异常 + /// </summary> + public class PluginException : Exception + { + public PluginException(string message) : base(message) + { + } + + public override string HelpLink + { + get { return "http://www.ops.cc"; } + set { throw new NotImplementedException(); } + } + + public override string Message + { + get { return "插件异常:" + base.Message; } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHandleProxy.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHandleProxy.cs new file mode 100644 index 0000000..fb5dc76 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHandleProxy.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件处理代理类 + /// </summary> + /// <typeparam name="T"></typeparam> + public abstract class PluginHandleProxy<T> : IPluginHandleProxy<T> + { + private static IDictionary<string, PluginHandler<T>> reqHandlers; + + static PluginHandleProxy() + { + reqHandlers = new Dictionary<String, PluginHandler<T>>(); + } + + /// <summary> + /// 扩展模块GET请求,返回false则应立即截断请求 + /// </summary> + /// <param name="tag"></param> + /// <param name="page"></param> + public virtual void HandleRequest(T context, + string pluginWorkIndent, + ref bool handleResult) + { + pluginWorkIndent = pluginWorkIndent.ToLower(); + + //处理扩展 + if (reqHandlers.Keys.Contains(pluginWorkIndent)) + { + reqHandlers[pluginWorkIndent](context, ref handleResult); + } + } + + + /// <summary> + /// 注册扩展处理程序 + /// </summary> + /// <param name="extendName">扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件</param> + /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <returns></returns> + public bool Register(IPlugin plugin, + PluginHandler<T> reqHandler) + { + Type type = plugin.GetType(); + PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); + string indent = attr.WorkIndent; + + if (reqHandler == null || reqHandlers.Keys.Contains(indent)) + { + return false; + } + + if (reqHandler != null) + { + reqHandlers.Add(indent, reqHandler); + } + + return true; + } + + + public object HandleRequestUse<HandleClass>(HandleClass t, T context, string action, string source) + { + Type type = t.GetType(); + MethodInfo method = type.GetMethod( + action, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); + + if (method != null) + { + try + { + return method.Invoke(t, new object[] { context }); + } + catch (Exception exc) + { + throw new PluginException(exc.Message + "\n" + + (source ?? "application:" + type.FullName + "." + action)); + } + } + throw new PluginException("无效请求:" + action); + } + + public object HandleRequestUse<HandleClass>( + HandleClass t, + T context, + string action) + { + return HandleRequestUse(t, context, action, null); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHandler.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHandler.cs new file mode 100644 index 0000000..8efa979 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHandler.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件处理事件 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + public delegate void PluginHandler<T>(T t, ref bool b); + + public delegate void PluginHandler<T, T1>(T t, T1 t1, ref bool b); + + public delegate void PluginHandler<T, T1, T2>(T t, T1 t1, T2 t2, ref bool b); + + public delegate void PluginHandler<T, T1, T2, T3>(T t, T1 t1, T2 t2, T3 t3, ref bool b); + + + /// <summary> + /// 插件处理事件 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + public delegate void PluginHandler(IPlugin plugin, PluginPackAttribute info); +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHostAttribute.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHostAttribute.cs new file mode 100644 index 0000000..c2091e6 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginHostAttribute.cs @@ -0,0 +1,42 @@ +using System; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件信息 + /// </summary> + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public class PluginHostAttribute : Attribute + { + public PluginHostAttribute() + { + } + + public PluginHostAttribute(string name, string descript) + { + Name = name; + Descript = descript; + } + + /// <summary> + /// 插件名称 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 插件应用描述 + /// </summary> + public string Descript { get; set; } + + /// <summary> + /// 插件类名格式(正则表达式) + /// 默认为空,不限制 + /// </summary> + public string TypePattern { get; set; } + + /// <summary> + /// 记录日志 + /// </summary> + private bool WriteLog { get; set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginInfoAttribute.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginInfoAttribute.cs new file mode 100644 index 0000000..87c6fdb --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginInfoAttribute.cs @@ -0,0 +1,59 @@ +using System; + +namespace Com.PluginKernel +{ + /// <summary> + /// Ϣ + /// </summary> + [Obsolete] + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] + public class PluginInfoAttribute : Attribute + { + /// <summary> + /// + /// </summary> + public PluginInfoAttribute() + { + } + + /// <summary> + /// + /// </summary> + /// <param name="name"></param> + /// <param name="author"></param> + /// <param name="webpage"></param> + /// <param name="descript"></param> + [Obsolete] + public PluginInfoAttribute(string name, string author, string webpage, string descript) + { + } + + private string id; + + /// <summary> + /// + /// </summary> + public string ID + { + get + { + if (id == null) + { + id = String.Format("{0}{1}", GetType().Assembly.GetName().Name, + IndexNum == 0 ? string.Empty : "_" + IndexNum); + } + return id; + } + } + + /// <summary> + /// ,ļ + /// </summary> + public int IndexNum { get; set; } + + /// <summary> + /// Ϣ + /// </summary> + public object Tag { get; set; } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginPackAttribute.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginPackAttribute.cs new file mode 100644 index 0000000..d7c3430 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginPackAttribute.cs @@ -0,0 +1,167 @@ +using Ops.Framework; +using System; +using System.IO; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件包信息 + /// </summary> + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)] + public class PluginPackAttribute : Attribute + { + private SettingFile settings { get; set; } + + /// <summary> + /// + /// </summary> + /// <param name="workerIndent"></param> + public PluginPackAttribute(string workerIndent) + { + this.WorkIndent = workerIndent; + bool isChanged = false; + var dirPath = String.Concat( + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + workerIndent, + "/"); + + if (!Directory.Exists(dirPath)) + { + Directory.CreateDirectory(dirPath).Create(); + } + + settings = new SettingFile(string.Concat(dirPath, "plugin.config")); + + if (!settings.Contains("state")) + { + settings.Add("state", "Normal"); + isChanged = true; + } + if (!settings.Contains("override.url.indent")) + { + settings.Add("override.url.indent", ""); + isChanged = true; + } + + if (isChanged) + { + settings.Flush(); + } + } + + public PluginPackAttribute(string workerIndent, string icon, string name, string author, string portalUrl) + : + this(workerIndent) + { + Icon = icon; + Name = name; + Author = author; + PortalUrl = portalUrl; + } + + private string version; + private string _workSpace; + + /// <summary> + /// 工作目录标识,较好的命名:com.myplugin 或 mycompany.myplugin + /// 将会在plugins目录下生成目录,存放需要的文件 + /// </summary> + public string WorkIndent { get; set; } + + /// <summary> + /// 插件图标 + /// </summary> + public string Icon { get; set; } + + /// <summary> + /// 插件名称 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 插件作者 + /// </summary> + public string Author { get; set; } + + /// <summary> + /// 官方主页 + /// </summary> + public string WebPage { get; set; } + + /// <summary> + /// 版本号(主版本号.次版本号.修订版本号),与程序集版本号一致 + /// </summary> + public string Version + { + get + { + if (version == null) + { + var v = GetType().Assembly.GetName().Version; + version = String.Format("{0}.{1}.{2}", v.Major, v.Minor, v.Revision); + } + return version; + } + } + + /// <summary> + /// 设置地址 + /// </summary> + public string ConfigUrl { get; set; } + + /// <summary> + /// 插件入口地址 + /// </summary> + public string PortalUrl { get; set; } + + /// <summary> + /// 插件描述信息 + /// </summary> + public string Description { get; set; } + + /// <summary> + /// 工作目录(插件根目录),如:C:/plugins/com.plugin.demo/ + /// </summary> + public string WorkSpace + { + get + { + return this._workSpace ?? (this._workSpace = + String.Concat( + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + this.WorkIndent, + "/" + )); + } + } + + /// <summary> + /// 插件状态 + /// </summary> + public PluginState State + { + get + { + return (settings["state"] == "1" || settings["state"] == "Normal") + ? PluginState.Normal + : PluginState.Stop; + } + set + { + var state = value.ToString(); + settings["state"] = state; + settings.Flush(); + } + } + + /// <summary> + /// 插件配置 + /// </summary> + public SettingFile Settings + { + get { return settings; } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginState.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginState.cs new file mode 100644 index 0000000..eeaeee8 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginState.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件状态 + /// </summary> + public enum PluginState + { + /// <summary> + /// 正常 + /// </summary> + Normal = 1, + + /// <summary> + /// 停止 + /// </summary> + Stop = 0 + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginUtil.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginUtil.cs new file mode 100644 index 0000000..64b5450 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/PluginUtil.cs @@ -0,0 +1,362 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.IO; +using Ops.Framework.Graphic; +using System.Drawing; +using Ops.Framework.Net; +using Ops.Framework.Extensions; +using System.Reflection; +using Ops.Utils; + +namespace Com.PluginKernel +{ + /// <summary> + /// 插件工具 + /// </summary> + public static class PluginUtil + { + /// <summary> + /// 插件属性字典 + /// </summary> + private static IDictionary<int, PluginPackAttribute> attrDicts; + + /// <summary> + /// 迭代插件 + /// </summary> + /// <param name="handler"></param> + public static void Iterate(PluginHandler handler) + { + foreach (IPlugin p in BasePluginHost.plugins.Keys) + { + handler(p, BasePluginHost.plugins[p]); + } + } + + /// <summary> + /// + /// </summary> + /// <param name="plugin"></param> + /// <returns></returns> + public static PluginPackAttribute GetAttribute(IPlugin plugin) + { + return GetAttributeByType(plugin.GetType()); + } + + private static PluginPackAttribute GetAttributeByType(Type type) + { + //int key = type.Assembly.GetHashCode(); + //if (attrDicts == null) + //{ + // attrDicts = new Dictionary<int, PluginPackAttribute>(); + //} + + //if (!attrDicts.Keys.Contains(key)) + //{ + + object[] attrs = type.Assembly.GetCustomAttributes(typeof(PluginPackAttribute), false); + if (attrs.Length == 0) + throw new Exception("assembly not contain any plugin package attribute!"); + + PluginPackAttribute attr = (PluginPackAttribute)attrs[0]; + //attrDicts.Add(key, attr); + return attr; + //} + + // return attrDicts[key]; + } + + /// <summary> + /// 获取插件 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static IPlugin GetPlugin(string workerIndent, out PluginPackAttribute attr) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + attr = plugins[p]; + return p; + } + } + + attr = null; + return null; + } + + /// <summary> + /// 根据类型获取插件 + /// </summary> + /// <param name="t"></param> + /// <returns></returns> + public static IPlugin GetPluginByType(Type t) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (p.GetType() == t) + { + return p; + } + } + return null; + } + + + /// <summary> + /// 获取插件包信息 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static PluginPackAttribute GetPluginPackAttribute(string workerIndent) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + return plugins[p]; + } + } + return null; + } + + /// <summary> + /// 获取插件 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static IEnumerable<IPlugin> GetPlugins(string workerIndent) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + yield return p; + } + } + } + + + /// <summary> + /// 获取插件的图标 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static byte[] GetPluginIcon(string workerIndent, int width, int height, string defaultIconPath) + { + string icon = null; + var iconExist = false; + byte[] data; + + Iterate((p, a) => + { + if (String.Compare(a.WorkIndent, workerIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + icon = String.Format("{0}{1}{2}/{3}", + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + workerIndent, a.Icon); + } + }); + + if (!String.IsNullOrEmpty(icon)) + { + iconExist = File.Exists(icon); + } + + resetIcon: + if (!iconExist) + { + icon = defaultIconPath; + } + + var bit = (Bitmap)null; + try + { + using (bit = new Bitmap(icon)) + { + var ms = GraphicsHelper.MakeThumbnail(bit, ImageSizeMode.AutoSuit, width, height, null); + data = ms.ToArray(); + ms.Dispose(); + bit.Dispose(); + } + } + catch + { + iconExist = false; + goto resetIcon; + } + finally + { + if (bit != null) + { + bit.Dispose(); + } + } + + return data; + } + + /// <summary> + /// 移除插件 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static bool RemovePlugin(string workerIndent) + { + PluginPackAttribute attr; + var plugin = GetPlugin(workerIndent, out attr); + + if (plugin != null) + { + try + { + plugin.Uninstall(); + } + catch + { + // ignored + } + + var dirName = String.Format("{0}{1}/{2}/", + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + attr.WorkIndent + ); + + if (Directory.Exists(dirName)) + { + Directory.Delete(dirName, true); + + var dllName = String.Format("{0}{1}/{2}", + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + plugin.GetType().Assembly.Location + ); + + File.Delete(dllName); + } + + return true; + } + + return false; + } + + /// <summary> + /// 安装/升级插件 + /// </summary> + /// <param name="url"></param> + /// <param name="handler"></param> + /// <returns></returns> + public static bool InstallPlugin(string url, PluginHandler<PluginPackAttribute> handler) + { + var installResult = false; + string appDirectory = AppDomain.CurrentDomain.BaseDirectory; + var pluginPath = String.Concat( + appDirectory, + PluginConfig.PLUGIN_DIRECTORY); + + var tempDir = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY, "plugin/"); + var fileName = tempDir + "dl_pack_" + String.Empty.RandomLetters(16) + ".zip"; + + if (Directory.Exists(tempDir)) + { + Directory.Delete(tempDir, true); + } + Directory.CreateDirectory(tempDir).Create(); + + var dir = new DirectoryInfo(tempDir); + + var data = HttpClient.DownloadFile(url, null); + using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) + { + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + + IList<PluginPackAttribute> pluginAttrs = new List<PluginPackAttribute>(GetPluginPackInfo(fileName)); + + if (pluginAttrs.Count != 0) + { + ZipUtility.UncompressFile(pluginPath, fileName, false); + + string[] multExt = PluginConfig.GetFilePartterns(); + foreach (String ext in multExt) + { + foreach (FileInfo file in dir.GetFiles(ext)) + { + File.Delete(pluginPath + file.Name); + file.MoveTo(pluginPath + file.Name); + } + } + + + if (handler != null) + { + var result = false; + foreach (PluginPackAttribute attr in pluginAttrs) + { + handler(attr, ref result); + } + } + + installResult = true; + } + + Directory.Delete(tempDir, true); + + return installResult; + } + + /// <summary> + /// 获取插件包的信息 + /// </summary> + /// <param name="fileName"></param> + /// <returns></returns> + public static IEnumerable<PluginPackAttribute> GetPluginPackInfo(string fileName) + { + var tempDir = String.Concat(AppDomain.CurrentDomain, PluginConfig.PLUGIN_TMP_DIRECTORY, "tmp/"); + + if (Directory.Exists(tempDir)) + { + Directory.Delete(tempDir, true); + } + Directory.CreateDirectory(tempDir).Create(); + + var dir = new DirectoryInfo(tempDir); + + ZipUtility.UncompressFile(tempDir, fileName, false); + + Assembly ass; + string[] multExt = PluginConfig.GetFilePartterns(); + foreach (String ext in multExt) + { + var files = dir.GetFiles(ext); + foreach (FileInfo f in files) + { + ass = Assembly.Load(File.ReadAllBytes(f.FullName)); + + var attbs = ass.GetCustomAttributes(typeof(PluginPackAttribute), false); + foreach (object attb in attbs) + { + if (attb is PluginPackAttribute) + { + yield return (PluginPackAttribute)attb; + } + } + } + } + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/kernel/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Properties/AssemblyInfo.cs diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/README.md b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/README.md similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/kernel/README.md rename to src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/README.md diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/BaseExtendPluginHost.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/BaseExtendPluginHost.cs new file mode 100644 index 0000000..a94b709 --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/BaseExtendPluginHost.cs @@ -0,0 +1,126 @@ +using System.Web; +using Com.PluginKernel; +using Com.PluginKernel.Web; +using System.Text.RegularExpressions; +using System; + +namespace Com.PluginKernel.Web +{ + /// <summary> + /// B/S插件宿主 + /// </summary> + [PluginHost("B/S插件宿主", "使用{module}.sh/{action}访问自定义扩展")] + public abstract class BaseExtendPluginHost : BasePluginHost, IExtendPluginHost + { + protected PluginWebHandleProxy<HttpContext> WebHandler; + + /// <summary> + /// + /// </summary> + protected BaseExtendPluginHost() + { + } + + /// <summary> + /// + /// </summary> + /// <param name="_webHandler"></param> + protected BaseExtendPluginHost(PluginWebHandleProxy<HttpContext> _webHandler) + { + this.WebHandler = _webHandler; + } + + /// <summary> + /// 注册扩展处理程序 + /// </summary> + /// <param name="plugin">扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件</param> + /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <returns></returns> + public bool Register(IPlugin plugin, PluginHandler<HttpContext> getReqHandler, + PluginHandler<HttpContext> postReqHandler) + { + return this.WebHandler.Register(plugin, getReqHandler, postReqHandler); + } + + + /// <summary> + /// 扩展模块GET请求,返回false则应立即截断请求 + /// </summary> + /// <param name="tag"></param> + /// <param name="page"></param> + public virtual void ExtendModuleRequest(HttpContext context, string extendName, ref bool result) + { + extendName = extendName.ToLower(); + this.WebHandler.HandleGetRequest(context, extendName, ref result); + } + + + /// <summary> + /// 扩展模块POST请求,返回false则应立即截断请求 + /// </summary> + /// <param name="tag"></param> + /// <param name="page"></param> + public virtual void ExtendModulePost(HttpContext context, string extendName, ref bool result) + { + extendName = extendName.ToLower(); + this.WebHandler.HandlePostRequest(context, extendName, ref result); + } + + /// <summary> + /// 获取请求路径 + /// </summary> + /// <param name="context"></param> + /// <returns></returns> + public string GetRequestPath(HttpContext context) + { + Match match = Regex.Match(context.Request.Path, "/(.+?)/([^\\?]+)"); + return match == Match.Empty ? "" : match.Groups[2].Value; + } + + /// <summary> + /// 扩展插件Action请求,为插件提供Action功能 + /// </summary> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="isPostRequest"></param> + public virtual bool HandleRequestUse<T>(T t, HttpContext context, bool isPostRequest) + { + string path = this.GetRequestPath(context); + return this.HandleCustomRequestUse(t, context, path, isPostRequest); + } + + + public bool HandleCustomRequestUse<T>(T t, HttpContext context, string path, bool isPostRequest) + { + string action = null; + + if (path.Length != 0) + { + action = path.IndexOf('/') == -1 ? path : path.Substring(0, path.IndexOf('/')); + } + action = String.Concat(action ?? "default", isPostRequest ? "_post" : ""); + + try + { + object obj = this.WebHandler.HandleRequestUse<T>( + t + , context + , action + , context.Request.RawUrl); + + + if (obj != null) + { + context.Response.Write(obj.ToString()); + } + return true; + } + catch (PluginException exc) + { + Logger.Println("[ Request][Error]:" + exc.Message + ";url :" + context.Request.RawUrl); + return false; + } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/IExtendPluginHost.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/IExtendPluginHost.cs new file mode 100644 index 0000000..3f00a7d --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/IExtendPluginHost.cs @@ -0,0 +1,65 @@ +using System; +using System.Web; + +namespace Com.PluginKernel.Web +{ + /// <summary> + /// B/S插件宿主 + /// </summary> + public interface IExtendPluginHost : IPluginHost + { + /// <summary> + /// 注册扩展处理程序 + /// </summary> + /// <param name="plugin"></param> + /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <returns></returns> + bool Register(IPlugin plugin, PluginHandler<HttpContext> getReqHandler, + PluginHandler<HttpContext> postReqHandler); + + #region 调用插件 + + /// <summary> + /// 扩展模块GET请求,返回false则应立即截断请求 + /// </summary> + /// <param name="extendName"></param> + /// <param name="result"></param> + /// <param name="context"></param> + void ExtendModuleRequest(HttpContext context, string extendName, ref bool result); + + /// <summary> + /// 扩展模块POST请求,返回false则应立即截断请求 + /// </summary> + /// <param name="context"></param> + /// <param name="extendName"></param> + /// <param name="result"></param> + void ExtendModulePost(HttpContext context, string extendName, ref bool result); + + #endregion + + /// <summary> + /// 获取请求路径 + /// </summary> + /// <param name="context"></param> + /// <returns></returns> + string GetRequestPath(HttpContext context); + + /// <summary> + /// 扩展插件Action请求,为插件提供Action功能 + /// </summary> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="isPostRequest"></param> + bool HandleRequestUse<T>(T t, HttpContext context, bool isPostRequest); + + + /// <summary> + /// 为自定义请求提供Action功能 + /// </summary> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="isPostRequest"></param> + bool HandleCustomRequestUse<T>(T t, HttpContext context, String path,bool isPostRequest); + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/IPluginRequestHandler.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/IPluginRequestHandler.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/kernel/Web/IPluginRequestHandler.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/IPluginRequestHandler.cs diff --git a/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/PluginWebHandleProxy.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/PluginWebHandleProxy.cs new file mode 100644 index 0000000..7854a7c --- /dev/null +++ b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/PluginWebHandleProxy.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Web; + +namespace Com.PluginKernel.Web +{ + public class PluginWebHandleProxy<T> : PluginHandleProxy<T> + { + private static IDictionary<string, PluginHandler<T>> postHandlers; + + static PluginWebHandleProxy() + { + postHandlers = new Dictionary<string, PluginHandler<T>>(); + } + + public virtual void HandleGetRequest(T context, + string pluginWorkIndent, + ref bool handleResult) + { + this.HandleRequest(context, pluginWorkIndent, ref handleResult); + } + + public virtual void HandlePostRequest(T context, + string pluginWorkIndent, + ref bool handleResult) + { + pluginWorkIndent = pluginWorkIndent.ToLower(); + + //处理扩展 + if (postHandlers.Keys.Contains(pluginWorkIndent)) + { + postHandlers[pluginWorkIndent](context, ref handleResult); + } + } + + + /// <summary> + /// 注册处理事件 + /// </summary> + /// <param name="plugin"></param> + /// <param name="reqHandler"></param> + /// <param name="postReqHandler"></param> + /// <returns></returns> + public bool Register(IPlugin plugin, PluginHandler<T> getHandler, PluginHandler<T> postHandler) + { + Type type = plugin.GetType(); + PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); + string indent = attr.WorkIndent; + + if (postHandler == null || postHandlers.Keys.Contains(indent)) + { + return false; + } + postHandlers.Add(indent, postHandler); + + return base.Register(plugin, getHandler); + } + + + // + // 此段代码仅供参考 + // + private bool HandleRequestUse2<HandleClass>(HandleClass t, T context, bool isPostRequest, string requestPath) + { + string action = null; + HttpContext httpContext = HttpContext.Current; + + if (requestPath.Length != 0) + { + action = requestPath.IndexOf('/') == -1 + ? requestPath + : requestPath.Substring(0, requestPath.IndexOf('/')); + } + + if (action == null) action = "default"; + + //交由C#处理 + + Type type = t.GetType(); + MethodInfo method = type.GetMethod( + String.Concat(action, isPostRequest ? "_post" : ""), + BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); + if (method != null) + { + try + { + if (method.ReturnType == typeof (String)) + { + httpContext.Response.Write( + method.Invoke(t, new object[] {context}) as String + ); + } + else + { + method.Invoke(t, new object[] {context}); + } + } + catch (Exception exc) + { + Logger.PrintException(httpContext.Request.RawUrl, exc); + } + + return true; + } + return false; + } + } +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/Web/RequestProxry.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/RequestProxry.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/kernel/Web/RequestProxry.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/Web/RequestProxry.cs diff --git a/J6/src/core/J6.DevFw.PluginKernel/kernel/pluginKernel.snk b/src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/pluginKernel.snk similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/kernel/pluginKernel.snk rename to src/OPS.Library/Source Code/com/Com.PluginKernel/kernel/pluginKernel.snk diff --git a/J6/src/core/J6.DevFw.PluginKernel/test/Class1.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/test/Class1.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/test/Class1.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/test/Class1.cs diff --git a/J6/src/core/J6.DevFw.PluginKernel/test/PluginTest.csproj b/src/OPS.Library/Source Code/com/Com.PluginKernel/test/PluginTest.csproj similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/test/PluginTest.csproj rename to src/OPS.Library/Source Code/com/Com.PluginKernel/test/PluginTest.csproj diff --git a/J6/src/core/J6.DevFw.PluginKernel/test/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/com/Com.PluginKernel/test/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/core/J6.DevFw.PluginKernel/test/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/com/Com.PluginKernel/test/Properties/AssemblyInfo.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/app.config b/src/OPS.Library/Source Code/com/Com.PluginKernel/test/app.config similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/app.config rename to src/OPS.Library/Source Code/com/Com.PluginKernel/test/app.config diff --git a/src/OPS.Library/Source Code/com/com.Tags/HttpTags.cs b/src/OPS.Library/Source Code/com/com.Tags/HttpTags.cs new file mode 100644 index 0000000..70675fd --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.Tags/HttpTags.cs @@ -0,0 +1,347 @@ +namespace Ops.Plugin.Tags +{ + using System; + using System.Data; + using System.Text; + using System.Text.RegularExpressions; + using System.Web; + using System.Web.UI.WebControls; + + public class HttpTags + { + private HttpRequest request; + private HttpResponse response; + + /// <summary> + /// 默认的配置路径 + /// </summary> + private static string defaultConfigPath = AppDomain.CurrentDomain.BaseDirectory + "config/tags.conf"; + + //配置路径,如果URI参数config未指定则为默认路径 + private string configPath; + + public TagsManager Tags; + + public HttpTags():this(null) + { + } + public HttpTags(string configPath) + { + this.configPath = configPath; + + //获取配置文件的路径 + if (String.IsNullOrEmpty(configPath)) + { + this.configPath = AppDomain.CurrentDomain.BaseDirectory + request.QueryString["config"]; + } + + //创建标签管理器对象 + Tags = new TagsManager(configPath); + } + + /// <summary> + /// 处理请求 + /// </summary> + /// <param name="context"></param> + /// <param name="pageContent"></param> + public void ProcessRequest(HttpContext context,string pageContent) + { + request = context.Request; + response = context.Response; + + + + //获取请求方式,确定执行的方法 + string method = request.HttpMethod; + if (method == "GET") + { + string action = request.QueryString["tag.action"]; + if (String.IsNullOrEmpty(action)) + { + Dispaly_TagsList(String.IsNullOrEmpty(pageContent)?Resource.tagsmanager:pageContent); + } + else if (action == "test") + { + Invoke_TestReplace(); + } + } + else + { + string action = request.Form["tag.action"]; + + switch (action) + { + case "save": SaveTags(); break; + case "delete": DeleteTags(); break; + case "create": CreateTags(); break; + } + } + + } + + public void ProcessRequest(HttpContext context) + { + this.ProcessRequest(context, null); + } + + + private void CreateTags() + { + string msg=String.Empty; + + string name = request.Form["name"], + linkUri = request.Form["linkuri"], + description = request.Form["description"]; + + StringBuilder sb = new StringBuilder(); + //if (string.IsNullOrEmpty(id)) + //{ + // sb.Append("编号不能为空!"); + //} + //if(!Regex.IsMatch(id,"^[a-zA-Z0-9]+$")) + //{ + // sb.Append("编号必须为字母和数字"); + //} + + if (String.IsNullOrEmpty(name)) + { + sb.Append("名称不能为空!"); + } + if (sb.Length != 0) + { + msg = sb.ToString(); + goto tip; + } + + bool result =Tags.Add(new Tag + { + Name = name, + LinkUri = linkUri, + Description = description + }); + + msg = result ? "添加成功" : "已经存在相同的标签"; + tip: + response.Write(String.Format("<script>window.parent.tip('{0}');</script>", msg)); + + } + + /// <summary> + /// 删除Tags + /// </summary> + private void DeleteTags() + { + string msg; + + /* + if (tagsManager.Tags.Count == 1) + { + msg = "请保留至少一个标签"; goto tip; + }*/ + + Regex reg = new Regex("^(?!action|name|link|des|id|linkuri|description)[a-zA-Z0-9]+$"); + + int i = 0; + foreach (string key in request.Form) + { + if (reg.IsMatch(key)) + { + Tags.Delete(key); + i++; + } + } + msg = i == 0 ? "没选择要删除的项目!" : "删除成功"; + + tip: + response.Write(String.Format("<script>window.parent.tip('{0}');</script>",msg)); + } + + /// <summary> + /// 保存Tags + /// </summary> + private void SaveTags() + { + string msg; + + Regex reg = new Regex("^name_([a-zA-Z0-9]+)$"); + + int i = 0; + string id; + foreach (string key in request.Form) + { + if (reg.IsMatch(key)) + { + id = reg.Match(key).Groups[1].Value; + + Tags.Update(new Tag + { + Indent=int.Parse(id), + Name = request["name_" + id], + LinkUri = request["link_" + id], + Description = request["des_" + id] + }); + + i++; + } + } + msg = i == 0 ? "没有保存的项!" : "保存成功"; + + response.Write(String.Format("<script>window.parent.tip('{0}');</script>", msg)); + } + + + /// <summary> + /// 显示标签列表 + /// </summary> + private void Dispaly_TagsList(string pageContent) + { + string tagsHtml; + + int pageIndex; + + int.TryParse(request.QueryString["page"], out pageIndex); + if (pageIndex < 1) pageIndex = 1; + + StringBuilder sb = new StringBuilder(); + + Regex reg=new Regex("\\$\\{([a-zA-Z]+)\\}"); + + DataSet ds = new DataSet(); + ds.ReadXml(configPath); + + /* + //获取分页链接 + for (int i = 0; i < ps.PageCount; i++) + { + sb.Append("<a href=\"?page=").Append((i + 1).ToString()).Append("\"") + .Append(i == pageIndex - 1 ? " style=\"background:white;color:black;text-decoration:none\"" : "").Append(">") + .Append((i + 1).ToString()).Append("</a>"); + } + + pagerHtml = sb.ToString(); + sb.Remove(0, sb.Length); + */ + + if (Tags.Tags.Count > 0) + { + foreach (Tag tag in Tags.Tags) + { + sb.Append("<tr><td class=\"center\"><input type=\"checkbox\" class=\"ck\" name=\"ck") + .Append(tag.Indent.ToString()).Append("\" indent=\"").Append(tag.Indent.ToString()).Append("\"/></td>") + .Append("<td class=\"center\">").Append(tag.Name).Append("</td><td>") + .Append(tag.LinkUri).Append("</td><td>") + .Append(tag.Description).Append("</td><td class=\"center\"><a href=\"javascript:;\" onclick=\"edit(this)\">修改</a></td></tr>"); + } + tagsHtml = sb.ToString(); + } + else + { + tagsHtml = "<tr><td colspan=\"5\" class=\"center\">暂无tags!</td></tr>"; + } + + string html = reg.Replace(pageContent, match => + { + switch (match.Groups[1].Value) + { + default: return null; + case "css": return ReturnStyleLink(); + case "tagsHtml": return tagsHtml; + case "pagetext": return ""; + + } + }); + response.Write(html); + } + + + + private void Invoke_TestReplace() + { + TagsManager tagsManager = new TagsManager(AppDomain.CurrentDomain.BaseDirectory + "tag.xml"); + + + const string testContent = @"最近项目有需要<a class=""auto-tag"" target=""_blank"" title="""" href=""tpl1"">开发</a>一个模板的功能,在asp.net mvc项目中使用模板在不压缩代码的模板情况下,性能能提升0.02s左右(本地IIS+FF)"; + + + const string testContent2 = @"奥博建站系统是<a href=""#"">厦门奥博科技技术</a><p>开发的一款<a href=""#"">奥博科技技术</a>基于asp.net mvc和asp.net <a href=""#"">模板</a>组件的网站管理系统。程序高效,安全,功能强大。从最初的v1.0到v1.5,v1.8,v2.0,v2.2,v2.7 + + 经过无数次的改进,不仅支持<a href=""#"">模板</a>技术,缓存,自定义路由,全站静态化,更包括一键生成文档文件!<a href=""#"">奥博建站</a>系统包括多用户管理,和会员系统,消息系统,评论系统,同时提供接口方便二次开发。 + + 今天奥博建站系统升级到3.0了,最大的特色就是:多数据库的支持。您现在可以做为网站的数据库,同时支持数据库的切换。小型网站使用更快。</p>"; + + const string testContent1 = @" 淘宝网上卖银耳的卖家很多,但是在这里面很多卖家并不是我们通江人,而且也没有我们通江的银耳,很多卖家是以袋料银耳来充通江银耳,所以买到这样的假货心里一定很不舒服吧,很多买银耳的朋友非常担心这个问题,都想买到品质优良的正宗的通江银耳,我们是通江土特产专营,为了让淘宝网上的买家买到正宗的通江银耳,我们建立了专业的网站和论坛来对通江银耳进行宣传,我们还成立了专业的银耳合作社,和农户签订了购销合同,农民采收,我们包销售,这样农民也就有了相当的积极性。我们这样做也是为保证有大量的货源,能让淘宝网上的买家更多的买到正宗的通江银耳,我们销售的银耳力争是在野生天然环境下生长的银耳,虽然产量很小,但品质优良,所以价格高大家也愿意接受。因为我们不销售假银耳,我们的银耳是正宗地通江野生银耳。"; + + + + response.Write(String.Format("测试内容为:<br />{0}<br />", testContent)); + + + string x1 = tagsManager.ReplaceSingleTag(testContent); + + + + response.Write(String.Format("<br/><br/><span style=\"color:green\">替换标签后的内容为:</span><br />{0}", x1)); + + + string x2 = tagsManager.ReplaceSingleTag(x1); + + + response.Write(String.Format("<br /><br /><span style=\"color:red\">再次替换后的内容为:</span><br />{0}", x2)); + + + response.Write(String.Format("<br /><br /><span style=\"color:red\">移除多余的Tags:</span><br />{0}", tagsManager.RemoveAutoTags(x2))); + + + } + + /// <summary> + /// 返回样式表链接 + /// </summary> + /// <returns></returns> + public virtual string ReturnStyleLink() + { + return String.Format("<style type=\"text/css\">{0}</style>", Resource.managestyle); + } + + #region test + + /* + /// <summary> + /// 给关键字加链接,同一关键字只加一次 + /// </summary> + /// <param name="src">源字符串</param> + /// <param name="keys">关键字泛型</param> + /// <returns>替换后结果</returns> + private string keyAddUrl(string src, List<string> keys) + { + Regex reg = new Regex(@"(?i)(?:^|(?<!<a\b[^<>]*)>)[^<>]*(?:<|$)"); + int length = 0; + string temp = string.Empty; + return reg.Replace(src, delegate(Match m) + { + temp = m.Value; + length = temp.Length; + for (int i = keys.Count - 1; i >= 0;i--) + { + temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!{0}|</?a\b).)*)(?<tag>{0})", Regex.Escape(keys[i])), @"$1<a href=""http://www.21shipin.com"" target=""_blank"" title=""${tag}"">${tag}</a>"); + if (length != temp.Length) + { + keys.Remove(keys[i]); + } + length = temp.Length; + } + return temp; + }); + } + private void test() + { + //调用 + string str1 = "我想学习c语言教程,我想看的是C语言视频教程,其它什么<a href=\"http://www.21shipin.com\" target=\"_blank\" title=\"C语言\">C语言</a>教程,我都不想看。我喜欢C语言,还是C语言。"; + List<string> keys = new List<string>(new string[] { "c语言", "C语言教程", "c语言视频教程" }); + string result = keyAddUrl(str1, keys); + response.Write(result); + } + */ + #endregion + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/OPSoft.Tags.csproj.user b/src/OPS.Library/Source Code/com/com.Tags/OPSoft.Tags.csproj.user similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/OPSoft.Tags.csproj.user rename to src/OPS.Library/Source Code/com/com.Tags/OPSoft.Tags.csproj.user diff --git a/src/OPS.Library/Source Code/com/com.Tags/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/com/com.Tags/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e330ad2 --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.Tags/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("标签组件-多配置文件版本")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("OPSoft Inc")] +[assembly: AssemblyProduct("OPSoft.Tags")] +[assembly: AssemblyCopyright("Copyright © 2012 OPSoft INC.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("696f3e0a-e689-4e26-ac7d-d67332966e4f")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.2.0.0")] +[assembly: AssemblyFileVersion("1.2.0.0")] diff --git a/src/OPS.Library/Source Code/com/com.Tags/Resource.Designer.cs b/src/OPS.Library/Source Code/com/com.Tags/Resource.Designer.cs new file mode 100644 index 0000000..e0c1422 --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.Tags/Resource.Designer.cs @@ -0,0 +1,116 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18408 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace Ops.Plugin.Tags { + using System; + + + /// <summary> + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// </summary> + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resource { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resource() { + } + + /// <summary> + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Ops.Plugin.Tags.Resource", typeof(Resource).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// 查找类似 body + ///{ + /// font-size:12px;color:#666; + ///} + ///a{color:#0066cc;} + ///a:hover{color:#006699;} + ///h1{display:none;} + ///table{background:#f0f0f0;width:100%;} + ///th{border-bottom:solid 1px #e5e5e5;background:#006699;color:White;font-size:12px;line-height:23px;} + ///td{background:white;font-size:12px;padding:2px;line-height:23px;} + ///td.center{text-align:center;} + ///input.button{border:outset 1px #f0f0f0;} + ///td input{border:solid 1px #DCE5F1;padding:1px;line-height:16px;height:20px;width:100%;color:#006699} + ///td input.ck{border:none [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string managestyle { + get { + return ResourceManager.GetString("managestyle", resourceCulture); + } + } + + /// <summary> + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + /// <head> + /// <title>标签管理</title> + /// ${css} + /// </head> + /// <body> + /// <!-- + /// + /// // + /// // Copyright 2011 @ OPSoft INC,All rights reseved. + /// // Project : 奥博网站管理系统 + /// // Name : 标签组件 + /// // Author : Newmin (newmin.net@gmail.com) + /// // Create : 2011/08/28 16:27 + /// // Product Link: http://www.ops.cc + /// // + /// + /// --> + /// + /// + /// <h1>标签管理</h1> + /// <form action="" method="post" target="tag_ifr" enctype="application/x-www-form [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string tagsmanager { + get { + return ResourceManager.GetString("tagsmanager", resourceCulture); + } + } + } +} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.resx b/src/OPS.Library/Source Code/com/com.Tags/Resource.resx similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.resx rename to src/OPS.Library/Source Code/com/com.Tags/Resource.resx diff --git a/src/OPS.Library/Source Code/com/com.Tags/Tag.cs b/src/OPS.Library/Source Code/com/com.Tags/Tag.cs new file mode 100644 index 0000000..b173942 --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.Tags/Tag.cs @@ -0,0 +1,42 @@ +// +// +// Copyright 2011 (C) OPSoft INC,All rights reseved. +// +// Project : tagsplugin +// File Name : Tag.cs +// Date : 8/27/2011 +// Author : +// +// + + +namespace Ops.Plugin.Tags +{ + + /// <summary> + /// ǩ + /// </summary> + public class Tag + { + /// <summary> + /// ʶID + /// </summary> + public int Indent { get; set; } + + /// <summary> + /// + /// </summary> + public string Name { get; set; } + + /// <summary> + /// + /// </summary> + public string Description { get; set; } + + /// <summary> + /// ӵַ + /// </summary> + public string LinkUri { get; set; } + } + +} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManage.cs b/src/OPS.Library/Source Code/com/com.Tags/TagsManage.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManage.cs rename to src/OPS.Library/Source Code/com/com.Tags/TagsManage.cs diff --git a/src/OPS.Library/Source Code/com/com.Tags/TagsManager.cs b/src/OPS.Library/Source Code/com/com.Tags/TagsManager.cs new file mode 100644 index 0000000..dbc01af --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.Tags/TagsManager.cs @@ -0,0 +1,515 @@ +// +// +// Copyright 2011 (C) OPSoft INC,All rights reseved. +// +// Project : tagsplugin +// File Name : Tags.cs +// Date : 8/27/2011 +// Author : Newmin +// --------------------------------------------- +// 2011-09-13 newmin[+]:滻ǩReplaceSingleTag() +// [!]:޸ĿĿ +// +// +namespace Ops.Plugin.Tags +{ + using System; + + using System.Collections; + using System.Collections.Generic; + using System.Text; + using System.Text.RegularExpressions; + using System.Xml; + using System.IO; + + + public class TagsManager + { + //ļ· + private string configFilePath; + + private string[] nameArray; + + private TagsCollection tags=new TagsCollection(); + + + public class TagsCollection:IEnumerable<Tag> + { + internal IDictionary<string, Tag> dict = new Dictionary<string, Tag>(); + + /// <summary> + /// ǩ + /// </summary> + public int Count + { + get { return dict.Count; } + } + + public IEnumerator<Tag> GetEnumerator() + { + + foreach (KeyValuePair<string,Tag> pair in dict) + { + yield return pair.Value; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } + + + public TagsManager(string configFilePath) + { + this.configFilePath = configFilePath; + if (!File.Exists(this.configFilePath)) + { + //ļ,򴴽ʼ + File.Create(this.configFilePath).Dispose(); + const string initData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<tags>\r\n\t<config/>\r\n\t<list/>\r\n</tags>"; + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(this.configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + this.LoadAllTags(); + } + + /// <summary> + /// ǩ + /// </summary> + public TagsCollection Tags { get { return tags; } } + + + /// <summary> + /// Tags + /// </summary> + /// <returns></returns> + private void LoadAllTags() + { + + XmlDocument xd = new XmlDocument(); + + //ļ + xd.Load(configFilePath); + + //бǩڵ + XmlNodeList tagNodes = xd.SelectNodes("/tags/list/tag"); + + // + tags.dict.Clear(); + + //ؼ + nameArray = new String[tagNodes.Count]; + + //ӹؼʵʵ䣬Ϊؼ鸳ֵ + for (int i = 0; i < tagNodes.Count; i++) + { + nameArray[i] = tagNodes[i].InnerText; + + tags.dict.Add(nameArray[i], + new Tag + { + Indent=int.Parse(tagNodes[i].Attributes["indent"].Value), + Name = tagNodes[i].InnerText, + Description = tagNodes[i].Attributes["description"].Value, + LinkUri = tagNodes[i].Attributes["linkuri"].Value + }); + } + + Array.Sort(nameArray, (a, b) => { return b.Length-a.Length; }); + + } + + /// <summary> + /// ӱǩ + /// </summary> + /// <param name="tag"></param> + /// <returns></returns> + public bool Add(Tag tag) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + //ǩǷظ + if (xd.SelectSingleNode(String.Format("/tags/list/tag[@name=\"{0}\"]", tag.Name)) != null) return false; + + //ȡһڵ + XmlNode node = xd.SelectSingleNode("/tags/list/tag[last()]"); + if (node != null) + { + int tagIndex; + int.TryParse(node.Attributes["indent"].Value, out tagIndex); + tag.Indent = tagIndex + 1; + } + else + { + tag.Indent=1; + } + + + //бǩڵ + XmlNode root = xd.SelectSingleNode("/tags/list"); + + XmlNode tagNode = xd.CreateElement("tag"); + + XmlAttribute xn =xd.CreateAttribute("indent"); + xn.Value = tag.Indent.ToString(); + tagNode.Attributes.Append(xn); + + //xn = xd.CreateAttribute("name"); + //xn.Value = tag.Name; + //tagNode.Attributes.Append(xn); + + xn = xd.CreateAttribute("description"); + xn.Value = tag.Description; + tagNode.Attributes.Append(xn); + + xn = xd.CreateAttribute("linkuri"); + xn.Value = tag.LinkUri; + tagNode.Attributes.Append(xn); + + tagNode.InnerText = tag.Name; + + root.AppendChild(tagNode); + + // + xd.Save(configFilePath); + + //ݲ¼ + LoadAllTags(); + + return true; + + } + + /// <summary> + /// ȡ + /// </summary> + /// <param name="key"></param> + /// <returns></returns> + public string GetConfig(string key) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]",key)); + if (keyNode != null) + { + return keyNode.Attributes["value"].Value; + } + return null; + } + + /// <summary> + /// ޸ + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + public void SetConfig(string key, string value) + { + + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]", key)); + if (keyNode != null) + { + keyNode.Attributes["value"].Value = value; + } + else + { + XmlNode rootNode = xd.SelectSingleNode("/tags/config"); + keyNode = xd.CreateElement("add"); + + XmlAttribute xa=xd.CreateAttribute("key"); + xa.Value=key; + keyNode.Attributes.Append(xa); + + xa=xd.CreateAttribute("value"); + xa.Value=value; + keyNode.Attributes.Append(xa); + + rootNode.AppendChild(keyNode); + } + + xd.Save(configFilePath); + } + + /// <summary> + /// ±ǩ + /// </summary> + /// <param name="tag"></param> + public void Update(Tag tag) + { + + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", tag.Indent.ToString())); + + tagNode.InnerText = tag.Name; + tagNode.Attributes["description"].Value = tag.Description; + tagNode.Attributes["linkuri"].Value = tag.LinkUri; + + // + xd.Save(configFilePath); + + //ݲ¼ + LoadAllTags(); + + } + + /// <summary> + /// ɾǩ + /// </summary> + /// <param name="id"></param> + public void Delete(string id) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode root = xd.SelectSingleNode("/tags/list"); + XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", id)); + + if (tagNode != null) + { + root.RemoveChild(tagNode); + xd.Save(configFilePath); + + //ݲ¼ + LoadAllTags(); + } + } + + /// <summary> + /// ƻȡǩ + /// </summary> + /// <param name="name"></param> + /// <returns></returns> + private Tag FindByName(string name) + { + if (tags.dict.Keys.Contains(name)) return tags.dict[name]; + return null; + } + + private string Replace(string content,bool openInBlank) + { + //if (!defaultTagLinkFormat.Contains("{0}")) throw new ArgumentException("{0}ʾñǩID"); + + Tag tag; + Regex reg; + + //ǩӸʽ + string tagLinkFormat =openInBlank? + "<a href=\"{0}\" title=\"{1}\" class=\"auto-tag\" target=\"_blank\">{2}</a>" : + "<a href=\"{0}\" title=\"{1}\" class=\"auto-tag\">{2}</a>"; + + + foreach (string key in nameArray) + { + tag=FindByName(key); + if(tag==null)continue; + + reg = new Regex(String.Format("<a[^>]+>(?<key>{0})</a>|(?!<a[^>]*)(?<key>{0})(?![^<]*</a>)", Regex.Escape(key)), RegexOptions.IgnoreCase); + + + content = reg.Replace(content, match => + { + return String.Format(tagLinkFormat, + String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, + tag.Description, + key); + }); + } + + return content; + } + + + /// <summary> + /// 滻 + /// </summary> + /// <param name="content"></param> + /// <param name="openInBlank"></param> + /// <param name="singleMode"></param> + /// <returns></returns> + public string Replace(string content, bool openInBlank,bool singleMode) + { + //ȫ滻 + if (!singleMode) return Replace(content, openInBlank); + + Tag tag; + Regex reg; + + // + int _index=0; + + foreach(string key in nameArray) + { + tag = FindByName(key); + if (tag == null) continue; + + reg = new Regex(String.Format("<a[^>]+>(?<key>{0})</a>|(?!<a[^>]*)(?<key>{0})(?![^<]*</a>)", + Regex.Escape(key)), RegexOptions.IgnoreCase); + + + content = reg.Replace(content, match => + { + + if (++_index == 1) + { + return String.Format( + + //ǩӸʽ + openInBlank ?"<a href=\"{0}\" title=\"{1}\" class=\"auto-tag\" target=\"_blank\">{2}</a>" : + "<a href=\"{0}\" title=\"{1}\" class=\"auto-tag\">{2}</a>", + + + String.IsNullOrEmpty(tag.LinkUri) ?"javascript:;":tag.LinkUri, + tag.Description, + key); + } + else + { + return match.Groups["key"].Value; + } + }); + + _index = 0; + } + return content; + } + + /// <summary> + /// ǩ滻 + /// </summary> + /// <param name="content"></param> + /// <returns></returns> + public string ReplaceSingleTag(string content) + { + return Replace(content, true, true); + } + + /// <summary> + /// ƳڵTag + /// </summary> + /// <param name="content"></param> + /// <returns></returns> + public string RemoveAutoTags(string content) + { + string linkText; + return Regex.Replace(content, "<a(.+?)class=\"auto-tag\"[^>]+>(.+?)</a>", match => + { + linkText = match.Groups[2].Value; + if (!tags.dict.Keys.Contains(linkText)) + { + return linkText; + } + return match.Value; + },RegexOptions.Multiline); + } + + + /// <summary> + /// 滻Ϊǩ + /// </summary> + /// <param name="defaultTagLinkFormat"></param> + /// <param name="content"></param> + /// <returns></returns> + private string Replace2(string content) + { + return null; + + + + Regex reg = new Regex(@"(?i)(?:^|(?<!<a\b[^<>]*)>)[^<>]*(?:<|$)"); + +#if DEBUG + //System.Web.HttpContext.Current.Response.Write(String.Format("<br ><br />ƥ{0}<br /><br />",reg.IsMatch(content))); + + + + +#endif + //int length = 0; + string temp; + Tag tag; + + //Ѿӵջ,ȷֻ滻һ + Stack<int> stack = new Stack<int>(); + + return reg.Replace(content, m => + { + temp =Regex.Replace(m.Value,"<|>|\\/",String.Empty); + + + // System.Web.HttpContext.Current.Response.Write(String.Format("<br />({0})<br />", m.Value)); + + //length = temp.Length; + + //ؼ,ұ֤ؼвջ + for (int i = nameArray.Length - 1; i >= 0 && !stack.Contains(i); i--) + { + tag = this.FindByName(nameArray[i]); + + if (tag != null) + { + temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!{0}|</?a\b).)*)(?<tag>{0})", Regex.Escape(tag.Name)) + , String.Format("$1<a href=\"{0}\" target=\"_blank\" title=\"{1}\">{2}</a>", + String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, //δӣʹĬϸʽ + tag.Description, "${tag}")); + } + + //ֻ֤滻һ + stack.Push(i); + + // if (length != temp.Length) + //{ + // stack.Push(i); + + // } + //length = temp.Length; + } + + return temp; + }); + } + + /// <summary> + /// ؼּӣͬһؼֻһ + /// </summary> + /// <param name="content">Դַ</param> + /// <param name="keys">ؼַ</param> + /// <returns>滻</returns> + private string keyAddUrl(string content) + { + return null; + /* + Regex reg = new Regex(@"(?i)(?:^|(?<!<a\b[^<>]*)>)[^<>]*(?:<|$)"); + int length = 0; + string temp; + Tag tag; + + return reg.Replace(content, m => + { + temp = m.Value; + length = temp.Length; + for (int i = tags.Count - 1; i >= 0; i--) + { + tag = this.FindByName(nameArray[i]); + temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!{0}|</?a\b).)*)(?<tag>{0})", Regex.Escape(tag.Name)) + , String.Format("$1<a href=\"{0}\" target=\"_blank\" title=\"{1}\">${tag}</a>",tag.LinkUri,tag.Description)); + + if (length != temp.Length) + { + //tags.nameDict.Remove(tags.nameDict[i]); + } + length = temp.Length; + } + return temp; + });*/ + } + } +} diff --git a/src/OPS.Library/Source Code/com/com.Tags/com.Tags.csproj b/src/OPS.Library/Source Code/com/com.Tags/com.Tags.csproj new file mode 100644 index 0000000..c22c9aa --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.Tags/com.Tags.csproj @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{1E9FCAD5-DF56-469B-BCEB-806BF9085A47}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Ops.Plugin.Tags</RootNamespace> + <AssemblyName>com.Tags</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\Bin\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Web" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Resource.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resource.resx</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Tag.cs" /> + <Compile Include="TagsManager.cs" /> + <Compile Include="HttpTags.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="managestyle.css" /> + <Content Include="tagsmanager.html" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Resource.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resource.Designer.cs</LastGenOutput> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/managestyle.css b/src/OPS.Library/Source Code/com/com.Tags/managestyle.css similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/managestyle.css rename to src/OPS.Library/Source Code/com/com.Tags/managestyle.css diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/tagsmanager.html b/src/OPS.Library/Source Code/com/com.Tags/tagsmanager.html similarity index 98% rename from src/toolkit/AtNet.DevFw.Toolkit.Tags/tagsmanager.html rename to src/OPS.Library/Source Code/com/com.Tags/tagsmanager.html index 0c311bc..98490ca 100644 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/tagsmanager.html +++ b/src/OPS.Library/Source Code/com/com.Tags/tagsmanager.html @@ -8,7 +8,7 @@ <!-- // - // Copyright 2011 @ S1N1.COM,All rights reseved. + // Copyright 2011 @ OPSoft INC,All rights reseved. // Project : 奥博网站管理系统 // Name : 标签组件 // Author : Newmin (newmin.net@gmail.com) diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/ConsoleApplication1.csproj b/src/OPS.Library/Source Code/com/com.region/ConsoleApplication1/ConsoleApplication1.csproj similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/ConsoleApplication1.csproj rename to src/OPS.Library/Source Code/com/com.region/ConsoleApplication1/ConsoleApplication1.csproj diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Program.cs b/src/OPS.Library/Source Code/com/com.region/ConsoleApplication1/Program.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Program.cs rename to src/OPS.Library/Source Code/com/com.region/ConsoleApplication1/Program.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/com/com.region/ConsoleApplication1/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/com/com.region/ConsoleApplication1/Properties/AssemblyInfo.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region.sln b/src/OPS.Library/Source Code/com/com.region/com.region.sln similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region.sln rename to src/OPS.Library/Source Code/com/com.region/com.region.sln diff --git a/src/OPS.Library/Source Code/com/com.region/com.region/Define.cs b/src/OPS.Library/Source Code/com/com.region/com.region/Define.cs new file mode 100644 index 0000000..fc56e2d --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.region/com.region/Define.cs @@ -0,0 +1,17 @@ +namespace Ops.Regions +{ + using System.Text.RegularExpressions; + using ops.region; + public static class Define + { + public static string PROVINCES =OptXML(RegionRes.provinces); + public static string CITIES = OptXML(RegionRes.cities); + public static string DISTRICTS=OptXML(RegionRes.districts); + + static string OptXML(string xmlContent) + { + xmlContent = Regex.Replace(xmlContent, "(\n|\r)\\s*", ""); + return xmlContent; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/com.region/com.region/Entity.cs b/src/OPS.Library/Source Code/com/com.region/com.region/Entity.cs new file mode 100644 index 0000000..f8c883e --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.region/com.region/Entity.cs @@ -0,0 +1,25 @@ +namespace Ops.Regions +{ + public struct Province + { + public int ID { get; set; } + public string Name { get; set; } + public string Text { get; set; } + } + public struct City + { + public int ID { get; set; } + public int Pid { get; set; } + public string Zip { get; set; } + public string Name { get; set; } + public string Text { get; set; } + } + + public struct District + { + public int ID { get; set; } + public int Cid { get; set; } + public string Name { get; set; } + public string Text { get; set; } + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/com/com.region/com.region/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/com/com.region/com.region/Properties/AssemblyInfo.cs diff --git a/src/OPS.Library/Source Code/com/com.region/com.region/Region.cs b/src/OPS.Library/Source Code/com/com.region/com.region/Region.cs new file mode 100644 index 0000000..f2d0754 --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.region/com.region/Region.cs @@ -0,0 +1,156 @@ +namespace Ops.Regions +{ + using System.Collections.Generic; + using System.Xml; + + public static class Region + { + #region 获取基本数据 + + private static IEnumerable<Province> provinces; + public static IEnumerable<Province> Provinces + { + get + { + if (provinces == null) + { + provinces = GetProvinces(); + } + return provinces; + } + } + + private static IEnumerable<City> cities; + public static IEnumerable<City> Cities + { + get + { + if (cities == null) + { + cities = GetCitys(); + } + return cities; + } + } + + private static IEnumerable<District> districts; + public static IEnumerable<District> Districts + { + get + { + if (districts == null) + { + districts = GetDistricts(); + } + return districts; + } + } + + + private static IEnumerable<Province> GetProvinces() + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(Define.PROVINCES); + + string name; + + foreach (XmlNode xn in xd.SelectNodes("/items/item")) + { + name = xn.Attributes[1].Value; + yield return new Province + { + ID = int.Parse(xn.Attributes[0].Value), + Name = name, + Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() + }; + } + } + + + private static IEnumerable<City> GetCitys() + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(Define.CITIES); + + string name; + + foreach (XmlNode xn in xd.SelectNodes("/items/item")) + { + name = xn.Attributes[1].Value; + yield return new City + { + ID = int.Parse(xn.Attributes[0].Value), + Pid = int.Parse(xn.Attributes[2].Value), + Name = name, + Zip = xn.Attributes[3].Value, + Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() + }; + } + } + + private static IEnumerable<District> GetDistricts() + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(Define.DISTRICTS); + + string name; + + foreach (XmlNode xn in xd.SelectNodes("/items/item")) + { + name = xn.Attributes[1].Value; + yield return new District + { + ID = int.Parse(xn.Attributes[0].Value), + Cid = int.Parse(xn.Attributes[2].Value), + Name = name, + Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() + }; + } + } + + #endregion + + + public static IEnumerable<City> GetCities(int provinceID) + { + foreach (City c in Cities) + { + if (c.Pid == provinceID) + yield return c; + } + } + + public static IEnumerable<District> GetDistricts(int cityID) + { + foreach (District d in Districts) + { + if (d.Cid == cityID) + yield return d; + } + } + + public static Province GetProvince(string provinceName) + { + foreach (Province p in Provinces) + { + if (string.Compare(p.Name, provinceName,true)==0) + { + return p; + } + } + return default(Province); + } + + public static City GetCity(string cityName) + { + foreach (City p in Cities) + { + if (string.Compare(p.Name, cityName, true) == 0) + { + return p; + } + } + return default(City); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/com/com.region/com.region/RegionRes.Designer.cs b/src/OPS.Library/Source Code/com/com.region/com.region/RegionRes.Designer.cs new file mode 100644 index 0000000..d3a5790 --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.region/com.region/RegionRes.Designer.cs @@ -0,0 +1,148 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18408 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace ops.region { + using System; + + + /// <summary> + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// </summary> + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class RegionRes { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal RegionRes() { + } + + /// <summary> + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ops.region.RegionRes", typeof(RegionRes).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// 查找类似 <?xml version="1.0" encoding="utf-8"?> + ///<items> + /// <item id="1" name="北京市" pid="1" zip="100000"></item> + /// <item id="2" name="天津市" pid="2" zip="100000"></item> + /// <item id="3" name="石家庄市" pid="3" zip="050000"></item> + /// <item id="4" name="唐山市" pid="3" zip="063000"></item> + /// <item id="5" name="秦皇岛市" pid="3" zip="066000"></item> + /// <item id="6" name="邯郸市" pid="3" zip="056000"></item> + /// <item id="7" name="邢台市" pid="3" zip="054000"></item> + /// <item id="8" name="保定市" pid="3" zip="071000"></item> + /// <item id="9 [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string cities { + get { + return ResourceManager.GetString("cities", resourceCulture); + } + } + + /// <summary> + /// 查找类似 <?xml version="1.0" encoding="utf-8"?> + ///<items> + /// <item id="1" name="东城区" cid="1"></item> + /// <item id="2" name="西城区" cid="1"></item> + /// <item id="3" name="崇文区" cid="1"></item> + /// <item id="4" name="宣武区" cid="1"></item> + /// <item id="5" name="朝阳区" cid="1"></item> + /// <item id="6" name="丰台区" cid="1"></item> + /// <item id="7" name="石景山区" cid="1"></item> + /// <item id="8" name="海淀区" cid="1"></item> + /// <item id="9" name="门头沟区" cid="1"></item> + /// <item id="10" name="房山区" cid="1"></item> + /// <item id="11" name="通州区" cid [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string districts { + get { + return ResourceManager.GetString("districts", resourceCulture); + } + } + + /// <summary> + /// 查找类似 USE [DBCT_Dev] + ///GO + ///IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[S_Province]') AND type in (N'U')) + ///BEGIN + ///CREATE TABLE [dbo].[S_Province]( + /// [ProvinceID] [bigint] IDENTITY(1,1) NOT NULL, + /// [ProvinceName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + /// [DateCreated] [datetime] NULL, + /// [DateUpdated] [datetime] NULL, + /// CONSTRAINT [PK_S_Province] PRIMARY KEY CLUSTERED + ///( + /// [ProvinceID] ASC + ///)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OF [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string pcd_AllData_V1 { + get { + return ResourceManager.GetString("pcd_AllData_V1", resourceCulture); + } + } + + /// <summary> + /// 查找类似 <?xml version="1.0" encoding="utf-8"?> + ///<items> + /// <item id="1" name="北京市"></item> + /// <item id="2" name="天津市"></item> + /// <item id="3" name="河北省"></item> + /// <item id="4" name="山西省"></item> + /// <item id="5" name="内蒙古自治区"></item> + /// <item id="6" name="辽宁省"></item> + /// <item id="7" name="吉林省"></item> + /// <item id="8" name="黑龙江省"></item> + /// <item id="9" name="上海市"></item> + /// <item id="10" name="江苏省"></item> + /// <item id="11" name="浙江省"></item> + /// <item id="12" name="安徽省"></item> + /// <item id="13" name="福建省"></item> + /// [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string provinces { + get { + return ResourceManager.GetString("provinces", resourceCulture); + } + } + } +} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.resx b/src/OPS.Library/Source Code/com/com.region/com.region/RegionRes.resx similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.resx rename to src/OPS.Library/Source Code/com/com.region/com.region/RegionRes.resx diff --git a/src/OPS.Library/Source Code/com/com.region/com.region/com.region.csproj b/src/OPS.Library/Source Code/com/com.region/com.region/com.region.csproj new file mode 100644 index 0000000..90c208b --- /dev/null +++ b/src/OPS.Library/Source Code/com/com.region/com.region/com.region.csproj @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{84942A04-73A1-447A-9D39-CC1CF88B5158}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>ops.region</RootNamespace> + <AssemblyName>ops.region</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\Bin\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Define.cs" /> + <Compile Include="Entity.cs" /> + <Compile Include="Region.cs" /> + <Compile Include="RegionRes.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>RegionRes.resx</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="RegionRes.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>RegionRes.Designer.cs</LastGenOutput> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <Content Include="res\cities.xml" /> + <Content Include="res\districts.xml" /> + <Content Include="res\pcd_AllData_V1.sql" /> + <Content Include="res\provinces.xml" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj.user b/src/OPS.Library/Source Code/com/com.region/com.region/com.region.csproj.user similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj.user rename to src/OPS.Library/Source Code/com/com.region/com.region/com.region.csproj.user diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/cities.xml b/src/OPS.Library/Source Code/com/com.region/com.region/res/cities.xml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/cities.xml rename to src/OPS.Library/Source Code/com/com.region/com.region/res/cities.xml diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/districts.xml b/src/OPS.Library/Source Code/com/com.region/com.region/res/districts.xml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/districts.xml rename to src/OPS.Library/Source Code/com/com.region/com.region/res/districts.xml diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/pcd_AllData_V1.sql b/src/OPS.Library/Source Code/com/com.region/com.region/res/pcd_AllData_V1.sql similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/pcd_AllData_V1.sql rename to src/OPS.Library/Source Code/com/com.region/com.region/res/pcd_AllData_V1.sql diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/provinces.xml b/src/OPS.Library/Source Code/com/com.region/com.region/res/provinces.xml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/provinces.xml rename to src/OPS.Library/Source Code/com/com.region/com.region/res/provinces.xml diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/ExportController.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/Controller/ExportController.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/ExportController.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/Controller/ExportController.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/DataQueryService.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/DataQueryService.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/DataQueryService.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/DataQueryService.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/export.js b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/export.js similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/export.js rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/QueryAndExport/export.js diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/Export/Setup.cshtml b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/View/Export/Setup.cshtml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/Export/Setup.cshtml rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/View/Export/Setup.cshtml diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/BaseDataExportPortal.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/BaseDataExportPortal.cs new file mode 100644 index 0000000..b9021a0 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/BaseDataExportPortal.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Globalization; +using System.Linq; + +namespace Ops.Toolkit.Data.Export +{ + /// <summary> + /// 数据导出入口基础类 + /// </summary> + [Serializable] + public abstract class BaseDataExportPortal : IDataExportPortal + { + private readonly DataColumnMapping[] _columnNames; + + protected BaseDataExportPortal(DataColumnMapping[] columnNames) + { + this._columnNames = columnNames; + } + + protected BaseDataExportPortal(string configPath) + { + ExportUtil.ReadExportConfigFormFile(configPath, out this._columnNames); + } + + public abstract string PortalKey { get; set; } + + public DataColumnMapping[] ColumnNames + { + get { return this._columnNames; } + } + + public abstract DataTable GetShemalAndData(Hashtable parameters, out int totalCount); + + public abstract DataRow GetTotalView(Hashtable parameters); + + public virtual IDictionary<string, string> GetExportFieldAndName(String[] exportFields) + { + if (this._columnNames == null || this._columnNames.Length == 0) return null; + + IDictionary<string, string> dictionary = new Dictionary<string, string>(); + + foreach (string columnField in exportFields) + { + DataColumnMapping map = this._columnNames.SingleOrDefault( + a => String.Compare(a.Field, columnField, true, + CultureInfo.InvariantCulture) == 0); + + if (map.Field != null) + { + dictionary.Add(map.Field, map.Name); + } + } + return dictionary; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/DataColumnMapping.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/DataColumnMapping.cs new file mode 100644 index 0000000..2f7537b --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/DataColumnMapping.cs @@ -0,0 +1,40 @@ +using System; + +namespace Ops.Toolkit.Data.Export +{ + /// <summary> + /// 列映射 + /// </summary> + [Serializable] + public struct DataColumnMapping + { + private string _field; + private string _name; + + public DataColumnMapping(string field, string name) + { + this._field = field; + this._name = name; + } + + public DataColumnMapping(string field) : this(field, field) + { + } + + /// <summary> + /// 列的字段 (通常是列在数据源的名称) + /// </summary> + public string Field + { + get { return this._field; } + } + + /// <summary> + /// 列的名称 + /// </summary> + public string Name + { + get { return this._name; } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/DataExportDirector.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/DataExportDirector.cs new file mode 100644 index 0000000..a1bb8a5 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/DataExportDirector.cs @@ -0,0 +1,78 @@ +using System.Collections; +using System.Text.RegularExpressions; +using Ops.Toolkit.Data; +using System; +using System.Collections.Generic; + +namespace Ops.Toolkit.Data.Export +{ + public static class DataExportDirector + { + public static byte[] Export(IDataExportPortal portal, ExportParams parameters, IDataExportProvider provider) + { + int totalCount; + IDictionary<string, String> dict = null; + + //获取参数的索引及名称 + if (parameters != null && parameters.ExportFields != null) + { + dict = portal.GetExportFieldAndName(parameters.ExportFields); + } + return + provider.Export( + portal.GetShemalAndData(parameters == null ? null : parameters.Parameters, out totalCount), dict); + } + + public static ExportParams GetExportParams(string paramMappings, string[] columnNames) + { + //string[] splitArr; + + //object[,] data; + //string[] paramsArr = paramMappings.Split(';'); + + //if (paramMappings == "") + //{ + // data = new object[0, 2]; + //} + //else + //{ + // data = new object[paramsArr.Length, 2]; + // //添加传入的参数 + // for (int i = 0; i < paramsArr.Length; i++) + // { + // splitArr = paramsArr[i].Split(':'); + // data[i, 0] = splitArr[0]; + // data[i, 1] = paramsArr[i].Substring(splitArr[0].Length + 1); + // } + //} + Hashtable hash = new Hashtable(); + Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); + MatchCollection mcs = regex.Matches(paramMappings); + foreach (Match m in mcs) + { + hash.Add(m.Groups[1].Value, m.Groups[2].Value); + } + + return new ExportParams(hash, columnNames); + } + + ///// <summary> + ///// 根据类名创建导出 + ///// </summary> + ///// <param name="exportPortalClassFullName"></param> + ///// <param name="provider"></param> + ///// <param name="parameters"></param> + ///// <returns></returns> + //public static byte[] Export(string exportPortalClassFullName, + // IDataExportProvider provider, + // ExportParams parameters) + //{ + + // IDataExportPortal portal = ExportUtil.GetNotNullPortal(exportPortalClassFullName); + + + // portal.Parameters = parameters; + // return Export(portal, provider); + //} + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportItemConfig.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportItemConfig.cs new file mode 100644 index 0000000..ff2a8b0 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportItemConfig.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Ops.Toolkit.Data.Export +{ + /// <summary> + /// 导入导出项目配置 + /// </summary> + public struct ExportItemConfig + { + private readonly string _columnMappingString; + private readonly string _query; + private readonly string _total; + private readonly string _import; + + public ExportItemConfig(string columnMappingString, string query, string total, string import) + { + this._columnMappingString = columnMappingString; + this._query = query; + this._total = total; + this._import = import; + } + + + public string ColumnMappingString + { + get { return this._columnMappingString; } + } + + public string Query + { + get { return this._query; } + } + + public string Total + { + get { return this._total; } + } + + public string Import + { + get { return this._import; } + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportParams.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportParams.cs new file mode 100644 index 0000000..f1a3af2 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportParams.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections; + +namespace Ops.Toolkit.Data.Export +{ + /// <summary> + /// 数据导出参数 + /// </summary> + [Serializable] + public class ExportParams : IEnumerable + { + private Hashtable _parameters; + + public ExportParams(Object[,] data, String[] exportColumnFields) : this(exportColumnFields) + { + if (data == null) return; + + if (data.GetLength(1) != 2) + { + throw new ArgumentException("参数维度应为2"); + } + + for (int i = 0; i < data.GetLength(0); i++) + { + this.Parameters.Add(data[i, 0], data[i, 1]); + } + } + + public ExportParams(Hashtable hash, String[] exportColumnFields) + : this(exportColumnFields) + { + if (hash != null) + { + this._parameters = hash; + } + } + + public ExportParams(String[] exportColumnFields) + { + this.ExportFields = exportColumnFields; + } + + /// <summary> + /// 要到导出的列(对应IDataExportPortal的ColumnNames或DataTable的Shelma + /// </summary> + public String[] ExportFields { get; private set; } + + /// <summary> + /// 参数 + /// </summary> + public Hashtable Parameters + { + get { return this._parameters ?? (this._parameters = new Hashtable()); } + } + + public IEnumerator GetEnumerator() + { + return this.Parameters.GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs new file mode 100644 index 0000000..f0b8f54 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; + +namespace Ops.Toolkit.Data.Export.ExportProvider +{ + public class CsvExportProvider : IDataExportProvider + { + private const string split = ","; + + public byte[] Export(DataTable dt, IDictionary<string, string> columns) + { + string strLine = ""; + StreamWriter sw; + MemoryStream ms = new MemoryStream(); + + bool isReColumn = !(columns == null || columns.Count == 0); + int tmpInt = 0; + sw = new StreamWriter(ms, Encoding.UTF8); + + //表头 + + if (isReColumn) + { + foreach (string columnName in columns.Keys) + { + if (tmpInt++ > 0) + strLine += split; + strLine += columns[columnName]; + } + } + else + { + for (int i = 0; i < dt.Columns.Count; i++) + { + if (i > 0) + strLine += split; + strLine += dt.Columns[i].ColumnName; + } + } + strLine.Remove(strLine.Length - 1); + + sw.WriteLine(strLine); + + + //表的内容 + strLine = ""; + for (int j = 0; j < dt.Rows.Count; j++) + { + strLine = ""; + + if (isReColumn) + { + tmpInt = 0; + foreach (string columnName in columns.Keys) + { + if (tmpInt++ != 0) + strLine += split; + if (dt.Rows[j][columnName] != null) + { + string cell = dt.Rows[j][columnName].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + else + { + int colCount = dt.Columns.Count; + for (int k = 0; k < colCount; k++) + { + if (k > 0 && k < colCount) + strLine += split; + if (dt.Rows[j][k] == null) + strLine += ""; + else + { + string cell = dt.Rows[j][k].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + sw.WriteLine(strLine); + } + + sw.Close(); + byte[] bytes = ms.ToArray(); + + ms.Dispose(); + + return bytes; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs new file mode 100644 index 0000000..5c7846d --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; + +namespace Ops.Toolkit.Data.Export.ExportProvider +{ + public class ExcelExportProvider : IDataExportProvider + { + private const string split = "\t"; + + public byte[] Export(DataTable dt, IDictionary<string, string> columns) + { + string strLine = ""; + StreamWriter sw; + MemoryStream ms = new MemoryStream(); + + bool isReColumn = !(columns == null || columns.Count == 0); + int tmpInt = 0; + sw = new StreamWriter(ms, Encoding.UTF8); + + //表头 + + if (isReColumn) + { + foreach (string columnName in columns.Keys) + { + if (tmpInt++ > 0) + strLine += split; + strLine += columns[columnName]; + } + } + else + { + for (int i = 0; i < dt.Columns.Count; i++) + { + if (i > 0) + strLine += split; + strLine += dt.Columns[i].ColumnName; + } + } + strLine.Remove(strLine.Length - 1); + + sw.WriteLine(strLine); + + + //表的内容 + strLine = ""; + for (int j = 0; j < dt.Rows.Count; j++) + { + strLine = ""; + + if (isReColumn) + { + tmpInt = 0; + foreach (string columnName in columns.Keys) + { + if (tmpInt++ != 0) + strLine += split; + if (dt.Rows[j][columnName] != null) + { + string cell = dt.Rows[j][columnName].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + else + { + int colCount = dt.Columns.Count; + for (int k = 0; k < colCount; k++) + { + if (k > 0 && k < colCount) + strLine += split; + if (dt.Rows[j][k] == null) + strLine += ""; + else + { + string cell = dt.Rows[j][k].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + sw.WriteLine(strLine); + } + + sw.Close(); + byte[] bytes = ms.ToArray(); + + ms.Dispose(); + + return bytes; + } + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs new file mode 100644 index 0000000..2c15a18 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; + +namespace Ops.Toolkit.Data.Export.ExportProvider +{ + public sealed class TextExportProvider : IDataExportProvider + { + private const string split = " "; + + public byte[] Export(DataTable dt, IDictionary<string, string> columns) + { + string strLine = ""; + StreamWriter sw; + MemoryStream ms = new MemoryStream(); + + bool isReColumn = !(columns == null || columns.Count == 0); + int tmpInt = 0; + sw = new StreamWriter(ms, Encoding.UTF8); + + //表头 + + if (isReColumn) + { + foreach (string columnName in columns.Keys) + { + if (tmpInt++ > 0) + strLine += split; + strLine += columns[columnName]; + } + } + else + { + for (int i = 0; i < dt.Columns.Count; i++) + { + if (i > 0) + strLine += split; + strLine += dt.Columns[i].ColumnName; + } + } + strLine.Remove(strLine.Length - 1); + + sw.WriteLine(strLine); + + + //表的内容 + strLine = ""; + for (int j = 0; j < dt.Rows.Count; j++) + { + strLine = ""; + + if (isReColumn) + { + tmpInt = 0; + foreach (string columnName in columns.Keys) + { + if (tmpInt++ != 0) + strLine += split; + if (dt.Rows[j][columnName] != null) + { + string cell = dt.Rows[j][columnName].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + else + { + int colCount = dt.Columns.Count; + for (int k = 0; k < colCount; k++) + { + if (k > 0 && k < colCount) + strLine += split; + if (dt.Rows[j][k] == null) + strLine += ""; + else + { + string cell = dt.Rows[j][k].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + sw.WriteLine(strLine); + } + + sw.Close(); + byte[] bytes = ms.ToArray(); + + ms.Dispose(); + + return bytes; + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportUtil.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportUtil.cs new file mode 100644 index 0000000..b5f2b47 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/ExportUtil.cs @@ -0,0 +1,160 @@ +using System; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Xml; + +namespace Ops.Toolkit.Data.Export +{ + public static class ExportUtil + { + /// <summary> + /// 通过类名来获取导出入口 + /// </summary> + /// <param name="exportPortalClassFullName"></param> + /// <returns></returns> + public static IDataExportPortal GetPortal(string exportPortalClassFullName) + { + IDataExportPortal portal = null; + + Assembly[] asses = AppDomain.CurrentDomain.GetAssemblies(); + foreach (Assembly ass in asses) + { + Type type = ass.GetType(exportPortalClassFullName); + if (type != null) + { + portal = Activator.CreateInstance(type) as IDataExportPortal; + if (portal != null) break; + } + } + + return portal; + } + + /// <summary> + /// 通过类名来获取存在的导出入口 + /// </summary> + /// <param name="exportPortalClassFullName"></param> + /// <returns></returns> + public static IDataExportPortal GetNotNullPortal(string exportPortalClassFullName) + { + IDataExportPortal portal = GetPortal(exportPortalClassFullName); + if (portal == null) + { + throw new ArgumentNullException(String.Format("导出类型不存在或未实现接口:IDataExportPortal!类名:{0}", + exportPortalClassFullName)); + } + return portal; + } + + /// <summary> + /// 从文件中读取导出配置 + /// </summary> + /// <param name="filePath"></param> + /// <param name="columns"></param> + /// <param name="queryName"></param> + /// <returns></returns> + public static bool ReadExportConfigFormFile( + string filePath, + out DataColumnMapping[] columns) + { + return ReadExportConfigFormXml( + System.IO.File.ReadAllText(filePath), + null, + out columns); + } + + public static bool ReadExportConfigFormXml( + string xml, + string xpath, + out DataColumnMapping[] columns) + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(xml); + if (String.IsNullOrEmpty(xpath)) + { + xpath = "/item"; + } + XmlNode rootNode = xd.SelectSingleNode(xpath); + XmlNode node; + + if (rootNode == null) + { + throw new ArgumentNullException("xpath"); + } + + #region 获取列配置 + + node = rootNode.SelectSingleNode("column"); + if (node == null) + { + columns = null; + } + else + { + string columnMappingString = node.Attributes["mapping"].Value; + columns = GetColumnMappings(columnMappingString); + } + + #endregion + + return true; + } + + /// <summary> + /// 获取列映射数组 + /// </summary> + /// <param name="columnMappingString"></param> + /// <returns></returns> + public static DataColumnMapping[] GetColumnMappings(string columnMappingString) + { + DataColumnMapping[] columns; + Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); + MatchCollection mcs = regex.Matches(columnMappingString); + columns = new DataColumnMapping[mcs.Count]; + int i = 0; + foreach (Match m in mcs) + { + columns[i++] = new DataColumnMapping(m.Groups[1].Value, m.Groups[2].Value); + } + return columns; + } + + + public static ExportItemConfig GetExportItemFormXml(string xml, string xpath) + { + string mappingString; + string query; + string import; + string total; + XmlDocument xd = new XmlDocument(); + xd.LoadXml(xml); + if (String.IsNullOrEmpty(xpath)) + { + xpath = "/item"; + } + XmlNode rootNode = xd.SelectSingleNode(xpath); + XmlNode node; + + if (rootNode == null) + { + throw new ArgumentNullException("xpath"); + } + + node = rootNode.SelectSingleNode("column"); + mappingString = node == null ? null : node.Attributes["mapping"].Value; + + node = rootNode.SelectSingleNode("query"); + query = node == null ? null : node.InnerText; + + + node = rootNode.SelectSingleNode("import"); + import = node == null ? null : node.InnerText; + + + node = rootNode.SelectSingleNode("total"); + total = node == null ? null : node.InnerText; + + return new ExportItemConfig(mappingString, query, total, import); + } + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/IDataExportPortal.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/IDataExportPortal.cs new file mode 100644 index 0000000..844d59e --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/IDataExportPortal.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; + +namespace Ops.Toolkit.Data.Export +{ + public interface IDataExportPortal + { + /// <summary> + /// 入口键 + /// </summary> + string PortalKey { get; set; } + + /// <summary> + /// 导出的列名(比如:数据表是因为列,这里我需要列出中文列) + /// </summary> + DataColumnMapping[] ColumnNames { get; } + + + /// <summary> + /// 获取要导出的数据及表结构 + /// </summary> + /// <returns></returns> + DataTable GetShemalAndData(Hashtable parameters, out int totalCount); + + /// <summary> + /// 获取统计数据 + /// </summary> + /// <returns></returns> + DataRow GetTotalView(Hashtable parameters); + + /// <summary> + /// 根据参数获取导出列名及导出名称 + /// </summary> + /// <returns></returns> + IDictionary<string, String> GetExportFieldAndName(String[] exportFields); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/IDataExportProvider.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/IDataExportProvider.cs new file mode 100644 index 0000000..a74da53 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/IDataExportProvider.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using System.Data; + +namespace Ops.Toolkit.Data.Export +{ + public interface IDataExportProvider + { + /// <summary> + /// 导出 + /// </summary> + /// <param name="dt">数据表</param> + /// <param name="columns">要导出的列名及对应导出的列名,可为空</param> + /// <returns></returns> + byte[] Export(DataTable dt, IDictionary<string, string> columns); + } +} \ No newline at end of file diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs new file mode 100644 index 0000000..e764c05 --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs @@ -0,0 +1,108 @@ +using System.Text; + +namespace Ops.Toolkit.Data.Export.UI +{ + public static class WebExportOptionUIBuilder + { + public static string BuildColumnCheckHtml(IDataExportPortal portal) + { + StringBuilder sb = new StringBuilder(); + + + //================ Output Javascript ==================// + sb.Append(@"<script type=""text/javascript""> + var wbexp={ + config:{ + //处理请求的Url地址 + urlHandler:'', + //处理生成Json的对象 + jsonHandler:null, + params:null, + page:null + }, + doExport:function(portal){ + var data=this.config.jsonHandler.toQueryString('ui-export'); + if(this.config.params==null){ + var regMatch=/(\?|&)params=(.+)&*/i.exec(location.search); + this.config.params=regMatch?regMatch[2]:''; + } + if(!this.config.page){ + this.config.page=document.getElementById('export_iframe'); + } + this.config.page.src=this.config.urlHandler + + (this.config.urlHandler.indexOf('?')==-1?'?':'&') + + 'portal=' + portal + '&' + data + + '¶ms=' + this.config.params; + } + }; + </script>"); + + + sb.Append(@"<div class=""ui-export"" id=""ui-export"">"); + + + //====================== 导出格式 =====================// + + + sb.Append(@"<div><strong>选择导出格式</strong></div> + <ul class=""columnList""> + <li class=""export_format_excel""><input checked=""checked"" field=""ExportFormat"" style=""border:none"" name=""export_format"" type=""radio"" value=""excel"" id=""export_format_excel""/> + <label for=""wbexp_format_excel"">Excel文件</label> + </li> + <li class=""export_format_csv""><input type=""radio"" field=""ExportFormat"" style=""border:none"" name=""export_format"" value=""csv"" id=""export_format_csv""/> + <label for=""wbexp_format_csv"">CSV数据文件</label> + </li> + <li class=""export_format_txt""><input type=""radio"" field=""ExportFormat"" style=""border:none"" name=""export_format"" value=""txt"" id=""export_format_txt""/> + <label for=""wbexp_format_txt"">文本</label> + </li> + </ul><div style=""clear:both""></div><br />"); + + + //====================== 导出列 =======================// + if (portal.ColumnNames == null || portal.ColumnNames.Length == 0) + { + sb.Append("<em><strong>该导出方案不包含可选择的导出列</strong></em>"); + } + else + { + sb.Append(@"<div class=""selColumn""><strong>请选择要导出的列:</strong> + <ul class=""columnList"">"); + + int tmpInt = 0; + foreach (DataColumnMapping column in portal.ColumnNames) + { + sb.Append( + "<li><input type=\"checkbox\" style=\"border:none\" checked=\"checked\" field=\"export_fields[") + .Append(tmpInt.ToString()).Append("]\"") + .Append(@" id=""export_column_") + .Append(column.Field) + .Append("\" value=\"").Append(column.Field) + .Append("\"/><label for=\"export_column_") + .Append(column.Field) + .Append("\">").Append(column.Name) + .Append("</label></li>"); + + tmpInt++; + } + + sb.Append(@"</ul></div>"); + } + + sb.Append(@" + <iframe id=""export_iframe"" style=""display:none""></iframe> + <div style=""clear:both""></div> + </div>"); + sb.Append(@"<input type=""button"" class=""btn_export"" onclick=""wbexp.doExport('") + .Append(portal.PortalKey).Append(@"')"" value="" 导出 ""/>"); + + + return sb.ToString(); + } + + public static string BuildColumnCheckHtml(string exportPortalClassFullName) + { + IDataExportPortal portal = ExportUtil.GetPortal(exportPortalClassFullName); + return BuildColumnCheckHtml(portal); + } + } +} \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/Export/config/query_demo.xml b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/config/query_demo.xml similarity index 100% rename from J6/src/examples/com.mapfre.weixin/Export/config/query_demo.xml rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/config/query_demo.xml diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/DataExport.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/utils_demo/DataExport.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/DataExport.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/utils_demo/DataExport.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExportHandle.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/utils_demo/ExportHandle.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExportHandle.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Export/utils_demo/ExportHandle.cs diff --git a/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Ops.Toolkit.Data.csproj b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Ops.Toolkit.Data.csproj new file mode 100644 index 0000000..2a9b6dd --- /dev/null +++ b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Ops.Toolkit.Data.csproj @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{8A5B5504-8D72-4F30-A50E-5856BE419DEA}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Ops.Toolkit.Data</RootNamespace> + <AssemblyName>Ops.Toolkit.Data</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\Bin\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Export\BaseDataExportPortal.cs" /> + <Compile Include="Export\DataColumnMapping.cs" /> + <Compile Include="Export\DataExportDirector.cs" /> + <Compile Include="Export\ExportItemConfig.cs" /> + <Compile Include="Export\ExportParams.cs" /> + <Compile Include="Export\ExportProvider\CsvExportProvider.cs" /> + <Compile Include="Export\ExportProvider\CsvForExcelExportProvider.cs" /> + <Compile Include="Export\ExportProvider\TextExportProvider.cs" /> + <Compile Include="Export\ExportUtil.cs" /> + <Compile Include="Export\IDataExportPortal.cs" /> + <Compile Include="Export\IDataExportProvider.cs" /> + <Compile Include="Export\UI\WebExportOptionUIBuilder.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="Export\config\query_demo.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + <SubType>Designer</SubType> + </Content> + </ItemGroup> + <ItemGroup> + <Folder Include="Export\123\" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/J6/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj.user b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Ops.Toolkit.Data.csproj.user similarity index 100% rename from J6/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj.user rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Ops.Toolkit.Data.csproj.user diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Properties/AssemblyInfo.cs b/src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Properties/AssemblyInfo.cs rename to src/OPS.Library/Source Code/toolkit/Ops.Toolkit.Data/Properties/AssemblyInfo.cs diff --git a/src/core/AtNet.DevFw.Core/AtNet.DevFw.Core.csproj b/src/core/AtNet.DevFw.Core/AtNet.DevFw.Core.csproj deleted file mode 100644 index ea087a0..0000000 --- a/src/core/AtNet.DevFw.Core/AtNet.DevFw.Core.csproj +++ /dev/null @@ -1,149 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>9.0.21022</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{44E05D6C-5B0A-453A-913F-00124D1BF435}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>AtNet.DevFw</RootNamespace> - <AssemblyName>AtNet.DevFw.Core</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\dist\dll\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DocumentationFile>..\..\..\dist\dll\AtNet.DevFw.Core.XML</DocumentationFile> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\Bin\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup> - <SignAssembly>true</SignAssembly> - </PropertyGroup> - <PropertyGroup> - <AssemblyOriginatorKeyFile>atnet.devfw.snk</AssemblyOriginatorKeyFile> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.configuration" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Runtime.Serialization" /> - <Reference Include="System.Web" /> - <Reference Include="System.Xml" /> - <Reference Include="WindowsBase"> - <Private>True</Private> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="Framework\InnerAppDomainResolver.cs" /> - <Compile Include="Variable.cs" /> - <Compile Include="FwCtx.cs" /> - <Compile Include="Version.cs" /> - <Compile Include="Extensions\ILEmit.cs" /> - <Compile Include="Framework\Automation\EntityForm.cs" /> - <Compile Include="Framework\StringCreatorHandler.cs" /> - <Compile Include="Framework\IndexOfHandler.cs" /> - <Compile Include="Framework\Interface\ICallable.cs" /> - <Compile Include="Framework\IO\IoUtil.cs" /> - <Compile Include="Framework\AssemblyResolve.cs" /> - <Compile Include="Framework\JsonSerializer.cs" /> - <Compile Include="Framework\LogFile.cs" /> - <Compile Include="Framework\Security\Md5Crypto.cs" /> - <Compile Include="Framework\SettingFile.cs" /> - <Compile Include="Framework\Extensions\ICollectionExtensions.cs" /> - <Compile Include="Extensions\StreamExtensions.cs" /> - <Compile Include="Framework\Extensions\StringExtensions.cs" /> - <Compile Include="Framework\Extensions\TExtensions.cs" /> - <Compile Include="Framework\Extensions\HttpExtensions.cs" /> - <Compile Include="Framework\Graphic\GraphicsHelper.cs" /> - <Compile Include="Framework\Graphic\ImageGraphicsHandler.cs" /> - <Compile Include="Framework\Graphic\ImageSizeMode.cs" /> - <Compile Include="Framework\Graphic\WatermarkPosition.cs" /> - <Compile Include="Framework\TaskBox\HttpSync\HttpSimpleRequest.cs" /> - <Compile Include="Framework\TaskBox\HttpSync\HttpTaskClient.cs" /> - <Compile Include="Framework\TaskBox\ITask.cs" /> - <Compile Include="Framework\TaskBox\ITaskBoxStorage.cs" /> - <Compile Include="Framework\TaskBox\ITaskClient.cs" /> - <Compile Include="Framework\TaskBox\ITaskLogProvider.cs" /> - <Compile Include="Framework\TaskBox\Toolkit\TaskBoxDbStorage.cs" /> - <Compile Include="Framework\TaskBox\TaskBox.cs" /> - <Compile Include="Framework\TaskBox\Task.cs" /> - <Compile Include="Framework\TaskBox\Toolkit\TaskLogProvider.cs" /> - <Compile Include="Framework\TaskBox\TaskMessage.cs" /> - <Compile Include="Framework\TaskBox\TaskMessageParser.cs" /> - <Compile Include="Framework\TaskBox\TaskQueue.cs" /> - <Compile Include="Framework\TaskBox\Toolkit\TaskService.cs" /> - <Compile Include="Framework\TaskBox\TaskState.cs" /> - <Compile Include="Framework\TaskBox\TaskStateChangedBehavior.cs" /> - <Compile Include="Utils\JsonParser.cs" /> - <Compile Include="Framework\Net\FtpClient.cs" /> - <Compile Include="Framework\Net\HttpClient.cs" /> - <Compile Include="Framework\Text\ChineseSpell.cs" /> - <Compile Include="MicroTemplateEngine.cs" /> - <Compile Include="Utils\MultiThreadProcess.cs" /> - <Compile Include="Utils\ZipUtility.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Framework\Web\Cache\CacheUtil.cs" /> - <Compile Include="Framework\Web\UI\VerifyCode.cs" /> - <Compile Include="Framework\Web\unused\HttpModule\HttpModuleBase.cs" /> - <Compile Include="Framework\Web\unused\HttpModule\HttpReportModule.cs" /> - <Compile Include="Framework\Web\unused\Interface\ICompressionable.cs" /> - <Compile Include="Framework\Web\UI\FileUpload.cs" /> - <Compile Include="Framework\Web\UI\UploadFileInfo.cs" /> - <Compile Include="Framework\Web\UI\Page.cs"> - <SubType>ASPXCodeBehind</SubType> - </Compile> - <Compile Include="Framework\Web\UI\UrlPager.cs" /> - <Compile Include="Framework\Web\unused\ConfigurationDictionary.cs" /> - <Compile Include="Framework\Web\unused\ExceptionProcess.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="Framework\Service\IService.cs" /> - <Compile Include="Framework\Service\ServiceManager.cs" /> - <Compile Include="Framework\Web\unused\Handler\ExecuteHandler.cs" /> - <Compile Include="Framework\Web\unused\Handler\HttpMethodAttribute.cs" /> - <Compile Include="Framework\Web\unused\Handler\IWebExecute.cs" /> - <Compile Include="Framework\Web\unused\Handler\WebExecuteableAttribute.cs" /> - <Compile Include="Framework\Xml\XmlDocHelper.cs" /> - <Compile Include="Framework\Xml\AutoObject\AutoObjectXml.cs" /> - <Compile Include="Framework\Xml\AutoObject\AutoXmlTest.cs" /> - <Compile Include="Framework\Xml\AutoObject\XmlObjectDoc.cs" /> - </ItemGroup> - <ItemGroup> - <Content Include="Framework\Web\UI\FileUpload\demo\1.htm" /> - <Content Include="Framework\Web\UI\FileUpload\fileupload.js" /> - </ItemGroup> - <ItemGroup> - <None Include="Framework\Security\AESCrypto.cs" /> - <None Include="OPS.Core.cd" /> - <None Include="atnet.devfw.snk" /> - <None Include="Framework\Service\Service.config"> - <SubType>Designer</SubType> - </None> - <None Include="Framework\Web\UI\Pager\pager.go" /> - </ItemGroup> - <ItemGroup /> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/AtNet.DevFw.Core.csproj.user b/src/core/AtNet.DevFw.Core/AtNet.DevFw.Core.csproj.user deleted file mode 100644 index 55f44b9..0000000 --- a/src/core/AtNet.DevFw.Core/AtNet.DevFw.Core.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <ProjectView>ShowAllFiles</ProjectView> - </PropertyGroup> -</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/AssemblyResolve.cs b/src/core/AtNet.DevFw.Core/Framework/AssemblyResolve.cs deleted file mode 100644 index 5d7bc4f..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/AssemblyResolve.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 由SharpDevelop创建。 - * 用户: Administrator - * 日期: 2013/12/10 - * 时间: 11:24 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; -using System.IO; -using System.Reflection; - -namespace AtNet.DevFw.Framework -{ - /// <summary> - /// Description of MyClass. - /// </summary> - internal class AssemblyResolve - { - /// <summary> - /// 解决依赖 - /// </summary> - /// <param name="domain">AppDomain</param> - /// <param name="directory">目录</param> - /// <param name="fileExtension">文件扩展名</param> - /// <param name="aes">是否AES解密</param> - public static void Resolve(AppDomain domain, string directory, string fileExtension, bool aes) - { - // WHY NOT WORK - //http://stackoverflow.com/questions/9734657/why-assemblyresolve-not-working - // - - domain.AssemblyResolve += delegate(object sender, ResolveEventArgs args) - { - string filePath = String.Concat(directory, directory.EndsWith("/") ? "" : "/", args.Name.Split(',')[0], - fileExtension); - if (!File.Exists(filePath)) - { - return null; - } - else - { - return Assembly.Load(File.ReadAllBytes(filePath)); - } - }; - } - - /// <summary> - /// 默认解析.dll - /// </summary> - /// <param name="domain"></param> - /// <param name="directory"></param> - public static void Resolve(AppDomain domain, string directory) - { - Resolve(domain, directory, ".dll", false); - } - - /// <summary> - /// 默认从lib目录下解析.dll - /// </summary> - /// <param name="domain"></param> - public static void Resolve(AppDomain domain) - { - Resolve(domain, domain.BaseDirectory + "lib/", ".dll", false); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Automation/EntityForm.cs b/src/core/AtNet.DevFw.Core/Framework/Automation/EntityForm.cs deleted file mode 100644 index 94e324b..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Automation/EntityForm.cs +++ /dev/null @@ -1,388 +0,0 @@ -using System; -using System.Reflection; -using System.Text; -using AtNet.DevFw.Framework.Extensions; - -namespace AtNet.DevFw.Framework.Automation -{ - /// <summary> - /// 实体表单 - /// </summary> - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = true)] - public class EntityFormAttribute : Attribute - { - } - - /// <summary> - /// 表单列 - /// </summary> - [AttributeUsage(AttributeTargets.Property, Inherited = false)] - public class FormFieldAttribute : Attribute - { - public FormFieldAttribute(string name) - { - this.Name = name; - } - - /// <summary> - /// 列分组名称 - /// </summary> - public string Group { get; set; } - - /// <summary> - /// 名称 - /// </summary> - public string Name { get; set; } - - /// <summary> - /// 中文名称 - /// </summary> - public string Text { get; set; } - - /// <summary> - /// 列描述 - /// </summary> - public string Descript { get; set; } - - /// <summary> - /// 是否可以编辑 - /// </summary> - public bool DisableEdit { get; set; } - - /// <summary> - /// 是否隐藏显示 - /// </summary> - public bool Hidden { get; set; } - - /// <summary> - /// 是否为密码输入项 - /// </summary> - public bool IsPassword { get; set; } - - /// <summary> - /// 是否必填 - /// </summary> - public bool IsRequired { get; set; } - - /// <summary> - /// 正则匹配 - /// </summary> - public string Regex { get; set; } - - /// <summary> - /// 是否为数字 - /// </summary> - public bool IsNumber { get; set; } - - /// <summary> - /// 长度限制,如5-10,0-10 - /// </summary> - public string Length { get; set; } - - /// <summary> - /// 是否多行,多行用Textbox显示 - /// </summary> - public bool MultLine { get; set; } - } - - /// <summary> - /// 选择列 - /// </summary> - [AttributeUsage(AttributeTargets.Property, Inherited = false)] - public class SelectFieldAttribute : Attribute - { - /// <summary> - /// 数据字典,多个用;或|隔开。如:是=1;否=0 - /// </summary> - public string Data { get; set; } - - /// <summary> - /// 是否使用下拉,如果为否,则用radiobox - /// </summary> - public bool UseDrop { get; set; } - } - - public class EntityForm - { - /// <summary> - /// 创建HTML,包含表单及按钮 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="t"></param> - /// <param name="full"></param> - /// <param name="btnText"></param> - /// <returns></returns> - public static string Build<T>(T t, bool full, string btnText) where T : new() - { - if (t == null) throw new ArgumentNullException("实体" + typeof (T).Name + "不能为空!"); - StringBuilder sb = new StringBuilder(); - if (full) - { - sb.Append("<div class=\"entityForm\">\r\n").Append("<form action=\"\" method=\"post\">\r\n"); - } - - Type type = typeof (T); - FormFieldAttribute ffa; - SelectFieldAttribute sfa; - string value; - - EntityFormAttribute[] eta = - type.GetCustomAttributes(typeof (EntityFormAttribute), true) as EntityFormAttribute[]; - if (eta.Length != 0) - { - //读取属性 - PropertyInfo[] prolist = type.GetProperties(); - foreach (PropertyInfo pro in prolist) - { - //枚举则获取对应的数值 - if (pro.PropertyType.IsEnum) - { - value = Convert.ToInt32(pro.GetValue(t, null)).ToString(); - } - else - { - value = (pro.GetValue(t, null) ?? String.Empty).ToString(); - } - - FormFieldAttribute[] fieldAttrs = - pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; - if (fieldAttrs.Length == 0) - { - continue; - } - else - { - ffa = fieldAttrs[0]; - - //设置标题 - sb.Append("<dl") - .Append(ffa.Hidden ? " style=\"display:none\"" : "") - .Append(String.IsNullOrEmpty(ffa.Group) ? ">" : " group=\"" + ffa.Group + "\">") - .Append("<dt>").Append(ffa.IsRequired ? "<span class=\"required\">*</span>" : "") - .Append(String.IsNullOrEmpty(ffa.Text) ? ffa.Name : ffa.Text).Append(":</dt>") - .Append("<dd>"); - - if (!ffa.DisableEdit) - { - //设置UI - SelectFieldAttribute[] sfAttrs = - pro.GetCustomAttributes(typeof (SelectFieldAttribute), false) as SelectFieldAttribute[]; - if (sfAttrs.Length != 0) - { - sfa = sfAttrs[0]; - //输出SELECT或RADIO - if (sfa.UseDrop) - { - sb.Append("<select class=\"ui-validate\" field=\"") - .Append(ffa.Name) - .Append("\" name=\"field_") - .Append(ffa.Name) - .Append("\""); - - if (ffa.IsRequired) - { - sb.Append(" required=\"true\""); - } - - sb.Append(">"); - - //输出选项 - string[] data = sfa.Data.Split(';', '|'); - string[] opt; - foreach (string dstr in data) - { - opt = dstr.Split('='); - if (opt.Length == 2) - { - sb.Append("<option value=\"").Append(opt[1]).Append("\"") - .Append(value == opt[1] ? " selected=\"selected\"" : "") - .Append(">").Append(opt[0]).Append("</option>"); - } - } - - - sb.Append("</select>"); - } - else - { - // - //UNDONE:.... - // - } - } - else - { - if (ffa.MultLine) - { - //输出Textbox - sb.Append("<textarea class=\"ui-validate\" field=\"") - .Append(ffa.Name) - .Append("\" name=\"field_") - .Append(ffa.Name) - .Append("\""); - } - else - { - //输出INPUT - sb.Append("<input class=\"ui-validate\" type=\"") - .Append(ffa.IsPassword ? "password" : "text") - .Append("\" field=\"") - .Append(ffa.Name) - .Append("\" name=\"field_") - .Append(ffa.Name) - .Append("\"").Append(" value=\"").Append(value).Append("\""); - } - - if (ffa.IsRequired) - { - sb.Append(" required=\"true\""); - } - - if (ffa.IsNumber) - { - sb.Append(" isnumber=\"true\""); - } - - if (!String.IsNullOrEmpty(ffa.Length)) - { - sb.Append(" length=\"").Append(ffa.Length).Append("\""); - } - - if (!String.IsNullOrEmpty(ffa.Regex)) - { - sb.Append(" regex=\"").Append(ffa.Regex).Append("\""); - } - - if (ffa.MultLine) - { - //关闭Textarea - sb.Append(">").Append(value).Append("</textarea>"); - } - else - { - //关闭INPUT - sb.Append(" />"); - } - } - } - else - { - sb.Append(value) - .Append("<input type=\"hidden\" field=\"") - .Append(ffa.Name) - .Append("\" name=\"field_") - .Append(ffa.Name) - .Append("\" value=\"").Append(value).Append("\"/>"); - } - - //列描述 - if (!String.IsNullOrEmpty(ffa.Descript)) - { - sb.Append("<span class=\"descript\">").Append(ffa.Descript).Append("</span>"); - } - - //关闭列 - sb.Append("</dd></dl>\r\n"); - } - } - } - else - { - sb.Append("<strong style=\"color:red;font-size:14px;\">该实体不支持EntityForm!</strong>"); - } - - - if (full) - { - sb.Append("<dl><dt> </dt><dd><a id=\"btn\" class=\"btn\" href=\"javascript:;\">") - .Append(btnText).Append("</a></dd></dl>") - .Append("</form></div>"); - } - - return sb.ToString(); - } - - /// <summary> - /// 创建HTML,仅包含字段 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="t"></param> - /// <returns></returns> - public static string Build<T>(T t) where T : new() - { - return Build<T>(t, false, ""); - } - - public static T GetEntity<T>() where T : new() - { - const bool allowError = false; - global::System.Collections.Specialized.NameValueCollection form = - global::System.Web.HttpContext.Current.Request.Form; - - Type type = typeof (T); - object t = Activator.CreateInstance(type); - PropertyInfo[] pros = type.GetProperties(); - FormFieldAttribute[] fieldAttrs; - FormFieldAttribute attr; - string value; - int tmpInt; - - - Type strType = typeof (String); //字符串类型 - Type bitType = typeof (Boolean); //布尔值类型 - Type proType = null; //属性类型 - - - foreach (PropertyInfo pro in pros) - { - if (!pro.CanWrite) continue; - fieldAttrs = pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; - if (fieldAttrs.Length != 0) - { - attr = fieldAttrs[0]; - value = form["field_" + pro.Name] ?? (form[pro.Name] ?? ""); - - proType = pro.PropertyType; - object obj; - - try - { - obj = ICollectionExtensions.GetPropertyValue<T>(pro, strType, bitType, proType, value); - if (obj != null) - { - pro.SetValue(t, obj, null); - } - } - - catch (FormatException exc) - { - if (!allowError) - { - throw new FormatException("转换错误,属性名:" + pro.Name); - } - } - - - //if (pro.PropertyType.IsEnum) - //{ - // int.TryParse(value, out tmpInt); - // pro.SetValue(t, tmpInt, null); - //} - //else - //{ - // try - // { - // pro.SetValue(t, Convert.ChangeType(value, pro.PropertyType), null); - // } - // catch (FormatException exc) - // { - // throw new FormatException("转换错误,属性名:" + pro.Name); - // } - //} - } - } - - return (T) t; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Extensions/HttpExtensions.cs b/src/core/AtNet.DevFw.Core/Framework/Extensions/HttpExtensions.cs deleted file mode 100644 index 53b6d19..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Extensions/HttpExtensions.cs +++ /dev/null @@ -1,61 +0,0 @@ -// -// Copryright (C) OPS.CC 2008-2011 ,All right reseved. -// Name:HttpExtensions.cs -// Author: Newmin -// -// - -using System; -using System.Text.RegularExpressions; -using System.Web; - -namespace AtNet.DevFw.Framework.Extensions -{ - public static class HttpExtensions - { - /// <summary> - /// 是否为蜘蛛请求 - /// </summary> - /// <param name="request"></param> - /// <returns></returns> - public static bool IsSplider(this HttpRequest request) - { - string[] botNames = new string[] - { - "Googlebot", //谷歌蜘蛛 - "Baiduspider", //百度蜘蛛 - "Yahoo!+Slurp", //雅虎蜘蛛 - "bingbot", //必应蜘蛛 - "msnbot", //LIVE蜘蛛 - "Sosospider", //搜搜蜘蛛 - "YodaoBot", //有道蜘蛛 - "YoudaoBot", //有道蜘蛛 - "Sogou Web Sprider" //搜狗蜘蛛 - }; - - string agent = request.UserAgent; - bool isSplider = false; - Array.ForEach(botNames, a => { if (agent.IndexOf(a) != -1) isSplider = true; }); - return isSplider; - } - - /// <summary> - /// 是否移动设备 - /// </summary> - /// <param name="request"></param> - /// <returns></returns> - public static bool IscMobileDevice(this HttpRequest request) - { - string u = request.ServerVariables["HTTP_USER_AGENT"]; - Regex b = - new Regex( - @"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", - RegexOptions.IgnoreCase | RegexOptions.Multiline); - Regex v = - new Regex( - @"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", - RegexOptions.IgnoreCase | RegexOptions.Multiline); - return b.IsMatch(u) || v.IsMatch(u.Substring(0, 4)); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Extensions/ICollectionExtensions.cs b/src/core/AtNet.DevFw.Core/Framework/Extensions/ICollectionExtensions.cs deleted file mode 100644 index 6798ca2..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Extensions/ICollectionExtensions.cs +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2010 OPS,All rights reseved ! - * name : 集合扩展 - * author : newmin - * date : 2010/11/26 07:31 - */ - -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Reflection; - -namespace AtNet.DevFw.Framework.Extensions -{ - /// <summary> - /// 集合扩展 - /// </summary> - public static class ICollectionExtensions - { - /// <summary> - /// 返回符合条件的集合 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="collection"></param> - /// <param name="condition"></param> - /// <returns></returns> - public static IEnumerable<T> WhereBy<T>(this IEnumerable<T> collection, Func<T, bool> condition) - { - foreach (T t in collection) - { - if (condition(t)) yield return t; - } - } - - public static T ConvertToEntity<T>(this NameValueCollection form) - { - return BindToEntity<T>(form, default(T), false); - } - - public static T BindToEntity<T>(this NameValueCollection form, T t) - { - return BindToEntity<T>(form, t, false); - } - - public static T BindToEntity<T>(this NameValueCollection form, T entity, bool allowError) - { - Type type = typeof (T); //实体类型 - Type strType = typeof (String); //字符串类型 - Type bitType = typeof (Boolean); - Type proType = null; //属性类型 - - object t = entity; - if (t == null) - { - t = Activator.CreateInstance(type); - } - - PropertyInfo[] pros = type.GetProperties(); - string value; - - foreach (PropertyInfo pro in pros) - { - if (!pro.CanWrite) continue; - value = form[pro.Name]; - - //获取值 - if (value == null) - { - value = form["field_" + pro.Name]; - if (String.IsNullOrEmpty(value)) continue; - } - - - proType = pro.PropertyType; - object obj; - - try - { - obj = GetPropertyValue<T>(pro, strType, bitType, proType, value); - if (obj != null) - { - pro.SetValue(t, obj, null); - } - - //if (pro.PropertyType.IsValueType) - //{ - // } - // else - // { - // pro.SetValue(t, - // Convert.ChangeType(value, pro.PropertyType), - // null); - // } - - // } - - - //if (pro.PropertyType.IsValueType) - //{ - // } - // else - // { - // pro.SetValue(t, - // Convert.ChangeType(value, pro.PropertyType), - // null); - // } - - // } - - //else if (pro.PropertyType == typeof(String)) - //{ - // pro.SetValue(t, - // Convert.ChangeType(value, pro.PropertyType), - // null); - //} - } - - catch (FormatException exc) - { - if (!allowError) - { - throw new FormatException("转换错误,属性名:" + pro.Name); - } - } - } - - return (T) t; - } - - internal static object GetPropertyValue<T>(PropertyInfo pro, Type strType, Type bitType, Type proType, - string value) - { - if (proType == strType) - { - return value; - } - else if (proType == bitType) - { - return value == "True" || value == "1" || value == "true"; - } - else if (proType.IsEnum) //枚举类型 - { - return Enum.Parse(proType, value); - } - else if (proType.GetInterface("IConvertible") != null) - { - //支持转换的类型 - return Convert.ChangeType(value, proType); - } - else if (pro.PropertyType.IsGenericType) - { - //泛型(可空类型) - //获取类型定义判断是否为可空类型 - Type genericTypeDefinition = proType.GetGenericTypeDefinition(); - if (genericTypeDefinition == typeof (Nullable<>)) - { - Type baseType = Nullable.GetUnderlyingType(proType); - if (baseType.GetInterface("IConvertible") != null) - { - if (baseType == bitType) - { - return value == "True" || value == "1" || value == "true"; - } - else if (baseType.IsEnum) //枚举类型 - { - return Enum.Parse(baseType, value); - } - else - { - return Convert.ChangeType(value, baseType); - } - } - } - } - return null; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Extensions/StringExtensions.cs b/src/core/AtNet.DevFw.Core/Framework/Extensions/StringExtensions.cs deleted file mode 100644 index 0b74afd..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Extensions/StringExtensions.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text.RegularExpressions; -using System.Web; -using AtNet.DevFw.Framework.Security; - -namespace AtNet.DevFw.Framework.Extensions -{ - public static class StringExtensions - { - /// <summary> - /// 为字符串追加指定长度的随机字符并返回该字符串 - /// </summary> - /// <param name="str">字符串</param> - /// <param name="length">长度</param> - /// <returns></returns> - public static string RandomLetters(this String str, int length) - { - length = length < 1 ? 1 : length; - char[] cs = - { - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' - , 'u', 'v', 'w', 'x', 'y', 'z' - }; - Random rd = new Random(); - for (int i = 0; i < length; i++) - { - str += cs[rd.Next(24)]; //24为cs.Length - } - return str; - } - - /// <summary> - /// 为字符串追加指定长度的随机字符并返回该字符串 - /// </summary> - /// <param name="str">字符串</param> - /// <param name="length">长度</param> - /// <returns></returns> - public static string RandomUpperLetters(this String str, int length) - { - length = length < 1 ? 1 : length; - char[] cs = - { - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' - , 'u', 'v', 'w', 'x', 'y', 'z' - }; - Random rd = new Random(); - int randomNum = 0; - for (int i = 0; i < length; i++) - { - randomNum = rd.Next(24); //24为cs.Length - str += randomNum > 12 ? cs[rd.Next(randomNum)].ToString().ToUpper() : cs[rd.Next(randomNum)].ToString(); - } - return str; - } - - /// <summary> - /// 用md5加密 - /// </summary> - /// <param name="word"></param> - /// <returns></returns> - public static string EncodeMD5(this String str) - { - return Md5Crypto.EncodeMD5(str); - } - - /// <summary> - /// 16位MD5加密 - /// </summary> - /// <param name="str"></param> - /// <returns></returns> - public static string Encode16MD5(this String str) - { - return Md5Crypto.Encode16MD5(str); - } - - - /// <summary> - /// HTML编码 - /// </summary> - /// <param name="str"></param> - /// <returns></returns> - public static string HtmlEncode(this String str) - { - return HttpContext.Current.Server.HtmlEncode(str); - } - - /// <summary> - /// HTML解码 - /// </summary> - /// <param name="str"></param> - /// <returns></returns> - public static string HtmlDecode(this String str) - { - return HttpContext.Current.Server.HtmlDecode(str); - } - - /// <summary> - /// 替换类似%tag%的标签 - /// </summary> - /// <param name="str"></param> - /// <returns></returns> - public static string Template(this string str, Func<string, string> func) - { - Regex regex = new Regex("%([^%]+)%"); - - return regex.Replace(str, a => { return func(a.Groups[1].Value); }); - } - - - /// <summary> - /// 替换类似%tag%的标签 - /// </summary> - /// <param name="str"></param> - /// <param name="data">传递标签值的数组</param> - /// <returns></returns> - public static string Template(this string str, params string[] data) - { - Regex regex = new Regex("%([^%]+)%"); - MatchCollection mcs = regex.Matches(str); - if (mcs.Count != data.Length) - { - throw new ArgumentOutOfRangeException(); - } - else - { - for (int i = 0; i < mcs.Count; i++) - { - str = Regex.Replace(str, mcs[i].Groups[0].Value, data[i]); - } - } - return str; - } - - public static string Template(this string str, Hashtable hash) - { - if (hash == null || hash.Count == 0) return str; - Regex regex = new Regex("{([^{]+)}"); - MatchCollection mcs = regex.Matches(str); - string key; - for (int i = 0; i < mcs.Count; i++) - { - key = mcs[i].Groups[1].Value; - if (hash.ContainsKey(key) && hash[key] != null) - { - str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key].ToString()); - } - } - return str; - } - - public static string Template(this string str, IDictionary<string, string> hash) - { - if (hash == null || hash.Count == 0) return str; - Regex regex = new Regex("{([^{]+)}"); - MatchCollection mcs = regex.Matches(str); - string key; - for (int i = 0; i < mcs.Count; i++) - { - key = mcs[i].Groups[1].Value; - if (hash.ContainsKey(key) && hash[key] != null) - { - str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key]); - } - } - return str; - } - - /// <summary> - /// 是否匹配文本 - /// </summary> - /// <param name="str"></param> - /// <param name="pattern"></param> - /// <param name="option"></param> - /// <returns></returns> - public static bool IsMatch(this string str, string pattern, RegexOptions option = RegexOptions.None) - { - return Regex.IsMatch(str, pattern, option); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Extensions/TExtensions.cs b/src/core/AtNet.DevFw.Core/Framework/Extensions/TExtensions.cs deleted file mode 100644 index 71cff4e..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Extensions/TExtensions.cs +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2010 OPS,All rights reseved ! - * name : 泛型扩展 - * author : newmin - * date : 2010/11/08 07:31 - * - */ - -using System; -using System.Globalization; -using System.Reflection; - -namespace AtNet.DevFw.Framework.Extensions -{ - public static class TExtensions - { - /// <summary> - ///从SourceType拷贝对象的数据,将相同名称属性赋值 - /// </summary> - /// <param name="s">包含数据的对象</param> - /// <param name="c">要拷贝数据的对象</param> - /// <param name="ignoreNullValue">是否忽略空值</param> - public static ToType CloneData<SourceType, ToType>(this ToType t, SourceType s, bool ignoreNullValue) - { - Type sourceType = typeof (SourceType); - Type type = typeof (ToType); - Type propertyType; - Type fieldType; - - if (t is String || s is String) return t; - - - PropertyInfo[] cp = type.GetProperties(); - FieldInfo[] fields = type.GetFields(); - - object _v; - - - FieldInfo _f; - - foreach (FieldInfo f in sourceType.GetFields()) - { - if (f.IsStatic || f.IsInitOnly) continue; - - _f = Array.Find(fields, a => string.Compare(a.Name, f.Name, true, - CultureInfo.InvariantCulture) == 0); - - if (_f == null || _f.IsStatic || f.IsInitOnly) continue; - - _v = f.GetValue(s); - if (!ignoreNullValue && _v == null) continue; - - fieldType = _f.FieldType; - if (fieldType.IsEnum) - { - _f.SetValue(t, Enum.Parse(fieldType, _v.ToString())); - } - else - { - if (_v is IConvertible) - { - _f.SetValue(t, Convert.ChangeType(_v, fieldType)); - } - else - { - try - { - _f.SetValue(t, _v); - } - catch - { - } - } - } - } - - PropertyInfo _p; - foreach (PropertyInfo p in sourceType.GetProperties()) - { - if (!p.CanRead) continue; - - _p = Array.Find(cp, a => string.Compare(a.Name, p.Name, true, - CultureInfo.InvariantCulture) == 0); - - if (_p == null || !_p.CanWrite) continue; - - - _v = p.GetValue(s, null); - if (!ignoreNullValue && _v == null) continue; - propertyType = _p.PropertyType; - - if (propertyType.IsEnum) - { - _p.SetValue(t, Enum.Parse(propertyType, _v.ToString()), null); - } - else - { - if (_v is IConvertible) - { - _p.SetValue(t, Convert.ChangeType(_v, propertyType), null); - } - else - { - try - { - _p.SetValue(t, _v, null); - } - catch - { - } - } - } - } - - - return t; - } - - /// <summary> - /// 拷贝对象的数据 - /// </summary> - public static ToType CloneData<SourceType, ToType>(this ToType t, SourceType s) - { - return CloneData(t, s, true); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Graphic/GraphicsHelper.cs b/src/core/AtNet.DevFw.Core/Framework/Graphic/GraphicsHelper.cs deleted file mode 100644 index 39293c5..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Graphic/GraphicsHelper.cs +++ /dev/null @@ -1,812 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; -using System.IO; - -/******************************************* -* 文 件 名:ImageGraphicsUtility.cs -* 文件说明: -* 创 建 人:刘成文 -* 创建日期:2012-9-29 11:53:40 -********************************************/ - -namespace AtNet.DevFw.Framework.Graphic -{ - /// <summary> - /// 绘图工具类 - /// </summary> - public class GraphicsHelper - { - private static IDictionary<string, ImageCodecInfo> imageCoders; - - static GraphicsHelper() - { - imageCoders = new Dictionary<string, ImageCodecInfo>(); - ImageCodecInfo imgCode = null; - ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); - string key = null; - foreach (ImageCodecInfo code in imgCodes) - { - switch (code.MimeType) - { - case "image/jpeg": - key = "Jpeg"; - break; - case "image/png": - key = "Png"; - break; - case "image/bmp": - key = "Bmp"; - break; - default: - key = null; - break; - } - - if (key != null) - { - imageCoders.Add(key, code); - } - } - } - - public static Size GetSize(Size size, Size resize, ImageSizeMode mode) - { - // int toWidth = resize.Width; - // int toHeight = resize.Height; - - // int x = 0; - // int y = 0; - // int ow = size.Width; - // int oh = size.Height; - - Size newSize = new Size(); - newSize.Width = resize.Width; - newSize.Height = resize.Height; - - - switch (mode) - { - case ImageSizeMode.SuitWidth: - newSize.Height = size.Height*resize.Width/size.Width; - break; - - case ImageSizeMode.SuitHeight: - newSize.Width = size.Width*resize.Height/size.Height; - break; - - case ImageSizeMode.AutoSuit: - //根据宽度适配 - if (size.Width > size.Height) - { - newSize.Height = size.Height*resize.Width/size.Width; - } - else //根据高度适配 - { - newSize.Width = size.Width*resize.Height/size.Height; - } - break; - - //填充适应 - case ImageSizeMode.FillFit: - if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) - { - newSize.Height = size.Height*resize.Width/size.Width; - } - else - { - newSize.Width = resize.Width*resize.Height/size.Height; - } - - break; - - //裁剪 - case ImageSizeMode.Cut: - //裁剪宽 - if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) - { - newSize.Height = size.Height; - newSize.Width = size.Height*resize.Width/resize.Height; - } - else - { - newSize.Width = size.Width; - newSize.Height = size.Width*resize.Height/resize.Width; - } - break; - - default: - case ImageSizeMode.CustomSize: - break; - } - - return newSize; - } - - /// <summary> - /// 重新绘制指定尺寸的图片 - /// </summary> - /// <param name="original">原图</param> - /// <param name="width">缩略图宽度</param> - /// <param name="height">缩略图高度</param> - /// <param name="mode">缩略图模式</param> - /// <param name="format">图像格式</param> - /// <param name="graphicsHandler">对缩略图处理</param> - public static byte[] DrawBySize( - Image original, - ImageSizeMode mode, - int width, int height, - ImageFormat format, - long imageQuality, - long compression, - ImageGraphicsHandler graphicsHandler) - { - int toWidth = width; - int toHeight = height; - - int x = 0; - int y = 0; - int ow = original.Width; //原始宽度 - int oh = original.Height; //原始高度 - - Size toSize = new Size(width, height); //要转换的图片尺寸 - Size imageSize = GetSize(original.Size, toSize, mode); //转换的实际尺寸 - - - //裁剪 - if (mode == ImageSizeMode.Cut) - { - if ((double) original.Width/(double) original.Height > (double) toSize.Width/(double) toSize.Height) - { - oh = original.Height; - ow = original.Height*toWidth/toHeight; - y = 0; - x = (original.Width - ow)/2; - } - else - { - ow = original.Width; - oh = original.Width*height/toWidth; - x = 0; - y = (original.Height - oh)/2; - } - } - else - { - x = (toSize.Width - imageSize.Width)/2; - y = (toSize.Height - imageSize.Height)/2; - } - - //新建一个bmp图片 - Image bitmap; - if (mode == ImageSizeMode.FillFit) - { - bitmap = new Bitmap(width, height); - } - else - { - bitmap = new Bitmap(toWidth, toHeight); - } - - //新建一个画板 - Graphics g = Graphics.FromImage(bitmap); - - //设置高质量插值法 - g.InterpolationMode = InterpolationMode.HighQualityBicubic; - - //设置高质量,低速度呈现平滑程度 - g.SmoothingMode = SmoothingMode.HighQuality; - - //清空画布并以透明背景色填充 - g.Clear(Color.Transparent); - if (mode == ImageSizeMode.FillFit) - { - g.Clear(Color.White); - } - - //在指定位置并且按指定大小绘制原图片的指定部分 - - g.DrawImage(original, - new Rectangle(x, y, imageSize.Width, imageSize.Height), - new Rectangle(x, y, ow, oh), - GraphicsUnit.Pixel); - - - //对图片进行处理 - if (graphicsHandler != null) - { - graphicsHandler(bitmap); - if (bitmap == null) - { - throw new ArgumentException("不允许释放图片资源!"); - } - } - - //保存到内存留 - MemoryStream ms = new MemoryStream(); - - - ImageCodecInfo imgCode = null; - - if (format != null) - { - string formatStr = format.ToString(); - imgCode = imageCoders.ContainsKey(formatStr) ? imageCoders[formatStr] : null; - } - - if (imgCode != null) - { - EncoderParameters ep = new EncoderParameters(2); - ep.Param[0] = new EncoderParameter(Encoder.Quality, - imageQuality > 100 || imageQuality <= 0 ? 100L : imageQuality); - ep.Param[1] = new EncoderParameter(Encoder.Compression, compression < 1L ? 100L : compression); - bitmap.Save(ms, imgCode, ep); - } - else - { - bitmap.Save(ms, ImageFormat.Jpeg); - } - - //释放资源 - g.Dispose(); - bitmap.Dispose(); - - return ms.ToArray(); - } - - /// <summary> - /// 重新绘制指定尺寸的图片 - /// </summary> - /// <param name="original">原图</param> - /// <param name="width">缩略图宽度</param> - /// <param name="height">缩略图高度</param> - /// <param name="mode">缩略图模式</param> - /// <param name="graphicsHandler">对缩略图处理</param> - public static byte[] DrawBySize( - Image original, - ImageSizeMode mode, - int width, int height, - ImageGraphicsHandler graphicsHandler) - { - return DrawBySize(original, mode, width, height, ImageFormat.Jpeg, 100L, 60L, graphicsHandler); - } - - #region 生成缩略图 - - /// <summary> - /// 生成缩略图 - /// </summary> - /// <param name="original">原图</param> - /// <param name="width">缩略图宽度</param> - /// <param name="height">缩略图高度</param> - /// <param name="mode">缩略图模式</param> - /// <param name="thumbHandler">对缩略图处理</param> - public static MemoryStream MakeThumbnail(Image original, ImageSizeMode mode, int width, int height, - ImageGraphicsHandler thumbHandler) - { - int toWidth = width; - int toHeight = height; - - int x = 0; - int y = 0; - int ow = original.Width; - int oh = original.Height; - - switch (mode) - { - case ImageSizeMode.SuitWidth: - toHeight = original.Height*width/original.Width; - break; - - case ImageSizeMode.SuitHeight: - toWidth = original.Width*height/original.Height; - break; - - case ImageSizeMode.AutoSuit: - //根据宽度适配 - if (original.Width > original.Height) - { - toHeight = original.Height*width/original.Width; - } - else //根据高度适配 - { - toWidth = original.Width*height/original.Height; - } - break; - - //填充适应 - case ImageSizeMode.FillFit: - if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) - { - toWidth = width; - toHeight = original.Height*width/original.Width; - } - else - { - toHeight = height; - toWidth = original.Width*height/original.Height; - } - - break; - - //裁剪 - case ImageSizeMode.Cut: - if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) - { - oh = original.Height; - ow = original.Height*toWidth/toHeight; - y = 0; - x = (original.Width - ow)/2; - } - else - { - ow = original.Width; - oh = original.Width*height/toWidth; - x = 0; - y = (original.Height - oh)/2; - } - break; - - default: - case ImageSizeMode.CustomSize: - break; - } - - //新建一个bmp图片 - Image bitmap; - if (mode == ImageSizeMode.FillFit) - { - bitmap = new Bitmap(width, height); - } - else - { - bitmap = new Bitmap(toWidth, toHeight); - } - - //新建一个画板 - Graphics g = Graphics.FromImage(bitmap); - - //设置高质量插值法 - g.InterpolationMode = InterpolationMode.High; - - //设置高质量,低速度呈现平滑程度 - g.SmoothingMode = SmoothingMode.HighQuality; - - //清空画布并以透明背景色填充 - g.Clear(Color.Transparent); - if (mode == ImageSizeMode.FillFit) - { - g.Clear(Color.White); - } - - //在指定位置并且按指定大小绘制原图片的指定部分 - g.DrawImage(original, - new Rectangle((width - toWidth)/2, (height - toHeight)/2, toWidth, toHeight), - new Rectangle(x, y, ow, oh), - GraphicsUnit.Pixel); - - - //对图片进行处理 - if (thumbHandler != null) - { - thumbHandler(bitmap); - if (bitmap == null) - { - throw new ArgumentException("不允许释放图片资源!"); - } - } - - //保存到内存留 - MemoryStream ms = new MemoryStream(); - - //图片质量参数 - EncoderParameters ep = new EncoderParameters(2); - ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); - ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 60L); - - ImageCodecInfo imgCode = null; - ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); - foreach (ImageCodecInfo code in imgCodes) - { - if (code.MimeType == "image/jpeg") - { - imgCode = code; - break; - } - } - if (imgCode != null) - { - bitmap.Save(ms, imgCode, ep); - } - else - { - bitmap.Save(ms, ImageFormat.Jpeg); - } - - //释放资源 - g.Dispose(); - bitmap.Dispose(); - - return ms; - } - - - /// <summary> - /// 生成缩略图 - /// </summary> - /// <param name="originalImagePath">源图路径(物理路径)</param> - /// <param name="thumbnailPath">缩略图路径(物理路径)</param> - /// <param name="width">缩略图宽度</param> - /// <param name="height">缩略图高度</param> - public static void SaveThumbnail(string originalImagePath, string thumbnailPath, int width, int height) - { - Image originalImage = Image.FromFile(originalImagePath); - - //生成缩略图 - MakeThumbnail(originalImage, ImageSizeMode.Cut, width, height, (img) => - { - //以jpg格式保存缩略图 - img.Save(thumbnailPath, ImageFormat.Jpeg); - }).Dispose(); - - //释放资源 - originalImage.Dispose(); - } - - - /// <summary> - /// 生成缩略图 - /// </summary> - /// <param name="originalImagePath">源图路径(物理路径)</param> - /// <param name="thumbnailPath">缩略图路径(物理路径)</param> - /// <param name="width">缩略图宽度</param> - /// <param name="height">缩略图高度</param> - /// <param name="mode">生成缩略图的方式</param> - public static void SaveThumbnail(string originalImagePath, string thumbnailPath, ImageSizeMode mode, int width, - int height) - { - Image originalImage = Image.FromFile(originalImagePath); - - //生成缩略图 - MakeThumbnail(originalImage, mode, width, height, (img) => - { - //以jpg格式保存缩略图 - img.Save(thumbnailPath, ImageFormat.Jpeg); - }).Dispose(); - - //释放资源 - originalImage.Dispose(); - } - - - /// <summary> - /// 生成缩略图 - /// </summary> - /// <param name="originalImage">源图</param> - /// <param name="thumbnailPath">缩略图路径(物理路径)</param> - /// <param name="width">缩略图宽度</param> - /// <param name="height">缩略图高度</param> - /// <param name="mode">生成缩略图的方式</param> - public static void SaveThumbnail(Image originalImage, string thumbnailPath, ImageSizeMode mode, int width, - int height) - { - //生成缩略图 - MakeThumbnail(originalImage, mode, width, height, (img) => - { - //以jpg格式保存缩略图 - img.Save(thumbnailPath, ImageFormat.Jpeg); - }).Dispose(); - - //释放资源 - originalImage.Dispose(); - } - - #endregion - - private void Thumbnal_Test() - { - int imgHeight = 480, imgWidth = 600; - string file = "/1.jpg"; - string waterPath = ""; - string rootPath = AppDomain.CurrentDomain.BaseDirectory; - - Bitmap img = new Bitmap(rootPath + file); - int width, height; - if (img.Width > img.Height) - { - width = imgWidth; - height = imgHeight; - } - else - { - width = imgHeight; - height = imgWidth; - } - - byte[] data = GraphicsHelper.DrawBySize(img, ImageSizeMode.CustomSize, width, height, ImageFormat.Jpeg, 90L, - 50L, null); - img.Dispose(); - - - MemoryStream ms1 = new MemoryStream(data); - img = new Bitmap(ms1); - - Image water = new Bitmap(waterPath); - - - data = GraphicsHelper.MakeWatermarkImage( - img, - water, - WatermarkPosition.Middle - ); - - - ms1.Dispose(); - img.Dispose(); - - FileStream fs = File.OpenWrite(rootPath + "/1_1.jpg"); - BinaryWriter w = new BinaryWriter(fs); - w.Write(data); - w.Flush(); - fs.Dispose(); - } - - #region 生成水印 - - /// <summary> - /// 生成水印 - /// </summary> - /// <param name="img">图片</param> - /// <param name="water">水印</param> - /// <param name="waterPos">水印位置</param> - /// <param name="handler">处理图片</param> - /// <returns>图片内存流</returns> - public static byte[] MakeWatermarkImage( - Image img, - Image water, - Point waterPos, - ImageGraphicsHandler handler) - { - //尺寸检测 - if (water.Width > img.Width || water.Height > img.Height) - { - throw new ArgumentException("水印图片尺寸超过原图,无法生成水印!"); - } - - //绘制水印 - Graphics g = Graphics.FromImage(img); - g.DrawImage(water, waterPos.X, waterPos.Y); - - if (handler != null) - { - handler(img); - if (img == null) - { - throw new ArgumentException("不允许释放图片资源!"); - } - } - - //保存到内存流 - MemoryStream ms = new MemoryStream(); - img.Save(ms, img.RawFormat); - - //释放资源 - g.Dispose(); - water.Dispose(); - - byte[] bytes = ms.ToArray(); - ms.Dispose(); - - return bytes; - } - - - /// <summary> - /// 生成水印 - /// </summary> - /// <param name="img">图片</param> - /// <param name="water">水印</param> - /// <param name="pos">预置的水印位置</param> - /// <param name="format">图像格式</param> - /// <param name="handler">处理图片</param> - /// <returns>图片内存流</returns> - public static byte[] MakeWatermarkImage( - Image img, - Image water, - WatermarkPosition pos, - ImageGraphicsHandler handler) - { - int x; - int y; - - int xOffset = 5; //宽度偏移量 - int yOffset = 5; //高度偏移量 - switch (pos) - { - case WatermarkPosition.Bottom: - //正下方 - x = (img.Width - water.Width)/2; - y = img.Height - water.Height - yOffset; - break; - case WatermarkPosition.LeftBottom: - //左下方 - x = xOffset; - y = img.Height - water.Height - yOffset; - break; - case WatermarkPosition.Right: - //右方 - x = img.Width - water.Width - xOffset; - y = (img.Height - water.Height)/2; - break; - case WatermarkPosition.Middle: - //正中 - x = (img.Width - water.Width)/2; - y = (img.Height - water.Height)/2; - break; - case WatermarkPosition.Left: - //左边 - x = xOffset; - y = (img.Height - water.Height)/2; - break; - case WatermarkPosition.RightTop: - //右上方 - x = img.Width - water.Width - xOffset; - y = yOffset; - break; - case WatermarkPosition.Top: - //正上方 - x = (img.Width - water.Width)/2; - y = yOffset; - break; - case WatermarkPosition.LeftTop: - //左上方 - x = xOffset; - y = yOffset; - break; - - default: - case WatermarkPosition.Default: - case WatermarkPosition.RightBottom: - //右下角 - x = img.Width - water.Width - xOffset; - y = img.Height - water.Height - yOffset; - break; - } - - return MakeWatermarkImage(img, water, new Point(x, y), handler); - } - - - /// <summary> - /// 生成水印 - /// </summary> - /// <param name="img">图片</param> - /// <param name="water">水印</param> - /// <param name="pos">预置的水印位置</param> - /// <returns>图片内存流</returns> - public static byte[] MakeWatermarkImage(Image img, Image water, WatermarkPosition pos) - { - return MakeWatermarkImage(img, water, pos, null); - } - - /// <summary> - /// 生成水印并保存到文件 - /// </summary> - /// <param name="imgPath">图片路径</param> - /// <param name="waterPath">水印路径</param> - /// <param name="pos">水印位置</param> - /// <param name="handler">图片处理</param> - /// <returns></returns> - public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos, - ImageGraphicsHandler handler) - { - Image img = Image.FromFile(imgPath), - water = Image.FromFile(waterPath); - - byte[] bytes = MakeWatermarkImage(img, water, pos, handler); - img.Dispose(); - return bytes; - } - - /// <summary> - /// 生成水印并保存到文件 - /// </summary> - /// <param name="imgPath">图片路径</param> - /// <param name="waterPath">水印路径</param> - /// <param name="pos">水印位置</param> - /// <returns></returns> - public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos) - { - return MakeWatermarkImage(imgPath, waterPath, pos, null); - } - - #endregion - - #region 生成水印并保存文件 - - /// <summary> - /// 生成水印并保存到文件 - /// </summary> - /// <param name="img">图片</param> - /// <param name="water">水印</param> - /// <param name="pos">预置的水印位置</param> - public static void SaveWatermarkImage(Image img, Image water, string savePath, WatermarkPosition pos) - { - MakeWatermarkImage(img, water, pos, thumb => { thumb.Save(savePath, img.RawFormat); }); - - img.Dispose(); - } - - /// <summary> - /// 生成水印并保存到文件 - /// </summary> - /// <param name="imgPath">图片路径</param> - /// <param name="waterPath">水印路径</param> - /// <param name="savePath">保存路径</param> - public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath) - { - MakeWatermarkImage(imgPath, waterPath, WatermarkPosition.Default, - img => { img.Save(savePath, img.RawFormat); }); - } - - /// <summary> - /// 生成水印并保存到文件 - /// </summary> - /// <param name="imgPath">图片路径</param> - /// <param name="waterPath">水印路径</param> - /// <param name="savePath">保存路径</param> - public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath, WatermarkPosition pos) - { - MakeWatermarkImage(imgPath, waterPath, pos, img => { img.Save(savePath, img.RawFormat); }); - } - - #endregion - - #region 其他 - - /// <summary> - /// 自动上传文本中的图片 - /// </summary> - /// <param name="content">文本内容</param> - /// <param name="path">上传路径</param> - /// <returns>上传结果信息</returns> - //private static string AutoUpload(string content, string path) - //{ - // //自动保存远程图片 - // WebClient client = new WebClient(); - // //备用Reg:<img.*?src=([\"\'])(http:\/\/.+\.(jpg|gif|bmp|bnp))\1.*?> - // Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", RegexOptions.IgnoreCase); - // MatchCollection m = reg.Matches(content); - - // foreach (Match math in m) - // { - // string imgUrl = math.Groups[1].Value; - - // //在原图片名称前加YYMMDD重名名并上传 - - // Regex regName = new Regex(@"\w+.(?:jpg|gif|bmp|png)", RegexOptions.IgnoreCase); - - // string strNewImgName = DateTime.Now.ToShortDateString().Replace("-", "") + regName.Match(imgUrl).ToString(); - - // try - // { - // //保存图片 - // client.DownloadFile(imgUrl, (path + strNewImgName)); - // } - // catch - // { - // } - // finally - // { - - // } - // client.Dispose(); - // } - // return "远程图片保存成功,保存路径为ImgUpload/auto"; - //} - - #endregion - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs b/src/core/AtNet.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs deleted file mode 100644 index 6ac3f62..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Drawing; - -namespace AtNet.DevFw.Framework.Graphic -{ - /// <summary> - /// 绘图处理 - /// </summary> - /// <param name="img"></param> - public delegate void ImageGraphicsHandler(Image img); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Graphic/ImageSizeMode.cs b/src/core/AtNet.DevFw.Core/Framework/Graphic/ImageSizeMode.cs deleted file mode 100644 index 3d0cd27..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Graphic/ImageSizeMode.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace AtNet.DevFw.Framework.Graphic -{ - /// <summary> - /// 缩略图模式 - /// </summary> - public enum ImageSizeMode - { - /// <summary> - /// 固定尺寸,可能会变形 - /// </summary> - CustomSize = 1, - - /// <summary> - /// 裁剪 - /// </summary> - Cut = 2, - - /// <summary> - /// 根据宽度缩放 - /// </summary> - SuitWidth = 3, - - /// <summary> - /// 根据高度缩放 - /// </summary> - SuitHeight = 4, - - /// <summary> - /// 自动适配 - /// </summary> - AutoSuit = 5, - - /// <summary> - /// 自动填充 - /// </summary> - FillFit = 6 - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Graphic/WatermarkPosition.cs b/src/core/AtNet.DevFw.Core/Framework/Graphic/WatermarkPosition.cs deleted file mode 100644 index d9c1b92..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Graphic/WatermarkPosition.cs +++ /dev/null @@ -1,58 +0,0 @@ -namespace AtNet.DevFw.Framework.Graphic -{ - /// <summary> - /// 水印位置 - /// </summary> - public enum WatermarkPosition : int - { - /// <summary> - /// 默认 - /// </summary> - Default = 0, - - /// <summary> - /// 左上方 - /// </summary> - LeftTop = 1, - - /// <summary> - /// 正上方 - /// </summary> - Top = 2, - - /// <summary> - /// 右上方 - /// </summary> - RightTop = 3, - - /// <summary> - /// 左边 - /// </summary> - Left = 4, - - /// <summary> - /// 正中 - /// </summary> - Middle = 5, - - /// <summary> - /// 右边 - /// </summary> - Right = 6, - - /// <summary> - /// 左下方 - /// </summary> - LeftBottom = 7, - - /// <summary> - /// 正下方 - /// </summary> - Bottom = 8, - - /// <summary> - /// 右下方 - /// </summary> - RightBottom = 9 - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/IO/IoUtil.cs b/src/core/AtNet.DevFw.Core/Framework/IO/IoUtil.cs deleted file mode 100644 index 7cd58ad..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/IO/IoUtil.cs +++ /dev/null @@ -1,128 +0,0 @@ -using System; -using System.IO; - -namespace AtNet.DevFw.Framework.IO -{ - public static class IoUtil - { - /// <summary> - /// 计算文件的 MD5 值 - /// </summary> - /// <param name="fileName">要计算 MD5 值的文件名和路径</param> - /// <returns>MD5 值16进制字符串</returns> - public static string GetFileMD5(string fileName) - { - return HashFile(fileName, "md5"); - } - - /// <summary> - /// 计算文件的 sha1 值 - /// </summary> - /// <param name="fileName">要计算 sha1 值的文件名和路径</param> - /// <returns>sha1 值16进制字符串</returns> - public static string GetFileSHA1(string fileName) - { - return HashFile(fileName, "sha1"); - } - - /// <summary> - /// 计算文件的哈希值 - /// </summary> - /// <param name="fileName">要计算哈希值的文件名和路径</param> - /// <param name="algName">算法:sha1,md5</param> - /// <returns>哈希值16进制字符串</returns> - private static string HashFile(string fileName, string algName) - { - if (!System.IO.File.Exists(fileName)) - return string.Empty; - - System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, - System.IO.FileAccess.Read); - byte[] hashBytes = HashData(fs, algName); - fs.Close(); - return ByteArrayToHexString(hashBytes); - } - - /// <summary> - /// 计算哈希值 - /// </summary> - /// <param name="stream">要计算哈希值的 Stream</param> - /// <param name="algName">算法:sha1,md5</param> - /// <returns>哈希值字节数组</returns> - private static byte[] HashData(System.IO.Stream stream, string algName) - { - System.Security.Cryptography.HashAlgorithm algorithm; - if (algName == null) - { - throw new ArgumentNullException("algName 不能为 null"); - } - if (string.Compare(algName, "sha1", true) == 0) - { - algorithm = System.Security.Cryptography.SHA1.Create(); - } - else - { - if (string.Compare(algName, "md5", true) != 0) - { - throw new Exception("algName 只能使用 sha1 或 md5"); - } - algorithm = System.Security.Cryptography.MD5.Create(); - } - return algorithm.ComputeHash(stream); - } - - /// <summary> - /// 字节数组转换为16进制表示的字符串 - /// </summary> - private static string ByteArrayToHexString(byte[] buf) - { - return BitConverter.ToString(buf).Replace("-", ""); - } - - - - /// <summary> - /// 设置目录权限 - /// </summary> - /// <param name="dirPath"></param> - public static void SetDirCanWrite(string dirPath) - { - DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, dirPath)); - if (dir.Exists) - { - if ((dir.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) - { - dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; - } - } - else - { - Directory.CreateDirectory(dir.FullName).Create(); - } - } - - /// <summary> - /// 设置目录隐藏 - /// </summary> - /// <param name="dirPath"></param> - public static void SetDirHidden(string dirPath) - { - if (!FwCtx.Mono()) - { - DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, dirPath)); - if (!dir.Exists) - { - Directory.CreateDirectory(dir.FullName).Create(); - dir.Attributes = dir.Attributes & FileAttributes.Hidden; - } - else - { - if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.ReadOnly) - { - dir.Attributes = dir.Attributes & FileAttributes.Hidden; - } - } - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/IndexOfHandler.cs b/src/core/AtNet.DevFw.Core/Framework/IndexOfHandler.cs deleted file mode 100644 index 0a87942..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/IndexOfHandler.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace AtNet.DevFw.Framework -{ - /// <summary> - /// 获取索引位置的委托 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="t"></param> - /// <returns></returns> - public delegate Int32 IndexOfHandler<T>(T t); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/InnerAppDomainResolver.cs b/src/core/AtNet.DevFw.Core/Framework/InnerAppDomainResolver.cs deleted file mode 100644 index b034320..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/InnerAppDomainResolver.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.IO; -using System.Reflection; - -namespace AtNet.DevFw.Framework -{ - internal class InnerAppDomainResolver - { - public static void Resolve(String resolveFullDir) - { - AppDomain domain = AppDomain.CurrentDomain; - if (String.IsNullOrEmpty(resolveFullDir)) - { - resolveFullDir = domain.BaseDirectory + FwCtx.Variables.AssemblyPath; - } - // - //设为隐藏目录 - // - domain.AssemblyResolve+= delegate(object sender, ResolveEventArgs args) - { - - string filePath = String.Concat(resolveFullDir, args.Name.Split(',')[0], ".dll"); - - //File.WriteAllText(directory+DateTime.Now.Millisecond.ToString()+".txt",args.Name+"//"+filePath); - - if(!File.Exists(filePath)) - { - return null; - } - else - { - return Assembly.Load(File.ReadAllBytes(filePath)); - } - }; - } - } -} diff --git a/src/core/AtNet.DevFw.Core/Framework/Interface/ICallable.cs b/src/core/AtNet.DevFw.Core/Framework/Interface/ICallable.cs deleted file mode 100644 index d7aebe6..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Interface/ICallable.cs +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2013/12/8 - * Time: 20:58 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; - -namespace AtNet.DevFw.Framework.Interface -{ - /// <summary> - /// Description of ICallable. - /// </summary> - public interface ICallable - { - /// <summary> - /// 获取可调用的对象 - /// </summary> - /// <returns></returns> - Object GetCalledObject(); - - /// <summary> - /// 调用方法 - /// </summary> - /// <param name="method"></param> - /// <param name="parameters"></param> - /// <returns></returns> - Object Call(string method, params object[] parameters); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/JsonSerializer.cs b/src/core/AtNet.DevFw.Core/Framework/JsonSerializer.cs deleted file mode 100644 index 3dea3c3..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/JsonSerializer.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.IO; -using System.Runtime.Serialization.Json; -using System.Text; - -namespace AtNet.DevFw.Framework -{ - public static class JsonSerializer - { - public static Encoding Encoding = Encoding.UTF8; - - public static string SerializerObject<T>(T t) - { - using (var ms = new MemoryStream()) - { - DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); - ser.WriteObject(ms, t); - string result = Encoding.GetString(ms.ToArray()); - ser = null; - return result; - } - } - - public static T DeserializerObject<T>(string json) - { - using (var ms = new MemoryStream(Encoding.GetBytes(json))) - { - DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); - - T t = (T) ser.ReadObject(ms); - ser = null; - return t; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/LogFile.cs b/src/core/AtNet.DevFw.Core/Framework/LogFile.cs deleted file mode 100644 index 5bf817a..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/LogFile.cs +++ /dev/null @@ -1,105 +0,0 @@ -// -// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. -// -// Project: OPS -// FileName : LogFile.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2011/11/1 20:23:38 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.IO; -using System.Text; - -namespace AtNet.DevFw.Framework -{ - public class LogFile - { - private string filePath; - private bool printPrefix; - private Encoding _encoding; - - //种子,用于判断 - public int Seed { get; set; } - - //编码 - public Encoding FileEncoding - { - get { return this._encoding ?? (this._encoding = Encoding.UTF8); } - set { this._encoding = value; } - } - - public LogFile(string filePath) : this(filePath, false) - { - } - - public LogFile(string filePath, bool printPrefix) - { - this.printPrefix = printPrefix; - this.filePath = filePath; - if (!File.Exists(filePath)) - { - File.Create(filePath).Dispose(); - } - } - - /// <summary> - /// 填充内容 - /// </summary> - /// <param name="text"></param> - /* [Obsolete] - public void Append(string text) - { - byte[] data = Encoding.UTF8.GetBytes(text); - FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); - - if (fs.CanWrite) - { - fs.Write(data, 0, data.Length); - fs.Flush(); - } - fs.Dispose(); - - } - */ - public void Print(Byte[] bytes) - { - FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); - - if (fs.CanWrite) - { - if (this.printPrefix) - { - byte[] data = this.FileEncoding.GetBytes(string.Format("{0:yyyy-MM-dd HH:mm:ss ", DateTime.Now)); - fs.Write(data, 0, data.Length); - } - fs.Write(bytes, 0, bytes.Length); - } - fs.Dispose(); - } - - public void Println(string text) - { - this.Print(this.FileEncoding.GetBytes(text + System.Environment.NewLine)); - } - - public void Printf(string format, params object[] data) - { - this.Print(this.FileEncoding.GetBytes(string.Format(format, data))); - } - - /// <summary> - /// 清空内容 - /// </summary> - /// <param name="text"></param> - public void Truncate() - { - FileStream fs = new FileStream(filePath, FileMode.Truncate, FileAccess.Write); - fs.Dispose(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Net/FtpClient.cs b/src/core/AtNet.DevFw.Core/Framework/Net/FtpClient.cs deleted file mode 100644 index f4c22d6..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Net/FtpClient.cs +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2010 OPS,All right reseved . - * name : ftpclient - * author : newmin - * date : 2010/12/13 - */ - -using System; -using System.IO; -using System.Net; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Framework.Net -{ - public class FtpClient - { - private FtpWebRequest request; - private string ftp; - - /// <summary> - /// 服务器 - /// </summary> - public string Server { get; set; } - - /// <summary> - /// FTP端口 - /// </summary> - public int Port { get; set; } - - /// <summary> - /// 用户名 - /// </summary> - public string UserName { get; set; } - - /// <summary> - /// 密码 - /// </summary> - public string Password { get; set; } - - /// <summary> - /// 根目录 - /// </summary> - public string RootPath { get; set; } - - /// <summary> - /// FTP请求 - /// </summary> - public FtpWebRequest Request - { - get { return request; } - } - - public FtpClient(string server, int? port, string userName, string password, string rootPath) - { - this.Server = server; - this.Port = port ?? 21; - this.RootPath = rootPath ?? "/"; - this.UserName = userName; - this.Password = password; - ftp = "ftp://" + server + ":" + port + rootPath; - } - - public FtpClient(string server, string userName, string password) - { - this.Server = server; - this.Port = 21; - this.RootPath = "/"; - this.UserName = userName; - this.Password = password; - ftp = "ftp://" + server + ":" + Port + RootPath; - } - - /// <summary> - /// 连接FTP - /// </summary> - /// <returns>返回是否连接成功</returns> - public bool Connection() - { - try - { - request = WebRequest.Create(ftp) as FtpWebRequest; - request.KeepAlive = false; - request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; - request.Credentials = new NetworkCredential(UserName, Password); - FtpWebResponse fr = request.GetResponse() as FtpWebResponse; - using (StreamReader sr = new StreamReader(fr.GetResponseStream())) - { - if (!String.IsNullOrEmpty(sr.ReadToEnd())) return true; - } - return false; - } - catch - { - throw new Exception("FTP信息不正确!请检查FTP地址,端口和用户是否正确!"); - } - } - - /// <summary> - /// 是否存在文件或目录 - /// </summary> - /// <param name="folderOrFileName"></param> - /// <returns></returns> - public bool Exists(string folderOrFileName) - { - request = WebRequest.Create(ftp) as FtpWebRequest; - request.Credentials = new NetworkCredential(UserName, Password); - request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; - using (StreamReader rd = new StreamReader(request.GetResponse().GetResponseStream())) - { - /* - dir = rd.ReadToEnd(); - System.Web.HttpContext.Current.Response.Write(dir + "<br />" + count.ToString()); - */ - string line; - while ((line = rd.ReadLine()) != null) - { - GroupCollection gc = new Regex("[^\\s]*$").Match(line).Groups; - if (gc.Count != 1) return false; - if (gc[0].Value == folderOrFileName) return true; - } - return false; - } - } - - /// <summary> - /// 创建文件夹 - /// </summary> - /// <param name="floderName"></param> - public void CreateDirectory(string floderName) - { - request = WebRequest.Create(ftp + floderName) as FtpWebRequest; - request.Credentials = new NetworkCredential(UserName, Password); - request.Method = WebRequestMethods.Ftp.MakeDirectory; - request.GetResponse(); - } - - public void UploadFile(string filePath, Stream fileStream) - { - const int bufferLength = 1; - byte[] buffer = new byte[bufferLength]; - request = WebRequest.Create(ftp + filePath) as FtpWebRequest; - request.Method = WebRequestMethods.Ftp.UploadFile; - request.Credentials = new NetworkCredential(UserName, Password); - request.KeepAlive = false; - request.UseBinary = true; - Stream requestStream = request.GetRequestStream(); - int readBytes = 0; - do - { - readBytes = fileStream.Read(buffer, 0, bufferLength); - if (readBytes != 0) - requestStream.Write(buffer, 0, bufferLength); - } while (readBytes != 0); - - requestStream.Dispose(); - fileStream.Dispose(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Net/HttpClient.cs b/src/core/AtNet.DevFw.Core/Framework/Net/HttpClient.cs deleted file mode 100644 index d2c4643..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Net/HttpClient.cs +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2010 OPS,All right reseved . - * name : ftpclient - * author : newmin - * date : 2010/12/13 - */ - -using System; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Text; - -namespace AtNet.DevFw.Framework.Net -{ - public class HttpClient - { - private string uri; - - private HttpClient(string uri) - { - this.uri = uri; - } - - public static string Post(string url, string postData, CookieCollection cookies) - { - HttpWebRequest request = null; - //如果是发送HTTPS请求 - if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) - { - ServicePointManager.ServerCertificateValidationCallback = - new RemoteCertificateValidationCallback(CheckValidationResult); - request = WebRequest.Create(url) as HttpWebRequest; - if (request == null) return null; - request.ProtocolVersion = HttpVersion.Version10; - } - else - { - request = WebRequest.Create(url) as HttpWebRequest; - if (request == null) return null; - } - - //request.Accept = "*/*"; - request.Method = "POST"; - //httpwebrequest控件有一个透明过程,先向服务方查询url是否存在而不发送POST的内容, - //服务器如果证实url是可访问的,才发送POST,早期的Apache就认为这是一种错误,而IIS却可以正确应答 - //加上下面这一句将查询服务后马上post数据 - //System.Net.ServicePointManager.Expect100Continue = false; - //Expect:100-continue - System.Net.ServicePointManager.Expect100Continue = false; - request.ContentType = "application/x-www-form-urlencoded"; - request.Timeout = 10000; - - //添加cookie - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - - //发送请求 - byte[] data = Encoding.UTF8.GetBytes(postData); - request.ContentLength = data.Length; - Stream requestStream = request.GetRequestStream(); - requestStream.Write(data, 0, data.Length); - requestStream.Dispose(); - //获取响应 - HttpWebResponse response = request.GetResponse() as HttpWebResponse; - if (response.StatusCode == HttpStatusCode.OK) - { - using (StreamReader sr = new StreamReader(response.GetResponseStream())) - { - return sr.ReadToEnd(); - } - } - else - { - return "Error:" + response.StatusCode.ToString(); - } - } - - public string Post(string postData, CookieCollection cookies) - { - return Post(this.uri, postData, cookies); - } - - private static bool CheckValidationResult(object sender, X509Certificate certificate, - X509Chain chain, SslPolicyErrors sslPolicyErrors) - { - //总是接受 - return true; - } - - - /// <summary> - /// 下载文件(支持断点续传)并返回字节数组 - /// </summary> - /// <param name="url"></param> - /// <param name="fileBytes">上次接收的文件</param> - /// <returns></returns> - public static byte[] DownloadFile(string url, byte[] fileBytes) - { - const int buffer = 32768; //32k - byte[] data = new byte[buffer]; - int cread; - int cTotal; - - MemoryStream ms = fileBytes == null || fileBytes.Length == 0 - ? new MemoryStream() - : new MemoryStream(fileBytes); - - string remoteAddr = url; - - int fileLength = (int) ms.Length; - - HttpWebRequest wr = WebRequest.Create(remoteAddr) as HttpWebRequest; - if (fileLength != 0) - { - wr.AddRange(fileLength); - } - - try - { - WebResponse rsp = wr.GetResponse(); - - Stream st = rsp.GetResponseStream(); - - cTotal = (int) rsp.ContentLength; - - while ((cread = st.Read(data, 0, buffer)) != 0) - { - ms.Write(data, 0, cread); - } - - byte[] streamArray = ms.ToArray(); - ms.Dispose(); - - return streamArray; - } - catch - { - } - return null; - } - - // - //TODO:做一个支持断电下载的方法 - // - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Security/AESCrypto.cs b/src/core/AtNet.DevFw.Core/Framework/Security/AESCrypto.cs deleted file mode 100644 index b334016..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Security/AESCrypto.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Security.Cryptography; -using System.IO; - -namespace Ops.Framework.Security -{ - /// <summary> - /// AESԳƼ㷨 - /// </summary> - public static class AESCrypto - { - //ĬԿ - private static byte[] ivKeys = { 0x12,0x34, 0x56, 0x78, 0x90, 0xAB, - 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, - 0x90, 0xAB, 0xCD, 0xEF }; - - /// <summary> - /// ĬTOKEN - /// </summary> - private const string DEFAULT_TOKEN = "wwwopsccbynewmin"; - - #region ܺͽ߼ - - /// <summary> - /// AES - /// </summary> - /// <param name="data">Ҫܵ</param> - /// <param name="token">Կ(Ĭ128λ,16ĸ)</param> - /// <param name="encoding"></param> - /// <returns>ؼֽܺ</returns> - public static byte[] Encrypt(byte[] data, string token) - { - //㷨 - SymmetricAlgorithm des = Rijndael.Create(); - - byte[] _keys = Encoding.UTF8.GetBytes(token); - - //ԿԿ - des.Key = _keys; - des.IV = ivKeys; - MemoryStream ms = new MemoryStream(); - CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); - cs.Write(data, 0, data.Length); - cs.FlushFinalBlock(); - byte[] cipherBytes = ms.ToArray();//õֽܺ - cs.Dispose(); - ms.Dispose(); - return cipherBytes; - } - - - /// <summary> - /// AES - /// </summary> - /// <param name="decData">ֽ</param> - /// <param name="token">Կ</param> - /// <returns>ؽַܺ</returns> - public static byte[] Decrypt(byte[] decData, string token) - { - // if (decData.Length != ivKeys.Length) - //{ - // throw new CryptographicException("keys length is not valid!"); - //} - - SymmetricAlgorithm des = Rijndael.Create(); - des.Key = Encoding.UTF8.GetBytes(token); - des.IV = ivKeys; - byte[] decryptBytes = new byte[decData.Length]; - MemoryStream ms = new MemoryStream(decData); - CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read); - cs.Read(decryptBytes, 0, decryptBytes.Length); - cs.Dispose(); - ms.Dispose(); - return decryptBytes; - } - - - #endregion - - /// <summary> - /// ܵBase64ַ - /// </summary> - /// <param name="data"></param> - /// <param name="token"></param> - /// <returns></returns> - public static string EncryptToBase64(byte[] data, string token) - { - byte[] encData = Encrypt(data, token); - return Convert.ToBase64String(encData); - } - - /// <summary> - /// Base64ַн - /// </summary> - /// <param name="encyptStr"></param> - /// <param name="token"></param> - /// <returns></returns> - public static byte[] DecryptFromBase64(string encyptStr, string token) - { - byte[] data = Convert.FromBase64String(encyptStr); - return Decrypt(data, token); - } - - public static string EncryptToBase64(string str, string token) - { - return EncryptToBase64(Encoding.UTF8.GetBytes(str), token); - } - - public static string Decrypt(string encyptBase64Str, string token) - { - return Encoding.UTF8.GetString(DecryptFromBase64(encyptBase64Str, token)); - } - - #region Token - public static byte[] Encrypt(byte[] data) - { - return Encrypt(data, DEFAULT_TOKEN); - } - public static byte[] Decrypt(byte[] decData) - { - return Decrypt(decData, DEFAULT_TOKEN); - } - public static string EncryptToBase64(byte[] data) - { - return EncryptToBase64(data, DEFAULT_TOKEN); - } - public static byte[] DecryptFromBase64(string encyptStr) - { - return DecryptFromBase64(encyptStr, DEFAULT_TOKEN); - } - public static string EncryptToBase64(string str) - { - return EncryptToBase64(str, DEFAULT_TOKEN); - } - public static string Decrypt(string encyptBase64Str) - { - return Decrypt(encyptBase64Str, DEFAULT_TOKEN); - } - #endregion - - } -} diff --git a/src/core/AtNet.DevFw.Core/Framework/Security/Md5Crypto.cs b/src/core/AtNet.DevFw.Core/Framework/Security/Md5Crypto.cs deleted file mode 100644 index 22e12da..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Security/Md5Crypto.cs +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2013/12/12 - * Time: 7:35 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Text; - -namespace AtNet.DevFw.Framework.Security -{ - /// <summary> - /// Description of Md5Crypto. - /// </summary> - public class Md5Crypto - { - /// <summary> - /// 用md5加密 - /// </summary> - /// <param name="word"></param> - /// <returns></returns> - public static string EncodeMD5(String str) - { - StringBuilder sb = new StringBuilder(); - var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 - // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  - byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); - foreach (byte b in s) - { - sb.Append(b.ToString("x2")); - } - return sb.ToString(); - } - - /// <summary> - /// 16位MD5加密 - /// </summary> - /// <param name="str"></param> - /// <returns></returns> - public static string Encode16MD5(String str) - { - //取32位的中间部分 - var md5 = System.Security.Cryptography.MD5.Create(); - return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(str)), 4, 8).Replace("-", String.Empty); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Service/IService.cs b/src/core/AtNet.DevFw.Core/Framework/Service/IService.cs deleted file mode 100644 index 935251e..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Service/IService.cs +++ /dev/null @@ -1,24 +0,0 @@ -/* * - * name : 服务接口 - * author : OPS newmin - * date : 09/29 2010 - * */ - -using System; - -namespace AtNet.DevFw.Framework.Service -{ - /// <summary> - /// 服务接口 - /// </summary> - /// <typeparam name="T"></typeparam> - internal interface IService<T> where T : MarshalByRefObject - { - /// <summary> - /// 获取服务的实例 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <returns></returns> - T GetInstance(); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Service/ServiceManager.cs b/src/core/AtNet.DevFw.Core/Framework/Service/ServiceManager.cs deleted file mode 100644 index d3beb9e..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Service/ServiceManager.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* * - * name :服务管理类 - * author :OPS newmin - * date :09/20 2010 - * note :继承此类需在子类的静态构造函数中添加代码,如下: - * serviceDict.Add(typeof(IP), ConfigurationManager.AppSettings["srv_ip"]); - * */ - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Xml; - -namespace AtNet.DevFw.Framework.Service -{ - /// <summary> - /// 服务管理 - /// </summary> - /// <typeparam name="T">类型</typeparam> - public abstract class ServiceManager<T> : IService<T> where T : MarshalByRefObject - { - /// <summary> - /// 服务配置字典 - /// </summary> - protected static IDictionary<Type, string> serviceDict = new Dictionary<Type, string>(); - - /// <summary> - /// 服务配置链接 - /// </summary> - protected static IDictionary<string, string> serviceUriDict = new Dictionary<string, string>(); - - /// <summary> - /// 根据配置文件初始化服务 - /// </summary> - /// <param name="configFile"></param> - protected static void Init(string configFile) - { - XmlDocument doc = new XmlDocument(); - doc.Load(configFile); - XmlNodeList xs = doc.SelectNodes("/serviceConfig/service"); - //服务的类型 - string[] ta; //TypeArr - Assembly a; - foreach (XmlNode xn in xs) - { - ta = xn.Attributes["type"].Value.Split(','); - a = Assembly.Load(ta[1]); - serviceDict.Add(a.GetType(ta[0], true, true), xn.Attributes["objectUri"].Value); - } - //获取Uri - xs = doc.SelectNodes("/serviceConfig/serviceUri/add"); - foreach (XmlNode xn in xs) - { - serviceUriDict.Add(xn.Attributes["name"].Value, xn.Attributes["uri"].Value); - } - } - - #region IService<T> 成员 - - public T GetInstance() - { - Type type = typeof (T); - return (T) Activator.GetObject(typeof (T), serviceDict[typeof (T)]); - } - - #endregion - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/SettingFile.cs b/src/core/AtNet.DevFw.Core/Framework/SettingFile.cs deleted file mode 100644 index 142f559..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/SettingFile.cs +++ /dev/null @@ -1,237 +0,0 @@ -// -// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. -// -// Project: OPS.Web.JSON -// FileName : JsonDictionaryFile.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2011/11/26 20:01:29 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Xml; - -namespace AtNet.DevFw.Framework -{ - /// <summary> - /// 设置数据文件 - /// </summary> - public class SettingFile - { - private readonly string _filePath; - private readonly XmlDocument _xdoc; - private readonly XmlNode _rootNode; - - /// <summary> - /// - /// </summary> - /// <param name="filePath"></param> - public SettingFile(string filePath) - { - this._xdoc = new XmlDocument(); - this._filePath = filePath; - - //不存在,则创建 - if (!File.Exists(this._filePath)) - { - File.Create(filePath).Dispose(); - const string initData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<settings>\r\n</settings>"; - - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - - //读取文档 - using (TextReader tr = new StreamReader(this._filePath)) - { - _xdoc.LoadXml(tr.ReadToEnd()); - tr.Dispose(); - this._rootNode = _xdoc.SelectSingleNode("/settings"); - } - } - - - /// <summary> - /// 是否包含某个键值 - /// </summary> - /// <param name="key"></param> - /// <returns></returns> - public bool Contains(string key) - { - return this._rootNode.SelectSingleNode(String.Format("/settings/add[@key='{0}']", key)) != null; - } - - /// <summary> - /// 获取或设置指定键值的数据 - /// </summary> - /// <param name="key"></param> - /// <returns></returns> - public string this[string key] - { - get { return this.Get(key); } - set - { - this.Set(key, value); - } - } - - /// <summary> - /// Get the field value by key - /// </summary> - /// <param name="key"></param> - - public string Get(String key) - { - XmlNode node = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (node == null) - { - throw new ArgumentOutOfRangeException("key", "no such key named \"" + key + "\""); - } - return node.InnerText; - } - - /// <summary> - /// Set field value, if not exits will add new one. - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <returns></returns> - /// <exception cref="ArgumentOutOfRangeException"></exception> - public void Set(String key, String value) - { - XmlNode node = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (node == null) - { - this.Add(key,value??"",false); - return; - //throw new ArgumentOutOfRangeException("key", "no such key named \"" + key + "\""); - } - - - //如果不是文本注释,删除第一个节点并重新保存值 - if (node.FirstChild.Name == "#cdata-section") - { - XmlCDataSection xmlCDataSection = node.FirstChild as XmlCDataSection; - if (xmlCDataSection != null) xmlCDataSection.InnerText = value??""; - } - else - { - node.RemoveChild(node.FirstChild); - node.InsertBefore(_xdoc.CreateCDataSection(value??""), node.FirstChild); - } - } - - /// <summary> - /// 添加新的设置 - /// </summary> - [Obsolete] - public void Add(string key, string value) - { - this.Add(key, value, false); - } - - /// <summary> - /// 添加配置 - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <param name="ignoreExist">是否忽略已经存在的配置</param> - private void Add(string key, string value, bool ignoreExist) - { - //检查是否已经存在 - XmlNode _xn; - _xn = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (_xn != null) - { - if (ignoreExist) - { - return; - } - else - { - throw new ArgumentException(String.Format("已经存在一个名为{0}的节点!", key)); - } - } - - XmlNode root = this._rootNode; - - - XmlNode xn = _xdoc.CreateElement("add"); - - //添加key属性 - XmlAttribute xa = _xdoc.CreateAttribute("key"); - xa.Value = key; - if (xn.Attributes != null) xn.Attributes.Append(xa); - - //添加JSON内容 - xn.AppendChild(_xdoc.CreateCDataSection(value)); - - //将新元素添加到DOM - root.AppendChild(xn); - } - - /// <summary> - /// 移除指定的设置 - /// </summary> - /// <param name="key"></param> - public void Remove(string key) - { - XmlNode _xn = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); - if (_xn != null) - { - this._rootNode.RemoveChild(_xn); - } - } - - - /// <summary> - /// 搜索键值并以字典的形式返回 - /// </summary> - /// <param name="keyword"></param> - /// <returns></returns> - public IDictionary<string, string> SearchKey(string keyword) - { - IDictionary<string, string> dict = new Dictionary<string, string>(); - - XmlNodeList node = this._rootNode.SelectNodes(String.Format("add[contains(@key,'{0}')]", keyword)); - - if (node != null && node.Count != 0) - { - foreach (XmlNode xn in node) - { - if (xn.Attributes != null) - { - dict.Add(xn.Attributes["key"].Value, xn.InnerText); - } - } - } - - return dict; - } - - /// <summary> - /// 保存到文件中 - /// </summary> - public void Flush() - { - /* - using (TextWriter tr = new StreamWriter(this.filePath)) - { - tr.Write(xmlContent); - tr.Flush(); - tr.Dispose(); - }*/ - - _xdoc.Save(this._filePath); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/StringCreatorHandler.cs b/src/core/AtNet.DevFw.Core/Framework/StringCreatorHandler.cs deleted file mode 100644 index 2fbb168..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/StringCreatorHandler.cs +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 由SharpDevelop创建。 - * 用户: newmin - * 日期: 2013/11/24 - * 时间: 17:48 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; - -namespace AtNet.DevFw.Framework -{ - /// <summary> - /// Description of StringCreatorHandler. - /// </summary> - public delegate String StringCreatorHandler(); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs deleted file mode 100644 index c5de501..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Text; - -namespace AtNet.DevFw.Framework.TaskBox.HttpSync -{ - /// <summary> - /// HTTP - /// </summary> - public class HttpSimpleRequest - { - private static readonly string DefaultUserAgent = - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; - - /// <summary> - /// GETʽHTTP - /// </summary> - /// <param name="url">URL</param> - /// <param name="timeout">ijʱʱ</param> - /// <param name="userAgent">ĿͻϢΪ</param> - /// <param name="cookies">ͬHTTP͵CookieϢҪ֤Ϊ</param> - /// <returns></returns> - public static HttpWebResponse CreateGetHttpResponse( - string url, - string userAgent, - CookieCollection cookies) - { - if (string.IsNullOrEmpty(url)) - { - throw new ArgumentNullException("url"); - } - HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; - request.Method = "GET"; - request.UserAgent = DefaultUserAgent; - if (!string.IsNullOrEmpty(userAgent)) - { - request.UserAgent = userAgent; - } - - //if (timeout.HasValue) - //{ - // request.Timeout = timeout.Value; - //} - - - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - return request.GetResponse() as HttpWebResponse; - } - - - /// <summary> - /// POSTʽHTTP - /// </summary> - /// <param name="url">URL</param> - /// <param name="parameters">ͬPOSTIJƼֵֵ</param> - /// <param name="timeout">ijʱʱ</param> - /// <param name="userAgent">ĿͻϢΪ</param> - /// <param name="requestEncoding">HTTPʱõı</param> - /// <param name="cookies">ͬHTTP͵CookieϢҪ֤Ϊ</param> - /// <returns></returns> - public static HttpWebResponse CreatePostHttpResponse( - string url, - Hashtable parameters, - string userAgent, - Encoding requestEncoding, - CookieCollection cookies) - { - if (string.IsNullOrEmpty(url)) - { - throw new ArgumentNullException("url"); - } - if (requestEncoding == null) - { - throw new ArgumentNullException("requestEncoding"); - } - HttpWebRequest request = null; - //ǷHTTPS - if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) - { - ServicePointManager.ServerCertificateValidationCallback = - new RemoteCertificateValidationCallback(CheckValidationResult); - request = WebRequest.Create(url) as HttpWebRequest; - request.ProtocolVersion = HttpVersion.Version10; - } - else - { - request = WebRequest.Create(url) as HttpWebRequest; - } - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - - if (!string.IsNullOrEmpty(userAgent)) - { - request.UserAgent = userAgent; - } - else - { - request.UserAgent = DefaultUserAgent; - } - - //if (timeout.HasValue) - //{ - // request.Timeout = timeout.Value; - //} - - if (cookies != null) - { - request.CookieContainer = new CookieContainer(); - request.CookieContainer.Add(cookies); - } - //ҪPOST - if (!(parameters == null || parameters.Count == 0)) - { - StringBuilder buffer = new StringBuilder(); - int i = 0; - foreach (string key in parameters.Keys) - { - if (i > 0) - { - buffer.AppendFormat("&{0}={1}", key, parameters[key]); - } - else - { - buffer.AppendFormat("{0}={1}", key, parameters[key]); - } - i++; - } - byte[] data = requestEncoding.GetBytes(buffer.ToString()); - using (Stream stream = request.GetRequestStream()) - { - stream.Write(data, 0, data.Length); - } - } - return request.GetResponse() as HttpWebResponse; - } - - private static bool CheckValidationResult(object sender, - X509Certificate certificate, - X509Chain chain, - SslPolicyErrors errors) - { - //ǽ - return true; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs deleted file mode 100644 index 512cef5..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using System.Net; -using System.Text; - -namespace AtNet.DevFw.Framework.TaskBox.HttpSync -{ - /// <summary> - /// Httpͻ - /// </summary> - public class HttpTaskClient : ITaskExecuteClient - { - private string server; - private object token; - - public HttpTaskClient(string serverUrl, string token) - { - this.server = serverUrl; - this.token = token; - } - - public string ClientName - { - get { return "HttpTaskClient"; } - } - - public void Execute(ITask task) - { - foreach (Hashtable data in task.Datas) - { - this.Post(task, data); - } - } - - private void Post(ITask task, Hashtable data) - { - if (data.ContainsKey("auth_token")) - data.Add("auth_token", this.token); - - string url = this.server - + "?auth_token=" + this.token - + "&action=" + task.TaskName; - - try - { - HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( - url, - data, - null, - Encoding.UTF8, - null - ); - - StreamReader sr = new StreamReader(rsp.GetResponseStream()); - string result = sr.ReadToEnd(); - - sr.BaseStream.Dispose(); - sr.Dispose(); - - task.SetState(this, TaskState.Ok, TaskMessageParser.ConvertToSyncMessage(result)); - } - catch (Exception exc) - { - task.SetState(this, TaskState.Error, new TaskMessage - { - Result = false, - Message = exc.Message - }); - } - } - - public bool TestConnect() - { - try - { - string url = this.server - + "?auth_token=" + this.token - + "&action=connect"; - - HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( - url, - new Hashtable(), - null, - Encoding.UTF8, - null - ); - return true; - } - catch (Exception exc) - { - return false; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITask.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITask.cs deleted file mode 100644 index 90564c0..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITask.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// - /// </summary> - public interface ITask - { - /// <summary> - /// ״̬ıʱ,֪ͨ - /// </summary> - event TaskStateChangedHandler StateChanged; - - /// <summary> - /// (ʶĿʶ) - /// </summary> - String TaskName { get; set; } - - /// <summary> - /// - /// </summary> - IList<Hashtable> Datas { get; } - - /// <summary> - /// ״̬ - /// </summary> - TaskState State { get; } - - /// <summary> - /// ״̬ - /// </summary> - /// <param name="state"></param> - /// <param name="source">¼Դ</param> - /// <param name="msg"></param> - void SetState(ITaskExecuteClient source, TaskState state, TaskMessage msg); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs deleted file mode 100644 index b8bb92c..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; - -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// 洢(ڴ洢񣬴洢״̬) - /// </summary> - public interface ITaskBoxStorage - { - /// <summary> - /// ӹ - /// </summary> - /// <param name="task"></param> - void AppendSuppendTask(ITask task); - - /// <summary> - /// ״̬ıʱ״̬ - /// </summary> - /// <param name="task"></param> - /// <param name="message"></param> - void SaveTaskChangedState(ITask task, TaskMessage message); - - /// <summary> - /// ȡе - /// </summary> - /// <returns></returns> - IList<ITask> GetSyncTaskQueue(); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskClient.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskClient.cs deleted file mode 100644 index acbc328..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskClient.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace AtNet.DevFw.Framework.TaskBox -{ - public interface ITaskExecuteClient - { - void Execute(ITask task); - string ClientName { get; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs deleted file mode 100644 index 95483d5..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// ־¼ṩ - /// </summary> - public interface ITaskLogProvider - { - /// <summary> - /// 洢 - /// </summary> - ITaskBoxStorage Storage { get; } - - /// <summary> - /// ¼״̬ - /// </summary> - /// <param name="task"></param> - /// <param name="message"></param> - void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Task.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/Task.cs deleted file mode 100644 index d6933ef..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Task.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// - /// </summary> - public class Task : ITask - { - public event TaskStateChangedHandler StateChanged; - private readonly IList<Hashtable> _dataList; - private TaskState _state = TaskState.Default; - - public Task() - { - this._dataList = new List<Hashtable>(); - } - - public Task(string taskName, params Hashtable[] datas) - : this() - { - this.TaskName = taskName; - if (datas != null) - { - foreach (Hashtable data in datas) - { - if (data != null) - { - this._dataList.Add(data); - } - } - } - } - - /// <summary> - /// - /// </summary> - public String TaskName { get; set; } - - /// <summary> - /// - /// </summary> - public IList<Hashtable> Datas - { - get { return this._dataList; } - } - - - /// <summary> - /// ״̬ - /// </summary> - public TaskState State - { - get { return this._state; } - } - - - public void SetState(ITaskExecuteClient source, TaskState state, TaskMessage message) - { - this._state = state; - - if (this.StateChanged != null) - { - this.StateChanged(source, this, message); - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskBox.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskBox.cs deleted file mode 100644 index c9dabb8..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskBox.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Threading; - -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// - /// </summary> - public class TaskBox - { - /// <summary> - /// ߳ - /// </summary> - private int _threadNum = 5; - - private readonly TaskQueue _taskManager; - private Thread _serviceThread; - - /// <summary> - /// ύĴ - /// </summary> - public event TaskPostingHandler OnTaskExecuting; - - /// <summary> - /// 񷵻Ϣ - /// </summary> - public event TaskMessageHandler OnNotifing; - - /// <summary> - /// ĬϹ - /// </summary> - private int _suppend_minseconds = 10000; - - public TaskBox(ITaskBoxStorage storage, - ITaskLogProvider logProvider, - int threadNum) - { - this.Storage = storage; - this.Log = logProvider; - this._threadNum = threadNum; - this._taskManager = new TaskQueue(this); - - //¼־ - //this.TaskStateChanged += this.Log.LogTaskState; - } - - public TaskBox(ITaskBoxStorage storage) - : this(storage, null, 5) - { - } - - public TaskBox(ITaskBoxStorage storage, int threadNum) - : this(storage, null, threadNum) - { - } - - - /// <summary> - /// ݴ洢 - /// </summary> - public ITaskBoxStorage Storage { get; private set; } - - /// <summary> - /// ־ṩ - /// </summary> - public ITaskLogProvider Log { get; private set; } - - /// <summary> - /// ֪ͨs - /// </summary> - /// <param name="source"></param> - /// <param name="message"></param> - public void Notifing(object source, string message) - { - if (this.OnNotifing != null) - { - this.OnNotifing(source, message); - } - } - - public void StartWork() - { - //box - _serviceThread = new Thread(() => - { - try - { - _work(); - } - catch (Exception exc) - { - this.OnNotifing(this, "[Crash]:" + exc.Message); - } - }); - _serviceThread.Start(); - - this.Notifing(_serviceThread, "[Start]:Task service is running!"); - } - - /// <summary> - /// ֹͣ - /// </summary> - public void StopWork() - { - //ȴִ߳ - //serviceThread.Join(); - if (_serviceThread != null) - { - _serviceThread.Abort(); - } - this.Notifing(_serviceThread, "[Stop]:Task service is stoped!"); - } - - private void _work() - { - do - { - ITask task = this._taskManager.GetNextTask(); - if (task == null) - { - // - if (Thread.CurrentThread.ThreadState == ThreadState.Running) - { - //Thread.Sleep(this._suppend_minseconds); - continue; - } - break; - } - - if (this.OnTaskExecuting != null) - { - new Thread(() => { this.OnTaskExecuting(task); }).Start(); - } - } while (true); - } - - public int TaskCount - { - get { return _taskManager.TaskCount; } - } - - /// <summary> - /// 뵽 - /// </summary> - /// <param name="task"></param> - /// <param name="handler"></param> - public virtual void RegistTask( - ITask task, - TaskStateChangedHandler handler) - { - this._taskManager.RegistTask(task, handler); - } - - - public virtual void RegistContinuTasks( - TaskBuildHandler taskBuilder, - TaskStateChangedHandler handler, - int seconds) - { - this._taskManager.RegistContinuTasks(taskBuilder, handler, seconds); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskMessage.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskMessage.cs deleted file mode 100644 index d2827fc..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskMessage.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections; - -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// Ϣ - /// </summary> - [Serializable] - public class TaskMessage - { - /// <summary> - /// ʧܽ - /// </summary> - public static TaskMessage Fault = new TaskMessage {Result = false, Data = null, Message = null}; - - - /// <summary> - /// ɹ - /// </summary> - public static TaskMessage Ok = new TaskMessage {Result = true, Data = null, Message = null}; - - /// <summary> - /// - /// </summary> - public bool Result { get; set; } - - /// <summary> - /// Ϣ - /// </summary> - public String Message { get; set; } - - /// <summary> - /// - /// </summary> - public Hashtable Data { get; set; } - - public override string ToString() - { - return TaskMessageParser.ConvertSyncMessageToString(this); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs deleted file mode 100644 index f95e3e5..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; - -namespace AtNet.DevFw.Framework.TaskBox -{ - public class TaskMessageParser - { - public static string ConvertSyncMessageToString(TaskMessage message) - { - return JsonSerializer.SerializerObject<TaskMessage>(message); - } - - /// <summary> - /// JsonַתΪSyncMessage - /// </summary> - /// <param name="message"></param> - /// <returns></returns> - public static TaskMessage ConvertToSyncMessage(string message) - { - if (!String.IsNullOrEmpty(message)) - { - return JsonSerializer.DeserializerObject<TaskMessage>(message); - } - return default(TaskMessage); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskQueue.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskQueue.cs deleted file mode 100644 index 06a3939..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskQueue.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; - -namespace AtNet.DevFw.Framework.TaskBox -{ - internal class TaskQueue - { - private TaskBox _syncBox; - private Queue<ITask> tasks = new Queue<ITask>(); - - public TaskQueue(TaskBox box) - { - this._syncBox = box; - - //ӵһδݿ - this.upgradeStackFromStorage(); - } - - /// <summary> - /// - /// </summary> - public int TaskCount - { - get { return this.tasks.Count; } - } - - public ITask GetNextTask() - { - if (tasks.Count == 0) - return null; - - while (tasks.Count != 0) - { - ITask task = tasks.Dequeue(); - if (task != null) return task; - } - return null; - } - - /// <summary> - /// Ӵ洢и¶ - /// </summary> - private void upgradeStackFromStorage() - { - IList<ITask> taskList = null; - - try - { - taskList = this._syncBox.Storage.GetSyncTaskQueue(); - } - catch (Exception exc) - { - this._syncBox.Notifing(this._syncBox.Storage, "[Error]:Ӵ洢лȡв" + exc.Message); - return; - } - - if (taskList != null) - { - foreach (ITask task in taskList) - { - this.tasks.Enqueue(task); - } - } - } - - internal void RegistTask(ITask task, - TaskStateChangedHandler behavior) - { - task.StateChanged += behavior; - task.StateChanged += this._syncBox.Log.LogTaskState; - this.tasks.Enqueue(task); - - task.SetState(null, TaskState.Created, new TaskMessage - { - Result = true, - Message = "Ѿ..." - }); - } - - - internal void RegistContinuTasks( - TaskBuildHandler taskBuilder, - TaskStateChangedHandler handler, - int minseconds) - { - new Thread(() => - { - while (true) - { - try - { - this.RegistTask(taskBuilder(), handler); - } - catch (Exception exc) - { - this._syncBox.Notifing(taskBuilder, "񴴽ʧ!"); - } - - Thread.Sleep(minseconds); - } - }).Start(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskState.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskState.cs deleted file mode 100644 index 51e9461..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskState.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// ״̬ - /// </summary> - public enum TaskState - { - /// <summary> - /// մ - /// </summary> - Created, - - /// <summary> - /// ɹ - /// </summary> - Ok, - - /// <summary> - /// ڲԭɵʧ - /// </summary> - Error, - - /// <summary> - /// жϻԭ - /// </summary> - Suppend, - Default - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs deleted file mode 100644 index 7760965..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace AtNet.DevFw.Framework.TaskBox -{ - /// <summary> - /// ״̬ıʱ - /// </summary> - /// <param name="source">ı״̬Դ</param> - /// <param name="state"></param> - public delegate void TaskStateChangedHandler(ITaskExecuteClient source, ITask task, TaskMessage result); - - /// <summary> - /// - /// </summary> - /// <returns></returns> - public delegate ITask TaskBuildHandler(); - - public delegate void TaskPostingHandler(ITask task); - - /// <summary> - /// Ϣ - /// </summary> - /// <param name="data"></param> - /// <param name="message"></param> - public delegate void TaskMessageHandler(object data, string message); - - public delegate void TaskBoxHandler(TaskBox taskBox); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs deleted file mode 100644 index bacbf89..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace AtNet.DevFw.Framework.TaskBox.Toolkit -{ - public class TaskBoxDbStorage : ITaskBoxStorage - { - public void AppendSuppendTask(ITask task) - { - throw new NotImplementedException(); - } - - - public void SaveTaskChangedState(ITask task, TaskMessage message) - { - //״̬ıʱ״̬ - //Ѿִгɹˣʧˡ - } - - - public IList<ITask> GetSyncTaskQueue() - { - // - //TODO:ݿлȡ񣬲ʶ¼,HttpPost,eventжpost - // - - return new List<ITask>(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs deleted file mode 100644 index de85d4b..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace AtNet.DevFw.Framework.TaskBox.Toolkit -{ - public class TaskLogProvider : ITaskLogProvider - { - public TaskLogProvider(ITaskBoxStorage storage) - { - this.Storage = storage; - } - - public void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message) - { - //Լ¼־ - - if (this.Storage != null) - this.Storage.SaveTaskChangedState(task, message); - } - - public ITaskBoxStorage Storage { get; private set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs b/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs deleted file mode 100644 index d0e968e..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; - -namespace AtNet.DevFw.Framework.TaskBox.Toolkit -{ - /// <summary> - /// - /// </summary> - public class TaskService - { - private TaskBox _box; - //private static string _server; - //private static string _token; - private bool _isBooted; - - //public static void RegistServer(string server, string token) - //{ - // _server = server; - // _token = token; - //} - - public TaskBox Sington - { - get - { - if (_box == null) - { - throw new Exception("δ!"); - } - - return _box; - } - } - - /// <summary> - /// - /// </summary> - public void Start(TaskBoxHandler handler, ITaskBoxStorage storage, ITaskLogProvider logProvider) - { - if (_isBooted == true) - throw new Exception("Ѿ!"); - - if (_box == null) - { - if (storage == null) - { - storage = new TaskBoxDbStorage(); - } - - if (logProvider == null) - { - logProvider = new TaskLogProvider(storage); - } - - - _box = new TaskBox(storage, logProvider, 3); - - if (handler != null) - { - handler(_box); - } - - //if (String.IsNullOrEmpty(_server) - // || String.IsNullOrEmpty(_token)) - // throw new ArgumentNullException("ʹRegistServerעϢ!"); - //HttpSyncClient client = new HttpSyncClient(_server, _token); - - //if (client.TestConnect()) - //{ - // //ע¼ - // _box.OnTaskPosting += client.Post; - //} - //else - //{ - // throw new Exception("ʧ"); - //} - } - - _isBooted = true; - _box.StartWork(); - } - - /// <summary> - /// ,ʹõĴ洢־¼ - /// </summary> - public void Start(TaskBoxHandler handler) - { - Start(handler, null, null); - } - - - public void Stop() - { - _box.StopWork(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Text/ChineseSpell.cs b/src/core/AtNet.DevFw.Core/Framework/Text/ChineseSpell.cs deleted file mode 100644 index 346a0d3..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Text/ChineseSpell.cs +++ /dev/null @@ -1,1680 +0,0 @@ -// -// ChineseSpell - A Chinese pinyin library -// Copyright (C) 2011 S1N1.COM,All rights reseved. -// -// Principle:http://tonyqus.cnblogs.com/archive/2005/10/22/260000.html -// - -using System; -using System.Text; - -namespace AtNet.DevFw.Framework.Text -{ - /// <summary> - /// 提供用于设置转换选项的枚举值。 - /// </summary> - [Flags] - public enum SpellOptions - { - /// <summary> - /// 只转换拼音首字母,默认转换全部 - /// </summary> - FirstLetterOnly = 1, //只转换拼音首字母,默认转换全部 - - /// <summary> - /// 转换未知汉字为问号,默认不转换 - /// </summary> - TranslateUnknowWordToInterrogation = 1 << 1, //转换未知汉字为问号,默认不转换 - - /// <summary> - /// 保留非字母、非数字字符,默认不保留 - /// </summary> - EnableUnicodeLetter = 1 << 2, //保留非字母、非数字字符,默认不保留 - - /// <summary> - /// 转换未知汉字为连接符号 - /// </summary> - TranslateSpecialWordToConnect = 1 << 3 - } - - /// <summary> - /// 中文拼写 - /// </summary> - public class ChineseSpell - { - #region 字段和属性 - - //拼音代码表 - private static readonly string[] _spellMusicCode = new string[] - { - "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", - "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", - "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", - "chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", - "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong", "cou", "cu", - "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", - "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", - "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", - "fei", "fen", "feng", "fu", "fou", "ga", "gai", "gan", "gang", "gao", - "ge", "ji", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", - "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", - "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", - "hui", "hun", "huo", "jia", "jian", "jiang", "qiao", "jiao", "jie", "jin", - "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", - "kang", "kao", "ke", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", - "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", - "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", - "ling", "liu", "long", "lou", "lu", "luan", "lue", "lun", "luo", "ma", - "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", - "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", - "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", - "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nuan", "nue", "yao", - "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", - "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", - "qi", "qia", "qian", "qiang", "qie", "qin", "qing", "qiong", "qiu", "qu", - "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", - "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", - "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", - "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", - "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", - "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", - "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", - "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", - "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", - "xuan", "xue", "xun", "ya", "yan", "yang", "ye", "yi", "yin", "ying", - "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", - "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", - "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", - "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", - "zui", "zun", "zuo", "", "ei", "m", "n", "dia", "cen", "nou", - "jv", "qv", "xv", "lv", "nv" - }; - - //拼音索引表 - private static readonly int[,] _spellCodeIndex = new int[,] - { - { - 354, 279, 331, 0, 190, 39, 284, 67, 249, 167, 353, 19, 133, 92, 129, 152, 31, 385, 105, 131, 84, 348, - 348, - 329, 133, 0, 376, 116, 283, 349, 344, 87, 133, 0, 0, 0, 284, 202, 0, 0, 0, 0, 0, 0, 342, 345, 0, 276, - 199, 243, 0, 0, 52, 0, 375, 102, 88, 176, 170, 348, 136, 180, 375, 0, 354, 294, 299, 94, 344, 368, 344, - 55, 347, 333, 131, 347, 353, 369, 166, 74, 325, 92, 0, 329, 6, 19, 0, 306, 0, 332, 372, 114, 107, 20, 33, - 370, 279, 258, 79, 191, 243, 328, 220, 83, 43, 324, 62, 376, 229, 354, 64, 73, 329, 348, 336, 92, 2, 349, - 232, 282, 84, 305, 389, 357, 134, 332, 343, 336, 363, 332, 217, 208, 335, 340, 377, 389, 13, 232, 348, - 294, 348, 374, 107, 181, 378, 21, 250, 14, 371, 47, 346, 369, 14, 332, 250, 284, 10, 121, 110, 333, 91, - 78, 194, 19, 113, 123, 102, 251, 47, 337, 282, 320, 106, 157, 348, 101, 349, 189, 340, 3, 175, 77, 178, - 29, 37, 343, 377, 263, 125, 294, 56 - }, - { - 302, 214, 130, 132, 313, 373, 393, 39, 404, 134, 286, 313, 282, 320, 20, 201, 334, 318, 354, 330, 340, - 101, - 148, 329, 348, 84, 167, 122, 350, 332, 270, 229, 330, 190, 331, 339, 62, 134, 375, 157, 294, 123, 334, - 125, 16, 309, 81, 344, 11, 354, 336, 116, 374, 375, 19, 133, 220, 389, 167, 323, 169, 43, 387, 0, 91, - 310, 286, 187, 304, 383, 337, 237, 241, 88, 167, 299, 245, 80, 375, 387, 178, 295, 171, 122, 68, 386, 12, - 329, 134, 200, 23, 125, 347, 276, 245, 350, 36, 243, 264, 376, 45, 325, 354, 19, 309, 345, 83, 305, 328, - 75, 34, 283, 140, 62, 29, 11, 367, 120, 220, 369, 388, 345, 353, 340, 367, 47, 84, 84, 375, 190, 92, 348, - 335, 343, 294, 71, 368, 373, 315, 11, 360, 245, 325, 296, 375, 297, 331, 355, 261, 217, 357, 126, 180, - 63, 305, 109, 129, 330, 278, 243, 252, 35, 40, 270, 11, 334, 352, 220, 304, 301, 346, 78, 19, 333, 359, - 97, 270, 162, 352, 362, 387, 231, 295, 381, 354, 368, 389, 279, 43, 131, 107 - }, - { - 370, 247, 349, 62, 335, 174, 11, 234, 130, 166, 175, 182, 243, 332, 304, 350, 68, 392, 278, 127, 132, - 318, - 392, 240, 160, 32, 101, 241, 308, 381, 325, 92, 20, 121, 45, 312, 278, 220, 82, 332, 354, 75, 170, 20, - 97, 332, 332, 193, 347, 130, 242, 127, 83, 377, 2, 269, 348, 137, 216, 304, 348, 58, 150, 0, 125, 40, - 128, 276, 359, 24, 18, 3, 303, 59, 30, 158, 348, 130, 243, 188, 329, 214, 248, 208, 32, 169, 404, 152, - 10, 354, 16, 360, 375, 294, 353, 109, 247, 246, 164, 308, 325, 173, 40, 31, 333, 311, 335, 164, 179, 360, - 221, 305, 345, 179, 202, 360, 338, 265, 265, 316, 32, 208, 208, 130, 345, 284, 0, 0, 0, 0, 282, 69, 0, 0, - 120, 329, 265, 167, 354, 107, 310, 0, 92, 348, 184, 254, 345, 184, 367, 132, 98, 132, 184, 377, 96, 340, - 353, 140, 348, 189, 284, 188, 134, 147, 193, 84, 335, 189, 303, 89, 116, 226, 84, 193, 242, 125, 296, - 186, 316, 97, 131, 247, 68, 88, 349, 2, 164, 25, 194, 384, 52 - }, - { - 294, 74, 130, 170, 330, 70, 79, 79, 134, 40, 374, 83, 198, 375, 83, 83, 139, 88, 237, 150, 107, 258, 43, - 92, - 243, 53, 92, 57, 323, 136, 164, 84, 250, 64, 193, 171, 376, 17, 129, 129, 278, 31, 94, 43, 153, 74, 77, - 129, 47, 131, 69, 179, 363, 355, 54, 0, 276, 43, 54, 164, 81, 31, 241, 0, 43, 386, 89, 240, 74, 247, 385, - 125, 92, 345, 123, 74, 375, 329, 98, 283, 125, 367, 139, 244, 42, 31, 381, 175, 164, 231, 278, 147, 98, - 117, 367, 385, 166, 134, 172, 102, 128, 102, 125, 125, 314, 92, 125, 125, 375, 31, 390, 196, 164, 378, - 344, 131, 145, 335, 375, 348, 378, 196, 160, 135, 147, 346, 321, 334, 197, 152, 129, 169, 0, 131, 90, - 193, 37, 159, 352, 0, 135, 247, 175, 21, 157, 139, 190, 68, 340, 329, 348, 343, 346, 283, 168, 175, 234, - 284, 92, 244, 128, 251, 333, 348, 342, 79, 135, 314, 134, 57, 181, 343, 343, 404, 164, 34, 333, 251, 357, - 133, 10, 0, 14, 87, 87, 348, 231, 134, 220, 91, 75 - }, - { - 95, 55, 133, 95, 203, 133, 348, 126, 141, 116, 250, 79, 245, 361, 152, 116, 354, 102, 121, 57, 153, 166, - 166, 298, 70, 133, 250, 330, 143, 345, 250, 343, 209, 389, 284, 330, 323, 323, 335, 278, 92, 288, 152, - 330, 335, 254, 346, 248, 280, 37, 340, 330, 153, 92, 75, 330, 270, 345, 372, 107, 344, 62, 368, 0, 227, - 0, 245, 344, 375, 183, 309, 281, 313, 391, 81, 363, 355, 164, 63, 246, 5, 102, 345, 164, 32, 243, 164, - 345, 345, 355, 114, 190, 262, 250, 0, 162, 70, 381, 282, 282, 282, 348, 56, 285, 136, 6, 267, 284, 385, - 331, 334, 92, 357, 265, 48, 98, 249, 37, 0, 114, 192, 183, 341, 386, 74, 347, 223, 123, 348, 39, 246, - 335, 239, 117, 114, 354, 221, 342, 263, 223, 90, 137, 404, 91, 326, 241, 329, 128, 357, 37, 283, 319, - 326, 75, 284, 135, 230, 326, 197, 254, 62, 284, 377, 312, 330, 348, 241, 237, 386, 340, 348, 334, 344, - 250, 332, 320, 239, 17, 84, 346, 123, 303, 55, 321, 393, 21, 302, 332, 123, 241, 77 - }, - { - 75, 375, 378, 343, 334, 149, 284, 311, 397, 341, 322, 160, 314, 338, 353, 189, 209, 337, 0, 109, 357, - 173, - 239, 183, 389, 110, 332, 160, 238, 167, 6, 192, 404, 299, 84, 107, 356, 353, 97, 97, 11, 107, 348, 243, - 316, 345, 323, 164, 249, 34, 362, 344, 69, 241, 62, 246, 0, 114, 0, 0, 167, 159, 276, 0, 0, 328, 349, - 241, 321, 244, 3, 363, 209, 354, 310, 157, 330, 2, 400, 385, 368, 358, 334, 333, 384, 329, 326, 309, 97, - 241, 241, 57, 347, 386, 316, 52, 110, 344, 241, 372, 167, 332, 350, 98, 363, 104, 179, 0, 62, 251, 320, - 0, 305, 3, 57, 354, 372, 377, 30, 322, 0, 360, 220, 190, 116, 357, 119, 355, 92, 376, 325, 276, 340, 120, - 367, 345, 167, 354, 271, 139, 127, 345, 278, 230, 300, 351, 325, 350, 0, 11, 0, 362, 123, 309, 220, 334, - 244, 273, 352, 114, 335, 180, 29, 106, 263, 321, 92, 227, 329, 332, 386, 175, 321, 0, 301, 0, 269, 0, - 199, 244, 14, 5, 166, 391, 378, 196, 304, 128, 38, 128, 139 - }, - { - 304, 282, 2, 334, 174, 334, 116, 121, 104, 340, 332, 363, 32, 238, 60, 180, 116, 86, 305, 347, 269, 128, - 334, 117, 181, 254, 334, 334, 92, 153, 334, 109, 396, 127, 340, 320, 304, 343, 329, 392, 79, 139, 121, - 24, 43, 358, 57, 354, 319, 330, 241, 109, 166, 340, 121, 349, 343, 220, 294, 345, 350, 55, 369, 0, 385, - 216, 356, 335, 127, 355, 2, 352, 325, 354, 230, 59, 336, 73, 58, 336, 232, 349, 391, 214, 62, 158, 302, - 328, 331, 347, 74, 339, 377, 368, 130, 32, 343, 185, 375, 175, 121, 228, 353, 220, 349, 351, 186, 114, - 372, 164, 172, 106, 202, 196, 345, 164, 175, 173, 196, 57, 35, 236, 232, 333, 185, 330, 74, 148, 345, 31, - 350, 0, 156, 302, 334, 46, 119, 123, 381, 372, 334, 367, 164, 31, 30, 164, 348, 179, 360, 297, 0, 365, - 125, 358, 378, 158, 212, 0, 0, 121, 349, 213, 317, 141, 355, 132, 233, 357, 48, 121, 75, 104, 314, 316, - 104, 253, 260, 104, 303, 104, 349, 122, 107, 178, 104, 44, 325, 355, 251, 148, 240 - }, - { - 355, 355, 344, 317, 316, 316, 317, 177, 121, 348, 176, 176, 344, 316, 313, 240, 175, 150, 344, 384, 297, - 297, 385, 58, 242, 331, 278, 212, 196, 124, 375, 343, 348, 246, 186, 261, 319, 82, 14, 337, 158, 131, 92, - 62, 337, 226, 305, 250, 385, 98, 303, 132, 346, 0, 175, 249, 96, 342, 6, 171, 378, 84, 116, 0, 375, 5, 0, - 228, 193, 92, 110, 404, 47, 37, 349, 115, 72, 371, 84, 101, 220, 74, 102, 29, 346, 335, 285, 19, 114, 55, - 138, 58, 108, 3, 337, 332, 9, 239, 11, 348, 349, 107, 340, 383, 246, 83, 80, 252, 352, 137, 331, 62, 159, - 135, 246, 372, 169, 117, 21, 132, 347, 62, 344, 251, 299, 374, 323, 134, 178, 374, 146, 279, 68, 304, 23, - 315, 13, 332, 74, 348, 375, 384, 241, 134, 208, 143, 154, 208, 125, 89, 354, 344, 97, 163, 80, 344, 154, - 3, 282, 203, 316, 36, 119, 14, 166, 328, 381, 10, 354, 329, 129, 264, 347, 94, 387, 354, 120, 75, 220, - 84, 92, 186, 279, 320, 349, 83, 376, 129, 130, 113, 89 - }, - { - 45, 332, 237, 162, 337, 120, 71, 323, 341, 330, 92, 150, 350, 352, 139, 297, 284, 189, 327, 36, 316, 252, - 376, 164, 231, 9, 361, 72, 373, 329, 374, 343, 373, 2, 95, 345, 140, 326, 335, 172, 106, 159, 279, 231, - 13, 35, 175, 175, 223, 243, 186, 196, 381, 290, 174, 16, 27, 375, 370, 140, 63, 35, 385, 0, 92, 104, 244, - 246, 62, 52, 345, 302, 366, 243, 325, 383, 127, 278, 278, 81, 240, 318, 317, 79, 252, 73, 392, 62, 283, - 121, 74, 304, 61, 329, 82, 120, 304, 55, 347, 378, 125, 354, 244, 127, 144, 348, 232, 63, 126, 347, 342, - 304, 158, 134, 118, 58, 255, 243, 343, 332, 330, 2, 344, 59, 264, 130, 404, 152, 175, 345, 304, 325, 121, - 173, 173, 265, 164, 170, 31, 343, 345, 162, 6, 323, 270, 382, 348, 181, 378, 382, 116, 154, 116, 340, - 154, 285, 183, 73, 285, 348, 350, 126, 227, 368, 15, 299, 253, 171, 54, 341, 335, 203, 331, 355, 323, - 375, 247, 0, 96, 241, 188, 188, 35, 363, 136, 90, 306, 303, 345, 14, 0 - }, - { - 357, 335, 6, 76, 309, 228, 135, 335, 63, 346, 119, 139, 367, 12, 120, 81, 64, 343, 145, 5, 327, 303, 329, - 5, - 126, 166, 74, 357, 126, 284, 82, 123, 14, 176, 74, 313, 243, 133, 218, 29, 332, 79, 92, 114, 57, 353, - 131, 129, 326, 376, 224, 145, 376, 357, 232, 37, 356, 382, 345, 201, 336, 82, 83, 0, 355, 70, 20, 385, - 371, 208, 355, 315, 341, 375, 75, 196, 14, 282, 75, 110, 340, 78, 374, 193, 8, 84, 171, 386, 254, 332, - 346, 182, 386, 134, 258, 68, 92, 87, 333, 123, 135, 96, 125, 125, 209, 375, 373, 332, 113, 101, 343, 149, - 345, 194, 169, 229, 344, 353, 345, 332, 309, 321, 251, 295, 114, 332, 280, 283, 335, 183, 84, 329, 143, - 157, 50, 313, 337, 201, 354, 238, 299, 375, 107, 382, 237, 318, 332, 354, 345, 329, 330, 345, 354, 294, - 164, 134, 383, 241, 332, 385, 68, 175, 75, 75, 404, 190, 48, 239, 134, 23, 171, 334, 286, 241, 121, 84, - 328, 328, 304, 81, 81, 310, 208, 251, 131, 131, 243, 63, 337, 116, 323 - }, - { - 157, 349, 377, 203, 84, 178, 0, 154, 349, 344, 134, 164, 63, 332, 117, 117, 346, 220, 201, 267, 124, 354, - 354, 325, 309, 262, 186, 57, 264, 247, 121, 328, 243, 45, 191, 84, 129, 71, 348, 376, 120, 190, 345, 350, - 341, 129, 325, 374, 249, 375, 335, 320, 166, 184, 254, 294, 233, 325, 321, 50, 116, 245, 10, 0, 340, 354, - 102, 388, 220, 355, 261, 263, 172, 186, 226, 357, 180, 153, 282, 373, 355, 301, 261, 194, 350, 297, 211, - 306, 227, 159, 203, 10, 232, 348, 354, 341, 355, 348, 141, 352, 208, 391, 130, 381, 363, 201, 160, 372, - 116, 116, 5, 264, 180, 235, 97, 329, 127, 320, 369, 191, 332, 332, 196, 168, 166, 117, 102, 61, 375, 340, - 348, 117, 330, 153, 220, 345, 31, 128, 186, 84, 79, 345, 348, 111, 128, 84, 284, 299, 244, 166, 341, 336, - 211, 68, 348, 24, 2, 210, 214, 180, 311, 39, 130, 47, 354, 236, 261, 263, 208, 345, 303, 350, 243, 356, - 190, 14, 282, 337, 208, 70, 172, 355, 158, 345, 171, 128, 255, 158, 332, 350, 290 - }, - { - 335, 251, 189, 164, 176, 345, 378, 158, 136, 386, 336, 294, 303, 353, 381, 343, 192, 48, 323, 344, 348, - 386, - 164, 342, 20, 200, 212, 350, 176, 261, 248, 316, 262, 220, 348, 131, 384, 378, 114, 284, 348, 311, 330, - 36, 253, 95, 334, 367, 284, 282, 120, 189, 147, 23, 360, 355, 249, 110, 373, 125, 214, 19, 119, 0, 246, - 284, 214, 130, 214, 375, 354, 10, 151, 214, 404, 246, 116, 375, 214, 282, 325, 335, 151, 121, 137, 348, - 348, 10, 246, 173, 10, 83, 404, 72, 238, 381, 238, 0, 346, 381, 343, 378, 72, 59, 129, 189, 189, 286, - 279, 196, 168, 332, 332, 154, 353, 211, 227, 324, 324, 324, 220, 74, 153, 376, 88, 97, 380, 88, 88, 330, - 14, 129, 310, 64, 284, 373, 335, 208, 330, 0, 182, 174, 237, 335, 81, 335, 404, 28, 335, 134, 136, 168, - 136, 378, 335, 238, 321, 332, 164, 345, 59, 121, 173, 258, 329, 107, 282, 40, 0, 356, 8, 220, 4, 329, - 129, 92, 82, 323, 243, 241, 129, 393, 393, 346, 134, 89, 342, 238, 164, 311, 389 - }, - { - 84, 320, 232, 5, 152, 250, 238, 311, 171, 37, 237, 0, 9, 314, 342, 15, 110, 143, 179, 75, 212, 65, 175, - 76, - 77, 87, 251, 348, 198, 284, 3, 325, 119, 189, 164, 92, 314, 325, 353, 97, 169, 220, 128, 75, 347, 21, - 253, 83, 203, 164, 353, 332, 261, 59, 282, 36, 316, 94, 90, 331, 349, 354, 202, 0, 140, 345, 252, 38, - 302, 170, 117, 134, 157, 193, 154, 154, 389, 97, 344, 89, 178, 178, 171, 74, 374, 349, 68, 107, 374, 325, - 232, 129, 389, 148, 68, 349, 386, 363, 120, 354, 346, 83, 249, 346, 309, 348, 375, 284, 75, 378, 369, - 404, 345, 186, 107, 92, 119, 313, 329, 354, 387, 158, 143, 345, 345, 325, 387, 29, 301, 143, 246, 309, - 316, 72, 330, 327, 25, 305, 350, 129, 139, 172, 329, 127, 13, 63, 243, 352, 212, 54, 284, 267, 295, 387, - 126, 168, 141, 31, 65, 399, 66, 316, 174, 369, 369, 5, 26, 250, 244, 391, 391, 59, 59, 330, 354, 232, - 173, 333, 374, 20, 246, 128, 345, 160, 369, 168, 168, 246, 74, 392, 127 - }, - { - 136, 220, 128, 220, 136, 369, 348, 342, 203, 347, 347, 348, 212, 345, 92, 335, 143, 330, 62, 5, 391, 325, - 261, 59, 171, 129, 354, 356, 349, 263, 129, 169, 330, 173, 173, 350, 330, 134, 31, 350, 325, 345, 203, - 251, 33, 51, 176, 63, 63, 212, 345, 345, 345, 203, 345, 150, 120, 337, 33, 169, 0, 240, 240, 0, 249, 375, - 371, 348, 130, 300, 251, 0, 238, 358, 66, 212, 82, 224, 375, 116, 57, 56, 321, 84, 196, 348, 348, 237, - 242, 135, 263, 288, 291, 127, 373, 284, 253, 56, 102, 237, 370, 270, 323, 56, 276, 241, 70, 115, 374, - 340, 325, 348, 9, 237, 65, 95, 226, 306, 189, 124, 308, 121, 376, 282, 16, 104, 363, 198, 9, 131, 31, - 375, 329, 14, 14, 370, 189, 127, 31, 82, 188, 9, 59, 192, 40, 129, 332, 158, 125, 19, 88, 92, 313, 363, - 101, 185, 246, 319, 344, 336, 129, 382, 344, 47, 314, 348, 375, 311, 375, 334, 316, 102, 148, 188, 353, - 21, 19, 36, 157, 92, 295, 286, 247, 354, 191, 296, 363, 333, 81, 133, 75 - }, - { - 325, 172, 331, 296, 375, 21, 247, 133, 133, 174, 349, 330, 175, 348, 40, 316, 294, 336, 191, 32, 329, 81, - 152, 0, 150, 14, 273, 170, 168, 404, 92, 350, 332, 313, 352, 164, 313, 345, 62, 238, 121, 200, 121, 82, - 250, 345, 361, 348, 77, 270, 77, 284, 64, 116, 329, 318, 126, 6, 282, 370, 306, 84, 62, 0, 33, 373, 348, - 251, 280, 355, 131, 64, 370, 126, 244, 231, 14, 281, 304, 125, 91, 78, 14, 147, 125, 17, 334, 304, 104, - 244, 114, 208, 104, 323, 136, 92, 175, 121, 121, 348, 348, 348, 356, 356, 326, 345, 354, 37, 64, 352, - 234, 37, 385, 348, 92, 376, 324, 62, 171, 84, 324, 330, 324, 374, 375, 131, 48, 375, 48, 0, 92, 375, 387, - 377, 157, 335, 129, 125, 309, 331, 233, 84, 325, 227, 330, 374, 234, 309, 60, 375, 17, 376, 34, 220, 121, - 186, 173, 333, 10, 250, 161, 258, 313, 87, 258, 107, 348, 303, 330, 79, 350, 326, 326, 329, 92, 330, 129, - 323, 48, 354, 284, 52, 303, 384, 246, 122, 338, 324, 332, 141, 134 - }, - { - 348, 10, 193, 229, 147, 8, 215, 369, 116, 389, 353, 62, 318, 353, 84, 330, 14, 353, 341, 48, 19, 120, - 342, - 232, 286, 330, 304, 352, 196, 0, 284, 330, 160, 113, 152, 197, 375, 335, 220, 65, 109, 325, 340, 334, - 294, 149, 249, 121, 37, 348, 338, 99, 170, 37, 279, 381, 356, 231, 60, 121, 334, 183, 352, 0, 355, 232, - 356, 354, 354, 143, 372, 170, 128, 245, 309, 21, 243, 330, 187, 348, 113, 36, 329, 164, 167, 48, 348, - 164, 203, 75, 329, 48, 60, 32, 187, 164, 100, 100, 241, 146, 310, 178, 330, 140, 103, 208, 73, 104, 369, - 355, 130, 92, 170, 354, 110, 251, 304, 309, 212, 46, 187, 336, 329, 301, 387, 125, 352, 60, 203, 357, - 312, 45, 248, 27, 15, 122, 387, 309, 11, 341, 325, 91, 325, 14, 341, 119, 190, 352, 241, 305, 349, 336, - 184, 242, 143, 2, 245, 345, 264, 387, 294, 350, 252, 114, 357, 297, 241, 220, 295, 120, 92, 97, 134, 43, - 208, 335, 139, 374, 352, 26, 343, 282, 20, 330, 335, 122, 352, 346, 164, 272, 306 - }, - { - 349, 340, 303, 357, 194, 95, 48, 234, 198, 104, 37, 24, 24, 24, 52, 193, 370, 314, 5, 290, 100, 252, 362, - 133, 166, 223, 295, 246, 349, 404, 279, 317, 182, 332, 281, 247, 62, 375, 404, 135, 241, 241, 354, 237, - 168, 295, 353, 38, 375, 314, 36, 241, 250, 231, 11, 248, 128, 37, 166, 237, 153, 121, 374, 0, 349, 349, - 330, 330, 57, 304, 74, 319, 297, 136, 27, 334, 79, 82, 160, 160, 332, 193, 168, 329, 24, 136, 50, 332, - 304, 283, 232, 348, 332, 216, 57, 304, 131, 295, 128, 325, 341, 246, 246, 134, 272, 144, 350, 348, 170, - 273, 137, 118, 2, 347, 155, 331, 37, 354, 349, 56, 188, 208, 188, 72, 241, 196, 332, 187, 39, 375, 221, - 40, 346, 20, 375, 152, 152, 353, 84, 172, 192, 36, 121, 31, 158, 118, 341, 255, 31, 92, 134, 119, 281, - 166, 201, 196, 305, 136, 382, 382, 356, 91, 125, 68, 65, 23, 124, 375, 153, 369, 244, 91, 125, 354, 353, - 330, 369, 330, 330, 250, 116, 116, 75, 348, 309, 184, 63, 279, 348, 348, 345 - }, - { - 249, 164, 79, 263, 359, 370, 356, 354, 329, 107, 282, 367, 348, 241, 329, 0, 258, 330, 246, 124, 354, 5, - 372, 375, 375, 0, 345, 324, 15, 134, 326, 116, 356, 246, 282, 374, 357, 323, 265, 239, 239, 6, 215, 363, - 357, 19, 375, 201, 240, 220, 373, 367, 346, 242, 208, 347, 37, 232, 124, 186, 250, 40, 344, 0, 369, 228, - 199, 243, 320, 7, 375, 134, 155, 242, 243, 112, 213, 95, 392, 348, 335, 273, 121, 7, 375, 155, 74, 74, - 216, 373, 110, 128, 68, 263, 169, 367, 175, 281, 136, 169, 134, 344, 332, 354, 345, 20, 94, 309, 36, 301, - 243, 186, 216, 134, 231, 125, 345, 299, 335, 367, 83, 148, 249, 123, 316, 239, 363, 296, 354, 385, 323, - 375, 392, 380, 368, 175, 296, 345, 9, 325, 323, 246, 281, 193, 187, 84, 59, 328, 251, 356, 387, 310, 316, - 12, 328, 393, 331, 241, 36, 272, 178, 247, 89, 62, 122, 241, 286, 323, 171, 344, 374, 167, 98, 348, 340, - 345, 374, 23, 19, 309, 388, 144, 285, 129, 194, 94, 188, 272, 231, 221, 125 - }, - { - 374, 353, 243, 345, 201, 341, 232, 325, 269, 212, 284, 387, 373, 343, 352, 15, 346, 119, 345, 390, 340, - 242, - 92, 309, 156, 156, 35, 133, 316, 122, 93, 68, 334, 335, 243, 367, 11, 220, 325, 0, 329, 387, 93, 96, 246, - 261, 252, 388, 300, 300, 261, 231, 143, 220, 59, 375, 221, 335, 249, 332, 130, 192, 348, 0, 72, 278, 302, - 367, 238, 164, 306, 148, 375, 321, 331, 326, 244, 310, 373, 75, 221, 251, 367, 329, 372, 141, 261, 277, - 300, 301, 168, 38, 43, 104, 231, 375, 241, 296, 166, 36, 37, 100, 175, 174, 387, 330, 116, 379, 244, 305, - 117, 375, 244, 102, 350, 127, 375, 212, 182, 31, 223, 40, 297, 381, 128, 278, 243, 234, 126, 220, 96, - 243, 92, 235, 160, 73, 332, 267, 102, 365, 348, 343, 36, 334, 114, 101, 302, 209, 170, 374, 325, 142, 92, - 26, 336, 304, 78, 34, 136, 334, 12, 196, 385, 325, 240, 246, 73, 117, 128, 302, 220, 379, 166, 352, 202, - 175, 385, 368, 240, 46, 330, 58, 273, 247, 129, 150, 278, 335, 367, 5, 134 - }, - { - 347, 75, 188, 189, 92, 303, 59, 158, 134, 347, 263, 347, 347, 208, 328, 129, 18, 214, 91, 375, 375, 305, - 196, 125, 335, 169, 304, 7, 296, 175, 356, 256, 375, 346, 162, 268, 286, 51, 209, 332, 229, 164, 157, - 119, 350, 179, 173, 243, 243, 243, 158, 332, 350, 186, 278, 350, 51, 335, 372, 179, 186, 196, 37, 0, 390, - 176, 304, 277, 63, 321, 305, 128, 158, 179, 102, 102, 241, 343, 142, 348, 107, 8, 238, 63, 147, 193, 329, - 110, 27, 285, 104, 340, 128, 35, 373, 74, 354, 7, 340, 74, 212, 63, 252, 348, 143, 345, 241, 315, 334, - 74, 346, 331, 193, 378, 2, 62, 373, 286, 168, 250, 338, 348, 128, 278, 128, 385, 348, 166, 14, 303, 334, - 334, 342, 241, 241, 136, 368, 0, 8, 354, 158, 325, 283, 124, 124, 354, 128, 315, 69, 375, 244, 250, 369, - 385, 385, 385, 246, 170, 385, 40, 71, 378, 129, 108, 229, 353, 0, 241, 232, 172, 84, 80, 131, 371, 348, - 280, 125, 0, 375, 79, 234, 79, 369, 150, 299, 354, 92, 92, 123, 335, 311 - }, - { - 350, 62, 340, 31, 346, 284, 193, 193, 384, 45, 329, 11, 8, 129, 283, 116, 80, 132, 341, 82, 246, 116, - 345, - 363, 80, 282, 134, 346, 80, 341, 238, 373, 171, 109, 196, 15, 340, 122, 387, 331, 81, 348, 326, 68, 2, - 19, 4, 173, 152, 311, 284, 120, 341, 153, 340, 128, 130, 375, 314, 114, 87, 333, 107, 0, 137, 332, 154, - 377, 330, 283, 372, 372, 107, 109, 323, 310, 385, 391, 377, 278, 208, 330, 241, 374, 348, 345, 323, 170, - 32, 324, 334, 81, 341, 348, 357, 121, 340, 193, 347, 350, 286, 325, 247, 184, 201, 158, 346, 45, 220, - 301, 240, 128, 139, 109, 327, 32, 241, 109, 345, 164, 92, 187, 360, 335, 109, 196, 48, 208, 370, 121, - 107, 341, 42, 168, 304, 131, 235, 170, 330, 348, 129, 120, 56, 347, 347, 164, 304, 314, 334, 81, 282, - 371, 109, 348, 333, 337, 278, 128, 10, 131, 345, 2, 347, 263, 188, 164, 35, 152, 65, 0, 220, 123, 404, - 261, 173, 179, 176, 277, 305, 345, 378, 0, 348, 116, 286, 26, 283, 366, 243, 340, 155 - }, - { - 349, 245, 82, 232, 82, 171, 148, 0, 405, 311, 159, 391, 194, 324, 319, 241, 350, 387, 324, 314, 159, 160, - 173, 0, 286, 0, 258, 6, 74, 311, 164, 249, 133, 14, 373, 47, 263, 243, 354, 329, 343, 79, 386, 258, 372, - 74, 183, 37, 348, 91, 95, 375, 126, 278, 323, 133, 183, 375, 355, 81, 68, 332, 45, 0, 286, 117, 336, 215, - 39, 295, 356, 130, 92, 184, 232, 4, 82, 348, 84, 201, 116, 347, 378, 336, 220, 75, 371, 357, 391, 283, - 74, 175, 295, 201, 373, 303, 330, 99, 84, 196, 348, 347, 347, 284, 212, 14, 348, 208, 156, 110, 226, 79, - 376, 56, 47, 350, 84, 286, 280, 295, 282, 254, 352, 375, 389, 57, 97, 240, 5, 84, 84, 393, 17, 367, 294, - 378, 229, 284, 99, 29, 220, 133, 172, 186, 164, 261, 362, 0, 352, 343, 241, 373, 348, 333, 373, 164, 273, - 140, 19, 258, 7, 258, 19, 386, 39, 348, 47, 392, 391, 77, 77, 354, 78, 95, 369, 164, 349, 375, 284, 84, - 263, 348, 148, 248, 271, 342, 74, 44, 354, 360, 0 - }, - { - 350, 129, 172, 369, 343, 268, 373, 11, 350, 155, 131, 238, 12, 265, 330, 159, 172, 83, 241, 326, 137, - 107, - 349, 249, 353, 173, 231, 382, 62, 342, 316, 362, 353, 14, 62, 107, 375, 258, 11, 332, 119, 323, 221, 124, - 311, 92, 334, 404, 151, 399, 82, 295, 294, 69, 246, 350, 134, 154, 385, 31, 325, 131, 164, 0, 19, 331, 0, - 306, 375, 157, 166, 385, 164, 241, 19, 178, 295, 243, 241, 23, 31, 372, 81, 229, 239, 122, 36, 362, 169, - 354, 354, 97, 103, 68, 89, 324, 54, 79, 36, 369, 241, 355, 345, 354, 251, 348, 282, 330, 385, 297, 157, - 388, 388, 82, 35, 247, 212, 323, 175, 109, 245, 377, 134, 134, 36, 393, 244, 344, 232, 385, 386, 18, 231, - 66, 40, 32, 187, 117, 125, 102, 330, 59, 102, 63, 375, 251, 0, 84, 94, 231, 278, 348, 282, 74, 84, 325, - 325, 124, 387, 125, 348, 330, 345, 345, 369, 354, 110, 328, 233, 14, 220, 149, 340, 267, 346, 156, 345, - 12, 121, 153, 129, 153, 294, 83, 320, 375, 198, 184, 148, 116, 313 - }, - { - 354, 353, 295, 355, 346, 373, 233, 347, 242, 347, 292, 354, 325, 186, 309, 92, 129, 262, 120, 161, 251, - 333, - 284, 304, 357, 282, 40, 232, 124, 348, 373, 84, 221, 189, 97, 130, 302, 220, 335, 355, 386, 194, 297, - 124, 220, 129, 120, 107, 243, 180, 355, 261, 284, 375, 326, 313, 261, 305, 368, 294, 283, 143, 330, 0, - 97, 241, 142, 300, 226, 306, 91, 45, 373, 400, 92, 129, 244, 332, 186, 340, 89, 385, 320, 127, 346, 63, - 124, 375, 59, 173, 271, 330, 92, 166, 121, 352, 243, 104, 87, 87, 317, 117, 282, 391, 231, 353, 126, 116, - 119, 102, 348, 348, 90, 141, 102, 102, 323, 375, 382, 357, 159, 35, 387, 164, 339, 247, 290, 314, 100, - 363, 297, 162, 175, 167, 189, 404, 128, 297, 143, 16, 175, 168, 372, 367, 286, 182, 211, 346, 311, 231, - 378, 276, 251, 125, 48, 92, 345, 342, 375, 343, 375, 391, 48, 240, 286, 117, 153, 373, 278, 330, 45, 63, - 81, 196, 329, 256, 170, 172, 127, 332, 266, 79, 369, 160, 357, 292, 318, 36, 305, 188, 334 - }, - { - 136, 336, 121, 92, 221, 320, 214, 265, 314, 366, 82, 248, 345, 113, 246, 97, 172, 160, 90, 330, 283, 386, - 270, 92, 69, 131, 125, 40, 55, 286, 126, 170, 203, 349, 121, 278, 391, 341, 36, 88, 134, 391, 348, 240, - 83, 121, 58, 92, 299, 237, 36, 40, 379, 121, 92, 129, 124, 368, 125, 244, 59, 348, 16, 0, 295, 281, 164, - 349, 306, 303, 190, 241, 317, 19, 123, 92, 243, 208, 214, 348, 90, 140, 349, 264, 247, 345, 241, 189, - 371, 102, 45, 92, 153, 238, 61, 40, 91, 190, 353, 375, 120, 243, 162, 169, 268, 175, 164, 51, 404, 192, - 121, 223, 404, 375, 90, 70, 355, 356, 81, 385, 296, 166, 126, 40, 247, 378, 404, 345, 164, 378, 246, 129, - 75, 297, 118, 212, 354, 173, 157, 128, 332, 0, 134, 339, 171, 350, 278, 349, 353, 350, 333, 216, 20, 369, - 166, 134, 290, 281, 391, 48, 251, 250, 25, 0, 354, 179, 164, 390, 176, 305, 136, 345, 158, 158, 378, 179, - 164, 6, 202, 354, 171, 101, 348, 332, 340, 33, 330, 241, 143, 349, 136 - }, - { - 330, 340, 331, 153, 159, 336, 296, 335, 340, 41, 349, 243, 336, 243, 42, 98, 349, 354, 334, 347, 346, - 304, - 253, 223, 116, 334, 119, 340, 230, 348, 334, 340, 0, 166, 40, 348, 75, 354, 46, 119, 21, 21, 134, 243, - 375, 273, 37, 273, 376, 301, 299, 164, 363, 354, 164, 153, 75, 372, 326, 196, 220, 283, 340, 0, 136, 242, - 249, 297, 247, 348, 347, 347, 24, 187, 65, 373, 357, 326, 39, 309, 130, 279, 349, 64, 133, 153, 51, 57, - 70, 126, 166, 18, 70, 125, 125, 378, 283, 348, 335, 252, 127, 220, 343, 121, 252, 241, 250, 121, 71, 348, - 334, 100, 186, 2, 129, 232, 31, 0, 0, 232, 169, 124, 269, 198, 320, 343, 77, 261, 332, 134, 249, 221, 0, - 229, 134, 74, 14, 270, 184, 299, 286, 320, 143, 302, 270, 286, 198, 184, 314, 261, 369, 272, 369, 188, - 175, 65, 136, 241, 346, 205, 18, 282, 330, 330, 247, 344, 68, 346, 357, 374, 19, 58, 291, 161, 208, 79, - 249, 224, 363, 190, 64, 385, 42, 323, 79, 56, 320, 183, 353, 236, 243 - }, - { - 354, 354, 316, 133, 375, 375, 243, 131, 131, 319, 137, 114, 251, 15, 107, 376, 227, 342, 120, 353, 340, - 340, - 357, 345, 57, 353, 116, 123, 405, 196, 329, 38, 227, 14, 375, 226, 386, 358, 172, 363, 83, 186, 358, 320, - 373, 373, 348, 78, 310, 294, 152, 350, 134, 348, 124, 376, 121, 12, 363, 378, 353, 97, 116, 0, 237, 386, - 375, 297, 36, 294, 134, 342, 283, 342, 84, 92, 100, 57, 349, 377, 347, 121, 359, 36, 325, 115, 125, 294, - 77, 337, 84, 386, 375, 349, 329, 142, 0, 345, 309, 197, 162, 348, 189, 251, 238, 334, 348, 297, 152, 245, - 134, 237, 338, 375, 120, 194, 329, 250, 348, 131, 284, 0, 31, 130, 169, 249, 325, 107, 183, 353, 20, 69, - 114, 348, 374, 158, 107, 164, 94, 166, 45, 114, 348, 314, 160, 331, 38, 132, 299, 36, 229, 332, 282, 154, - 237, 107, 247, 258, 316, 334, 313, 75, 357, 164, 291, 294, 162, 291, 70, 357, 113, 337, 306, 46, 370, - 202, 355, 320, 68, 328, 134, 281, 167, 122, 302, 245, 60, 135, 116, 104, 345 - }, - { - 377, 231, 109, 32, 243, 80, 37, 175, 134, 164, 372, 237, 310, 354, 208, 175, 189, 131, 171, 178, 250, - 354, - 282, 116, 116, 355, 157, 247, 243, 375, 349, 238, 12, 355, 326, 267, 81, 355, 143, 241, 281, 273, 241, - 232, 330, 355, 262, 119, 125, 218, 329, 313, 83, 328, 309, 325, 264, 27, 110, 345, 114, 189, 184, 0, 350, - 345, 247, 283, 186, 359, 122, 200, 102, 37, 75, 166, 241, 241, 186, 310, 49, 325, 24, 193, 238, 340, 92, - 125, 83, 348, 349, 284, 335, 374, 304, 354, 14, 193, 284, 316, 283, 352, 134, 314, 317, 249, 249, 346, - 173, 123, 355, 201, 226, 353, 251, 382, 167, 31, 345, 384, 110, 386, 187, 350, 156, 83, 174, 325, 331, - 350, 238, 130, 345, 301, 355, 332, 220, 188, 385, 36, 303, 302, 321, 147, 272, 367, 284, 178, 180, 325, - 359, 329, 326, 244, 363, 284, 2, 357, 349, 297, 301, 284, 2, 226, 340, 327, 25, 192, 91, 342, 120, 335, - 62, 375, 350, 129, 91, 299, 128, 121, 349, 363, 290, 45, 334, 354, 339, 116, 14, 16, 375 - }, - { - 126, 147, 282, 279, 189, 5, 175, 340, 353, 31, 79, 352, 103, 187, 247, 354, 92, 344, 33, 330, 92, 175, - 173, - 130, 104, 295, 375, 87, 244, 128, 48, 45, 381, 223, 308, 347, 330, 189, 305, 305, 304, 166, 321, 303, 88, - 231, 386, 141, 231, 370, 382, 340, 155, 243, 345, 290, 334, 52, 309, 126, 387, 350, 114, 0, 336, 286, - 119, 387, 154, 340, 375, 235, 286, 127, 238, 346, 121, 129, 329, 224, 92, 325, 334, 243, 344, 330, 300, - 73, 193, 266, 297, 373, 387, 348, 375, 323, 304, 349, 335, 347, 367, 270, 111, 14, 31, 286, 240, 170, - 325, 273, 273, 36, 132, 117, 203, 160, 53, 114, 107, 357, 172, 114, 84, 109, 110, 332, 125, 278, 330, - 354, 175, 214, 354, 170, 283, 58, 119, 363, 335, 354, 284, 342, 171, 323, 386, 352, 150, 24, 166, 63, - 347, 341, 373, 182, 57, 348, 299, 232, 134, 302, 246, 385, 216, 328, 246, 230, 273, 276, 325, 40, 302, - 295, 313, 273, 378, 166, 208, 330, 286, 189, 214, 350, 350, 188, 130, 241, 241, 391, 328, 306, 349 - }, - { - 349, 72, 47, 123, 247, 158, 343, 143, 325, 18, 97, 243, 350, 18, 155, 81, 25, 185, 360, 325, 238, 360, - 175, - 164, 353, 346, 175, 294, 375, 350, 70, 324, 121, 335, 226, 282, 16, 31, 196, 172, 125, 273, 36, 97, 18, - 123, 332, 175, 246, 261, 164, 131, 334, 350, 299, 325, 322, 342, 378, 290, 157, 72, 79, 0, 116, 157, 286, - 171, 350, 208, 92, 166, 392, 350, 170, 348, 125, 31, 56, 255, 125, 158, 79, 290, 355, 385, 83, 281, 162, - 158, 48, 250, 352, 243, 78, 136, 345, 350, 332, 360, 176, 345, 164, 189, 278, 304, 58, 128, 31, 350, 109, - 378, 158, 158, 202, 323, 176, 343, 332, 345, 88, 345, 354, 101, 334, 334, 121, 114, 381, 367, 335, 37, - 359, 241, 376, 82, 215, 326, 240, 348, 232, 139, 226, 345, 227, 198, 168, 101, 336, 101, 101, 15, 55, - 331, 374, 378, 143, 371, 84, 6, 335, 335, 171, 385, 228, 303, 346, 314, 278, 325, 120, 377, 220, 340, - 113, 251, 119, 339, 339, 332, 349, 344, 377, 220, 284, 325, 314, 342, 359, 139, 331 - }, - { - 341, 374, 238, 121, 101, 34, 121, 35, 0, 169, 84, 132, 335, 240, 313, 385, 313, 106, 159, 345, 340, 37, - 261, - 116, 330, 286, 123, 343, 148, 356, 334, 330, 382, 250, 62, 335, 241, 0, 404, 345, 134, 170, 154, 122, - 319, 330, 52, 329, 114, 134, 84, 328, 48, 83, 237, 248, 267, 348, 248, 336, 348, 127, 354, 0, 89, 232, - 350, 324, 283, 98, 280, 0, 0, 94, 325, 35, 110, 153, 376, 331, 357, 83, 166, 337, 128, 14, 350, 378, 325, - 317, 278, 330, 341, 218, 31, 345, 132, 132, 186, 325, 367, 130, 248, 262, 119, 79, 249, 299, 346, 169, - 129, 362, 98, 357, 201, 284, 167, 96, 305, 33, 357, 20, 347, 335, 330, 329, 357, 110, 334, 348, 357, 200, - 278, 248, 220, 189, 243, 350, 329, 95, 345, 244, 14, 16, 387, 175, 125, 174, 231, 299, 348, 314, 136, - 387, 116, 348, 375, 325, 172, 254, 223, 257, 132, 154, 51, 366, 125, 330, 330, 348, 334, 37, 120, 57, - 347, 343, 345, 343, 334, 137, 61, 319, 282, 127, 82, 330, 354, 170, 314, 280, 82 - }, - { - 343, 158, 186, 305, 348, 132, 187, 131, 0, 350, 348, 342, 158, 303, 24, 330, 252, 387, 243, 121, 378, - 171, - 354, 348, 335, 371, 121, 55, 0, 19, 264, 334, 343, 130, 39, 306, 220, 110, 158, 16, 261, 169, 196, 267, - 404, 169, 5, 343, 152, 356, 168, 164, 175, 136, 168, 345, 330, 335, 173, 347, 24, 255, 356, 0, 158, 48, - 314, 100, 134, 34, 189, 305, 158, 378, 158, 171, 354, 371, 374, 228, 36, 325, 107, 136, 347, 389, 189, - 43, 143, 361, 65, 244, 352, 244, 226, 33, 125, 43, 354, 367, 190, 226, 20, 43, 353, 70, 36, 215, 161, - 320, 258, 183, 80, 89, 345, 361, 11, 294, 353, 91, 198, 368, 251, 251, 386, 183, 145, 243, 164, 239, 89, - 375, 12, 251, 45, 124, 83, 143, 134, 40, 330, 11, 179, 129, 180, 270, 325, 184, 73, 314, 127, 330, 164, - 70, 169, 225, 234, 20, 330, 39, 325, 256, 39, 6, 92, 30, 385, 110, 141, 229, 115, 344, 349, 119, 382, - 152, 376, 198, 232, 134, 348, 337, 348, 171, 232, 208, 220, 353, 342, 57, 20 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 148, 332, 341, 196, 371, 129, 343, 278, 302, 314, 160, 385, 330, 331, 11, 375, 345, 276, 107, 131, 225, - 81, - 334, 232, 241, 16, 349, 157, 125, 244, 154, 345, 387, 375, 374, 344, 169, 0, 387, 0, 83, 328, 355, 278, - 317, 344, 335, 124, 233, 353, 220, 300, 238, 194, 296, 180, 355, 56, 354, 284, 109, 244, 348, 0, 373, 25, - 109, 182, 126, 198, 31, 5, 90, 52, 82, 14, 14, 120, 240, 170, 354, 382, 220, 330, 334, 285, 0, 128, 91, - 341, 70, 121, 150, 332, 332, 214, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 - }, - { - 123, 263, 188, 169, 353, 131, 285, 175, 302, 332, 189, 255, 203, 179, 332, 241, 136, 220, 386, 175, 297, - 249, 86, 161, 6, 114, 62, 42, 88, 354, 241, 354, 32, 114, 329, 84, 129, 344, 187, 9, 356, 136, 357, 136, - 349, 57, 236, 244, 348, 88, 237, 84, 341, 49, 96, 124, 280, 47, 254, 283, 282, 348, 389, 0, 172, 14, 373, - 130, 128, 125, 164, 101, 332, 377, 345, 339, 346, 340, 297, 246, 349, 343, 10, 333, 331, 102, 38, 340, - 229, 160, 58, 350, 326, 75, 313, 309, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }, - { - 329, 36, 137, 186, 11, 313, 332, 40, 107, 341, 345, 341, 339, 84, 330, 171, 164, 130, 301, 83, 323, 63, - 236, - 369, 273, 193, 354, 157, 193, 324, 354, 310, 40, 229, 36, 75, 32, 13, 175, 251, 64, 229, 244, 385, 246, - 78, 130, 70, 129, 122, 354, 186, 45, 341, 309, 337, 56, 262, 193, 125, 325, 264, 119, 0, 335, 42, 125, - 381, 346, 166, 251, 71, 344, 120, 172, 284, 261, 301, 220, 326, 329, 373, 130, 350, 180, 306, 172, 164, - 159, 310, 244, 54, 136, 371, 18, 316, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }, - { - 154, 381, 48, 348, 241, 131, 362, 249, 5, 166, 187, 349, 117, 325, 329, 61, 339, 366, 343, 250, 58, 170, - 168, 248, 297, 102, 131, 79, 130, 172, 92, 121, 131, 2, 362, 58, 128, 103, 304, 150, 119, 273, 299, 310, - 40, 354, 130, 175, 233, 286, 391, 158, 330, 386, 341, 264, 328, 87, 162, 70, 164, 375, 262, 0, 164, 360, - 341, 309, 102, 299, 156, 173, 175, 164, 158, 350, 330, 333, 325, 100, 59, 360, 347, 20, 228, 375, 164, 0, - 333, 0, 8, 230, 80, 57, 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 - }, - { - 116, 348, 0, 135, 32, 37, 0, 58, 188, 383, 237, 15, 377, 0, 47, 350, 241, 332, 174, 62, 223, 381, 170, - 329, - 57, 327, 350, 345, 310, 107, 32, 247, 282, 31, 31, 265, 297, 282, 175, 83, 367, 84, 237, 66, 384, 188, - 14, 172, 300, 172, 198, 357, 84, 94, 129, 84, 310, 198, 0, 126, 321, 84, 201, 0, 198, 198, 92, 310, 87, - 14, 55, 375, 177, 226, 348, 117, 354, 354, 198, 137, 348, 172, 65, 117, 58, 383, 126, 36, 32, 319, 162, - 29, 172, 65, 170, 126, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 232, 65, 65, 245, 57, 286, 375, 200, 14, 89, 377, 331, 340, 35, 342, 241, 344, 52, 14, 387, 342, 375, 78, - 375, 81, 134, 278, 212, 308, 314, 129, 354, 121, 304, 37, 186, 131, 334, 316, 183, 334, 298, 240, 74, - 285, 348, 231, 370, 100, 180, 170, 92, 310, 347, 37, 232, 193, 72, 143, 344, 50, 282, 376, 0, 375, 354, - 83, 346, 35, 316, 104, 326, 119, 148, 349, 136, 330, 100, 348, 43, 162, 0, 63, 370, 282, 50, 348, 387, - 296, 273, 64, 174, 404, 246, 84, 293, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }, - { - 172, 160, 332, 81, 304, 349, 110, 332, 100, 325, 216, 354, 325, 352, 162, 164, 286, 57, 170, 170, 17, 92, - 37, 346, 129, 374, 185, 164, 123, 157, 92, 341, 350, 349, 352, 304, 63, 179, 176, 176, 20, 0, 6, 78, 78, - 245, 92, 362, 184, 224, 47, 171, 196, 92, 231, 90, 75, 107, 14, 39, 243, 2, 334, 0, 109, 120, 109, 363, - 52, 109, 334, 347, 109, 128, 2, 337, 120, 179, 234, 110, 128, 88, 228, 249, 252, 367, 97, 137, 137, 377, - 367, 0, 371, 70, 241, 350, 11, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 224, 6, 6, 6, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, - 10 - }, - { - 371, 110, 110, 20, 323, 354, 79, 84, 249, 59, 175, 369, 164, 130, 340, 140, 341, 3, 404, 340, 377, 58, 3, - 97, 164, 88, 324, 241, 355, 332, 336, 330, 83, 193, 194, 284, 357, 226, 80, 186, 332, 284, 350, 374, 220, - 282, 123, 55, 373, 152, 340, 282, 186, 196, 378, 373, 284, 65, 208, 386, 33, 80, 226, 0, 173, 314, 375, - 62, 204, 194, 343, 373, 346, 196, 376, 196, 186, 334, 107, 119, 36, 380, 135, 75, 182, 332, 330, 154, - 278, 310, 178, 323, 163, 284, 248, 169, 374, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 232, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, - 19 - }, - { - 164, 157, 391, 135, 232, 122, 175, 363, 377, 354, 122, 180, 331, 337, 121, 103, 359, 45, 125, 186, 115, - 341, - 310, 340, 78, 328, 102, 189, 327, 147, 58, 310, 248, 196, 82, 363, 370, 348, 69, 147, 196, 292, 48, 404, - 37, 187, 102, 119, 292, 330, 240, 282, 168, 34, 332, 347, 342, 329, 325, 125, 347, 2, 121, 0, 125, 371, - 186, 39, 272, 214, 343, 220, 356, 188, 190, 236, 190, 162, 152, 341, 190, 123, 175, 188, 173, 251, 182, - 330, 305, 140, 378, 246, 354, 293, 385, 136, 282, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 21, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, - 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 32, 32 - }, - { - 115, 350, 377, 128, 366, 356, 6, 66, 241, 386, 329, 372, 242, 244, 57, 136, 164, 84, 326, 75, 141, 375, - 129, - 236, 75, 372, 299, 321, 130, 196, 389, 354, 179, 320, 75, 198, 378, 217, 237, 171, 240, 161, 75, 238, - 352, 152, 145, 251, 378, 152, 75, 242, 175, 325, 2, 349, 345, 237, 160, 114, 247, 325, 127, 0, 0, 247, - 252, 31, 159, 114, 354, 334, 331, 183, 179, 352, 34, 34, 345, 276, 154, 97, 0, 117, 175, 35, 219, 295, - 385, 145, 345, 383, 146, 36, 241, 387, 247, 32, 32, 32, 370, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 284, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40 - }, - { - 170, 137, 226, 193, 369, 110, 330, 163, 349, 329, 241, 178, 203, 264, 345, 66, 320, 350, 143, 325, 293, - 373, - 71, 331, 58, 309, 203, 310, 241, 73, 83, 252, 252, 180, 95, 335, 75, 172, 309, 305, 143, 232, 325, 310, - 344, 241, 166, 325, 357, 383, 156, 0, 220, 381, 31, 241, 127, 231, 172, 175, 140, 43, 35, 0, 349, 162, - 234, 241, 378, 52, 387, 46, 178, 92, 278, 160, 366, 125, 330, 66, 63, 226, 358, 127, 62, 164, 125, 330, - 370, 127, 332, 354, 383, 127, 143, 363, 162, 40, 40, 40, 40, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 43, - 43, 382, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 33, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, - 52, 53, 53, 53, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56 - }, - { - 129, 40, 347, 252, 58, 348, 232, 232, 354, 236, 241, 348, 143, 125, 354, 264, 228, 47, 20, 346, 180, 336, - 152, 162, 162, 375, 164, 179, 79, 252, 228, 350, 164, 173, 173, 196, 290, 100, 158, 22, 345, 259, 356, - 302, 180, 335, 220, 375, 80, 72, 376, 0, 348, 284, 353, 375, 311, 84, 189, 298, 186, 30, 404, 0, 354, - 329, 378, 102, 331, 375, 90, 90, 291, 130, 282, 87, 154, 62, 306, 97, 100, 391, 171, 175, 59, 375, 14, - 40, 121, 353, 349, 386, 123, 373, 355, 329, 332, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 61, - 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 368, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 311, 65, 65, 65, 65, 65, - 65, 65 - }, - { - 346, 375, 348, 186, 294, 62, 11, 373, 352, 92, 90, 305, 294, 180, 302, 84, 341, 241, 354, 241, 294, 304, - 57, - 102, 299, 164, 216, 332, 59, 164, 356, 375, 360, 162, 262, 335, 316, 258, 386, 199, 375, 332, 209, 249, - 82, 184, 357, 375, 131, 375, 354, 148, 8, 232, 208, 164, 353, 232, 20, 171, 209, 393, 375, 0, 134, 123, - 314, 375, 155, 110, 349, 386, 375, 258, 70, 378, 216, 240, 90, 363, 320, 154, 88, 131, 309, 316, 344, - 178, 175, 97, 393, 384, 9, 241, 375, 154, 163, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 319, 73, 73, 73, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, - 77, 77 - }, - { - 231, 170, 391, 354, 297, 0, 348, 330, 15, 92, 84, 232, 221, 129, 376, 387, 340, 36, 59, 332, 386, 354, - 340, - 375, 142, 97, 261, 299, 261, 92, 141, 278, 189, 375, 92, 175, 297, 92, 350, 326, 249, 0, 348, 120, 245, - 92, 334, 240, 128, 385, 376, 391, 404, 299, 216, 273, 121, 255, 221, 354, 236, 386, 318, 0, 326, 36, 123, - 152, 404, 228, 273, 385, 164, 360, 344, 354, 282, 131, 220, 160, 220, 10, 19, 321, 378, 228, 64, 329, - 321, 43, 220, 334, 36, 147, 57, 385, 340, 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84 - }, - { - 297, 100, 385, 328, 321, 347, 248, 220, 220, 311, 33, 310, 64, 174, 168, 330, 329, 153, 43, 371, 151, - 151, - 36, 52, 168, 362, 51, 127, 248, 70, 362, 173, 245, 40, 284, 84, 243, 40, 114, 241, 109, 283, 82, 191, - 250, 378, 171, 207, 19, 7, 294, 114, 373, 64, 348, 286, 131, 250, 237, 164, 381, 28, 61, 0, 53, 322, 131, - 140, 131, 161, 231, 37, 183, 378, 323, 128, 298, 246, 344, 383, 355, 108, 130, 232, 348, 68, 278, 331, - 378, 199, 97, 245, 193, 10, 278, 229, 171, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 240, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 87, 87, 87, 87, 87, 87, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 105, 91, 91, 91, 91, 91, 0, 93, 93, 94, 94, 94, - 94 - }, - { - 217, 84, 79, 88, 79, 284, 184, 334, 248, 193, 179, 102, 250, 37, 349, 220, 14, 155, 128, 357, 263, 92, - 108, - 376, 157, 58, 27, 84, 316, 164, 159, 134, 100, 332, 107, 352, 331, 375, 36, 298, 378, 393, 313, 124, 90, - 88, 152, 357, 222, 334, 240, 157, 388, 225, 232, 91, 303, 99, 354, 125, 371, 116, 374, 0, 367, 377, 175, - 170, 253, 84, 367, 97, 243, 137, 383, 27, 389, 20, 341, 15, 300, 332, 237, 337, 116, 348, 356, 45, 404, - 329, 68, 334, 92, 129, 337, 186, 79, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, - 101, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, - 104, 104, 104, 104, 104, 104, 105 - }, - { - 71, 83, 378, 114, 245, 249, 191, 243, 97, 284, 357, 110, 305, 356, 39, 267, 374, 212, 243, 334, 173, 231, - 70, 385, 40, 284, 378, 244, 173, 125, 21, 121, 14, 378, 48, 345, 360, 390, 232, 234, 354, 381, 368, 277, - 104, 348, 116, 31, 147, 237, 362, 92, 404, 92, 209, 301, 51, 64, 301, 161, 167, 334, 20, 0, 189, 294, - 305, 168, 57, 84, 125, 193, 153, 56, 128, 381, 160, 334, 175, 284, 360, 241, 225, 241, 232, 88, 134, 175, - 175, 345, 58, 269, 379, 96, 243, 166, 284, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 12, 108, 108, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 196, 110, 110, 110, 110, 110, - 110, 110, 111, 111, 112, 112, 112, 112, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116 - }, - { - 158, 153, 354, 356, 109, 373, 303, 309, 212, 306, 348, 241, 308, 381, 377, 226, 296, 377, 243, 385, 308, - 175, 175, 125, 320, 350, 354, 157, 173, 245, 166, 158, 243, 356, 376, 250, 166, 15, 71, 390, 164, 284, - 179, 350, 356, 385, 354, 79, 282, 372, 282, 405, 110, 208, 53, 370, 243, 368, 232, 8, 329, 276, 141, 0, - 262, 14, 299, 349, 372, 189, 303, 116, 88, 134, 196, 377, 164, 297, 114, 314, 273, 170, 382, 7, 160, 77, - 250, 110, 332, 84, 164, 356, 175, 134, 241, 7, 370, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, - 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 92, 92, 92, 92, 92, 92, 92, 92 - }, - { - 117, 117, 270, 305, 15, 190, 387, 125, 164, 335, 84, 221, 11, 97, 339, 124, 382, 305, 270, 82, 126, 196, - 270, 270, 221, 330, 167, 150, 20, 119, 286, 92, 332, 317, 212, 164, 393, 62, 212, 311, 158, 294, 133, 95, - 374, 133, 353, 92, 29, 377, 343, 356, 126, 354, 129, 323, 258, 326, 249, 199, 386, 315, 215, 0, 85, 129, - 286, 384, 232, 373, 276, 114, 375, 92, 82, 357, 258, 57, 130, 80, 389, 133, 367, 6, 84, 375, 241, 377, - 114, 367, 330, 84, 348, 282, 20, 378, 250, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 140, 125, 125, 125, 125, 125, 125, 125 - }, - { - 171, 378, 280, 88, 346, 84, 320, 373, 56, 40, 284, 376, 341, 389, 132, 8, 250, 196, 286, 391, 152, 131, - 258, - 108, 348, 129, 378, 39, 149, 196, 136, 152, 116, 47, 119, 94, 306, 335, 148, 334, 251, 87, 179, 343, 231, - 332, 84, 331, 314, 261, 311, 349, 162, 335, 135, 106, 65, 314, 294, 126, 333, 121, 136, 0, 125, 341, 375, - 326, 373, 404, 36, 249, 286, 9, 314, 334, 323, 332, 94, 339, 309, 339, 335, 114, 330, 84, 313, 299, 72, - 154, 84, 131, 116, 375, 345, 132, 83, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 220, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 134, 129, 129, 129, 129, 129, 129, 129, 129, 129, 92, 129, 129, 129, 129, 129, 129, 129, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130 - }, - { - 92, 340, 258, 387, 282, 74, 169, 404, 167, 306, 251, 280, 241, 384, 241, 323, 374, 332, 285, 348, 306, - 323, - 89, 324, 13, 383, 23, 104, 389, 178, 172, 348, 369, 14, 46, 171, 190, 241, 245, 310, 387, 122, 388, 330, - 386, 337, 167, 130, 81, 265, 193, 354, 387, 79, 404, 340, 350, 279, 241, 340, 333, 125, 143, 0, 332, 264, - 190, 241, 71, 376, 62, 193, 191, 355, 347, 10, 294, 249, 15, 119, 94, 387, 190, 325, 84, 325, 340, 96, - 191, 335, 166, 387, 233, 357, 349, 309, 98, 130, 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, 132, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, - 135, 135, 135, 136, 136, 136, 136, 136, 136, 128, 136, 136, 136, 137, 137, 137, 137, 137, 137 - }, - { - 375, 357, 36, 31, 56, 331, 355, 387, 340, 350, 325, 94, 0, 350, 130, 348, 383, 208, 9, 116, 226, 377, - 125, - 301, 251, 290, 357, 331, 299, 330, 261, 306, 84, 357, 373, 90, 263, 116, 366, 308, 341, 297, 373, 387, - 306, 120, 23, 14, 83, 50, 164, 301, 349, 330, 387, 162, 381, 243, 182, 375, 404, 198, 234, 0, 166, 341, - 387, 92, 334, 299, 404, 13, 348, 362, 198, 244, 122, 332, 92, 276, 339, 254, 341, 299, 127, 366, 393, - 375, 278, 270, 170, 354, 79, 256, 46, 392, 125, 137, 137, 137, 137, 137, 138, 138, 138, 91, 139, 139, - 139, 139, 139, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, 146, - 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 150, 150, - 150, 150, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, 153 - }, - { - 256, 31, 265, 339, 121, 117, 390, 330, 244, 357, 55, 350, 121, 330, 273, 125, 126, 119, 362, 48, 335, - 385, - 14, 304, 348, 216, 299, 348, 277, 340, 92, 18, 243, 158, 240, 343, 241, 231, 220, 196, 162, 335, 390, - 152, 353, 340, 162, 332, 31, 128, 175, 31, 350, 278, 333, 332, 391, 390, 179, 330, 158, 162, 166, 0, 114, - 258, 378, 373, 65, 330, 350, 306, 357, 332, 299, 335, 85, 85, 241, 20, 237, 333, 371, 89, 350, 100, 392, - 304, 25, 241, 327, 350, 162, 304, 175, 294, 89, 153, 153, 153, 154, 154, 154, 154, 155, 155, 155, 155, - 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, - 161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164 - }, - { - 0, 282, 97, 378, 134, 188, 193, 98, 309, 135, 84, 282, 99, 385, 354, 3, 78, 294, 180, 172, 232, 78, 33, - 325, - 14, 92, 38, 172, 135, 189, 371, 179, 232, 92, 92, 176, 189, 55, 346, 353, 353, 82, 6, 346, 97, 353, 361, - 186, 348, 378, 348, 261, 253, 244, 119, 348, 348, 346, 244, 332, 354, 159, 355, 0, 79, 278, 82, 278, 166, - 400, 244, 114, 38, 82, 114, 37, 52, 84, 331, 230, 156, 238, 175, 375, 354, 330, 335, 330, 143, 121, 121, - 334, 276, 114, 126, 377, 276, 164, 164, 164, 164, 164, 164, 164, 164, 167, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, - 168, 168, 168, 168, 168, 168, 161, 168, 168, 168, 168, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, 173, 173 - }, - { - 37, 341, 37, 387, 323, 121, 115, 110, 234, 166, 250, 5, 170, 230, 127, 5, 121, 341, 59, 0, 96, 96, 96, - 65, - 264, 200, 381, 313, 232, 348, 250, 124, 134, 40, 178, 129, 367, 174, 92, 160, 123, 353, 118, 348, 246, - 357, 57, 114, 375, 0, 373, 34, 374, 353, 385, 311, 405, 344, 372, 0, 109, 283, 169, 0, 131, 14, 62, 104, - 326, 340, 237, 48, 66, 0, 313, 134, 48, 153, 166, 166, 327, 153, 166, 166, 48, 283, 295, 313, 153, 372, - 375, 57, 214, 245, 208, 313, 313, 173, 173, 173, 173, 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 404, 404, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 404, 404, 404, 176, 176, 176, 176, 176, 176, 177, 177, 178, 178, 178, 178, - 178, 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182 - }, - { - 173, 371, 294, 297, 371, 348, 249, 144, 26, 241, 62, 119, 37, 258, 263, 355, 29, 246, 82, 229, 227, 353, - 254, 326, 241, 232, 330, 330, 144, 65, 81, 6, 20, 340, 310, 386, 148, 375, 208, 237, 386, 377, 332, 198, - 250, 143, 37, 346, 227, 375, 338, 77, 113, 386, 153, 374, 311, 52, 186, 335, 335, 181, 335, 0, 213, 326, - 326, 339, 145, 353, 113, 228, 278, 313, 186, 45, 282, 250, 307, 391, 92, 353, 336, 320, 36, 318, 69, 203, - 232, 97, 164, 370, 299, 129, 167, 291, 16, 182, 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 191, 191, - 191, 191, 191, 192, 192, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 195, 196 - }, - { - 178, 233, 162, 251, 115, 57, 205, 200, 258, 282, 383, 134, 68, 232, 123, 328, 186, 264, 381, 37, 179, - 223, - 62, 3, 203, 289, 357, 376, 262, 316, 325, 136, 124, 71, 14, 32, 345, 321, 285, 305, 297, 383, 348, 168, - 92, 232, 335, 404, 223, 32, 175, 123, 227, 41, 126, 175, 381, 175, 128, 350, 404, 342, 399, 0, 314, 208, - 168, 52, 153, 334, 319, 226, 375, 128, 329, 52, 0, 333, 0, 82, 379, 57, 150, 216, 136, 40, 135, 156, 166, - 319, 241, 52, 18, 343, 263, 356, 361, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 201, 201, 201, 202, 203, 203, 203, 203, 203, - 204, 205, 205, 206, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, - 209, 209, 210, 210, 211, 211, 212, 212, 212, 212, 212, 212, 212, 213, 214, 214, 214, 214 - }, - { - 332, 16, 337, 154, 169, 345, 175, 123, 358, 179, 250, 361, 176, 208, 360, 332, 328, 132, 170, 132, 128, - 92, - 109, 339, 190, 212, 91, 125, 375, 375, 339, 303, 332, 29, 330, 354, 337, 134, 133, 336, 281, 133, 310, - 284, 304, 240, 240, 100, 241, 310, 331, 59, 79, 224, 303, 79, 79, 175, 171, 331, 248, 227, 149, 0, 84, - 362, 83, 164, 354, 159, 0, 20, 243, 0, 120, 387, 15, 198, 65, 69, 9, 29, 348, 25, 174, 56, 342, 220, 61, - 58, 244, 175, 348, 92, 125, 328, 241, 214, 214, 215, 215, 215, 215, 216, 216, 216, 216, 217, 217, 217, - 405, 218, 219, 219, 221, 221, 221, 221, 222, 223, 223, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, - 224, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, - 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232 - }, - { - 175, 175, 31, 290, 125, 237, 345, 345, 26, 161, 313, 311, 128, 231, 348, 29, 190, 88, 354, 331, 386, 121, - 299, 375, 319, 325, 241, 326, 258, 84, 378, 117, 136, 92, 5, 388, 184, 259, 108, 349, 353, 348, 245, 232, - 309, 62, 164, 352, 11, 348, 378, 208, 224, 19, 339, 220, 332, 114, 393, 68, 65, 212, 116, 0, 186, 283, - 98, 189, 325, 84, 386, 375, 92, 48, 0, 342, 179, 164, 261, 375, 35, 354, 339, 386, 169, 329, 92, 102, 47, - 96, 101, 211, 354, 386, 229, 198, 376, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, 233, - 234, 234, 234, 234, 235, 235, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, - 238, 238, 238, 238, 238, 238, 238, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 10, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242 - }, - { - 243, 378, 119, 84, 87, 302, 42, 131, 77, 3, 127, 37, 237, 243, 160, 286, 382, 55, 27, 354, 70, 325, 164, - 69, - 84, 258, 349, 240, 357, 299, 36, 216, 329, 17, 330, 94, 378, 196, 382, 393, 320, 249, 301, 35, 231, 330, - 337, 350, 34, 137, 345, 54, 107, 54, 124, 324, 353, 262, 334, 332, 326, 129, 201, 0, 198, 316, 0, 183, - 47, 62, 250, 68, 388, 156, 175, 325, 258, 154, 240, 386, 90, 104, 178, 39, 44, 369, 187, 164, 10, 246, - 135, 246, 62, 276, 130, 371, 375, 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 245, 245, 245, 245, 245, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, - 248, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, 250 - }, - { - 94, 149, 246, 345, 324, 13, 377, 125, 170, 304, 310, 59, 116, 110, 45, 32, 119, 84, 157, 276, 345, 348, - 311, - 241, 323, 27, 373, 363, 133, 14, 348, 188, 0, 228, 66, 249, 143, 333, 323, 354, 354, 84, 166, 341, 201, - 27, 328, 45, 334, 233, 198, 3, 350, 155, 155, 126, 190, 393, 393, 389, 262, 330, 347, 0, 345, 250, 125, - 84, 404, 125, 230, 114, 114, 115, 345, 316, 386, 247, 189, 120, 282, 87, 377, 243, 325, 20, 325, 92, 71, - 220, 301, 251, 373, 343, 284, 158, 387, 250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 252, 252, 252, 252, 252, 252, 252, 252, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, - 255, 256, 256, 256, 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 259, 260, 261, 261, - 261, 261, 261, 261, 261, 261, 261, 261, 262, 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 264, 264, 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 269, 269, 269, 269, 270, 270 - }, - { - 220, 355, 186, 357, 286, 381, 100, 254, 342, 0, 325, 353, 296, 349, 284, 45, 284, 357, 373, 263, 164, - 252, - 355, 164, 134, 330, 40, 340, 316, 172, 328, 63, 243, 389, 238, 54, 355, 40, 354, 226, 240, 199, 330, 82, - 357, 267, 25, 189, 300, 194, 296, 172, 330, 97, 159, 91, 54, 305, 179, 341, 385, 102, 387, 0, 103, 393, - 311, 27, 229, 0, 282, 159, 171, 311, 339, 184, 314, 378, 3, 166, 387, 237, 340, 130, 317, 129, 325, 318, - 26, 354, 348, 386, 14, 175, 21, 370, 162, 270, 270, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, - 274, 275, 276, 276, 276, 29, 276, 276, 276, 276, 276, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, 283, 283 - }, - { - 244, 182, 345, 171, 330, 234, 103, 107, 62, 175, 281, 279, 62, 343, 20, 62, 367, 282, 341, 116, 5, 189, - 404, - 376, 238, 126, 189, 48, 211, 121, 137, 349, 278, 349, 104, 35, 116, 276, 147, 243, 180, 361, 363, 164, - 325, 92, 343, 283, 188, 223, 31, 63, 265, 162, 354, 127, 378, 149, 125, 181, 357, 10, 353, 0, 175, 220, - 75, 309, 81, 136, 81, 263, 82, 153, 292, 344, 340, 84, 305, 329, 68, 294, 334, 330, 268, 357, 280, 125, - 300, 171, 354, 331, 294, 216, 341, 357, 354, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 282, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286 - }, - { - 334, 109, 2, 121, 121, 92, 386, 333, 323, 192, 163, 126, 24, 282, 273, 166, 143, 355, 55, 375, 305, 369, - 300, 345, 79, 66, 335, 97, 378, 125, 142, 268, 343, 220, 7, 72, 236, 355, 214, 377, 328, 234, 241, 362, - 35, 373, 77, 208, 350, 48, 334, 241, 78, 125, 354, 153, 15, 385, 189, 158, 130, 248, 245, 0, 0, 332, 297, - 404, 348, 340, 335, 348, 156, 162, 128, 62, 375, 11, 220, 196, 119, 228, 296, 304, 318, 248, 127, 325, - 172, 121, 223, 142, 357, 10, 164, 378, 378, 286, 287, 287, 288, 288, 288, 288, 289, 289, 290, 290, 290, - 291, 291, 291, 291, 292, 292, 292, 292, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 284, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 297, 297, - 297, 297, 297, 297, 297, 297, 297, 339, 297, 297, 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 299, 299, 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, 302, 302, 302, 302, 302 - }, - { - 2, 170, 341, 246, 157, 363, 329, 265, 265, 246, 175, 297, 318, 183, 357, 237, 354, 343, 92, 132, 341, - 249, - 297, 132, 83, 20, 333, 348, 332, 354, 134, 332, 332, 349, 244, 350, 173, 315, 117, 356, 171, 220, 186, - 158, 153, 158, 92, 305, 182, 162, 162, 121, 295, 375, 325, 153, 118, 164, 92, 162, 118, 179, 92, 0, 153, - 175, 125, 0, 308, 162, 251, 334, 348, 176, 187, 17, 375, 334, 134, 116, 340, 54, 84, 340, 175, 116, 109, - 128, 134, 10, 345, 369, 369, 153, 18, 330, 286, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, - 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 307, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, 311, 311, 312, 312, 312, 313, 313, 313 - }, - { - 64, 249, 66, 0, 136, 372, 347, 354, 107, 386, 333, 80, 75, 6, 37, 243, 326, 356, 356, 137, 241, 314, 375, - 355, 252, 353, 246, 241, 376, 198, 324, 82, 82, 108, 84, 254, 228, 208, 307, 237, 62, 134, 164, 84, 367, - 340, 232, 232, 332, 64, 17, 19, 369, 312, 97, 350, 179, 47, 121, 183, 84, 169, 348, 0, 332, 164, 348, - 237, 245, 281, 348, 324, 196, 245, 102, 248, 160, 337, 129, 249, 124, 356, 34, 11, 107, 341, 373, 240, - 332, 167, 14, 355, 353, 129, 57, 63, 121, 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 317, 317, 318, 318, 318, 318, 318, 318, 319, 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 325 - }, - { - 295, 134, 241, 354, 137, 330, 178, 164, 65, 306, 154, 107, 107, 9, 81, 325, 319, 357, 301, 243, 325, 208, - 325, 167, 68, 75, 8, 385, 324, 24, 189, 0, 156, 129, 313, 184, 340, 190, 129, 284, 341, 345, 262, 325, - 84, 355, 186, 325, 264, 335, 331, 350, 284, 376, 305, 378, 387, 309, 355, 188, 156, 70, 249, 0, 330, 328, - 357, 354, 350, 126, 8, 294, 47, 330, 327, 166, 226, 261, 92, 329, 339, 107, 348, 232, 117, 348, 70, 207, - 331, 116, 121, 180, 348, 326, 350, 308, 376, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330 - }, - { - 25, 0, 241, 311, 279, 62, 175, 325, 375, 35, 250, 232, 354, 125, 174, 246, 349, 126, 326, 334, 182, 372, - 372, 180, 354, 172, 48, 164, 182, 334, 32, 196, 391, 294, 249, 307, 375, 231, 127, 250, 17, 168, 102, - 330, 241, 381, 81, 168, 136, 136, 349, 309, 128, 256, 334, 329, 376, 343, 294, 40, 36, 58, 164, 0, 320, - 348, 131, 55, 241, 92, 333, 281, 246, 350, 30, 164, 364, 341, 378, 363, 335, 183, 335, 241, 261, 125, - 109, 385, 129, 18, 110, 79, 162, 129, 156, 193, 164, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 332, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 276, 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, 334, 342, 334, 334, 334, 334, 334, 334, 334 - }, - { - 249, 212, 175, 70, 334, 378, 173, 164, 173, 227, 347, 232, 279, 347, 350, 286, 330, 24, 250, 251, 24, - 182, - 129, 378, 385, 120, 405, 229, 376, 181, 77, 143, 192, 330, 140, 355, 250, 171, 341, 286, 314, 333, 354, - 116, 325, 59, 38, 325, 59, 384, 88, 354, 348, 84, 230, 129, 376, 57, 348, 376, 129, 375, 335, 0, 254, - 375, 137, 30, 348, 254, 320, 171, 228, 220, 393, 14, 280, 134, 149, 342, 373, 348, 224, 84, 62, 84, 103, - 375, 375, 254, 348, 320, 199, 96, 341, 372, 250, 334, 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, - 335, 335, 124, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 108, 337, 337, 337, 337, 337, - 338, 338, 338, 338, 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 40, 340, 340, 340, 340, 340, 341, 341, 341, 341, 341, 341 - }, - { - 354, 208, 20, 0, 221, 241, 148, 258, 126, 392, 196, 129, 77, 263, 378, 102, 349, 138, 337, 0, 154, 211, - 286, - 335, 154, 164, 135, 282, 129, 373, 172, 92, 348, 21, 382, 291, 253, 164, 339, 304, 154, 306, 355, 171, - 37, 32, 59, 167, 229, 81, 355, 345, 70, 375, 348, 241, 104, 144, 241, 309, 309, 84, 376, 0, 335, 65, 154, - 317, 353, 353, 355, 84, 354, 317, 345, 348, 228, 57, 357, 302, 96, 118, 261, 355, 200, 132, 301, 226, - 271, 211, 350, 129, 118, 148, 166, 164, 284, 341, 341, 341, 341, 342, 342, 342, 342, 342, 342, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 220, 220, 220, 220 - }, - { - 404, 348, 65, 335, 332, 325, 16, 26, 92, 278, 239, 14, 240, 125, 381, 125, 54, 92, 57, 358, 79, 81, 333, - 343, 17, 256, 182, 158, 5, 363, 121, 26, 299, 216, 57, 166, 58, 286, 369, 14, 158, 240, 375, 0, 286, 321, - 284, 11, 335, 20, 35, 157, 173, 330, 332, 158, 372, 56, 134, 360, 284, 125, 348, 0, 158, 344, 330, 83, - 84, 0, 6, 110, 92, 92, 332, 100, 15, 345, 340, 136, 233, 184, 189, 189, 235, 284, 294, 92, 373, 136, 189, - 311, 166, 220, 375, 137, 330, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349 - }, - { - 278, 325, 330, 310, 354, 158, 75, 70, 246, 227, 92, 194, 350, 96, 250, 369, 130, 100, 61, 125, 179, 250, - 125, 325, 136, 250, 179, 158, 282, 92, 100, 345, 310, 249, 130, 50, 375, 33, 92, 57, 375, 335, 251, 91, - 284, 102, 335, 122, 249, 337, 208, 241, 175, 367, 14, 337, 279, 95, 375, 342, 40, 330, 348, 0, 175, 136, - 330, 345, 330, 345, 66, 84, 249, 249, 128, 92, 79, 343, 64, 114, 30, 306, 340, 129, 348, 258, 343, 349, - 278, 241, 320, 92, 343, 349, 75, 82, 344, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 340, 354, 354, 354, 354, 354, 354, 354, 354, 354 - }, - { - 220, 295, 282, 349, 349, 136, 334, 204, 35, 353, 375, 338, 80, 336, 191, 281, 345, 268, 384, 340, 348, - 348, - 297, 37, 110, 282, 110, 340, 373, 378, 374, 96, 386, 369, 97, 84, 125, 65, 171, 309, 346, 217, 226, 377, - 88, 348, 134, 220, 367, 348, 348, 250, 371, 237, 14, 338, 250, 20, 55, 389, 306, 378, 47, 0, 372, 352, - 340, 343, 348, 120, 110, 284, 245, 334, 284, 112, 70, 115, 102, 251, 121, 129, 117, 87, 346, 325, 282, - 377, 314, 189, 194, 179, 121, 345, 338, 98, 77, 354, 354, 354, 354, 354, 354, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, 356, 356, 220, 356, - 356, 356, 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 359, 359, - 359, 359, 359, 359, 359, 360, 360, 360, 360, 361, 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 362, 362, 362, 363, 363, 363, 363, 364, 365, 366, 366, 28, 366, 367, 367, 367, 367, 367 - }, - { - 19, 311, 348, 162, 378, 152, 250, 329, 92, 375, 258, 50, 159, 75, 152, 348, 313, 57, 11, 31, 353, 145, - 127, - 246, 287, 3, 354, 334, 36, 129, 332, 329, 329, 90, 295, 21, 121, 131, 356, 373, 356, 70, 117, 32, 291, - 129, 143, 250, 48, 334, 299, 324, 332, 81, 157, 302, 348, 208, 349, 377, 232, 385, 31, 0, 35, 384, 92, - 241, 304, 383, 325, 134, 247, 68, 374, 393, 388, 243, 385, 167, 125, 92, 331, 178, 282, 16, 117, 233, - 354, 335, 340, 233, 284, 341, 284, 122, 117, 367, 367, 367, 278, 367, 358, 367, 367, 367, 368, 368, 368, - 368, 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374 - }, - { - 75, 376, 309, 335, 84, 240, 313, 158, 241, 354, 386, 381, 330, 121, 349, 315, 332, 201, 35, 83, 378, 346, - 345, 120, 341, 91, 221, 340, 197, 347, 325, 337, 308, 377, 278, 238, 318, 120, 123, 91, 350, 189, 334, - 189, 331, 244, 373, 342, 309, 297, 9, 37, 369, 348, 126, 355, 335, 334, 306, 220, 220, 375, 354, 0, 234, - 48, 164, 196, 196, 279, 372, 195, 125, 363, 389, 166, 404, 362, 340, 103, 330, 385, 5, 5, 130, 372, 348, - 334, 126, 182, 371, 332, 321, 57, 340, 366, 273, 373, 374, 374, 374, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 376, 376, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378 - }, - { - 330, 367, 72, 374, 334, 158, 75, 350, 136, 92, 392, 127, 20, 121, 381, 329, 365, 367, 375, 127, 304, 365, - 240, 283, 341, 362, 304, 58, 299, 332, 92, 128, 369, 400, 348, 2, 369, 121, 335, 348, 348, 278, 255, 400, - 243, 72, 302, 116, 377, 109, 348, 350, 140, 354, 125, 121, 70, 372, 341, 360, 162, 282, 325, 0, 31, 164, - 348, 15, 372, 345, 75, 39, 325, 39, 220, 31, 255, 349, 158, 35, 335, 212, 119, 360, 348, 58, 369, 345, - 70, 320, 258, 338, 338, 14, 377, 282, 340, 378, 378, 378, 378, 379, 371, 380, 381, 381, 381, 381, 390, - 381, 382, 382, 382, 382, 382, 382, 382, 383, 383, 383, 383, 383, 383, 384, 384, 385, 385, 385, 385, 385, - 385, 385, 385, 372, 385, 385, 386, 386, 386, 386, 386, 386, 386, 386, 359, 386, 386, 386, 386, 386, 386, - 387, 387, 387, 387, 387, 387, 387, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 389, 389, 390, 390, - 391, 391, 391, 391, 392, 392, 393, 393, 393, 367, 393, 393, 393, 393, 0, 0, 0, 0, 0 - }, - { - 243, 114, 331, 92, 114, 107, 173, 330, 330, 168, 107, 70, 173, 241, 164, 61, 15, 286, 332, 83, 375, 375, - 345, 345, 40, 121, 319, 348, 348, 345, 6, 115, 75, 40, 345, 154, 87, 134, 240, 330, 119, 378, 124, 82, - 330, 123, 326, 119, 62, 387, 82, 348, 3, 232, 199, 232, 96, 199, 353, 196, 294, 119, 184, 0, 196, 3, 354, - 208, 14, 354, 124, 317, 184, 330, 348, 354, 40, 304, 119, 136, 11, 373, 357, 84, 23, 95, 307, 348, 108, - 323, 236, 123, 79, 304, 323, 368, 375, 40, 92, 329, 87, 209, 268, 232, 93, 36, 91, 203, 75, 286, 354, - 235, 14, 320, 220, 220, 375, 62, 336, 349, 153, 354, 90, 306, 63, 92, 200, 212, 92, 241, 189, 11, 273, - 97, 363, 281, 54, 345, 136, 294, 347, 345, 250, 238, 102, 153, 15, 363, 98, 353, 27, 348, 326, 131, 148, - 102, 139, 156, 92, 345, 323, 150, 234, 136, 127, 123, 348, 314, 324, 57, 66, 370, 161, 268, 348, 198, - 258, 354, 232, 344, 321, 329, 32, 25, 141, 378, 214, 138, 353, 348, 96 - }, - { - 77, 378, 284, 14, 386, 77, 102, 233, 78, 181, 307, 283, 152, 84, 312, 348, 37, 184, 110, 82, 175, 170, - 121, - 87, 233, 386, 124, 340, 364, 128, 87, 361, 125, 350, 343, 373, 281, 18, 18, 249, 281, 42, 361, 377, 157, - 360, 47, 35, 279, 310, 229, 94, 332, 181, 125, 299, 84, 304, 48, 48, 375, 92, 370, 0, 70, 130, 338, 45, - 357, 10, 359, 157, 83, 25, 92, 283, 348, 390, 84, 96, 269, 363, 168, 348, 7, 35, 323, 375, 383, 16, 357, - 366, 57, 360, 345, 240, 278, 314, 320, 208, 86, 92, 77, 353, 149, 140, 378, 348, 311, 30, 128, 216, 197, - 39, 345, 164, 249, 164, 354, 237, 352, 294, 83, 243, 267, 225, 385, 286, 179, 328, 14, 309, 100, 146, - 134, 82, 345, 335, 92, 325, 387, 404, 305, 18, 221, 37, 330, 131, 125, 128, 133, 314, 341, 57, 314, 319, - 281, 243, 389, 356, 51, 62, 330, 343, 114, 104, 31, 153, 10, 240, 114, 84, 84, 297, 294, 326, 345, 20, - 103, 184, 335, 176, 239, 19, 350, 179, 162, 167, 116, 169, 332 - }, - { - 323, 350, 130, 382, 332, 361, 14, 70, 286, 345, 0, 341, 173, 382, 361, 357, 14, 377, 83, 357, 330, 338, - 330, - 36, 36, 331, 305, 388, 164, 278, 248, 349, 332, 386, 136, 246, 62, 47, 373, 316, 62, 330, 369, 136, 129, - 250, 40, 123, 342, 311, 74, 88, 301, 50, 330, 371, 297, 349, 250, 125, 252, 385, 325, 0, 175, 58, 249, - 386, 309, 250, 37, 120, 127, 127, 128, 362, 356, 77, 389, 329, 143, 136, 35, 227, 356, 224, 241, 320, - 348, 209, 171, 186, 148, 386, 242, 378, 250, 295, 237, 376, 194, 345, 129, 114, 278, 223, 134, 204, 97, - 110, 62, 371, 250, 348, 152, 162, 98, 129, 121, 282, 96, 251, 374, 122, 340, 127, 90, 152, 395, 388, 385, - 325, 354, 282, 31, 299, 35, 125, 342, 347, 75, 354, 341, 3, 62, 386, 233, 196, 58, 297, 284, 189, 372, - 125, 365, 127, 136, 345, 369, 35, 57, 130, 393, 329, 243, 131, 8, 63, 393, 11, 337, 87, 375, 212, 388, - 44, 232, 325, 120, 325, 330, 107, 248, 152, 183, 329, 80, 19, 232, 11, 347 - }, - { - 369, 226, 378, 208, 348, 92, 74, 74, 378, 392, 380, 333, 65, 233, 375, 129, 23, 55, 250, 286, 316, 50, - 145, - 212, 334, 21, 392, 198, 286, 128, 127, 0, 125, 241, 328, 325, 129, 252, 212, 134, 212, 178, 175, 163, - 328, 251, 389, 245, 348, 62, 387, 231, 374, 354, 73, 45, 352, 375, 367, 35, 320, 305, 84, 0, 389, 257, - 367, 318, 244, 369, 63, 309, 92, 172, 360, 14, 38, 175, 168, 305, 375, 297, 330, 153, 92, 385, 244, 375, - 226, 387, 166, 362, 254, 318, 134, 332, 376, 62, 303, 124, 375, 378, 150, 245, 343, 357, 164, 350, 90, - 330, 84, 232, 304, 345, 135, 345, 349, 370, 238, 278, 388, 171, 83, 40, 119, 181, 250, 280, 110, 91, 188, - 340, 335, 296, 335, 136, 125, 278, 58, 32, 294, 15, 12, 249, 12, 75, 78, 286, 92, 352, 110, 340, 329, 91, - 373, 152, 232, 348, 164, 241, 8, 88, 173, 63, 175, 34, 62, 320, 208, 198, 5, 344, 65, 68, 139, 278, 279, - 203, 87, 349, 36, 284, 104, 343, 169, 355, 375, 3, 348, 232, 209 - }, - { - 20, 50, 136, 170, 302, 127, 127, 168, 73, 100, 55, 14, 14, 134, 127, 73, 39, 92, 329, 356, 209, 375, 356, - 375, 40, 71, 325, 173, 170, 332, 325, 158, 255, 335, 212, 302, 250, 252, 51, 390, 330, 153, 241, 170, 57, - 82, 309, 74, 95, 159, 258, 179, 2, 92, 134, 146, 0, 345, 186, 141, 250, 404, 160, 0, 320, 375, 345, 309, - 59, 350, 354, 34, 367, 102, 137, 356, 336, 56, 341, 79, 258, 278, 152, 286, 319, 241, 303, 75, 199, 241, - 184, 264, 152, 243, 381, 114, 116, 231, 316, 272, 56, 148, 65, 349, 163, 115, 91, 355, 182, 352, 167, 37, - 336, 232, 348, 26, 128, 200, 70, 243, 92, 323, 338, 241, 333, 84, 355, 357, 81, 92, 164, 75, 134, 232, - 375, 265, 332, 32, 48, 246, 329, 243, 241, 278, 15, 378, 147, 348, 196, 88, 235, 173, 6, 198, 134, 254, - 247, 37, 84, 171, 211, 349, 184, 350, 248, 193, 311, 243, 348, 256, 14, 47, 134, 314, 121, 378, 313, 127, - 84, 258, 337, 251, 121, 343, 194, 241, 128, 38, 126, 179, 350 - }, - { - 250, 152, 62, 171, 56, 5, 373, 79, 152, 346, 231, 11, 97, 97, 228, 378, 261, 75, 6, 377, 375, 220, 143, - 372, - 375, 284, 237, 77, 95, 134, 334, 101, 344, 139, 251, 377, 386, 375, 281, 167, 354, 280, 353, 355, 349, - 372, 323, 84, 247, 377, 348, 171, 372, 369, 167, 386, 121, 324, 46, 121, 140, 348, 231, 0, 243, 103, 209, - 237, 100, 11, 178, 225, 167, 264, 262, 92, 346, 332, 42, 49, 292, 344, 353, 114, 286, 84, 386, 84, 357, - 12, 369, 354, 357, 306, 97, 373, 331, 343, 93, 130, 181, 300, 114, 377, 140, 14, 284, 328, 353, 75, 186, - 353, 164, 316, 332, 84, 299, 353, 62, 282, 100, 167, 350, 45, 131, 241, 330, 295, 130, 200, 241, 6, 286, - 32, 312, 354, 119, 14, 84, 316, 57, 52, 345, 389, 58, 125, 323, 350, 97, 107, 242, 83, 282, 333, 325, 31, - 139, 241, 153, 330, 75, 10, 224, 313, 174, 225, 341, 124, 373, 284, 263, 196, 76, 11, 327, 109, 92, 164, - 9, 125, 293, 159, 350, 354, 297, 188, 69, 330, 166, 50, 170 - }, - { - 355, 175, 334, 33, 381, 325, 341, 342, 372, 128, 369, 21, 168, 82, 79, 170, 91, 273, 140, 119, 348, 92, - 383, - 77, 354, 125, 114, 162, 229, 164, 164, 175, 170, 56, 377, 167, 357, 47, 391, 15, 156, 47, 348, 15, 15, 0, - 8, 47, 15, 233, 216, 216, 373, 46, 348, 259, 79, 284, 263, 31, 88, 354, 348, 0, 241, 367, 324, 316, 384, - 309, 333, 309, 75, 376, 34, 208, 375, 373, 378, 306, 348, 250, 121, 68, 353, 200, 348, 129, 169, 343, 73, - 132, 353, 249, 62, 131, 348, 250, 147, 340, 168, 121, 343, 136, 265, 391, 92, 188, 79, 241, 114, 335, - 114, 325, 348, 327, 296, 14, 109, 303, 263, 343, 332, 90, 164, 123, 250, 113, 79, 212, 189, 216, 348, - 152, 166, 55, 348, 330, 361, 228, 353, 168, 86, 88, 309, 187, 317, 35, 84, 236, 215, 129, 128, 358, 348, - 404, 137, 310, 347, 2, 199, 92, 104, 7, 134, 239, 169, 243, 100, 65, 367, 344, 246, 354, 3, 341, 19, 153, - 355, 286, 76, 41, 125, 293, 369, 221, 271, 179, 350, 375, 107 - }, - { - 0, 329, 166, 301, 121, 97, 157, 12, 54, 378, 231, 353, 377, 130, 354, 46, 309, 302, 355, 221, 305, 299, - 345, - 37, 309, 284, 373, 353, 357, 75, 123, 302, 325, 201, 220, 39, 343, 302, 284, 375, 355, 297, 180, 100, - 370, 372, 22, 37, 297, 73, 284, 174, 375, 54, 256, 243, 341, 354, 348, 75, 168, 284, 181, 0, 341, 369, - 308, 77, 15, 15, 164, 355, 353, 179, 164, 313, 241, 278, 354, 263, 323, 84, 141, 18, 336, 282, 355, 53, - 123, 9, 134, 15, 321, 152, 102, 284, 148, 372, 335, 175, 392, 51, 88, 119, 232, 337, 385, 123, 390, 202, - 348, 318, 56, 284, 21, 37, 92, 147, 59, 161, 367, 1, 220, 84, 198, 348, 303, 164, 75, 14, 11, 104, 246, - 349, 358, 138, 86, 98, 171, 68, 214, 74, 203, 353, 294, 152, 92, 282, 121, 55, 169, 348, 334, 14, 47, - 101, 121, 339, 348, 225, 150, 74, 92, 192, 189, 367, 216, 93, 197, 181, 37, 160, 94, 76, 367, 301, 362, - 330, 393, 92, 83, 363, 221, 191, 170, 381, 377, 306, 116, 52, 276 - }, - { - 106, 331, 92, 115, 337, 330, 102, 221, 159, 345, 36, 69, 404, 84, 354, 159, 124, 94, 20, 330, 250, 334, - 241, - 247, 377, 388, 237, 162, 208, 353, 239, 333, 134, 352, 127, 348, 186, 267, 11, 286, 354, 357, 115, 153, - 333, 333, 296, 305, 194, 330, 263, 40, 386, 388, 347, 329, 333, 357, 127, 352, 184, 33, 175, 0, 168, 381, - 116, 127, 323, 127, 340, 61, 14, 343, 14, 366, 325, 374, 184, 170, 74, 188, 347, 272, 150, 83, 188, 155, - 166, 360, 31, 353, 241, 345, 31, 360, 251, 351, 57, 20, 66, 159, 164, 287, 46, 367, 55, 201, 164, 153, - 129, 352, 153, 133, 296, 349, 37, 129, 174, 148, 328, 121, 246, 5, 297, 70, 143, 212, 110, 35, 301, 91, - 1, 76, 109, 398, 2, 2, 301, 111, 314, 37, 229, 162, 26, 234, 241, 350, 13, 296, 62, 189, 231, 136, 168, - 240, 41, 128, 222, 246, 175, 28, 61, 109, 130, 342, 348, 269, 232, 263, 29, 123, 202, 325, 125, 201, 178, - 116, 171, 353, 354, 247, 354, 119, 325, 375, 229, 305, 39, 363, 104 - }, - { - 330, 360, 375, 354, 349, 391, 184, 373, 69, 373, 355, 84, 310, 242, 238, 39, 391, 46, 353, 349, 240, 391, - 106, 383, 175, 158, 345, 306, 369, 304, 383, 332, 70, 304, 249, 45, 357, 78, 143, 296, 39, 54, 357, 352, - 4, 367, 126, 234, 35, 354, 164, 362, 348, 126, 304, 238, 216, 348, 345, 348, 210, 263, 285, 0, 345, 171, - 189, 189, 210, 336, 128, 284, 189, 345, 15, 284, 348, 330, 130, 249, 348, 168, 59, 371, 171, 238, 249, 6, - 373, 375, 6, 176, 84, 200, 64, 332, 127, 325, 328, 182, 370, 84, 79, 92, 241, 243, 241, 250, 344, 332, 5, - 399, 158, 6, 116, 143, 68, 124, 339, 56, 96, 184, 193, 348, 68, 127, 343, 374, 160, 157, 295, 345, 97, - 334, 104, 146, 136, 261, 220, 322, 359, 325, 354, 54, 174, 386, 186, 283, 295, 92, 370, 170, 61, 18, 348, - 63, 37, 227, 50, 343, 346, 115, 157, 330, 32, 120, 220, 375, 128, 250, 270, 79, 249, 3, 101, 180, 215, - 357, 331, 228, 81, 261, 150, 285, 300, 14, 135, 164, 354, 332, 349 - }, - { - 147, 42, 386, 79, 354, 329, 107, 89, 241, 183, 260, 62, 294, 330, 348, 30, 348, 316, 330, 405, 243, 249, - 125, 371, 347, 349, 224, 80, 373, 337, 69, 356, 376, 84, 232, 265, 336, 75, 136, 73, 96, 349, 243, 8, - 330, 258, 33, 215, 82, 357, 348, 246, 232, 104, 114, 349, 137, 64, 348, 376, 330, 87, 260, 0, 123, 303, - 141, 355, 175, 0, 326, 74, 386, 208, 316, 284, 193, 232, 143, 171, 19, 303, 116, 20, 232, 354, 294, 393, - 21, 377, 310, 124, 373, 284, 389, 375, 134, 298, 348, 104, 179, 208, 281, 50, 189, 116, 29, 325, 325, - 186, 203, 370, 131, 136, 168, 335, 343, 119, 42, 123, 300, 349, 68, 284, 305, 319, 330, 258, 354, 37, - 348, 333, 20, 354, 122, 29, 296, 196, 339, 130, 270, 381, 202, 232, 329, 102, 228, 339, 333, 320, 3, 354, - 14, 94, 5, 130, 31, 335, 170, 350, 286, 59, 53, 31, 329, 375, 223, 38, 329, 139, 32, 43, 295, 15, 215, - 116, 40, 231, 55, 346, 393, 208, 84, 33, 348, 348, 314, 345, 27, 139, 343 - }, - { - 312, 348, 348, 341, 371, 228, 110, 273, 283, 389, 389, 20, 378, 37, 358, 238, 314, 243, 84, 368, 184, - 345, - 84, 164, 356, 232, 346, 8, 20, 129, 250, 340, 374, 198, 330, 330, 62, 124, 198, 304, 282, 348, 294, 152, - 138, 11, 385, 337, 114, 128, 37, 145, 179, 237, 284, 197, 143, 349, 137, 377, 38, 333, 314, 0, 196, 162, - 92, 354, 340, 258, 392, 375, 293, 164, 332, 337, 251, 232, 348, 378, 333, 194, 149, 220, 332, 332, 339, - 137, 29, 160, 92, 232, 263, 189, 348, 349, 101, 143, 357, 11, 295, 243, 153, 154, 348, 309, 251, 245, - 337, 81, 32, 324, 39, 116, 52, 357, 153, 75, 163, 383, 127, 14, 297, 243, 352, 131, 127, 38, 40, 170, - 188, 310, 121, 289, 345, 325, 114, 193, 141, 302, 404, 154, 133, 159, 354, 32, 330, 326, 122, 75, 250, - 252, 110, 310, 252, 140, 382, 226, 244, 270, 241, 294, 29, 83, 355, 198, 190, 73, 189, 97, 15, 326, 108, - 325, 161, 88, 286, 173, 175, 346, 294, 74, 171, 184, 179, 341, 226, 320, 114, 193, 131 - }, - { - 3, 67, 353, 273, 142, 243, 294, 0, 64, 107, 356, 375, 145, 249, 334, 372, 353, 361, 309, 54, 98, 114, - 376, - 316, 404, 188, 159, 323, 386, 357, 11, 297, 354, 31, 313, 20, 107, 124, 114, 135, 83, 31, 323, 375, 320, - 341, 329, 354, 311, 152, 385, 177, 337, 246, 282, 107, 177, 347, 134, 366, 134, 332, 312, 0, 183, 240, - 164, 226, 356, 36, 90, 164, 307, 19, 378, 373, 316, 172, 391, 134, 32, 355, 125, 89, 64, 306, 32, 178, - 149, 171, 232, 175, 164, 244, 239, 135, 193, 119, 325, 169, 124, 373, 349, 121, 378, 92, 340, 121, 306, - 343, 126, 172, 116, 343, 263, 297, 329, 157, 325, 385, 135, 399, 9, 330, 186, 119, 378, 241, 330, 295, - 70, 385, 232, 190, 88, 81, 48, 282, 100, 175, 289, 335, 345, 190, 249, 296, 120, 340, 230, 125, 341, 328, - 186, 345, 246, 143, 281, 183, 350, 240, 164, 263, 302, 122, 14, 339, 84, 305, 227, 194, 120, 350, 334, - 158, 26, 116, 179, 119, 166, 378, 348, 175, 341, 88, 286, 294, 278, 280, 314, 31, 157 - }, - { - 391, 231, 3, 232, 332, 344, 383, 164, 143, 146, 302, 154, 70, 383, 44, 386, 374, 12, 212, 387, 74, 345, - 66, - 348, 243, 383, 92, 354, 130, 100, 184, 32, 319, 330, 166, 306, 97, 330, 286, 373, 404, 188, 175, 117, 16, - 86, 157, 144, 80, 329, 200, 323, 116, 60, 332, 0, 123, 167, 78, 187, 139, 346, 284, 0, 166, 104, 332, 70, - 316, 325, 323, 84, 262, 92, 75, 137, 373, 309, 367, 116, 346, 71, 331, 354, 145, 283, 120, 325, 84, 371, - 29, 245, 284, 114, 153, 310, 127, 299, 164, 57, 31, 166, 263, 240, 14, 109, 385, 107, 335, 350, 356, 82, - 109, 6, 10, 102, 58, 189, 353, 35, 214, 243, 243, 329, 168, 243, 119, 125, 125, 388, 344, 329, 132, 363, - 348, 77, 124, 131, 56, 115, 227, 21, 164, 249, 334, 309, 253, 153, 325, 119, 175, 42, 120, 249, 331, 5, - 96, 302, 172, 332, 170, 134, 335, 191, 299, 156, 343, 121, 317, 375, 142, 375, 92, 75, 31, 330, 134, 31, - 131, 217, 189, 84, 14, 354, 40, 293, 81, 345, 329, 354, 14 - }, - { - 127, 115, 315, 387, 119, 347, 193, 125, 71, 125, 295, 153, 116, 341, 372, 129, 373, 15, 376, 386, 339, - 347, - 186, 225, 2, 87, 243, 186, 301, 302, 227, 331, 166, 301, 139, 389, 347, 400, 327, 261, 305, 301, 244, - 164, 293, 383, 20, 226, 268, 232, 271, 89, 386, 329, 350, 120, 311, 172, 139, 300, 284, 296, 323, 0, 109, - 373, 373, 179, 348, 355, 305, 212, 330, 124, 91, 180, 135, 295, 389, 301, 0, 83, 326, 199, 175, 301, 223, - 389, 317, 339, 100, 341, 166, 296, 182, 196, 179, 130, 386, 102, 215, 354, 294, 55, 377, 278, 245, 344, - 256, 286, 176, 128, 236, 29, 164, 237, 321, 332, 301, 62, 325, 75, 131, 16, 129, 32, 14, 31, 217, 5, 355, - 313, 329, 96, 196, 232, 2, 236, 37, 164, 345, 244, 234, 32, 162, 370, 330, 278, 14, 211, 196, 290, 86, - 86, 84, 217, 386, 129, 136, 10, 361, 294, 84, 388, 348, 217, 303, 334, 117, 233, 164, 241, 143, 383, 24, - 375, 329, 5, 172, 278, 16, 48, 31, 92, 333, 128, 354, 377, 91, 323, 152 - }, - { - 14, 325, 172, 62, 270, 387, 348, 175, 145, 244, 52, 241, 32, 305, 182, 352, 31, 83, 131, 16, 286, 404, - 339, - 48, 173, 360, 360, 26, 164, 331, 330, 141, 290, 13, 370, 243, 36, 175, 117, 92, 240, 299, 244, 238, 170, - 273, 339, 332, 36, 153, 294, 172, 203, 120, 235, 299, 79, 127, 251, 346, 305, 333, 354, 0, 128, 392, 168, - 245, 160, 73, 336, 360, 241, 125, 376, 61, 344, 350, 73, 136, 400, 360, 240, 312, 0, 370, 66, 278, 139, - 125, 81, 299, 175, 135, 121, 354, 166, 357, 232, 286, 88, 335, 84, 377, 84, 40, 56, 148, 108, 126, 94, - 334, 309, 171, 241, 81, 279, 103, 74, 285, 172, 251, 323, 386, 143, 333, 309, 191, 121, 294, 15, 96, 383, - 193, 130, 373, 263, 90, 164, 348, 125, 18, 234, 182, 162, 195, 272, 335, 168, 366, 126, 243, 127, 119, - 390, 220, 92, 42, 359, 352, 66, 92, 325, 18, 193, 136, 143, 173, 63, 56, 238, 193, 124, 77, 95, 340, 344, - 113, 220, 179, 330, 121, 166, 241, 350, 241, 116, 154, 345, 48, 323 - }, - { - 385, 272, 243, 385, 162, 14, 312, 341, 347, 74, 104, 305, 250, 82, 55, 348, 2, 387, 343, 64, 378, 113, - 383, - 92, 212, 110, 123, 247, 18, 350, 153, 214, 340, 125, 125, 243, 29, 375, 192, 164, 162, 92, 390, 152, 279, - 231, 156, 70, 356, 46, 404, 16, 10, 175, 332, 151, 173, 75, 175, 125, 158, 20, 243, 0, 220, 31, 333, 125, - 330, 100, 25, 212, 162, 51, 250, 226, 179, 390, 176, 393, 348, 136, 305, 378, 158, 330, 346, 337, 228, - 337, 183, 344, 375, 332, 354, 348, 32, 35, 134, 184, 354, 355, 331, 203, 2, 305, 130, 120, 350, 52, 48, - 341, 370, 240, 24, 250, 175, 14, 360, 326, 325, 357, 306, 329, 280, 241, 29, 180, 164, 232, 191, 220, - 265, 125, 40, 36, 48, 334, 80, 224, 378, 200, 375, 372, 173, 133, 237, 175, 331, 334, 353, 375, 320, 375, - 171, 96, 62, 164, 320, 36, 142, 160, 344, 256, 375, 373, 101, 241, 313, 155, 133, 117, 113, 102, 129, - 176, 135, 3, 340, 79, 97, 84, 136, 386, 301, 171, 40, 82, 70, 243, 371 - }, - { - 375, 350, 120, 386, 20, 305, 261, 13, 172, 341, 156, 31, 370, 370, 133, 5, 65, 136, 168, 208, 187, 180, - 289, - 278, 278, 187, 345, 14, 107, 14, 278, 243, 141, 13, 114, 266, 270, 332, 332, 125, 193, 331, 291, 69, 367, - 203, 369, 231, 331, 171, 100, 14, 266, 110, 323, 91, 91, 78, 40, 333, 102, 193, 0, 0, 154, 167, 404, 313, - 276, 134, 356, 356, 31, 250, 170, 305, 277, 154, 345, 326, 345, 354, 122, 354, 326, 333, 10, 333, 250, - 220, 326, 226, 349, 325, 349, 155, 252, 179, 44, 167, 104, 125, 62, 134, 49, 282, 201, 367, 166, 158, 92, - 236, 134, 249, 71, 44, 35, 404, 29, 134, 341, 186, 350, 373, 81, 302, 300, 335, 90, 52, 90, 293, 18, 261, - 378, 335, 130, 244, 241, 40, 305, 378, 116, 88, 356, 247, 320, 136, 127, 246, 175, 392, 330, 134, 355, - 162, 345, 170, 20, 29, 353, 5, 196, 50, 279, 310, 357, 166, 234, 57, 92, 18, 348, 258, 75, 97, 143, 175, - 375, 348, 373, 116, 164, 220, 284, 375, 251, 175, 372, 209, 324 - }, - { - 158, 281, 251, 0, 310, 212, 302, 139, 110, 252, 43, 323, 69, 241, 153, 305, 323, 234, 332, 330, 121, 31, - 232, 305, 119, 302, 326, 0, 107, 139, 281, 121, 302, 119, 161, 336, 348, 375, 349, 346, 69, 75, 283, 229, - 145, 357, 375, 232, 36, 75, 250, 62, 171, 375, 19, 74, 286, 299, 77, 102, 354, 137, 127, 0, 337, 45, 329, - 331, 278, 283, 240, 373, 332, 59, 229, 348, 72, 178, 349, 134, 373, 175, 283, 332, 349, 378, 346, 259, - 331, 38, 345, 349, 354, 62, 325, 212, 383, 46, 386, 49, 175, 170, 325, 125, 244, 124, 92, 92, 140, 61, - 87, 125, 361, 223, 171, 21, 13, 366, 232, 238, 86, 156, 88, 109, 304, 90, 363, 336, 357, 102, 110, 360, - 184, 354, 32, 208, 241, 283, 347, 33, 345, 121, 21, 107, 102, 341, 153, 2, 194, 319, 343, 220, 330, 202, - 12, 284, 152, 348, 375, 386, 87, 130, 373, 157, 249, 92, 57, 84, 31, 92, 330, 62, 354, 96, 130, 250, 125, - 126, 236, 184, 97, 329, 97, 92, 134, 125, 233, 142, 245, 301, 7 - }, - { - 3, 129, 241, 345, 121, 357, 329, 305, 92, 59, 5, 330, 349, 268, 256, 170, 318, 61, 232, 299, 354, 345, - 82, - 208, 77, 92, 59, 349, 375, 173, 330, 164, 164, 252, 375, 348, 246, 243, 119, 96, 391, 116, 358, 354, 39, - 299, 107, 328, 290, 119, 134, 358, 352, 92, 330, 172, 164, 221, 342, 358, 92, 92, 199, 0, 85, 330, 198, - 82, 227, 357, 37, 346, 3, 329, 63, 58, 116, 64, 198, 35, 367, 171, 241, 377, 114, 369, 349, 378, 319, - 171, 68, 350, 329, 171, 171, 114, 349, 91, 20, 184, 198, 52, 125, 270, 286, 32, 175, 240, 250, 235, 59, - 332, 42, 68, 344, 349, 143, 357, 79, 37, 128, 70, 65, 353, 355, 104, 356, 328, 261, 120, 131, 264, 303, - 95, 384, 199, 220, 243, 173, 68, 138, 175, 124, 282, 377, 393, 98, 373, 250, 375, 131, 101, 68, 345, 150, - 268, 106, 233, 373, 189, 319, 179, 54, 228, 323, 211, 131, 345, 81, 354, 387, 66, 125, 49, 201, 190, 321, - 75, 286, 36, 350, 91, 404, 18, 308, 375, 41, 97, 188, 272, 278 - }, - { - 181, 181, 357, 172, 188, 18, 329, 325, 155, 330, 348, 57, 308, 354, 173, 56, 92, 227, 346, 325, 0, 330, - 92, - 329, 188, 162, 164, 301, 2, 81, 56, 173, 171, 348, 83, 164, 10, 110, 110, 110, 19, 247, 310, 373, 36, - 247, 167, 131, 310, 81, 190, 10, 310, 121, 347, 66, 29, 243, 258, 62, 70, 329, 258, 0, 246, 215, 349, - 268, 199, 321, 389, 8, 348, 220, 306, 14, 129, 114, 228, 19, 349, 302, 306, 129, 3, 112, 95, 242, 313, - 350, 299, 311, 341, 146, 13, 302, 370, 166, 170, 354, 330, 348, 276, 336, 330, 16, 268, 134, 296, 16, 16, - 286, 96, 97, 116, 81, 92, 158, 354, 229, 184, 369, 131, 208, 172, 348, 346, 325, 73, 244, 284, 116, 378, - 341, 303, 347, 346, 329, 107, 187, 33, 345, 116, 354, 325, 71, 10, 341, 15, 318, 172, 182, 279, 357, 348, - 354, 79, 299, 332, 136, 51, 294, 306, 340, 330, 164, 116, 132, 116, 81, 284, 294, 332, 375, 250, 116, 84, - 393, 189, 375, 47, 373, 311, 241, 31, 330, 385, 330, 255, 307, 304 - }, - { - 232, 155, 156, 367, 9, 0, 249, 249, 281, 280, 198, 125, 62, 0, 306, 302, 335, 226, 91, 19, 155, 305, 174, - 121, 127, 342, 92, 125, 126, 31, 302, 116, 332, 243, 70, 321, 125, 158, 325, 258, 84, 321, 251, 91, 325, - 280, 107, 32, 155, 262, 357, 281, 325, 91, 84, 306, 96, 357, 90, 14, 342, 299, 70, 0, 321, 70, 84, 133, - 332, 335, 332, 92, 358, 161, 231, 350, 350, 357, 231, 3, 349, 333, 116, 347, 66, 247, 153, 333, 292, 107, - 340, 348, 340, 97, 295, 153, 241, 72, 124, 121, 405, 213, 346, 386, 252, 243, 193, 307, 241, 72, 184, - 187, 89, 354, 354, 302, 342, 191, 92, 88, 58, 117, 34, 73, 344, 385, 15, 83, 78, 2, 164, 173, 367, 314, - 62, 156, 320, 84, 337, 183, 331, 127, 368, 68, 203, 91, 328, 241, 72, 11, 66, 35, 377, 129, 62, 341, 15, - 372, 103, 271, 247, 250, 73, 61, 126, 22, 188, 20, 140, 375, 84, 84, 340, 190, 147, 73, 191, 57, 283, - 355, 348, 299, 386, 37, 197, 157, 125, 62, 301, 344, 208 - }, - { - 108, 354, 323, 82, 73, 62, 63, 226, 238, 171, 34, 131, 162, 246, 127, 75, 75, 325, 335, 155, 282, 348, - 348, - 143, 72, 354, 237, 162, 311, 124, 315, 121, 153, 124, 179, 313, 36, 350, 357, 116, 107, 131, 318, 318, - 236, 157, 318, 386, 386, 44, 66, 157, 304, 107, 243, 151, 389, 332, 246, 348, 269, 309, 75, 0, 75, 345, - 326, 345, 354, 381, 345, 332, 336, 348, 355, 271, 310, 310, 126, 153, 162, 160, 234, 380, 182, 50, 220, - 109, 127, 97, 343, 345, 121, 278, 263, 188, 18, 299, 232, 265, 296, 153, 184, 143, 194, 234, 36, 140, - 170, 97, 66, 14, 251, 310, 79, 373, 281, 323, 317, 84, 89, 97, 164, 345, 232, 158, 164, 92, 366, 110, - 100, 135, 130, 86, 348, 238, 371, 168, 316, 42, 278, 187, 30, 405, 21, 303, 134, 8, 243, 80, 141, 315, - 123, 224, 354, 374, 97, 143, 238, 21, 20, 356, 198, 304, 63, 293, 284, 341, 302, 14, 208, 232, 74, 142, - 160, 77, 353, 36, 124, 203, 347, 36, 64, 349, 139, 378, 66, 67, 117, 251, 105 - }, - { - 332, 236, 175, 170, 212, 251, 313, 132, 239, 350, 354, 162, 83, 67, 98, 84, 331, 369, 228, 268, 84, 303, - 169, 92, 341, 334, 134, 16, 294, 325, 346, 220, 296, 139, 296, 79, 172, 330, 172, 234, 234, 172, 16, 16, - 16, 168, 16, 273, 83, 339, 346, 369, 294, 220, 172, 81, 79, 81, 284, 24, 92, 66, 294, 0, 320, 369, 384, - 258, 354, 346, 284, 349, 79, 79, 300, 349, 378, 348, 393, 14, 129, 306, 10, 47, 312, 294, 10, 284, 74, - 106, 258, 310, 128, 124, 19, 220, 314, 276, 64, 374, 273, 38, 305, 3, 263, 160, 157, 307, 145, 366, 164, - 90, 75, 54, 177, 172, 139, 125, 159, 246, 134, 1, 244, 221, 12, 60, 143, 154, 97, 123, 229, 135, 304, - 386, 245, 139, 294, 75, 29, 296, 119, 2, 174, 244, 81, 186, 196, 91, 135, 199, 172, 348, 124, 18, 16, - 305, 182, 179, 352, 389, 341, 62, 31, 136, 240, 175, 73, 158, 240, 51, 244, 61, 123, 385, 348, 29, 16, - 376, 282, 54, 375, 14, 386, 196, 286, 404, 92, 84, 159, 143, 258 - }, - { - 47, 333, 346, 135, 77, 161, 330, 20, 205, 75, 21, 137, 69, 297, 354, 330, 220, 154, 104, 284, 125, 383, - 19, - 332, 21, 347, 304, 81, 370, 325, 100, 75, 218, 357, 116, 120, 121, 369, 115, 110, 337, 82, 325, 97, 29, - 295, 305, 20, 90, 330, 153, 172, 296, 332, 347, 326, 196, 305, 182, 14, 354, 339, 130, 0, 270, 318, 381, - 278, 37, 57, 348, 241, 256, 36, 325, 333, 369, 82, 106, 188, 345, 196, 31, 333, 179, 360, 202, 66, 320, - 74, 124, 161, 330, 69, 137, 104, 97, 373, 92, 273, 209, 84, 255, 102, 128, 109, 330, 238, 65, 116, 352, - 133, 355, 10, 373, 97, 68, 175, 250, 37, 294, 77, 375, 98, 339, 176, 20, 164, 116, 354, 332, 309, 329, - 191, 3, 11, 45, 116, 75, 47, 186, 329, 220, 125, 350, 372, 172, 168, 128, 133, 354, 116, 175, 100, 19, - 66, 129, 164, 278, 164, 353, 88, 143, 57, 367, 228, 378, 341, 124, 344, 348, 375, 160, 329, 54, 332, 276, - 378, 81, 97, 325, 354, 354, 57, 156, 348, 115, 54, 174, 124, 272 - }, - { - 347, 20, 82, 20, 208, 14, 238, 316, 107, 81, 125, 3, 2, 332, 357, 82, 236, 336, 180, 354, 237, 243, 62, - 320, - 372, 37, 343, 378, 375, 229, 336, 260, 268, 357, 326, 375, 57, 404, 353, 20, 10, 150, 320, 348, 250, 240, - 250, 132, 238, 371, 355, 231, 377, 134, 378, 217, 134, 232, 389, 124, 171, 373, 368, 0, 84, 346, 284, 14, - 320, 320, 294, 172, 180, 233, 306, 375, 261, 308, 68, 343, 251, 282, 132, 77, 106, 20, 378, 349, 179, - 377, 57, 106, 172, 134, 295, 246, 183, 37, 196, 8, 92, 120, 16, 179, 350, 368, 173, 349, 39, 8, 157, 348, - 63, 232, 63, 250, 348, 295, 330, 248, 384, 15, 220, 311, 69, 143, 354, 343, 134, 354, 348, 29, 199, 258, - 130, 186, 226, 58, 242, 91, 144, 166, 36, 166, 125, 16, 40, 309, 14, 134, 74, 55, 11, 10, 404, 15, 158, - 37, 372, 244, 263, 226, 286, 340, 137, 53, 130, 162, 386, 33, 294, 123, 160, 305, 223, 174, 126, 400, - 196, 65, 66, 57, 171, 214, 104, 153, 5, 304, 107, 241, 108 - }, - { - 167, 107, 316, 341, 318, 137, 75, 36, 337, 294, 175, 383, 377, 281, 233, 154, 306, 157, 387, 143, 241, - 241, - 345, 81, 272, 345, 91, 220, 329, 233, 48, 233, 243, 81, 120, 243, 123, 354, 309, 251, 331, 387, 153, 262, - 294, 98, 320, 318, 296, 243, 36, 375, 172, 231, 308, 330, 26, 70, 345, 355, 388, 334, 278, 0, 241, 375, - 290, 175, 330, 179, 370, 196, 220, 24, 234, 48, 250, 14, 375, 354, 340, 117, 20, 297, 334, 170, 369, 73, - 172, 320, 28, 63, 334, 312, 345, 179, 369, 129, 110, 350, 143, 107, 75, 381, 212, 182, 271, 109, 263, - 236, 116, 243, 249, 92, 30, 121, 91, 188, 84, 232, 265, 332, 109, 129, 95, 69, 349, 37, 107, 97, 143, - 164, 353, 254, 367, 249, 171, 36, 353, 248, 124, 203, 375, 294, 250, 313, 155, 241, 128, 346, 197, 282, - 372, 280, 329, 164, 40, 84, 244, 247, 241, 330, 354, 81, 104, 104, 348, 232, 311, 251, 323, 159, 188, 45, - 261, 201, 84, 153, 143, 84, 296, 354, 353, 174, 249, 15, 197, 246, 5, 182, 183 - }, - { - 131, 348, 347, 372, 236, 377, 345, 361, 404, 308, 333, 92, 290, 134, 330, 119, 164, 234, 260, 349, 234, - 337, - 246, 387, 297, 153, 290, 325, 325, 325, 354, 88, 348, 141, 10, 11, 368, 309, 334, 149, 318, 94, 233, 354, - 299, 238, 334, 227, 136, 54, 196, 168, 174, 334, 361, 309, 18, 151, 175, 90, 127, 142, 127, 0, 160, 272, - 154, 309, 80, 339, 254, 57, 154, 18, 78, 232, 78, 309, 10, 14, 262, 84, 77, 261, 250, 95, 356, 231, 379, - 280, 301, 309, 164, 18, 309, 231, 295, 180, 355, 330, 37, 305, 227, 284, 120, 26, 234, 305, 330, 333, - 376, 370, 288, 184, 231, 121, 226, 278, 123, 188, 31, 166, 192, 164, 70, 250, 85, 350, 247, 331, 284, - 378, 354, 92, 70, 92, 125, 371, 386, 116, 248, 238, 55, 283, 363, 96, 164, 294, 311, 124, 15, 37, 147, - 14, 332, 345, 251, 374, 137, 284, 89, 224, 280, 334, 247, 363, 245, 378, 267, 243, 320, 14, 57, 146, 355, - 334, 373, 153, 120, 115, 96, 81, 164, 14, 37, 297, 192, 69, 175, 71, 102 - }, - { - 374, 387, 292, 125, 74, 116, 156, 241, 166, 373, 231, 180, 270, 182, 182, 275, 340, 169, 243, 243, 202, - 155, - 214, 18, 255, 69, 69, 203, 333, 330, 69, 107, 69, 69, 133, 354, 354, 345, 164, 336, 102, 387, 172, 335, - 279, 186, 241, 241, 86, 340, 354, 318, 241, 167, 88, 234, 14, 241, 340, 39, 345, 369, 354, 0, 59, 258, - 129, 6, 114, 320, 64, 92, 354, 117, 245, 301, 108, 319, 196, 129, 282, 8, 355, 232, 404, 326, 116, 175, - 358, 80, 82, 199, 353, 233, 196, 110, 331, 63, 360, 61, 20, 157, 377, 354, 354, 38, 330, 212, 405, 42, - 278, 348, 14, 376, 8, 80, 91, 175, 378, 363, 330, 280, 325, 188, 285, 26, 38, 188, 246, 211, 124, 249, - 276, 14, 62, 244, 301, 129, 305, 330, 332, 189, 6, 164, 311, 330, 47, 24, 170, 387, 270, 115, 360, 47, - 340, 262, 249, 126, 93, 92, 348, 171, 330, 378, 81, 125, 233, 110, 348, 189, 375, 241, 241, 220, 59, 84, - 250, 133, 245, 169, 386, 360, 201, 372, 126, 37, 66, 88, 377, 348, 97 - }, - { - 335, 107, 232, 171, 320, 20, 249, 237, 84, 14, 92, 325, 250, 64, 20, 353, 103, 232, 209, 374, 303, 228, - 84, - 367, 134, 97, 284, 68, 56, 302, 242, 286, 115, 373, 77, 3, 325, 371, 378, 349, 169, 179, 314, 348, 348, - 19, 325, 128, 148, 335, 332, 91, 121, 160, 84, 142, 339, 74, 137, 309, 190, 280, 367, 0, 301, 246, 354, - 205, 372, 103, 94, 297, 329, 249, 282, 240, 119, 311, 164, 276, 276, 142, 188, 36, 164, 388, 330, 352, - 282, 386, 241, 374, 333, 205, 45, 92, 64, 393, 320, 332, 194, 375, 345, 277, 36, 316, 162, 154, 229, 116, - 309, 340, 106, 305, 160, 21, 128, 330, 134, 164, 343, 284, 54, 73, 248, 342, 50, 17, 10, 302, 125, 84, - 244, 375, 84, 278, 164, 320, 124, 20, 303, 153, 127, 14, 332, 332, 92, 128, 167, 92, 46, 118, 37, 375, - 63, 20, 375, 125, 65, 41, 376, 134, 74, 54, 233, 262, 212, 226, 241, 40, 136, 240, 79, 50, 378, 170, 31, - 169, 390, 335, 375, 64, 196, 339, 196, 232, 116, 136, 279, 97, 391 - }, - { - 245, 97, 377, 68, 157, 81, 208, 348, 154, 175, 133, 32, 131, 178, 171, 388, 164, 188, 387, 375, 209, 116, - 354, 62, 284, 282, 119, 309, 115, 374, 378, 156, 387, 364, 15, 15, 119, 251, 364, 325, 325, 354, 45, 262, - 367, 120, 166, 345, 249, 249, 125, 14, 75, 346, 84, 330, 332, 331, 325, 116, 284, 267, 341, 0, 326, 243, - 109, 329, 227, 272, 172, 180, 284, 284, 154, 386, 308, 302, 220, 91, 352, 243, 241, 326, 267, 282, 166, - 5, 161, 121, 193, 92, 311, 250, 125, 282, 182, 95, 297, 375, 386, 247, 167, 354, 164, 326, 313, 92, 229, - 81, 276, 349, 2, 332, 181, 35, 134, 10, 311, 386, 349, 354, 46, 328, 193, 355, 320, 383, 300, 137, 134, - 179, 250, 39, 248, 176, 329, 360, 197, 5, 172, 11, 336, 353, 80, 6, 237, 209, 175, 297, 84, 115, 303, - 102, 129, 325, 77, 92, 128, 333, 343, 94, 164, 166, 125, 284, 311, 103, 276, 119, 92, 247, 171, 388, 81, - 154, 32, 97, 208, 209, 64, 284, 386, 82, 65, 75, 249, 84, 120, 15, 272 - }, - { - 330, 249, 16, 92, 92, 378, 126, 339, 381, 352, 370, 141, 342, 17, 354, 250, 333, 20, 128, 343, 297, 120, - 392, 320, 278, 79, 136, 170, 343, 191, 330, 366, 333, 82, 100, 115, 150, 364, 272, 369, 88, 102, 350, - 164, 32, 162, 286, 2, 263, 92, 354, 116, 286, 164, 169, 179, 192, 373, 333, 75, 175, 100, 164, 0, 332, - 59, 92, 319, 6, 110, 353, 367, 20, 232, 142, 314, 364, 115, 150, 367, 137, 352, 241, 282, 14, 32, 309, - 326, 325, 251, 126, 227, 243, 325, 330, 116, 88, 5, 241, 302, 100, 220, 161, 16, 342, 182, 193, 352, 102, - 278, 392, 164, 55, 346, 55, 127, 182, 125, 134, 262, 96, 11, 129, 315, 148, 97, 62, 115, 91, 143, 14, - 174, 242, 151, 18, 70, 186, 6, 345, 167, 334, 324, 37, 333, 345, 312, 306, 352, 0, 154, 184, 254, 311, - 92, 386, 339, 251, 133, 18, 119, 169, 185, 121, 189, 92, 137, 378, 189, 241, 5, 281, 170, 56, 40, 353, - 331, 348, 250, 70, 164, 247, 24, 3, 82, 353, 329, 345, 330, 249, 107, 367 - }, - { - 369, 100, 252, 348, 84, 164, 375, 21, 345, 84, 371, 92, 83, 263, 345, 284, 83, 194, 10, 355, 375, 116, - 246, - 102, 82, 326, 369, 284, 354, 85, 220, 136, 136, 232, 119, 373, 10, 345, 344, 374, 80, 83, 326, 223, 56, - 91, 263, 171, 192, 84, 320, 326, 164, 15, 375, 91, 355, 47, 250, 334, 37, 57, 134, 0, 220, 97, 376, 354, - 346, 354, 344, 312, 354, 310, 350, 72, 329, 77, 98, 2, 375, 345, 113, 334, 124, 169, 378, 346, 348, 114, - 175, 263, 197, 91, 258, 334, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }, - { - 377, 37, 179, 113, 209, 75, 176, 124, 92, 316, 135, 320, 240, 329, 135, 354, 20, 137, 137, 14, 330, 137, - 134, 316, 131, 309, 75, 75, 152, 116, 329, 282, 157, 128, 226, 175, 232, 286, 84, 344, 385, 231, 249, - 243, 11, 64, 175, 252, 125, 134, 316, 344, 355, 241, 164, 347, 383, 146, 74, 154, 283, 241, 131, 0, 348, - 348, 247, 386, 157, 68, 241, 317, 94, 134, 250, 348, 392, 92, 286, 0, 37, 191, 262, 344, 249, 309, 116, - 309, 75, 129, 184, 84, 45, 316, 345, 110, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 - }, - { - 233, 154, 186, 116, 350, 375, 329, 134, 68, 244, 80, 116, 350, 355, 332, 327, 284, 110, 40, 305, 331, - 267, - 172, 92, 116, 243, 343, 107, 47, 47, 348, 220, 345, 92, 164, 310, 147, 309, 309, 348, 316, 180, 334, 90, - 310, 35, 92, 317, 372, 5, 220, 348, 223, 37, 375, 172, 352, 404, 14, 290, 385, 354, 329, 0, 136, 349, - 309, 294, 128, 348, 117, 14, 350, 297, 120, 79, 128, 168, 345, 90, 133, 332, 332, 316, 181, 392, 354, - 350, 175, 317, 332, 342, 348, 232, 378, 179, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - }, - { - 348, 92, 363, 354, 369, 347, 346, 232, 214, 116, 189, 350, 188, 62, 356, 354, 162, 21, 175, 110, 173, - 290, - 356, 350, 251, 250, 164, 176, 284, 244, 334, 171, 342, 113, 377, 329, 154, 243, 94, 355, 297, 110, 249, - 348, 327, 172, 92, 348, 348, 119, 369, 188, 290, 175, 130, 171, 125, 332, 54, 125, 125, 345, 353, 0, 50, - 228, 50, 228, 378, 125, 189, 354, 172, 35, 253, 170, 208, 133, 253, 131, 294, 333, 345, 124, 189, 164, - 370, 131, 241, 171, 345, 50, 181, 110, 33, 84, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - }, - { - 190, 84, 228, 250, 250, 197, 84, 345, 157, 190, 37, 83, 250, 190, 196, 196, 388, 0, 82, 120, 130, 101, - 310, - 315, 117, 152, 114, 37, 111, 348, 57, 330, 319, 196, 243, 369, 345, 186, 345, 356, 305, 345, 345, 345, - 373, 373, 384, 24, 348, 186, 369, 345, 70, 175, 82, 193, 355, 50, 250, 371, 321, 378, 375, 0, 188, 5, 17, - 320, 14, 371, 189, 373, 386, 97, 68, 82, 355, 32, 90, 241, 355, 305, 308, 286, 81, 326, 81, 64, 320, 376, - 250, 283, 284, 284, 313, 330, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 - }, - { - 122, 330, 345, 316, 294, 332, 162, 220, 329, 329, 148, 335, 110, 339, 327, 367, 216, 202, 386, 368, 92, - 386, - 92, 92, 37, 35, 35, 110, 344, 349, 335, 10, 363, 335, 386, 37, 345, 367, 311, 171, 171, 40, 251, 335, - 349, 212, 133, 220, 46, 357, 354, 40, 348, 208, 367, 388, 250, 357, 345, 354, 75, 328, 348, 0, 54, 388, - 63, 40, 130, 344, 110, 349, 183, 227, 328, 227, 345, 183, 173, 95, 143, 55, 171, 55, 249, 249, 17, 44, - 110, 136, 335, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 - }, - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - } - }; - - //罗马字母 - private static readonly string[] _charIndex = new string[] - { - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", "", "", "", "", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", - "20", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", - "20", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "", "" - }; - - //希腊字母 - private static readonly string[] _charIndex2 = new string[] - { - "a", "b", "g", "d", "e", "z", "e", "th", "i", "k", "l", "m", "n", "x", "o", "p", "r", - "s", "t", "u", "ph", "kh", "ps", "o" - }; - - #endregion - - public ChineseSpell() - { - } - - /// <summary> - /// 获取汉字的汉语拼音 - /// </summary> - /// <param name="chineseStr">欲转换的字符串</param> - /// <param name="options">SpellOptions枚举值的按位 OR 组合</param> - /// <returns></returns> - public static string GetSpellWord(string chineseStr, SpellOptions options) - { - Encoding encoding = Encoding.GetEncoding("GB2312"); - - byte[] local = encoding.GetBytes(chineseStr); - - int i = 0; - int index; - StringBuilder result = new StringBuilder(); - string tmp = ""; - - while (i < local.Length) - { - // 是否为GBK 字符 - if ((local[i] >= 129) - && (local[i + 1] >= 64)) - { - switch ((int) local[i]) - { - case 163: // 全角 ASCII - { - tmp = ((char) (local[i + 1] - 128)).ToString(); - - if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) - && !( - ((tmp[0] >= 97) && (tmp[0] <= 122)) - || ((tmp[0] >= 65) && (tmp[0] <= 90)) - || ((tmp[0] >= 48) && (tmp[0] <= 57)) - ) - ) - { - // 控制不能输出非数字, 字母的字符 - tmp = ""; - } - - break; - } - - case 162: // 罗马数字 - { - if (local[i + 1] > 160) - { - tmp = _charIndex[(int) local[i + 1] - 160]; - } - else if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == - SpellOptions.TranslateUnknowWordToInterrogation) - { - // 在罗马数字区, 不能翻译的字符非罗马数字 - tmp = "?"; - } - else - { - tmp = ""; - } - - break; - } - - case 166: // 希腊字母 - { - // - // TODO:未实现 - // - break; - } - - default: - { - index = _spellCodeIndex[(int) local[i] - 129, local[i + 1] - 64] - 1; - - if (index == 0) // 无此汉字, 不能翻译的字符, GBK 保留 - { - //是否翻译为问号 - if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == - SpellOptions.TranslateUnknowWordToInterrogation) - { - tmp = "?"; - } - else - { - tmp = ""; - } - } - else if ((options & SpellOptions.FirstLetterOnly) == SpellOptions.FirstLetterOnly) //是单拼音 - { - tmp = _spellMusicCode[index].ToUpper().Substring(0, 1); - } - else - { - tmp = _spellMusicCode[index].ToUpper(); - } - - break; - } - } //end of swicth() - - result.Append(tmp); - i += 2; - } - else // 在 GBK 字符集外, 即半角字符 - { - if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) - || ( - ((local[i] >= 97) && (local[i] <= 122)) - || ((local[i] >= 65) && (local[i] <= 90)) - || ((local[i] >= 48) && (local[i] <= 57)) - ) - ) - { - result.Append(((char) local[i]).ToString().ToUpper()); - } - //note:下行修改过的 - else if ((options & SpellOptions.TranslateSpecialWordToConnect) == - SpellOptions.TranslateSpecialWordToConnect) - { - result.Append("-"); - } - - i ++; - } - } - - return result.ToString(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/Cache/CacheUtil.cs b/src/core/AtNet.DevFw.Core/Framework/Web/Cache/CacheUtil.cs deleted file mode 100644 index a1f1296..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/Cache/CacheUtil.cs +++ /dev/null @@ -1,203 +0,0 @@ -/* - * 由SharpDevelop创建。 - * 用户: newmin - * 日期: 2013/11/24 - * 时间: 17:42 - * - * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 - */ - -using System; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.Cache -{ - /// <summary> - /// Description of CacheUtil. - /// </summary> - public sealed class CacheUtil - { - /// <summary> - /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 - /// </summary> - /// <param name="maxAge"></param> - /// <returns></returns> - public static bool CheckClientCacheExpires(int maxAge) - { - /* - Public 指示响应可被任何缓存区缓存。 - Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 - 部分响应消息,此响应消息对于其他用户的请求无效。 - no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) - 根据什么能被缓存 - no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 - 根据缓存超时 - max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 - min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 - max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 - 接收超出超时期指定值之内的响应消息。 - Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 - 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 - 格式: - */ - - - if (maxAge > 0) - { - HttpResponse response = HttpContext.Current.Response; - HttpRequest request = HttpContext.Current.Request; - - string sinceModified = request.Headers.Get("If-Modified-Since"); - - if (!String.IsNullOrEmpty(sinceModified)) - { - //现在时间 - DateTime nowTime = DateTime.Now.ToUniversalTime(); - - //最后修改时间 - DateTime sinceTime; - DateTime.TryParse(sinceModified, out sinceTime); - sinceTime = sinceTime.ToUniversalTime(); - - if ((nowTime - sinceTime).TotalSeconds < maxAge) - { - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return false; - } - } - } - - return true; - } - - /// <summary> - /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 - /// </summary> - /// <param name="etag"></param> - /// <returns></returns> - public static bool CheckClientCacheExpires(string etag) - { - string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); - if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) - { - HttpResponse response = HttpContext.Current.Response; - - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return false; - } - return true; - } - - /// <summary> - /// 设置客户端保存缓存 - /// </summary> - /// <param name="response"></param> - /// <param name="maxAge"></param> - public static void SetClientCache(HttpResponse response, int maxAge) - { - DateTime nowTime = DateTime.Now.ToUniversalTime(); - response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); - response.AddHeader("Last-Modified", nowTime.ToString("r")); - } - - /// <summary> - /// 设置客户端保存缓存 - /// </summary> - /// <param name="response"></param> - /// <param name="etag"></param> - public static void SetClientCache(HttpResponse response, string etag) - { - response.AddHeader("ETag", "\"" + etag + "\""); - } - - /// <summary> - /// 输出缓存内容 - /// </summary> - /// <param name="response"></param> - /// <param name="maxage"></param> - /// <param name="handler"></param> - /// <returns>是否缓存在客户端</returns> - public static bool Output(HttpResponse response, int maxage, StringCreatorHandler handler) - { - /* - Public 指示响应可被任何缓存区缓存。 - Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 - 部分响应消息,此响应消息对于其他用户的请求无效。 - no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) - 根据什么能被缓存 - no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 - 根据缓存超时 - max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 - min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 - max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 - 接收超出超时期指定值之内的响应消息。 - Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 - 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 - 格式: - */ - - #region 获取缓存状态 - - HttpRequest request = HttpContext.Current.Request; - - //现在时间 - DateTime nowTime = DateTime.Now.ToUniversalTime(); - - - string sinceModified = request.Headers.Get("If-Modified-Since"); - - if (!String.IsNullOrEmpty(sinceModified)) - { - //最后修改时间 - DateTime sinceTime; - DateTime.TryParse(sinceModified, out sinceTime); - sinceTime = sinceTime.ToUniversalTime(); - - if ((nowTime - sinceTime).TotalSeconds < maxage) - { - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return true; - } - } - - #endregion - - #region 输出内容并缓存 - - response.Write(handler()); - - response.AddHeader("Cache-Control", "max-age=" + maxage.ToString()); - response.AddHeader("Last-Modified", nowTime.ToString("r")); - - #endregion - - return false; - } - - /// <summary> - /// 输出缓存内容 - /// </summary> - /// <param name="response"></param> - /// <param name="etag"></param> - /// <param name="handler"></param> - /// <returns>是否缓存在客户端</returns> - public static bool Output(HttpResponse response, string etag, StringCreatorHandler handler) - { - string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); - if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) - { - response.StatusCode = 304; - response.Status = "304 Not Modified"; - return true; - } - - response.AddHeader("ETag", "\"" + etag + "\""); - response.Write(handler()); - - return false; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload.cs b/src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload.cs deleted file mode 100644 index a624410..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload.cs +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 文件上传 - * Copyright 2012 OPS,All right reseved! - * Newmin(ops.cc) @ 2012-09-29 07:09 - * - */ - -using System; -using System.IO; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.UI -{ - /// <summary> - /// 文件上传工具 - /// </summary> - public class FileUpload - { - /// <summary> - /// 保存文件夹 - /// </summary> - private readonly string _saveAbsoluteDir; - - /// <summary> - /// 文件名 - /// </summary> - private readonly string _fileName; - - private UploadFileInfo _fileInfo; - - public FileUpload(string saveAbsoluteDir, string fileName) - { - this._saveAbsoluteDir = saveAbsoluteDir; - this._fileName = fileName; - } - - /// <summary> - /// 上传 - /// </summary> - /// <returns>异步则返回进程ID,同步返回上传文件的路径</returns> - public string Upload() - { - HttpRequest request = HttpContext.Current.Request; - String baseDir = AppDomain.CurrentDomain.BaseDirectory; - string[] process = request.Form["upload_process"].Split('|'); - string processID = process[1], - field = process[0]; - - var postedFile = request.Files[field]; - if (postedFile == null) - { - return null; - } - string fileExt = postedFile.FileName.Substring(postedFile. - FileName.LastIndexOf('.') + 1); //扩展名 - - _fileInfo = new UploadFileInfo - { - Id = processID, - ContentLength = postedFile.ContentLength, - FilePath = String.Format("{0}{1}.{2}", this._saveAbsoluteDir, _fileName, fileExt) - }; - - InitUplDirectory(baseDir, this._saveAbsoluteDir); - saveStream(postedFile, baseDir + _fileInfo.FilePath); - - return _fileInfo.FilePath; - } - - private static void InitUplDirectory(String baseDir, String absDir) - { - //如果文件夹不存在,则创建文件夹 - String dir = baseDir + absDir; - if (!Directory.Exists(dir)) - { - Directory.CreateDirectory(dir).Create(); - } - } - - private void saveStream(HttpPostedFile postedFile, string path) - { - const int bufferSize = 100; //缓冲区大小 - byte[] buffer = new byte[bufferSize]; //缓冲区 - - int bytes; //从流中读取的值 - using (FileStream fs = new FileStream(path, FileMode.Create)) - { - while (true) - { - bytes = postedFile.InputStream.Read(buffer, 0, bufferSize); - if (bytes == 0) - { - break; - } - fs.Write(buffer, 0, bytes); - } - fs.Flush(); - fs.Close(); - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/Page.cs b/src/core/AtNet.DevFw.Core/Framework/Web/UI/Page.cs deleted file mode 100644 index f270872..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/UI/Page.cs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Name : UI.Page - * Author : newmin - * Date : 2010/10/22 - */ - -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Web.UI; -using AtNet.DevFw.Framework.Web.unused; -using AtNet.DevFw.Framework.Web.unused.Interface; - -namespace AtNet.DevFw.Framework.Web.UI -{ - public class Page : System.Web.UI.Page, ICompressionable - { - protected override void Render(HtmlTextWriter writer) - { - /* 注:base.Render(writer)应在所有假设性条件后 */ - if (ConfigurationDictionary.EnableCompression) Compression(writer); //是否启用html压缩的话 - else base.Render(writer); - } - - #region ICompressionable 成员 - - public void Compression(System.Web.UI.HtmlTextWriter writer) - { - StringWriter sr = new StringWriter(); - HtmlTextWriter tw = new HtmlTextWriter(sr); - base.Render(tw); - tw.Flush(); - tw.Dispose(); - StringBuilder sb = new StringBuilder(sr.ToString()); - string outhtml = Regex.Replace(sb.ToString(), "\\r+\\n+\\s+", string.Empty); - writer.Write(outhtml); - sr.Dispose(); - } - - #endregion - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs b/src/core/AtNet.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs deleted file mode 100644 index 31daa1d..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace AtNet.DevFw.Framework.Web.UI -{ - /// <summary> - /// 上传文件信息 - /// </summary> - public struct UploadFileInfo - { - /// <summary> - /// 文件编号 - /// </summary> - public string Id { get; set; } - - /// <summary> - /// 保存路径 - /// </summary> - public string FilePath { get; set; } - - /// <summary> - /// 文件长度 - /// </summary> - public int ContentLength { get; set; } - - /// <summary> - /// 已上传长度 - /// </summary> - public int UploadedLength { get; set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/UrlPager.cs b/src/core/AtNet.DevFw.Core/Framework/Web/UI/UrlPager.cs deleted file mode 100644 index 91780f1..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/UI/UrlPager.cs +++ /dev/null @@ -1,430 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : UrlPager -* Author : Administrator -* Create : 2012/10/9 21:49:44 -* Description : -* -*/ - -using System; -using System.Text; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Framework.Web.UI -{ - public enum PagingFlag - { - Control = 1, - Previous = 1 << 1, - Next = 1 << 2 - } - - - public interface IPagingGetter - { - string Get(int page, int total, int nowPage, PagingFlag flag, out string text); - } - - internal class DefaultPageingGetter : IPagingGetter - { - private static readonly CustomPagingGetter getter; - - static DefaultPageingGetter() - { - getter = new CustomPagingGetter( - "", - "?page=%d", - "第一页", - "最末页", - "上一页", - "下一页" - ); - } - - public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) - { - return getter.Get(page, total, nowPage, flag, out text); - } - } - - public class CustomPagingGetter : IPagingGetter - { - private int pagerLinkCount; - private string firstPageText; - private string lastPageText; - private string nextPageText; - private string previousPageText; - private string pagerLinkFormat; - private string firstLinkFormat; - - public CustomPagingGetter( - string firstLinkFormat, - string pagerLinkFormat, - string firstPageText, - string lastPageText, - string previousPageText, - string nextPageText - ) - { - this.firstLinkFormat = firstLinkFormat; - this.pagerLinkFormat = pagerLinkFormat; - this.firstPageText = firstPageText; - this.lastPageText = lastPageText; - this.nextPageText = nextPageText; - this.previousPageText = previousPageText; - } - - public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) - { - if ((flag & PagingFlag.Control) != 0) - { - if ((flag & PagingFlag.Previous) != 0) - { - text = this.previousPageText; - if (page == 1) - { - return "javascript:;"; - } - else - { - if (nowPage == 1) - { - return this.firstLinkFormat; - } - return String.Format(this.pagerLinkFormat, nowPage); - } - } - else if ((flag & PagingFlag.Next) != 0) - { - text = this.nextPageText; - if (page == total) - { - return "javascript:;"; - } - else - { - return String.Format(this.pagerLinkFormat, nowPage); - } - } - } - - text = nowPage.ToString(); - if (nowPage == 1 && this.firstLinkFormat.Length != 0) - { - return this.firstLinkFormat; - } - return String.Format(this.pagerLinkFormat, nowPage); - } - } - - - public class UrlPager - { - private int _linkCount; - - - internal UrlPager() - { - } - - internal UrlPager(int currentPageIndex, int pageCount) - { - CurrentPageIndex = currentPageIndex; - PageCount = pageCount; - } - - /// <summary> - /// 当前页面索引(从1开始) - /// </summary> - public int CurrentPageIndex { get; set; } - - /// <summary> - /// 页面总数 - /// </summary> - public int PageCount { get; set; } - - //获取分页数据 - public IPagingGetter Getter { get; set; } - - /// <summary> - /// 链接长度,创建多少个跳页链接 - /// </summary> - public int LinkCount - { - get - { - if (this._linkCount == 0) - { - this._linkCount = 10; - } - return this._linkCount; - } - set { this._linkCount = value; } - } - - /// <summary> - /// 记录条数 - /// </summary> - public int RecordCount { get; set; } - - - /// <summary> - /// 下一栏链接文字 - /// </summary> - public string NextPagerLinkText { get; set; } - - /// <summary> - /// 选页框文本 - /// </summary> - public string SelectPageText { get; set; } - - /// <summary> - /// 是否允许输入页码调页 - /// </summary> - public bool EnableInput { get; set; } - - /// <summary> - /// 使用选页 - /// </summary> - public bool EnableSelect { get; set; } - - /// <summary> - /// 分页详细记录,如果为空字符则用默认,为空则不显示 - /// </summary> - public String PagerTotal { get; set; } - - - /// <summary> - /// 输入分页链接HTML代码 - /// </summary> - /// <param name="format">例如:?domain=ops.cc&page={0},{0}将会被解析成页码</param> - /// <param name="formatProvider"></param> - /// <returns></returns> - public string Pager() - { - string cls; - string linkText = String.Empty; - string linkUrl; - - StringBuilder sb = new StringBuilder(); - - string _pageCount = (this.PageCount == 0 ? 1 : this.PageCount).ToString(); - - //Div Wrap - sb.Append("<div class=\"pager\">"); - - //输出上一页 - if (this.CurrentPageIndex > 1) - { - cls = "previous"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex - 1, PagingFlag.Control | PagingFlag.Previous, out linkText); - } - else - { - cls = "disabled"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Previous, out linkText); - } - sb.Append(String.Format(@"<span class=""{0}""><a href=""{1}"">{2}</a></span>" - , cls, linkUrl, linkText)); - - - //起始页:CurrentPageIndex / 10 * 10+1 - //结束页:(CurrentPageIndex%10==0?CurrentPageIndex-1: CurrentPageIndex) / 10 * 10 - //当前页数能整除10的时候需要减去10页,否则不能选中 - - - //链接页码数量(默认10) - int c = this.LinkCount; - int startPage = (CurrentPageIndex - 1)/c*c + 1; - - bool _gotoPrevious = false; //是否上一栏分页 - - for (int i = 1, j = startPage; - i <= c && j <= PageCount; - i++, j = (CurrentPageIndex%c == 0 ? CurrentPageIndex - 1 : CurrentPageIndex)/c*c + i) - { - //输出页面 - if (j == CurrentPageIndex) - { - _gotoPrevious = j != 1 && j%c == 1; - - if (_gotoPrevious) - { - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - j - 1, 0, out linkText); - sb.Append(String.Format(@"<a class=""page"" href=""{1}"">{2}</a>", - cls, linkUrl, "...")); - } - - //如果为页码为当前页 - - sb.Append("<span class=\"current\">").Append(j.ToString()).Append("</span>"); - - - //如果为最后一个页码,则显示下一栏 - if (!_gotoPrevious && j%c == 0 && j != PageCount) - { - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - j + 1, 0, out linkText); - - sb.Append(String.Format(@"<a class=""page"" href=""{1}"">{2}</a>", - cls, linkUrl, "...")); - } - } - else - { - //页码不为当前页,则输出页码 - //如果为第一页,用第一页格式 - - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - j, 0, out linkText); - sb.Append(String.Format("<a class=\"page\" href=\"{0}\">{1}</a>", - linkUrl, linkText)); - } - } - - - //显示输入页码框 - //if (EnableInput) sb.Append("<input type=\"text\" size=\"2\"/><a href=\"#\" class=\"go\" onclick=\"gotoPage(this)\">").Append(InputButtonText ?? "跳页").Append("</a>"); - - - //输出下一页链接 - if (this.CurrentPageIndex < this.PageCount) - { - cls = "next"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex + 1, PagingFlag.Control | PagingFlag.Next, out linkText); - } - else - { - cls = "disabled"; - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Next, out linkText); - } - sb.Append(String.Format(@"<span class=""{0}""><a href=""{1}"">{2}</a></span>" - , cls, linkUrl, linkText)); - - - //显示下拉选页框 - if (EnableSelect) - { - linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, - 1, 0, out linkText); - - //选页框 - StringBuilder selectSb = new StringBuilder(); - selectSb.Append("<select onchange=\"").Append("location.href='") - .Append(linkUrl.Replace("1", "#")).Append("'.replace('#',this.value);").Append("\">"); - - if (this.PageCount == 0) - { - selectSb.Append("<option value=\"1\" selected=\"selected\">1</option>"); - } - else - { - for (int i = 1; i <= this.PageCount; i++) - { - selectSb.Append("<option value=\"").Append(i.ToString()); - if (i == this.CurrentPageIndex) - { - selectSb.Append("\" selected=\"selected"); - } - selectSb.Append("\">").Append(i.ToString()) - .Append("</option>"); - } - } - selectSb.Append("</select>"); - - //设置下拉框HTML格式 - if (String.IsNullOrEmpty(this.SelectPageText)) this.SelectPageText = "{0}"; - else if (this.SelectPageText.IndexOf("{0}") == -1) this.SelectPageText += "{0}"; - - //将选页框添加到内容中 - sb.Append(String.Format(String.Concat("<span class=\"select\">", this.SelectPageText, "</span>"), - selectSb.ToString())); - } - - - //显示信息 - if (this.PagerTotal != null) - { - const string _pagerTotalFormat = @" <span class=""pageinfo"">第{0}/{1}页,共{2}条。</span>"; - string _pagerTotal = this.PagerTotal; - if (_pagerTotal == String.Empty) - { - _pagerTotal = _pagerTotalFormat; - } - sb.Append(String.Format(_pagerTotal, - CurrentPageIndex.ToString(), - _pageCount.ToString(), - this.RecordCount.ToString() - )); - } - - //Wrap Close - sb.Append("</div>"); - - return Regex.Replace(sb.ToString(), "\\s\\s|\\r|\\t", String.Empty); - } - } - - public static class UrlPaging - { - public static IPagingGetter DefaultGetter = new DefaultPageingGetter(); - - public static UrlPager NewPager(int page, int pageCount, IPagingGetter pg) - { - if (pageCount == 0) pageCount = 1; - if (page == 0) page = 1; - - UrlPager p = new UrlPager(page, pageCount); - if (pg == null) - { - pg = DefaultGetter; - } - else - { - p.Getter = pg; - } - - return p; - } - - /// <summary> - /// 创建分页信息 - /// </summary> - /// <param name="pageSize"></param> - /// <param name="currentPageIndex"></param> - /// <param name="recordCount"></param> - /// <param name="pageCount"></param> - /// <returns></returns> - public static string PagerHtml(string firstFormat, string format, int currentPageIndex, int recordCount, - int pageCount) - { - IPagingGetter pg = new CustomPagingGetter( - firstFormat, - format, - "第一页", - "最末页", - "<<上一页", - ">>下一页" - ); - - - UrlPager p = NewPager(currentPageIndex, pageCount, pg); - - // p.PreviousPageText = "<<"; - // p.NextPageText = ">>"; - p.EnableInput = true; - p.SelectPageText = "跳页"; - p.PagerTotal = String.Empty; - p.RecordCount = recordCount; - p.PagerTotal = String.Empty; - return p.Pager(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/VerifyCode.cs b/src/core/AtNet.DevFw.Core/Framework/Web/UI/VerifyCode.cs deleted file mode 100644 index 528c72a..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/UI/VerifyCode.cs +++ /dev/null @@ -1,399 +0,0 @@ -/* - * VerifyCode 验证码 - * Copyright 2010 OPSoft ,All right reseved! - * Newmin(ops.cc) @ 2010/11/18 - */ - -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.IO; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.UI -{ - /// <summary> - /// 验证码组成字符选项 - /// </summary> - public enum VerifyWordOptions - { - /// <summary> - /// 全数字 - /// </summary> - Number, - - /// <summary> - /// 全字母 - /// </summary> - Letter, - - /// <summary> - /// 字母和数字 - /// </summary> - LetterAndNumber - - /// <summary> - /// 中文字符 - /// </summary> - //Chinese - } - - /// <summary> - /// 验证码 - /// </summary> - public class VerifyCode - { - private delegate bool TestCondition(int number, int[] array); - - private const int _n_s = 48; //数字开始 - private const int _n_e = 57; //数字结束 - private const int _ul_s = 65; //大写字母开始 - private const int _ul_e = 90; //大写字母结束 - private const int _ll_s = 97; //小写字母开始 - private const int _ll_e = 122; //小写字母结束 - private const int wordLength = 62; - - private static int[] wordArray = new int[62]; - - private bool allowRepeat = true; - - static VerifyCode() - { - //初始化,将0-9,A-Z,a-z添加到数组中去 - for (int i = 0; i < 10; i++) - { - wordArray[i] = _n_s + i; - } - for (int i = 0; i < 26; i++) - { - wordArray[36 + i] = _ul_s + i; - wordArray[10 + i] = _ll_s + i; - } - } - - /// <summary> - /// 是否允许重复出现 - /// </summary> - public bool AllowRepeat - { - get { return allowRepeat; } - set { allowRepeat = value; } - } - - - /* - /// <summary> - /// 验证是否与当前验证码输入一致(区分大小写) - /// </summary> - /// <param name="verifyString"></param> - /// <returns></returns> - public static bool Verify(string verifyString) - { - return Verify(verifyString, false); - } - - - /// <summary> - /// 验证是否与当前验证码输入一致 - /// </summary> - /// <param name="verifyString"></param> - /// <param name="ignoreCase"></param> - /// <returns></returns> - public static bool Verify(string verifyString, bool ignoreCase) - { - string verifyCode = HttpContext.Current.Session["current_verifycode"] as string; - if (String.IsNullOrEmpty(verifyString)) return false; - return String.Compare(verifyString, verifyCode, ignoreCase) == 0; - } - */ - - /// <summary> - /// 获取默认字体 - /// </summary> - /// <returns></returns> - public Font GetDefaultFont() - { - FontFamily fontFamily; - try - { - fontFamily = FontFamily.GenericSansSerif; - } - catch - { - if (FontFamily.Families.Length != 0) - { - fontFamily = FontFamily.Families[0]; - } - else - { - throw new Exception("计算机上找不到字体!"); - } - } - return new Font(fontFamily, 14, FontStyle.Bold, GraphicsUnit.Pixel); - } - - /// <summary> - /// 显示验证码图片 - /// </summary> - public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, out string words) - { - return GraphicDrawImage(number, opt, simpleMode, GetDefaultFont(), 22, out words); - } - - /// <summary> - /// 显示验证码图片 - /// </summary> - public void RenderGraphicImage(int number, VerifyWordOptions opt, bool simpleMode, out string words, - string contentType) - { - HttpContext context = HttpContext.Current; - byte[] data = GraphicDrawImage(number, opt, simpleMode, out words); - - context.Response.BinaryWrite(data); - context.Response.ContentType = contentType ?? "Image/Jpeg"; - } - - /// <summary> - /// 显示验证码图片 - /// </summary> - public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, Font font, int imageHeight, - out string words) - { - HttpContext context = HttpContext.Current; - - int[] verifyWords = new int[number]; - Random rd = new Random(); - - TestCondition test; - int _tempInt; - - - switch (opt) - { - //纯数字 - case VerifyWordOptions.Number: - - test = (i, array) => - { - if (i == 0) return false; - else if (i < _n_s || i > _n_e) return false; - else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; - return true; - }; - - for (int i = 0; i < number; i++) - { - while (verifyWords[i] == 0) - { - _tempInt = wordArray[rd.Next(wordLength)]; - if (test(_tempInt, verifyWords)) - { - verifyWords[i] = _tempInt; - } - } - } - - break; - - - //纯字母 - case VerifyWordOptions.Letter: - - test = (i, array) => - { - if (i == 0) return false; - else if (i < _ul_s || i > _ll_e || (i > _ul_e && i < _ll_s)) return false; - else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; - return true; - }; - - for (int i = 0; i < number; i++) - { - while (verifyWords[i] == 0) - { - _tempInt = wordArray[rd.Next(wordLength)]; - if (test(_tempInt, verifyWords)) - { - verifyWords[i] = _tempInt; - } - } - } - - break; - - - //字母和数字 - case VerifyWordOptions.LetterAndNumber: - - test = (i, array) => - { - if (i == 0) return false; - else if (!Array.Exists(wordArray, a => a == i)) return false; - else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; - return true; - }; - - for (int i = 0; i < number; i++) - { - while (verifyWords[i] == 0) - { - _tempInt = wordArray[rd.Next(wordLength)]; - if (test(_tempInt, verifyWords)) - { - verifyWords[i] = _tempInt; - } - } - } - - break; - } - - //转换成字母 - StringBuilder sb = new StringBuilder(); - foreach (int i in verifyWords) - { - sb.Append((char) i); - } - - //context.Session["current_verifycode"] = sb.ToString(); - words = sb.ToString(); - - //绘图 - return DrawingImage(verifyWords, simpleMode, font, imageHeight); - } - - /// <summary> - /// 绘图 - /// </summary> - /// <param name="charNumberArray"></param> - private byte[] DrawingImage(int[] charNumberArray, bool simpleMode, Font font, int imageHeight) - { - float _fontSize = font.Size; - int _height = imageHeight; - const int _offset = 5; - - Bitmap img = new Bitmap(charNumberArray.Length*(int) _fontSize + _offset, _height); - Graphics g = Graphics.FromImage(img); - g.Clear(Color.White); - - //生成随机生成器 - Random rd = new Random(); - - //画图片的干扰线 - for (int i = 0; i < 25; i++) - { - int x1 = rd.Next(img.Width); - int x2 = rd.Next(img.Width); - int y1 = rd.Next(img.Height); - int y2 = rd.Next(img.Height); - g.DrawLine(new Pen(Color.FromArgb(200, 200, 200)), x1, y1, x2, y2); - } - - FontFamily ffamily = font.FontFamily; - //try - //{ - // ffamily = FontFamily.GenericSerif; - //} - //catch - //{ - // FontFamily[] ffs = FontFamily.Families; - // if (ffs.Length > 1) ffamily = ffs[0]; - // else - // { - // throw new Exception("系统中未找到任何字体!"); - // } - //} - - Brush[] brushs = new SolidBrush[] - { - new SolidBrush(Color.Green), - new SolidBrush(Color.Blue), - new SolidBrush(Color.Red), - new SolidBrush(Color.Black) - //new SolidBrush(Color.Orange) - }; - - - for (int i = 0; i < charNumberArray.Length; i++) - { - g.DrawString(((char) charNumberArray[i]).ToString(), font, brushs[rd.Next(brushs.Length)], - new PointF(_offset + i*(_fontSize - 1), (_height - _fontSize)/2)); - } - - if (!simpleMode) - { - //弯曲图片 - img = TwistImage(img, true, 2, 1); - - //画图片的前景干扰点 - for (int i = 0; i < 100; i++) - { - int x = rd.Next(img.Width); - int y = rd.Next(img.Height); - img.SetPixel(x, y, Color.FromArgb(235, 235, 235)); - } - } - - - MemoryStream stream = new MemoryStream(); - img.Save(stream, ImageFormat.Jpeg); - font.Dispose(); - g.Dispose(); - img.Dispose(); - - byte[] data = stream.ToArray(); - stream.Dispose(); - - return data; - } - - /// <summary> - /// 正弦曲线Wave扭曲图片(http://www.51aspx.com/CV/VerifyColorTwistCode/) - /// </summary> - /// <param name="srcBmp">图片路径</param> - /// <param name="bXDir">如果扭曲则选择为True</param> - /// <param name="nMultValue">波形的幅度倍数,越大扭曲的程度越高,一般为3</param> - /// <param name="dPhase">波形的起始相位,取值区间[0-2*PI)</param> - /// <returns></returns> - private Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) - { - // const double PI = 3.1415926535897932384626433832795; - - const double PI2 = 6.283185307179586476925286766559; - - Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); - - // 将位图背景填充为白色 - System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); - graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); - graph.Dispose(); - - double dBaseAxisLen = bXDir ? (double) destBmp.Height : (double) destBmp.Width; - - for (int i = 0; i < destBmp.Width; i++) - { - for (int j = 0; j < destBmp.Height; j++) - { - double dx = 0; - dx = bXDir ? (PI2*(double) j)/dBaseAxisLen : (PI2*(double) i)/dBaseAxisLen; - dx += dPhase; - double dy = Math.Sin(dx); - - // 取得当前点的颜色 - int nOldX = 0, nOldY = 0; - nOldX = bXDir ? i + (int) (dy*dMultValue) : i; - nOldY = bXDir ? j : j + (int) (dy*dMultValue); - - System.Drawing.Color color = srcBmp.GetPixel(i, j); - if (nOldX >= 0 && nOldX < destBmp.Width - && nOldY >= 0 && nOldY < destBmp.Height) - { - destBmp.SetPixel(nOldX, nOldY, color); - } - } - } - return destBmp; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs deleted file mode 100644 index fe88bbb..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Configuration; - -namespace AtNet.DevFw.Framework.Web.unused -{ - public static class ConfigurationDictionary - { - /// <summary> - /// 是否记录错误 - /// </summary> - internal static bool RecordError = ConfigurationManager.AppSettings["recordError"] == "true"; - - /// <summary> - /// 报告错误的地址 - /// </summary> - internal static string ReportErrorUri = System.Configuration.ConfigurationManager.AppSettings["errorReportUri"]; - - /// <summary> - /// 是否启用压缩 - /// </summary> - internal static bool EnableCompression = - System.Configuration.ConfigurationManager.AppSettings["enableCompression"] == "True"; - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs deleted file mode 100644 index 5289277..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs +++ /dev/null @@ -1,107 +0,0 @@ -/* - * file : exceptionProcess - * author: OPS newmin - * Date : 2010/09/20 - */ - -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.unused -{ - public static class ExceptionProcess - { - /// <summary> - /// 记录错误,记录的文件路径为~/Logs/error.log - /// </summary> - /// <param name="func"></param> - /// <param name="context">当前请求上下文</param> - /// <param name="e">触发的异常</param> - public static void TraceError(HttpContext context, Exception e) - { - StringBuilder sb = new StringBuilder(3000); - sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) - .Append("\tip:").Append(context.Request.UserHostAddress).Append(" \tpath:") - .Append(context.Request.Url.PathAndQuery).Append("\r\n").Append('-', 100).Append("\r\n") - .Append("[message]:").Append(e.Message).Append(" [type]:").Append(e.GetType().ToString()) - .Append("\r\n").Append("[stack]:").Append(e.StackTrace).Append("\r\n"); - using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) - { - sw.WriteLine(sb.ToString()); - sw.Flush(); - sw.Close(); - } - } - - /// <summary> - /// 处理远程提交的错误 - /// </summary> - /// <param name="func"></param> - /// <param name="context">当前请求上下文</param> - /// <param name="e">触发的异常</param> - /// <param name="errorUri">错误地址</param> - /// <param name="ip">ip地址</param> - public static void PostError(HttpContext context, string errorUri, string ip, string type, string msg, - string trace) - { - StringBuilder sb = new StringBuilder(3000); - sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) - .Append("\tip:").Append(ip).Append(" \tpath:") - .Append(errorUri).Append("\r\n").Append('-', 100).Append("\r\n") - .Append("[message]:").Append(msg).Append(" [type]:").Append(type) - .Append("\r\n").Append("[stack]:").Append(trace).Append("\r\n"); - - using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) - { - sw.WriteLine(sb.ToString()); - sw.Flush(); - sw.Close(); - } - } - - /// <summary> - /// 提交错误到远程地址 - /// </summary> - /// <param name="context">当前请求上下文</param> - /// <param name="remoteUri">接收错误的远程uri</param> - /// <param name="errorUri">错误地址</param> - /// <param name="ip">用户IP</param> - /// <param name="type">错误异常类型</param> - /// <param name="msg">错误异常消息</param> - /// <param name="trace">错误异常堆栈</param> - public static void PostRemoteError(HttpContext context, string remoteUri, Exception e) - { - string reportUri = remoteUri, param = null; - if (string.IsNullOrEmpty(reportUri)) return; - if (reportUri.IndexOf("?") != -1) - { - param = reportUri.Substring(reportUri.IndexOf("?") + 1) + "&"; - reportUri = reportUri.Substring(0, reportUri.IndexOf("?")); - } - StringBuilder sb = new StringBuilder(); - sb.Append(context.Request.Url.ToString().Replace(",", "__")) - .Append(",").Append(context.Request.UserHostAddress).Append(",").Append(e.GetType().ToString()) - .Append(",").Append(e.Message).Append(",").Append(e.StackTrace.Replace(",", "__")); - - param += "error=" + HttpUtility.HtmlEncode(sb.ToString()); - - // context.Response.Write("提交前的参数<br />" + param); - - WebRequest wr = WebRequest.Create(reportUri); - wr.Method = "POST"; - wr.ContentType = "application/x-www-form-urlencoded"; - wr.ContentLength = param.Length; - using (Stream stream = wr.GetRequestStream()) - { - stream.Write(Encoding.UTF8.GetBytes(param), 0, param.Length); - wr.GetResponse(); - //StreamReader sr = new StreamReader(wr.GetResponse().GetResponseStream()); - //context.Response.Write("接收到的参数:"+sr.ReadToEnd()); - //context.Response.End(); - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs deleted file mode 100644 index 9bef4f2..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs +++ /dev/null @@ -1,121 +0,0 @@ -/* * - * name : ExecuteHandler.cs - * author : OPS newmin - * date : 09/29 2010 - * note : 用来处理请求,请求的URI参数如:Exc.ashx?cmd=IP,GetIP,127.0.0.1 - * - * 要执行操作的类必需要程序集名称命名空间下: - * 如要执行OPS.Security下的User类,则User类的命名空间为:OPS.Security.User - * 调用方式**.ashx?cmd=User,GetScore,newmin - * - * 2010/10/18 [+] newmin:新增Uri参数task - * 2010/10/18 [!] newmin:修正returnObj为空返回ToString()的Bug - * 2010/11/05 [!] newmin:修正不能接收Session的Bug - * 2010/12/03 [!] nwemin:修正_type为静态类不能创建多个ExecuteHandler的Bug - * 2010/12/06 [+] newmin:添加query支持,可采用*.ashx?class,method,parameters调用 - * [+] newmin:添加无参数时候提示信息 - * [!] newmin:修正不传参数无法返回结果的BUG - * [!] newmin:修正query为?xxxx时候xxxx参数不合法的验证 - * [+] newmin:将cmd参数该为do - * */ - -using System; -using System.Reflection; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.unused.Handler -{ - public abstract class ExecuteHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState - { - /// <summary> - /// 绑定类型用于获取程序集及类型的命名空间 - /// </summary> - protected Type handlerType; - - private static char[] chars = {',', ':'}; - - #region IHttpHandler 成员 - - public bool IsReusable { get; set; } - - public void ProcessRequest(HttpContext context) - { - //包含参数task或query包含,号,如?task=class,method或?class,method - - string task = context.Request["do"] ?? ( - context.Request.Url.Query.IndexOfAny(chars) != -1 - ? context.Request.Url.Query.Replace("?", "") - : context.Request["task"]); - - if (String.IsNullOrEmpty(task)) - { - context.Response.Write("<b>ExecuteHandler组件</b> Power by <a href=\"http://www.ops.cc\">OPSoft</a>"); - return; - } - else task = task.Replace("+", " "); //将空格做为+号替换 - string[] args = task.Split(chars); - if (args.Length >= 2) - { - //获取执行当前代码的程序集并创建实例 - Assembly ass = Assembly.GetAssembly(handlerType); - object obj = ass.CreateInstance(handlerType.Namespace + "." + args[0], true); - - //获取实例类型 - Type type; - try - { - type = obj.GetType(); - } - catch - { - throw new Exception("无法在命名空间:" + handlerType.Namespace + "下找到类型:" + args[0]); - } - - //未添加WebExecuteAttribute特性的类将不被执行 - object[] attrs = type.GetCustomAttributes(true); - - bool canExecute = false; - IWebExecute iw; - foreach (object o in attrs) - { - //如果添加IWebExecuteableAttribute特性 - //则调用其PreExecuting方法 - iw = o as IWebExecute; - if (iw != null) iw.PreExecuting(); - else - { - //如果添加了WebExecuteableAttribute特性,则允许执行 - if (o as WebExecuteableAttribute != null) canExecute = true; - } - } - if (!canExecute) - { - context.Response.Write("此模块不允许被执行!请在需要执行的类名上添加WebExecuteable特性!"); - return; - } - - //获取方法,及方法上的IWebExecuteableAttribute特性, - //并调用起PreExecuting方法 - MethodInfo method = type.GetMethod(args[1], - BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); - IWebExecute[] execAttr = Array.ConvertAll(method.GetCustomAttributes(false), a => a as IWebExecute); - foreach (IWebExecute a in execAttr) a.PreExecuting(); - //执行方法 - - object returnObj; - - returnObj = method.GetParameters().Length != 0 && args.Length > 2 - ? method.Invoke(obj, task.Substring(args[0].Length + args[1].Length + 2).Split(',')) - : method.Invoke(obj, null); - - - //如国返回String类型或值类型则输出到页面 - bool isValueType = returnObj is ValueType; - if (isValueType || method.ReturnType == typeof (string)) - context.Response.Write((isValueType ? returnObj : returnObj ?? "").ToString()); - } - } - - #endregion - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs deleted file mode 100644 index 182db62..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Name : HttpMethodAttribute - * Author : OPS newmin - * Date : 2010/10/26 10:05 - */ - -using System; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.unused.Handler -{ - /// <summary> - /// Post请求特性 - /// </summary> - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] - public class GetAttribute : Attribute, IWebExecute - { - /// <summary> - /// 允许刷新的时间戳,在时间内将停止请求 - /// </summary> - public int AllowRefreshMillliSecond { get; set; } - - /// <summary> - /// 刷新错误提示信息 - /// </summary> - public string RefreshErrorMessage { get; set; } - - public void PreExecuting() - { - if (AllowRefreshMillliSecond > 0) - { - TimeSpan t = new TimeSpan(0, 0, 0, 0, AllowRefreshMillliSecond); - object lastAccessDate = HttpContext.Current.Session["_lastaccessdatetime"]; - if (lastAccessDate == null) HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 - else - { - bool isTimeout = DateTime.Now - (DateTime) lastAccessDate < t; //是否超过指定的再次请求时间 - HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 - if (isTimeout) - { - HttpContext.Current.Response.Write(String.IsNullOrEmpty(RefreshErrorMessage) - ? "Service unavailable!" - : RefreshErrorMessage); - HttpContext.Current.Response.End(); - } - } - } - } - } - - /// <summary> - /// Post请求特性 - /// </summary> - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public sealed class PostAttribute : GetAttribute, IWebExecute - { - void IWebExecute.PreExecuting() - { - //POST请求 - if (HttpContext.Current.Request.HttpMethod != "POST") - { - HttpContext.Current.Response.Write("请求非法"); - HttpContext.Current.Response.End(); - } - base.PreExecuting(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs deleted file mode 100644 index 9a0921b..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs +++ /dev/null @@ -1,19 +0,0 @@ -/* - * name : IWebExecuteableAttribute - * author : Newmin - * date : 2010/11/05 - */ - -namespace AtNet.DevFw.Framework.Web.unused.Handler -{ - /// <summary> - /// 能被WebHandler(.ashx文件)执行的特性接口 - /// </summary> - public interface IWebExecute - { - /// <summary> - /// 在执行前触发此方法 - /// </summary> - void PreExecuting(); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs deleted file mode 100644 index 5f96d32..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs +++ /dev/null @@ -1,19 +0,0 @@ -/* - * name : WebExecuteAttribute - * author : OPS newmin - * Data : 09/20 2010 - * note : 添加此特性才能被ExecuteHandler用反射的方式调用 - */ - -using System; - -namespace AtNet.DevFw.Framework.Web.unused.Handler -{ - /// <summary> - /// 可通过页面请求执行类的操作 - /// </summary> - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] - public sealed class WebExecuteableAttribute : Attribute - { - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs deleted file mode 100644 index 300b6a2..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* - * file : HttpModuleBase - * author:OPS newmin - * createdate:2010/09/20 - */ - -using System; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.unused.HttpModule -{ - public abstract class HttpModuleBase : IHttpModule - { - public void Dispose() - { - } - - public void Init(HttpApplication context) - { - //Bind Events - context.BeginRequest += BeginRequest; - context.Error += ProcessError; - context.EndRequest += EndRequest; - } - - /// <summary> - /// 开始处理请求时发生 - /// </summary> - /// <param name="sender">HttpApplication</param> - /// <param name="e"></param> - public abstract void BeginRequest(object sender, EventArgs e); - - /// <summary> - /// 当发生错误的时候处理 - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - public virtual void ProcessError(object sender, EventArgs e) - { - } - - /// <summary> - /// 当请求结束时候发生 - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - public virtual void EndRequest(object sender, EventArgs e) - { - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs deleted file mode 100644 index 8d23268..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * file : HttpReportModule - * author:OPS newmin - * createdate:2010/09/20 - */ - -using System; -using System.Web; - -namespace AtNet.DevFw.Framework.Web.unused.HttpModule -{ - public class HttpReportModule : HttpModuleBase - { - public override void ProcessError(object sender, EventArgs e) - { - HttpContext context = (sender as HttpApplication).Context; - // 记录错误:文件保存在/Logs/error.log - // 以下情况会将错误日志保存在当前应用程序目录下 - // 1.errorReportUri为空 - // 2.web.config中未配置errorReportUri节点 - // 3.errorReportUri键值的domain与当前域一致且当前域不为虚拟目录 - // 其他情况将提交到errorReportUri - - if (ConfigurationDictionary.RecordError) - { - Exception ex = context.Server.GetLastError().InnerException; - string remoteuri = ConfigurationDictionary.ReportErrorUri ?? ""; - string domain = context.Request.Url.Host; - - if (String.IsNullOrEmpty(remoteuri) || - (remoteuri.IndexOf(domain) != -1 && HttpContext.Current.Request.ApplicationPath == "/")) - ExceptionProcess.TraceError(HttpContext.Current, ex); //当前程序域处理错误 - else - ExceptionProcess.PostRemoteError(HttpContext.Current, remoteuri, ex); //不同域或当前域的虚拟目录处理错误 - } - } - - public override void BeginRequest(object sender, EventArgs e) - { - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs b/src/core/AtNet.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs deleted file mode 100644 index e5f2e75..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Web.UI; - -namespace AtNet.DevFw.Framework.Web.unused.Interface -{ - /// <summary> - /// 压缩网页接口 - /// </summary> - public interface ICompressionable - { - void Compression(HtmlTextWriter writer); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs b/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs deleted file mode 100644 index 585a13d..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs +++ /dev/null @@ -1,512 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Xml; - -namespace AtNet.DevFw.Framework.Xml.AutoObject -{ - /// <summary> - /// 对象属性 - /// </summary> - public struct XmlObjectProperty - { - private string key; - private string name; - private string descript; - - /// <summary> - /// 属性键 - /// </summary> - public string Key - { - get { return key; } - } - - /// <summary> - /// 属性对应的名称 - /// </summary> - public string Name - { - get { return name; } - } - - public string Descript - { - get { return descript; } - } - - public XmlObjectProperty(string key, string name) - { - this.key = key; - this.name = name; - this.descript = ""; - } - - public XmlObjectProperty(string key, string name, string descript) - { - this.key = key; - this.name = name; - this.descript = descript; - } - } - - /// <summary> - /// XmlObject特性 - /// </summary> - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] - public class XmlObjectAttribute : Attribute - { - public string Name { get; set; } - public string Descript { get; set; } - - public XmlObjectAttribute(string name, string description) - { - this.Name = name; - this.Descript = description; - } - } - - - /// <summary> - /// XmlObject - /// </summary> - public class XmlObject - { - private string key; - private string name; - private string descript; - - /// <summary> - /// 属性键 - /// </summary> - public string Key - { - get { return key; } - } - - /// <summary> - /// 属性对应的名称 - /// </summary> - public string Name - { - get { return name; } - } - - /// <summary> - /// 描述/值 - /// </summary> - public string Descript - { - get { return descript; } - } - - public XmlObject(string key, string name, string descript) - { - this.key = key; - this.name = name; - this.descript = descript; - } - - public XmlObjectProperty[] Properties { get; set; } - - /// <summary> - /// 转换为Json - /// </summary> - /// <returns></returns> - public string ToJson() - { - StringBuilder sb = new StringBuilder(); - sb.Append("{'key':'") - .Append(this.key.Replace("'", "\\'")) - .Append("','name':'") - .Append((this.name ?? "").Replace("'", "\\'")) - .Append("','descript':'") - .Append((this.descript ?? "").Replace("'", "\\'")) - .Append("','properties':"); - - //添加属性 - if (this.Properties == null || this.Properties.Length == 0) - { - sb.Append("[]"); - } - else - { - int i = 0; - - sb.Append("["); - - foreach (XmlObjectProperty pro in this.Properties) - { - if (i++ != 0) - { - sb.Append(","); - } - sb.Append("{'key':'") - .Append(pro.Key.Replace("'", "\\'")) - .Append("','name':'") - .Append((pro.Name ?? "").Replace("'", "\\'")) - .Append("','descript':'") - .Append((pro.Descript ?? "").Replace("'", "\\'")) - .Append("'}"); - } - - sb.Append("]"); - } - - sb.Append("}"); - - return sb.ToString(); - } - - /// <summary> - /// 将对象列表转换为json - /// </summary> - /// <param name="objects"></param> - /// <returns></returns> - public static string ToJson(IEnumerable<XmlObject> objects) - { - StringBuilder sb = new StringBuilder(); - int i = 0; - - sb.Append("["); - - foreach (XmlObject obj in objects) - { - if (i++ != 0) - { - sb.Append(","); - } - sb.Append(obj.ToJson()); - } - - sb.Append("]"); - - return sb.ToString(); - } - } - - - /// <summary> - /// XmlObject特性 - /// </summary> - [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class XmlObjectPropertyAttribute : Attribute - { - public string Name { get; set; } - public string Descript { get; set; } - - public XmlObjectPropertyAttribute(string name) - { - this.Name = name; - } - - public XmlObjectPropertyAttribute(string name, string descript) - { - this.Name = name; - this.Descript = descript; - } - } - - public class AutoObjectXml - { - private string filePath; - private XmlDocument xd; - private XmlNode rootNode; - - public AutoObjectXml(string filePath) - { - this.filePath = filePath; - - if (!File.Exists(this.filePath)) - { - File.Create(filePath).Dispose(); - const string initData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<objects>\r\n</objects>"; - - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(this.filePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - - using (TextReader tr = new StreamReader(this.filePath)) - { - xd = new XmlDocument(); - //this.xmlContent = tr.ReadToEnd(); - xd.LoadXml(tr.ReadToEnd()); - - XmlNode xnode = xd.SelectSingleNode("//objects"); - if (xnode == null) - { - throw new NotSupportedException("XML文件中不包含objects节点"); - } - - this.rootNode = xnode; - tr.Dispose(); - } - } - - - /// <summary> - /// 获取Objects根节点 - /// </summary> - /// <returns></returns> - private XmlNode __GetObjectsNode() - { - XmlNode xnode = xd.SelectSingleNode("//objects"); - if (xnode == null) - { - throw new NotSupportedException("XML文件中不包含objects节点"); - } - return xnode; - } - - /// <summary> - /// 插入对象到objects节点 - /// </summary> - /// <param name="key"></param> - /// <param name="name"></param> - /// <param name="descript"></param> - /// <param name="properties"></param> - /// <returns></returns> - public bool InsertObjectNode(string key, string name, string descript, params XmlObjectProperty[] properties) - { - if (rootNode.SelectSingleNode(String.Format("object[@key='{0}']", key)) != null) return false; //已经存在属性 - XmlNode tempNode; - XmlNode node = xd.CreateElement("object"); - XmlAttribute attr = xd.CreateAttribute("key"); - - //add Key - attr.Value = key; - node.Attributes.Append(attr); - - //add Name - attr = xd.CreateAttribute("name"); - attr.Value = name; - node.Attributes.Append(attr); - - //add Descript - tempNode = xd.CreateElement("descript"); - XmlCDataSection cdd = xd.CreateCDataSection(descript); - tempNode.AppendChild(cdd); - node.AppendChild(tempNode); - - XmlNode attrNode = xd.CreateElement("properties"); - - foreach (XmlObjectProperty obj in properties) - { - //add Property - tempNode = xd.CreateElement("property"); - attr = xd.CreateAttribute("key"); - attr.Value = obj.Key; - tempNode.Attributes.Append(attr); - - attr = xd.CreateAttribute("name"); - attr.Value = obj.Name; - tempNode.Attributes.Append(attr); - - if (!String.IsNullOrEmpty(obj.Descript)) - { - cdd = xd.CreateCDataSection(obj.Descript); - tempNode.AppendChild(cdd); - } - - attrNode.AppendChild(tempNode); - } - node.AppendChild(attrNode); - - //add object - rootNode.AppendChild(node); - - - return true; - } - - /// <summary> - /// 从dll读取并插入,对象需指定XmlObject特性,属性可选XmlObjectProperty特性 - /// </summary> - /// <param name="dllPath"></param> - /// <param name="checkNameSpace"></param> - public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute, string checkNameSpace) - { - if (!File.Exists(dllPath)) throw new FileNotFoundException(); - Assembly ass = Assembly.LoadFile(dllPath); - bool ckNs = checkNameSpace != null; //是否从指定的命名空间加载 - Type[] types = ass.GetTypes(); - foreach (Type t in types) - { - if (ckNs && !t.Namespace.StartsWith(checkNameSpace)) - { - continue; - } - - this.InsertFromType(t, includeNoProperyAttribute); - } - } - - /// <summary> - /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 - /// </summary> - /// <param name="dllPath"></param> - /// <param name="checkNameSpace"></param> - public void InsertFromDLL(string dllPath, string checkNameSpace) - { - this.InsertFromDLL(dllPath, false, checkNameSpace); - } - - /// <summary> - /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 - /// </summary> - /// <param name="dllPath"></param> - /// <param name="checkNameSpace"></param> - public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute) - { - this.InsertFromDLL(dllPath, includeNoProperyAttribute, null); - } - - - private delegate void MemberXmlObjectHandler(MemberInfo member); - - public void InsertFromType(Type type, bool includeNoProperyAttribute) - { - Type t = type; - //加载类型 - object[] objs = t.GetCustomAttributes(typeof (XmlObjectAttribute), false); - if (objs.Length == 0) return; - - XmlObjectAttribute xa = (XmlObjectAttribute) objs[0]; - XmlObjectPropertyAttribute xpa = null; - IList<XmlObjectProperty> list = new List<XmlObjectProperty>(); - object[] objAtt; - XmlObjectProperty pro; - - MemberXmlObjectHandler handler = (p) => - { - objAtt = p.GetCustomAttributes(typeof (XmlObjectPropertyAttribute), true); - xpa = objAtt.Length == 0 ? null : (XmlObjectPropertyAttribute) objAtt[0]; - - if (xpa != null || includeNoProperyAttribute) - { - list.Add(new XmlObjectProperty( - p.Name, - xpa == null || xpa.Name == null ? p.Name : xpa.Name, - xpa == null || xpa.Name == null ? "" : xpa.Descript) - ); - } - }; - - - foreach (PropertyInfo p in t.GetProperties(BindingFlags.Public | BindingFlags.Instance)) - { - handler(p); - } - - foreach (MethodInfo p in t.GetMethods(BindingFlags.Public | BindingFlags.Instance)) - { - handler(p); - } - - this.InsertObjectNode(t.Name, xa.Name ?? t.Name, xa.Descript ?? "", list.ToArray()); - } - - /// <summary> - /// 删除指定前缀的对象 - /// </summary> - /// <param name="prefix"></param> - public void RemoveObjects(string prefix) - { - XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); - foreach (XmlNode x in list) - { - if (x.Attributes["key"].Value.StartsWith(prefix)) - { - this.rootNode.RemoveChild(x); - } - } - } - - /// <summary> - /// 删除所有对象 - /// </summary> - public void RemoveAllObjects() - { - XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); - foreach (XmlNode x in list) - { - this.rootNode.RemoveChild(x); - } - } - - public XmlObject GetObject(string objectKey) - { - XmlNode node = this.rootNode.SelectSingleNode(String.Format("object[@key='{0}']", objectKey)); - if (node == null) return null; - - IList<XmlObjectProperty> prolist = new List<XmlObjectProperty>(); - XmlObject obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, - node.SelectSingleNode("descript").InnerText); - XmlNodeList proNodes = node.SelectNodes("properties/property"); - foreach (XmlNode n in proNodes) - { - prolist.Add(new XmlObjectProperty( - n.Attributes["key"].Value, - n.Attributes["name"].Value, - n.InnerText)); - } - - obj.Properties = prolist.ToArray(); - - return obj; - } - - /// <summary> - /// 获取所有对象 - /// </summary> - /// <returns></returns> - public IEnumerable<XmlObject> GetObjects() - { - IList<XmlObjectProperty> prolist = new List<XmlObjectProperty>(); - - XmlNodeList nodes = this.rootNode.SelectNodes("object"); - XmlObject obj; - XmlNodeList proNodes; - foreach (XmlNode node in nodes) - { - obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, - node.SelectSingleNode("descript").InnerText); - proNodes = node.SelectNodes("properties/property"); - - prolist.Clear(); - foreach (XmlNode n in proNodes) - { - prolist.Add(new XmlObjectProperty( - n.Attributes["key"].Value, - n.Attributes["name"].Value, - n.InnerText)); - } - obj.Properties = prolist.ToArray(); - - yield return obj; - } - } - - /// <summary> - /// 保存到文件中 - /// </summary> - public void Flush() - { - /* - using (TextWriter tr = new StreamWriter(this.filePath)) - { - tr.Write(xmlContent); - tr.Flush(); - tr.Dispose(); - }*/ - - xd.Save(this.filePath); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs b/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs deleted file mode 100644 index bc1889b..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; - -namespace AtNet.DevFw.Framework.Xml.AutoObject -{ - public class AutoXmlTest - { - public static void Test() - { - Xml.AutoObject.AutoObjectXml ax = - new Xml.AutoObject.AutoObjectXml(AppDomain.CurrentDomain.BaseDirectory + "templet/template_dict.xml"); - - ax.RemoveAllObjects(); - - //ax.RemoveObjects("Pro"); - - ax.InsertObjectNode("Temp", "客户", "", new XmlObjectProperty("ID", "客户编号", "1234\nretyt\nfdsf"), - new XmlObjectProperty("RealName", "真实姓名")); - ax.InsertFromDLL(AppDomain.CurrentDomain.BaseDirectory + "bin/spc.dll", null); - ax.Flush(); - - HttpResponse response = HttpContext.Current.Response; - - response.Write(XmlObjectDoc.DocStyleSheet); - - //显示单个对象文档 - // XmlObject obj = ax.GetObject("Temp"); - // response.Write(XmlObjectDoc.GetGrid(obj,-1)); - - - IList<XmlObject> objects = new List<XmlObject>(ax.GetObjects()); - - response.Write("<h1>Objects</h1><ul>"); - for (int i = 0; i < objects.Count; i++) - { - response.Write("<li><a href=\"#object_"); - response.Write(objects[i].Key); - response.Write("\">"); - response.Write(objects[i].Name); - response.Write("("); - response.Write(objects[i].Key); - response.Write(")"); - response.Write("</a></li>"); - } - - response.Write("</ul>"); - - for (int i = 0; i < objects.Count; i++) - { - response.Write(XmlObjectDoc.GetGrid(objects[i], i + 1)); - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs b/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs deleted file mode 100644 index 3678b8e..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Text; - -namespace AtNet.DevFw.Framework.Xml.AutoObject -{ - public static class XmlObjectDoc - { - public const string DocStyleSheet = @"<style type=""text/css""> - .ui-xmldoc{margin:20px;font-size:14px; } - .ui-xmdoc h2{font-size:18px;border-bottom:solid 1px #d0d0d0;padding-bottom:10px;} - .ui-xmldoc table{background:#d0d0d0;width:100%;line-height:23px;font-size:12px;} - .ui-xmldoc table th{background:#e0e0e0;padding:5px 10px;text-align:left;} - .ui-xmldoc table td{background:#f5f5f5;padding:0 10px;border:solid 1px #fff;border-top:none;} - .ui-xmldoc table td.key{width:100px;} - .ui-xmldoc table td.name{width:200px;} - </style>"; - - public static string GetGrid(XmlObject obj, int index) - { - const string tpl = @"<div class=""ui-xmldoc"" id=""object_%object.key%""> - <h2><a href=""#%object.key%"">%object.index%%object.name%<span class=""key"">(%object.key%)</span></a></h2> - <p class=""descript"">描述:%object.descript%</p> - <p class=""prop""> - <table cellspacing=""1"" cellpadding=""0""> - <tr><th class=""key"">属性键:</th><th class=""name"">属性名称:</th><th class=""descript"">备注:</th></tr> - %object.prop% - </table> - </p> - </div>"; - - - StringBuilder sb = new System.Text.StringBuilder(); - - if (obj.Properties != null) - { - foreach (XmlObjectProperty p in obj.Properties) - { - sb.Append("<tr><td class=\"key\">").Append(p.Key) - .Append("</td><td class=\"name\">").Append(p.Name).Append("</td><td class=\"descript\">") - .Append(p.Descript).Append(" </td></tr>"); - } - } - - return tpl.Replace("%object.key%", obj.Key) - .Replace("%object.index%", index < 1 ? "" : index.ToString()) - .Replace("%object.name%", obj.Name) - .Replace("%object.descript%", obj.Descript.Replace("\n", "<br />")) - .Replace("%object.prop%", sb.ToString()); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Xml/XmlDocHelper.cs b/src/core/AtNet.DevFw.Core/Framework/Xml/XmlDocHelper.cs deleted file mode 100644 index b0aa2bc..0000000 --- a/src/core/AtNet.DevFw.Core/Framework/Xml/XmlDocHelper.cs +++ /dev/null @@ -1,24 +0,0 @@ -/* - * XMLDocument - * - * Copyright 2010 OPS,All rights reseved! - * date : 2010/11/22 - */ - -using System; -using System.Xml; - -namespace AtNet.DevFw.Framework.Xml -{ - [Obsolete] - public class XmlDocHelper - { - public static object ReadAttributeValue(string xmlPath, string xpath) - { - XmlDocument x = new XmlDocument(); - x.Load(xmlPath); - XmlNode xn = x.SelectSingleNode(xpath); - return xn.Value; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/FwCtx.cs b/src/core/AtNet.DevFw.Core/FwCtx.cs deleted file mode 100644 index 8cac6eb..0000000 --- a/src/core/AtNet.DevFw.Core/FwCtx.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.IO; -using AtNet.DevFw.Framework; - - -namespace AtNet.DevFw -{ - /// <summary> - /// 开发框架上下文对象 - /// </summary> - public static class FwCtx - { - private static string _physicalPath; - private static Variable _variables; - private static VersionSet _version; - private static int _platformId; - - /// <summary> - /// 物理路径 - /// </summary> - public static string PhysicalPath - { - get { return _physicalPath ?? (_physicalPath = AppDomain.CurrentDomain.BaseDirectory); } - } - - /// <summary> - /// 变量设置 - /// </summary> - public static Variable Variables - { - get { return _variables ?? (_variables = new Variable()); } - } - - /// <summary> - /// 版本 - /// </summary> - public static VersionSet Version - { - get { return _version ?? (_version = new VersionSet()); } - } - - /// <summary> - /// 是否运行在非Windows平台 - /// </summary> - /// <returns></returns> - public static bool Mono() - { - //获取平台编号 - if (_platformId == 0) - { - _platformId = (Int32) Environment.OSVersion.Platform; - } - - return _platformId == 4 || _platformId == 6 || _platformId == 128; - } - - /// <summary> - /// 从默认的位置加载程序集 - /// </summary> - public static void ResolveAssemblies() - { - InnerAppDomainResolver.Resolve(null); - } - - - /// <summary> - /// - /// </summary> - /// <param name="assemblyFullPath"></param> - public static void ResolveAssembliesByPath(String assemblyFullPath) - { - InnerAppDomainResolver.Resolve(assemblyFullPath); - } - } -} diff --git a/src/core/AtNet.DevFw.Core/MicroTemplateEngine.cs b/src/core/AtNet.DevFw.Core/MicroTemplateEngine.cs deleted file mode 100644 index 15ab989..0000000 --- a/src/core/AtNet.DevFw.Core/MicroTemplateEngine.cs +++ /dev/null @@ -1,131 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : SimpleTemplateEngine -* Author : Administrator -* Create : 2012/10/26 23:49:52 -* Description : -* -*/ - -using System; -using System.Reflection; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw -{ - /// <summary> - /// 微型模板引擎 - /// </summary> - public sealed class MicroTemplateEngine - { - /// <summary> - /// 包含方法的类型实例 - /// </summary> - private readonly object _classInstance; - - public MicroTemplateEngine(object classInstance) - { - this._classInstance = classInstance; - } - - /// <summary> - /// 数据列正则 - /// </summary> - private static Regex fieldRegex = new Regex("{([a-z\\[\\]0-9_\u4e00-\u9fa5]+)}"); - - /// <summary> - /// 执行解析模板内容 - /// </summary> - /// <param name="instance">包含标签方法的类的实例</param> - /// <param name="html"></param> - /// <returns></returns> - public static string Execute(object instance, string html) - { - string resultTxt = html; //返回结果 - - const string tagPattern = "\\$([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; - const string paramPattern = "\\s*'([^']+)',*|\\s*(?!=')([^,]+),*"; - - Regex tagRegex = new Regex(tagPattern); //方法正则 - Regex paramRegex = new Regex(paramPattern); //参数正则 - - Type type = instance.GetType(); - MethodInfo method; - string tagName; - object[] parameters; - Type[] parameterTypes; //参数类型数组 - MatchCollection paramMcs; - - resultTxt = tagRegex.Replace(resultTxt, m => - { - tagName = m.Groups[1].Value; - //获得参数 - paramMcs = paramRegex.Matches(m.Groups[2].Value); - parameters = new object[paramMcs.Count]; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parameters.Length]; - for (int i = 0; i < parameterTypes.Length; i++) - { - parameterTypes[i] = typeof (String); - } - method = type.GetMethod( - tagName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - //如果方法存在则执行返回结果,否则返回原始值 - if (method == null) - { - return m.Value; - } - else - { - //数字参数 - string intParamValue; - //则给参数数组赋值 - for (int i = 0; i < paramMcs.Count; i++) - { - intParamValue = paramMcs[i].Groups[2].Value; - if (intParamValue != String.Empty) - { - parameters[i] = intParamValue; - } - else - { - parameters[i] = paramMcs[i].Groups[1].Value; - } - } - - //执行方法并返回结果 - return method.Invoke(instance, parameters).ToString(); - } - }); - return resultTxt; - } - - /// <summary> - /// 执行解析模板内容 - /// </summary> - /// <param name="html"></param> - /// <returns></returns> - public string Execute(string html) - { - return Execute(this._classInstance, html); - } - - /// <summary> - /// 替换列中的模板字符 - /// </summary> - /// <param name="format"></param> - /// <param name="func"></param> - /// <returns></returns> - public string FieldTemplate(string format, Func<string, string> func) - { - return fieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/OPS.Core.cd b/src/core/AtNet.DevFw.Core/OPS.Core.cd deleted file mode 100644 index cd2c8cf..0000000 --- a/src/core/AtNet.DevFw.Core/OPS.Core.cd +++ /dev/null @@ -1,267 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ClassDiagram MajorVersion="1" MinorVersion="1"> - <Class Name="OPS.Web.ConfigurationD"> - <Position X="6" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAgAAAAA=</HashCode> - <FileName>ConfigurationDictionary.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.ExceptionProcess" Collapsed="true"> - <Position X="13" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAABAAAEAgAAAAAAAAAAAA=</HashCode> - <FileName>ExceptionProcess.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.Function" Collapsed="true"> - <Position X="7.75" Y="1.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Function.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.ExecuteHandler" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="14.75" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAABAAAAAAAABAAAAAAAAAAAAAAAAAAAQAAAAA=</HashCode> - <FileName>Web\Handler\ExecuteHandler.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.Web.GetAttribute" Collapsed="true"> - <Position X="3.5" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAACAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAA=</HashCode> - <FileName>Web\Handler\HttpMethodAttribute.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" /> - </Class> - <Class Name="OPS.Web.PostAttribute" Collapsed="true"> - <Position X="3.5" Y="2" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\Handler\HttpMethodAttribute.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" /> - </Class> - <Class Name="OPS.Web.WebExecuteableAttribute" Collapsed="true"> - <Position X="9.5" Y="4.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\Handler\WebExecuteableAttribute.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.HtmlHelper" Collapsed="true"> - <Position X="9.5" Y="1.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\HtmlHelper.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.HttpModuleBase" Collapsed="true"> - <Position X="0.5" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAiAABAAAAAAAAAAAAAAAAAAAAAACAAAAAAA=</HashCode> - <FileName>Web\HttpModule\HttpModuleBase.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" /> - </Class> - <Class Name="OPS.Web.HttpReportModule" Collapsed="true"> - <Position X="0.5" Y="1.75" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\HttpModule\HttpReportModule.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Data.DataConnectionException" Collapsed="true"> - <Position X="7.75" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAIAAAAAA=</HashCode> - <FileName>Data\Access\ConnectionException.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Data.SqlHelper" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="13" Y="2.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAQAAAIAAAAAAAAAAAEAAAAAAQAAAAAAAABAAAAEAA=</HashCode> - <FileName>Data\Access\DataHelper.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.Data.OleDbHelper" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="13" Y="1.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAQAAAIAAAAAAAAAAAEAAAAAAQAAAAAAAABAAAAEAA=</HashCode> - <FileName>Data\Access\DataHelper.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.Data.DbAccess" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="11.25" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AABIAAAACAAAICAAAAEAAEAAAAQACCABACAAAAAAAgA=</HashCode> - <FileName>Data\Access\DbAccess.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="System.DataTableExtensions" Collapsed="true"> - <Position X="9.5" Y="0.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ=</HashCode> - <FileName>Extensions\CLR\DataTableExtensions.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="System.StringExtensions" Collapsed="true"> - <Position X="14.75" Y="2.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AEACAAAAAAAAAIQAAAAAAAAAAACAAAAAAAAAAAAEAAA=</HashCode> - <FileName>Extensions\CLR\StringExtensions.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="System.TExtensions" Collapsed="true"> - <Position X="9.5" Y="6.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA=</HashCode> - <FileName>Extensions\CLR\TExtensions.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.ICollectionExtensions" Collapsed="true"> - <Position X="11.25" Y="1.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Extensions\CLR\ICollectionExtensions.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Security" Collapsed="true"> - <Position X="9.5" Y="2.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Security.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Net.FtpClient"> - <Position X="6" Y="2.75" Width="1.5" /> - <TypeIdentifier> - <HashCode>ACAAAAAAAAAAAAEAAAAAAACACAAAgAACAQEAAgEAAwA=</HashCode> - <FileName>Net\FtpClient.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Net.WebClient" Collapsed="true"> - <Position X="14.75" Y="3.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAACAAIAAAAAAAAAAAAAAA=</HashCode> - <FileName>Net\WebClient.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.Service.ServiceManager<T>" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="11.25" Y="2.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAACAAAAAAABAAAAAAAAAACAAAAIAA=</HashCode> - <FileName>Service\ServiceManager.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.Web.Mvc.PageFilter" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="7.75" Y="2.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAEAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\Mvc\PageFilter.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.Web.Mvc.ViewPage" Collapsed="true"> - <Position X="9.5" Y="3.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAA=</HashCode> - <FileName>Web\Mvc\ViewPage.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.Mvc.ViewPage<T>" Collapsed="true"> - <Position X="7.75" Y="3.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAA=</HashCode> - <FileName>Web\Mvc\ViewPage.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.Mvc.ViewUserControl" Collapsed="true"> - <Position X="13" Y="3.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\Mvc\ViewUserControl.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.Mvc.ViewUserControl<T>" Collapsed="true"> - <Position X="11.25" Y="3.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\Mvc\ViewUserControl.cs</FileName> - </TypeIdentifier> - </Class> - <Class Name="OPS.Web.UI.Page" Collapsed="true" BaseTypeListCollapsed="true"> - <Position X="14.75" Y="1.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAA=</HashCode> - <FileName>Web\UI\Page.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.Web.UI.PagedLinkBuilder" BaseTypeListCollapsed="true"> - <Position X="3" Y="3" Width="1.5" /> - <TypeIdentifier> - <HashCode>gAAAAAAAAAAQAAAEAEAAAAAAAEAAAAACIACAQAAAAgA=</HashCode> - <FileName>Web\UI\PagedLinkBuilder.cs</FileName> - </TypeIdentifier> - <Lollipop Position="0.2" Collapsed="true" /> - </Class> - <Class Name="OPS.XML.XmlDocument"> - <Position X="7.75" Y="4.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAA=</HashCode> - <FileName>XML\XmlDoc.cs</FileName> - </TypeIdentifier> - </Class> - <Interface Name="OPS.Web.IWebExecute" Collapsed="true"> - <Position X="13" Y="5.75" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAA=</HashCode> - <FileName>Web\Handler\IWebExecute.cs</FileName> - </TypeIdentifier> - </Interface> - <Interface Name="OPS.Web.ICompressionable"> - <Position X="7.75" Y="6.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Web\Interface\ICompressionable.cs</FileName> - </TypeIdentifier> - </Interface> - <Interface Name="OPS.Data.IDataHelper" Collapsed="true"> - <Position X="9.5" Y="5.75" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAQAAAIAAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAEAA=</HashCode> - <FileName>Data\Access\DataHelper.cs</FileName> - </TypeIdentifier> - </Interface> - <Interface Name="OPS.Data.IDataBaseBehavior" Collapsed="true"> - <Position X="7.75" Y="5.75" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAIAAAAAAAAICAAAAEAAEAAAAAACAABAAAAAAAAAAA=</HashCode> - <FileName>Data\Access\IDataBaseBehavior.cs</FileName> - </TypeIdentifier> - </Interface> - <Interface Name="OPS.Web.Service.IService<T>" Collapsed="true"> - <Position X="11.25" Y="5.75" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA=</HashCode> - <FileName>Service\IService.cs</FileName> - </TypeIdentifier> - </Interface> - <Enum Name="OPS.Data.DataBaseType" Collapsed="true"> - <Position X="6" Y="6.5" Width="1.5" /> - <TypeIdentifier> - <HashCode>AAAAAAAAAAAAAEAAQAAAAAAAAAAAAAEAAAAAAAAAAAA=</HashCode> - <FileName>Data\Access\DataBaseType.cs</FileName> - </TypeIdentifier> - </Enum> - <Font Name="SimSun" Size="9" /> -</ClassDiagram> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Properties/AssemblyInfo.cs b/src/core/AtNet.DevFw.Core/Properties/AssemblyInfo.cs deleted file mode 100644 index 925aec8..0000000 --- a/src/core/AtNet.DevFw.Core/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; -using System.Security; - -//公钥: 4c8227bc503db3c5 -// 4C8227BC503DB3C5 - -// 有关程序集的常规信息通过下列属性集 -// 控制。更改这些属性值可修改 -// 与程序集关联的信息。 - -[assembly:AllowPartiallyTrustedCallers] -[assembly: SecurityRules(SecurityRuleSet.Level1)] -[assembly: AssemblyTitle("atnet.devfw - .NET平台开发框架")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("S1N1.COM")] -[assembly: AssemblyProduct("devfw")] -[assembly: AssemblyCopyright("Copyright © S1N1.com 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 属性设置为 true。 - -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID - -[assembly: Guid("bfe2a768-6248-4749-90d9-6b3a754dc758")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.1")] -[assembly: AssemblyFileVersion("1.0.1")] \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Utils/JsonParser.cs b/src/core/AtNet.DevFw.Core/Utils/JsonParser.cs deleted file mode 100644 index dbd385a..0000000 --- a/src/core/AtNet.DevFw.Core/Utils/JsonParser.cs +++ /dev/null @@ -1,215 +0,0 @@ -// -// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. -// -// Project: OPSoft.JSON -// FileName : JsonAnalyzer.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2011/11/26 21:14:30 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Utils -{ - /// <summary> - /// JSON分析器 - /// </summary> - public class JsonAnalyzer - { - private string jsonString; - private IList<string> keys = new List<string>(); - - public JsonAnalyzer(string json) - { - if (String.IsNullOrEmpty(json)) - { - this.jsonString = "{}"; - } - else - { - this.jsonString = json; - - //将字符中的键存到列表中 - const string pattern = "[\\{,]([^:]+):"; - MatchCollection mc = Regex.Matches(this.jsonString, pattern); - - foreach (Match m in mc) - { - keys.Add(m.Groups[1].Value); - } - } - } - - /// <summary> - /// 键的集合 - /// </summary> - public string[] Keys - { - get - { - string[] arr = new string[keys.Count]; - keys.CopyTo(arr, 0); - return arr; - } - } - - - /// <summary> - /// 获取指定键的值 - /// </summary> - /// <param name="key"></param> - /// <returns></returns> - public string GetValue(string key) - { - // Regex reg = new Regex(key+String.Intern(":'*(?<value>[^'|,|\\}]+)")); - Regex reg = new Regex(key + String.Intern(":(?<value>'[^']+|(?!')[^,|}]+)")); - if (reg.IsMatch(jsonString)) - { - return reg.Match(jsonString).Groups["value"].Value.Replace("'", String.Empty); - } - return String.Empty; - } - - /// <summary> - /// 设置指定键的值并返回新的JSON字符串,如果不存在键,则返回空 - /// </summary> - public string SetValue(string key, string value) - { - string newJsonString = String.Empty; - - Regex reg = new Regex(key + String.Intern(":(?<reff>'*)(?<value>[^'|,|\\}]+)")); - if (reg.IsMatch(jsonString)) - { - if (reg.Match(jsonString).Groups["reff"].Value == "'") - { - value = "'" + value; - } - newJsonString = reg.Replace(jsonString, String.Format("{0}:{1}", key, value)); - - //更新到数据 - jsonString = newJsonString; - } - - return newJsonString; - } - - /// <summary> - /// 添加新的键值,如果存在键返回false - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <returns></returns> - public bool Append(string key, string value) - { - Regex reg = new Regex(key + String.Intern(":(?<reff>'*)(?<value>[^'|,|\\}]+)")); - if (reg.IsMatch(jsonString)) return false; - else - { - StringBuilder sb = new StringBuilder(); - sb.Append(this.jsonString.Substring(0, this.jsonString.LastIndexOf('}'))); - if (sb.Length != 1) - { - sb.Append(","); - } - - sb.Append(key).Append(":'").Append(value).Append("'") - .Append("}"); - - keys.Add(key); //添加到KEYS集合 - this.jsonString = sb.ToString(); //更新到数据 - - return true; - } - } - - public IDictionary<string, string> ConvertToDictionary() - { - return ConvertToDictionary(jsonString); - } - - /// <summary> - /// 将JSON转为字典 - /// </summary> - /// <param name="jsonString"></param> - /// <returns></returns> - public static IDictionary<string, string> ConvertToDictionary(string jsonString) - { - IDictionary<string, string> dict = new Dictionary<string, string>(); - const string pattern = "(?<key>(?!\\{|,|')[^:]+):(?<value>'[^']+|(?!')[^,|}]+)"; //非{和'以及,开头,匹配键和值 - Regex reg = new Regex(pattern); - if (reg.IsMatch(jsonString)) - { - MatchCollection mc = reg.Matches(jsonString); - foreach (Match m in mc) - { - dict.Add(m.Groups["key"].Value, m.Groups["value"].Value.Replace("'", String.Empty)); - } - } - return dict; - } - - /// <summary> - /// 将Hashtable转为Json字符串 - /// </summary> - /// <param name="hash"></param> - /// <returns></returns> - public static string ToJson(Hashtable hash) - { - StringBuilder sb = new StringBuilder(); - var fieldCount = hash.Count; - int i = 0; - sb.Append("{"); - foreach (object key in hash.Keys) - { - sb.Append("\"").Append(key).Append("\":"); - if ((hash[key] as string) != null) - { - if (hash[key].ToString().StartsWith("[")) - { - sb.Append(hash[key].ToString()); - } - else - { - sb.Append("\"").Append(hash[key].ToString()).Append("\""); - } - } - else - { - if (hash[key].ToString() == "True" || hash[key].ToString() == "False") - { - sb.Append(hash[key].ToString().ToLower()); - } - else - { - sb.Append(hash[key].ToString()); - } - } - if (++i < fieldCount) - { - sb.Append(","); - } - } - - sb.Append("}"); - - return sb.ToString(); - } - - /// <summary> - /// 返回对象的JSON表示 - /// </summary> - /// <returns></returns> - public override string ToString() - { - return jsonString; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Utils/MultiThreadProcess.cs b/src/core/AtNet.DevFw.Core/Utils/MultiThreadProcess.cs deleted file mode 100644 index 3512d9a..0000000 --- a/src/core/AtNet.DevFw.Core/Utils/MultiThreadProcess.cs +++ /dev/null @@ -1,119 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : MultiThreadProcess.cs -* Author : Administrator -* Create : 2012/11/11 20:02:29 -* Description : -* -*/ - - -using System; -using System.Collections.Generic; -using System.Threading; - -namespace AtNet.DevFw.Utils -{ - /// - /// 多线程处理事件 - /// - public delegate void ThreadProcessHandler<T>(T t); - - /// - /// 多线程处理 - /// - public class MultiThreadProcess - { - /// - /// 线程数量 - /// - private int threadCount; - - /// - /// 线程堆栈,用于轮询线程 - /// - private Stack<int> threadStack; - - /// - /// 线程集合 - /// - private Thread[] threads; - - private bool isAlive = true; - - /// - /// 是否活动中 - /// - public bool IsAlive - { - get { return isAlive; } - } - - public MultiThreadProcess(int threads, int processTimes) - { - this.threadCount = threads; - this.threads = new Thread[threads]; - - //初始化线程堆栈 - this.threadStack = new Stack<int>(processTimes); - for (int i = processTimes; i > 0; i--) - { - this.threadStack.Push(i); - } - } - - /// <summary> - /// 开始执行线程 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="handler"></param> - /// <param name="t"></param> - public void Start<T>(ThreadProcessHandler<T> handler, T t) - { - while (this.isAlive) - { - for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) - { - if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) - { - threads[i] = new Thread(() => - { - lock (this.threadStack) - { - if (this.threadStack.Count > 0) - { - this.threadStack.Pop(); - handler(t); - } - } - }); - - threads[i].Name = String.Format("thread{0}", i.ToString()); - threads[i].Start(); - } - } - - if (this.threadStack.Count == 0) - { - do - { - bool hasThreadRunning = false; - for (int i = 0; i < threadCount; i++) - { - if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) - hasThreadRunning = true; - } - if (!hasThreadRunning) - { - this.isAlive = false; - } - } while (this.isAlive); - - //设置线程任务完成 - this.isAlive = false; - } - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Utils/ZipUtility.cs b/src/core/AtNet.DevFw.Core/Utils/ZipUtility.cs deleted file mode 100644 index a3bd98f..0000000 --- a/src/core/AtNet.DevFw.Core/Utils/ZipUtility.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Packaging; -using System.Web; - -//(WindowsBase.dll) - -namespace AtNet.DevFw.Utils -{ - public class ZipUtility - { - /// <summary> - /// Extract a container Zip. NOTE: container must be created as Open Packaging Conventions (OPC) specification - /// </summary> - /// <param name="folderName">The folder to extract the package to</param> - /// <param name="compressedFileName">The package file</param> - /// <param name="overrideExisting">override existing files</param> - /// <returns></returns> - public static bool UncompressFile(string folderName, string compressedFileName, bool overrideExisting) - { - bool result = false; - try - { - if (!File.Exists(compressedFileName)) - { - return result; - } - - DirectoryInfo directoryInfo = new DirectoryInfo(folderName); - if (!directoryInfo.Exists) - directoryInfo.Create(); - - using (Package package = Package.Open(compressedFileName, FileMode.Open, FileAccess.Read)) - { - foreach (PackagePart packagePart in package.GetParts()) - { - ExtractPart(packagePart, folderName, overrideExisting); - } - } - - result = true; - } - catch (Exception e) - { - throw new Exception("Error unzipping file " + compressedFileName, e); - } - - return result; - } - - private static void ExtractPart(PackagePart packagePart, string targetDirectory, bool overrideExisting) - { - string stringPart = targetDirectory + HttpUtility.UrlDecode(packagePart.Uri.ToString()).Replace('\\', '/'); - - if (!Directory.Exists(Path.GetDirectoryName(stringPart))) - Directory.CreateDirectory(Path.GetDirectoryName(stringPart)); - - if (!overrideExisting && File.Exists(stringPart)) - return; - using (FileStream fileStream = new FileStream(stringPart, FileMode.Create)) - { - packagePart.GetStream().CopyTo(fileStream); - } - } - - /// <summary> - /// Add a folder along with its subfolders to a Package - /// </summary> - /// <param name="folderName">The folder to add</param> - /// <param name="compressedFileName">The package to create</param> - /// <param name="overrideExisting">Override exsisitng files</param> - /// <returns></returns> - public static bool PackageFolder(string folderName, string compressedFileName, bool overrideExisting) - { - if (folderName.EndsWith(@"\")) - folderName = folderName.Remove(folderName.Length - 1); - bool result = false; - if (!Directory.Exists(folderName)) - { - return result; - } - - if (!overrideExisting && File.Exists(compressedFileName)) - { - return result; - } - try - { - using (Package package = Package.Open(compressedFileName, FileMode.Create)) - { - IEnumerable<string> fileList = null; - // Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); - - - foreach (string fileName in fileList) - { - //The path in the package is all of the subfolders after folderName - string pathInPackage; - pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, string.Empty) + "/" + - Path.GetFileName(fileName); - - Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative)); - PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", - CompressionOption.Maximum); - using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) - { - fileStream.CopyTo(packagePartDocument.GetStream()); - } - } - } - result = true; - } - catch (Exception e) - { - throw new Exception("Error zipping folder " + folderName, e); - } - - return result; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Variable.cs b/src/core/AtNet.DevFw.Core/Variable.cs deleted file mode 100644 index b5c1174..0000000 --- a/src/core/AtNet.DevFw.Core/Variable.cs +++ /dev/null @@ -1,30 +0,0 @@ - -namespace AtNet.DevFw -{ - /// <summary> - /// - /// </summary> - public class Variable - { - - /// <summary> - /// 临时目录 - /// </summary> - public string TempPath = "tmp/"; - - /// <summary> - /// 资源路径 - /// </summary> - public string AssetsPath = "framework/assets/"; - - /// <summary> - /// 插件默认图标 - /// </summary> - public string PLUGIN_DEFAULT_ICON = "framework/assets/images/app_icon.png"; - - /// <summary> - /// 程序集路径 - /// </summary> - public string AssemblyPath = "framework/lib"; - } -} diff --git a/src/core/AtNet.DevFw.Core/Version.cs b/src/core/AtNet.DevFw.Core/Version.cs deleted file mode 100644 index 315684f..0000000 --- a/src/core/AtNet.DevFw.Core/Version.cs +++ /dev/null @@ -1,43 +0,0 @@ - - -using System; - -namespace AtNet.DevFw -{ - /// <summary> - /// - /// </summary> - public class VersionSet - { - private string _versionStr; - - /// <summary> - /// 主要版本号 - /// </summary> - public string MajorVersion = "0"; - - /// <summary> - /// 次要版本号 - /// </summary> - public string MinorVersion = "0"; - - /// <summary> - /// 修订版本号 - /// </summary> - public string BuildNumber = "1"; - - - /// <summary> - /// 获取版本号 - /// </summary> - /// <returns></returns> - public string GetVersion() - { - return this._versionStr ?? - (this._versionStr = - String.Format("{0}.{1}.{2}", this.MajorVersion, this.MinorVersion, this.BuildNumber)); - - - } - } -} diff --git a/src/core/AtNet.DevFw.Data/AtNet.DevFw.Data.csproj b/src/core/AtNet.DevFw.Data/AtNet.DevFw.Data.csproj deleted file mode 100644 index 6b17d5c..0000000 --- a/src/core/AtNet.DevFw.Data/AtNet.DevFw.Data.csproj +++ /dev/null @@ -1,100 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.30703</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{1D053644-937A-4D8E-9740-43823183A39A}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>AtNet.DevFw.Data</RootNamespace> - <AssemblyName>AtNet.DevFw.Data</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\dist\dll\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <PlatformTarget>AnyCPU</PlatformTarget> - <DocumentationFile>..\..\..\dist\dll\AtNet.DevFw.Data.XML</DocumentationFile> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\Bin\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup> - <SignAssembly>true</SignAssembly> - </PropertyGroup> - <PropertyGroup> - <AssemblyOriginatorKeyFile>ops.data.snk</AssemblyOriginatorKeyFile> - </PropertyGroup> - <ItemGroup> - <Reference Include="Mono.Data.Sqlite"> - <HintPath>..\..\..\dll\Mono.Data.Sqlite.dll</HintPath> - </Reference> - <Reference Include="mysql.data"> - <HintPath>..\..\..\dll\mysql.data.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Data" /> - <Reference Include="System.Data.SQLite"> - <HintPath>..\..\..\dll\System.Data.SQLite.dll</HintPath> - </Reference> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="DataBaseAccess.cs" /> - <Compile Include="Extensions\CLR_DataExtensions.cs" /> - <Compile Include="Extensions\DataExtensions.cs" /> - <Compile Include="DataUtility.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="IDataBase.cs" /> - <Compile Include="DataBaseType.cs" /> - <Compile Include="ISqlFormat.cs" /> - <Compile Include="OleDbFactory.cs" /> - <Compile Include="Orm\EntityHelper.cs" /> - <Compile Include="Orm\EntityManager.cs" /> - <Compile Include="Orm\FieldValueDectionary.cs" /> - <Compile Include="Orm\FieldValueException.cs" /> - <Compile Include="Orm\IEntityManager.cs" /> - <Compile Include="Orm\Mapping\DataColumnAttribute.cs" /> - <Compile Include="Orm\Mapping\DataMappingException.cs" /> - <Compile Include="Orm\Mapping\DataTableAttribute.cs" /> - <Compile Include="Orm\PriamaryKeyValueDictionary.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="DataDelegate.cs" /> - <Compile Include="SqlQuery.cs" /> - <Compile Include="SQLiteFactory.cs" /> - <Compile Include="SqlServerFactory.cs" /> - <Compile Include="MySqlFactory.cs" /> - <Compile Include="MonoSQLiteFactory.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="ClassDiagram1.cd" /> - <None Include="ops.data.snk" /> - </ItemGroup> - <ItemGroup> - <Content Include="Orm\readme.txt" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/DataBaseAccess.cs b/src/core/AtNet.DevFw.Data/DataBaseAccess.cs deleted file mode 100644 index 7c39eb8..0000000 --- a/src/core/AtNet.DevFw.Data/DataBaseAccess.cs +++ /dev/null @@ -1,673 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : DataBaseAccess.cs -// Date : 8/19/2011 -// Author : -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using System.Text.RegularExpressions; -using AtNet.DevFw.Data.Extensions; - -namespace AtNet.DevFw.Data -{ - public class DataBaseAccess - { - private readonly IDataBase dbFactory; - private static readonly Regex procedureRegex = new Regex("\\s"); - private IList<String> _totalSqls; - private bool _totalOpen; - private int _commandTimeout = 30000; - - /// <summary> - /// ʵݿʶ - /// </summary> - /// <param name="type"></param> - /// <param name="connectionString"></param> - public DataBaseAccess(DataBaseType type, string connectionString) - { - if (connectionString.IndexOf("$ROOT$") != -1) - { - connectionString = connectionString.Replace("$ROOT$", AppDomain.CurrentDomain.BaseDirectory); - } - - this.DbType = type; - - switch (type) - { - case DataBaseType.OLEDB: - dbFactory = new OleDbFactory(connectionString); - break; - case DataBaseType.SQLite: - dbFactory = new SQLiteFactory(connectionString); - break; - case DataBaseType.MonoSQLite: - dbFactory = new MonoSQLiteFactory(connectionString); - break; - case DataBaseType.SQLServer: - dbFactory = new SqlServerFactory(connectionString); - break; - case DataBaseType.MySQL: - dbFactory = new MySqlFactory(connectionString); - break; - } - } - - /// <summary> - /// ִʱʱ䣬ĬΪ30000(30) - /// </summary> - public int CommandTimeout - { - get { return this._commandTimeout; } - set - { - if (value <= 2000) - { - throw new ArgumentException("Чֵ"); - } - this._commandTimeout = value; - } - } - - private DbConnection CreateOpenedConnection() - { - DbConnection connection = dbFactory.GetConnection(); - connection.Open(); - return connection; - } - - /// <summary> - /// ͳ - /// </summary> - public void StartNewTotal() - { - if (!_totalOpen) - _totalOpen = true; - if (_totalSqls == null) - _totalSqls = new List<String>(); - else - _totalSqls.Clear(); - } - - public IList<string> GetTotalSqls() - { - if (this._totalSqls == null) - throw new Exception("ʹStartNewTotal()ʼͳ"); - return this._totalSqls; - } - - private void AddTotalSql(string sql) - { - _totalSqls.Add(sql); - } - - - /// <summary> - /// ݿ - /// </summary> - public DataBaseType DbType { get; private set; } - - /// <summary> - /// ݿ - /// </summary> - public IDataBase DataBaseAdapter - { - get { return this.dbFactory; } - } - - /// <summary> - /// һ - /// </summary> - /// <param name="name"></param> - /// <param name="value"></param> - /// <returns></returns> - public DbParameter NewParameter(string name, object value) - { - return dbFactory.CreateParameter(name, value); - } - - private DbCommand CreateCommand(string sql) - { - DbCommand cmd = this.dbFactory.CreateCommand(sql); - cmd.CommandTimeout = this._commandTimeout; - return cmd; - } - - /// <summary> - /// һ,ָΪ - /// </summary> - /// <param name="name"></param> - /// <param name="value"></param> - /// <param name="direction"></param> - /// <returns></returns> - public DbParameter NewParameter(string name, object value, ParameterDirection direction) - { - DbParameter parameter = dbFactory.CreateParameter(name, value); - parameter.Direction = direction; - return parameter; - } - - /// <summary> - /// ִвѯ - /// </summary> - /// <param name="commandText"></param> - /// <returns></returns> - public int ExecuteNonQuery(string commandText) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - return ExecuteNonQuery(commandText, parameters); - } - - /// <summary> - /// ִвѯ - /// </summary> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - /// <returns></returns> - public int ExecuteNonQuery(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - - int result = 0; - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; - - cmd.Connection = conn; - if (parameters != null) cmd.Parameters.AddRange(parameters); - - result = cmd.ExecuteNonQuery(); - } - return result; - } - - /// <summary> - /// زѯĵһеһֵ - /// </summary> - /// <param name="commandText"></param> - /// <returns></returns> - public object ExecuteScalar(string commandText) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - return ExecuteScalar(commandText, parameters); - } - - /// <summary> - /// زѯĵһеһֵ - /// </summary> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - /// <returns></returns> - public object ExecuteScalar(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - object obj; - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; - - if (parameters != null) cmd.Parameters.AddRange(parameters); - - obj = cmd.ExecuteScalar(); - } - return obj; - } - - /// <summary> - /// ȡDataReaderе - /// </summary> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - public DbDataReader ExecuteReader(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; - - if (parameters != null) cmd.Parameters.AddRange(parameters); - - return cmd.ExecuteReader(); - } - } - - /// <summary> - /// ȡDataReaderе - /// </summary> - /// <param name="commandText"></param> - /// <param name="func"></param> - public void ExecuteReader(string commandText, DataReaderFunc func) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - ExecuteReader(commandText, func, parameters); - } - - /// <summary> - /// ȡDataReaderе - /// </summary> - /// <param name="commandText"></param> - /// <param name="func"></param> - /// <param name="parameters"></param> - public void ExecuteReader(string commandText, DataReaderFunc func, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(commandText); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(commandText) - ? CommandType.Text - : CommandType.StoredProcedure; - - if (parameters != null) cmd.Parameters.AddRange(parameters); - - func(cmd.ExecuteReader()); - } - } - - /// <summary> - /// ݿжȡݲڴ - /// </summary> - /// <param name="commandText"></param> - /// <returns></returns> - public DataSet GetDataSet(string commandText) - { - if (this._totalOpen) this.AddTotalSql(commandText); - DbParameter[] parameters = null; - return GetDataSet(commandText, parameters); - } - - /// <summary> - /// ݿжȡݲڴ - /// </summary> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - /// <returns></returns> - public DataSet GetDataSet(string commandText, params DbParameter[] parameters) - { - if (this._totalOpen) this.AddTotalSql(commandText); - - DataSet ds = new DataSet(); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, commandText); - - - if (parameters != null) - { - adapter.SelectCommand.Parameters.AddRange(parameters); - //ԶжT-SQLǴ洢 - adapter.SelectCommand.CommandType = procedureRegex.IsMatch(commandText) - ? CommandType.Text - : CommandType.StoredProcedure; - } - - adapter.Fill(ds); - } - return ds; - } - - public T ToEntity<T>(string commandText) where T : new() - { - return ToEntity<T>(commandText, null); - } - - - /// <summary> - /// ѯתΪʵ - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - /// <returns></returns> - public T ToEntity<T>(string commandText, params DbParameter[] parameters) where T : new() - { - if (this._totalOpen) this.AddTotalSql(commandText); - - T t = default(T); - ExecuteReader(commandText, (reader) => - { - if (reader.HasRows) - { - t = reader.ToEntity<T>(); - } - }, parameters); - return t; - } - - /// <summary> - /// DataReaderݲתʵ༯ - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="commandText"></param> - /// <returns></returns> - public IList<T> ToEntityList<T>(string commandText) where T : new() - { - return ToEntityList<T>(commandText, null); - } - - /// <summary> - /// DataReaderݲתʵ༯ - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - /// <returns></returns> - public IList<T> ToEntityList<T>(string commandText, params DbParameter[] parameters) where T : new() - { - if (this._totalOpen) this.AddTotalSql(commandText); - - IList<T> list = null; - - ExecuteReader(commandText, (reader) => - { - if (reader.HasRows) - { - list = reader.ToEntityList<T>(); - } - }, parameters); - - return list ?? new List<T>(); - } - - /// <summary> - /// ִнű(Mysql) - /// </summary> - /// <param name="sql">sqlű</param> - /// <param name="delimiter">ָɴݿ</param> - /// <returns></returns> - public int ExecuteScript(string sql, string delimiter) - { - int result = -1; - using (DbConnection conn = this.CreateOpenedConnection()) - { - result = dbFactory.ExecuteScript(conn, sql, delimiter); - } - - return result; - } - - #region µ᷽ʽ - - /// <summary> - /// ִвѯ - /// </summary> - /// <param name="sqls"></param> - /// <returns></returns> - public int ExecuteNonQuery(params SqlQuery[] sqls) - { - if (this._totalOpen) - foreach (SqlQuery sql in sqls) - this.AddTotalSql(sql.Sql); - - if (sqls.Length == 0) throw new ArgumentOutOfRangeException("sqls", "SQLEntityӦָһ!"); - - DbTransaction trans = null; - DbCommand cmd; - int result = 0; - - DbConnection conn = this.CreateOpenedConnection(); - - //Ӳ - trans = conn.BeginTransaction(); - - - SqlEntityHandler sh = s => - { - //Command, - cmd = this.CreateCommand(s.Sql); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(s.Sql) - ? CommandType.Text - : CommandType.StoredProcedure; - - //Ӳ - if (s.Parameters != null) cmd.Parameters.AddRange(s.ToParams(dbFactory)); - - //ʹ - - cmd.Transaction = trans; - - result += cmd.ExecuteNonQuery(); - }; - - try - { - foreach (SqlQuery sql in sqls) - { - sh(sql); - } - - //ύ - - trans.Commit(); - } - catch (DbException ex) - { - //ִ,ع - trans.Rollback(); - - //׳쳣 - throw ex; - } - finally - { - //ر - conn.Close(); - } - - - return result; - } - - /// <summary> - /// ȡDataReaderе - /// </summary> - /// <param name="sql"></param> - /// <param name="func"></param> - public void ExecuteReader(SqlQuery sql, DataReaderFunc func) - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(sql.Sql); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(sql.Sql) ? CommandType.Text : CommandType.StoredProcedure; - - if (sql.Parameters != null) - cmd.Parameters.AddRange(sql.ToParams(dbFactory)); - - func(cmd.ExecuteReader()); - } - } - - - /// <summary> - /// ݿжȡݲڴ - /// </summary> - /// <param name="sql"></param> - /// <returns></returns> - public DataSet GetDataSet(SqlQuery sql) - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - DataSet ds = new DataSet(); - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, sql.Sql); - - if (sql.Parameters != null) - { - adapter.SelectCommand.Parameters.AddRange(sql.ToParams(dbFactory)); - //ԶжT-SQLǴ洢 - adapter.SelectCommand.CommandType = procedureRegex.IsMatch(sql.Sql) - ? CommandType.Text - : CommandType.StoredProcedure; - } - - adapter.Fill(ds); - } - - return ds; - } - - - /// <summary> - /// زѯĵһеһֵ - /// </summary> - /// <param name="sql"></param> - /// <returns></returns> - public object ExecuteScalar(SqlQuery sql) - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - - object obj; - using (DbConnection conn = this.CreateOpenedConnection()) - { - DbCommand cmd = this.CreateCommand(sql.Sql); - cmd.Connection = conn; - - //ԶжT-SQLǴ洢 - cmd.CommandType = procedureRegex.IsMatch(sql.Sql) - ? CommandType.Text - : CommandType.StoredProcedure; - - if (sql.Parameters != null) cmd.Parameters.AddRange(sql.ToParams(dbFactory)); - obj = cmd.ExecuteScalar(); - } - - return obj; - } - - /// <summary> - /// ѯתΪʵ - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="commandText"></param> - /// <param name="parameters"></param> - /// <returns></returns> - public T ToEntity<T>(SqlQuery sql) where T : new() - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - - T t = default(T); - this.ExecuteReader(sql, (reader) => - { - if (reader.HasRows) - { - t = reader.ToEntity<T>(); - } - }); - - - return t; - } - - /// <summary> - /// DataReaderݲתʵ༯ - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="commandText"></param> - /// <returns></returns> - public IList<T> ToEntityList<T>(SqlQuery sql) where T : new() - { - if (this._totalOpen) this.AddTotalSql(sql.Sql); - - IList<T> list = null; - - this.ExecuteReader(sql, (reader) => - { - if (reader.HasRows) - { - list = reader.ToEntityList<T>(); - } - }); - - return list ?? new List<T>(); - } - - #endregion - - #region Hashtableȡ - - public int ExecuteNonQuery(string commandText, Hashtable data) - { - var parameters = GetParametersFromHashTable(data); - return this.ExecuteNonQuery(commandText, parameters); - } - - public object ExecuteScalar(string commandText, Hashtable data) - { - return this.ExecuteScalar(commandText, this.GetParametersFromHashTable(data)); - } - - public void ExecuteReader(string commandText, Hashtable data, DataReaderFunc func) - { - this.ExecuteReader(commandText, func, this.GetParametersFromHashTable(data)); - } - - public DataSet GetDataSet(string commandText, Hashtable data) - { - return this.GetDataSet(commandText, this.GetParametersFromHashTable(data)); - } - - private DbParameter[] GetParametersFromHashTable(Hashtable data) - { - DbParameter[] parameters = new DbParameter[data.Keys.Count]; - - int i = 0; - foreach (DictionaryEntry d in data) - { - parameters[i++] = this.NewParameter("@" + d.Key, d.Value); - } - return parameters; - } - - #endregion - - /* - /// <summary> - /// ͷԴ - /// </summary> - public void Dispose() - { - if (conn!=null && conn.State != ConnectionState.Closed) - { - conn.Dispose(); - } - } - - ~DataBaseAccess() - { - this.Dispose(); - } - */ - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/DataBaseType.cs b/src/core/AtNet.DevFw.Data/DataBaseType.cs deleted file mode 100644 index 17dfbd1..0000000 --- a/src/core/AtNet.DevFw.Data/DataBaseType.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : DataBaseType.cs -// Date : 8/19/2011 -// Author : -// -// - -namespace AtNet.DevFw.Data -{ - /// <summary> - /// ݿ - /// </summary> - public enum DataBaseType - { - SQLServer, - - /// <summary> - /// SQLiteݿ - /// </summary> - SQLite, - - /// <summary> - ///Mono SQLite - /// </summary> - MonoSQLite, - - /// <summary> - /// mysqlݿ - /// </summary> - MySQL, - - /// <summary> - /// Accessݿ - /// </summary> - OLEDB - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/DataDelegate.cs b/src/core/AtNet.DevFw.Data/DataDelegate.cs deleted file mode 100644 index 3d5a417..0000000 --- a/src/core/AtNet.DevFw.Data/DataDelegate.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : ReadDataFunc.cs -// Date : 8/19/2011 -// Author : -// Modify: -// 2013-05-26 18:00 newmin [+]: SqlEntityHandler -// -// - -using System.Data.Common; - -namespace AtNet.DevFw.Data -{ - /// <summary> - /// ݶȡ - /// </summary> - /// <param name="reader"></param> - public delegate void DataReaderFunc(DbDataReader reader); - - /// <summary> - /// SQLʵ - /// </summary> - /// <param name="sql"></param> - public delegate void SqlEntityHandler(SqlQuery sql); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/DataUtility.cs b/src/core/AtNet.DevFw.Data/DataUtility.cs deleted file mode 100644 index 9bfd461..0000000 --- a/src/core/AtNet.DevFw.Data/DataUtility.cs +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Data.Extensions -// FileName : ObjectExtensions.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2012/05/24 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using AtNet.DevFw.Data.Extensions; - -namespace AtNet.DevFw.Data -{ - /// <summary> - /// 数据实用辅助类 - /// </summary> - public static class DataUtility - { - /// <summary> - /// 转换DataTable为实体列表 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="table"></param> - /// <returns></returns> - public static IList<T> ConvertToEntityList<T>(DataTable table) where T : new() - { - return table.ToEntityList<T>(); - } - - /// <summary> - ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) - /// </summary> - public static IList<T> ConvertToEntityList<T>(DbDataReader reader) where T : new() - { - return reader.ToEntityList<T>(); - } - - public static T ConvertToEntity<T>(DataRow row) where T : new() - { - return row.ToEntity<T>(); - } - - /// <summary> - ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据) - /// </summary> - public static T ConvertToEntity<T>(DbDataReader reader) where T : new() - { - return reader.ToEntity<T>(); - } - - /// <summary> - /// 生成SQL语句参数对象数组 - /// </summary> - /// <typeparam name="T">实体类型</typeparam> - /// <param name="obj"></param> - /// <param name="db">数据库类型</param> - /// <param name="fields">字段,用空格隔开多个字段。参数名称需与字段名称一致!</param> - /// <returns></returns> - public static DbParameter[] GetDbParameter<T>(T obj, DataBaseType dbtype, String fields) - { - return obj.GetDbParameter(dbtype, fields); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Extensions/CLR_DataExtensions.cs b/src/core/AtNet.DevFw.Data/Extensions/CLR_DataExtensions.cs deleted file mode 100644 index 70638f1..0000000 --- a/src/core/AtNet.DevFw.Data/Extensions/CLR_DataExtensions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Data.Common; - -namespace AtNet.DevFw.Data.Extensions -{ - public static class CLR_DataExtensions - { - /// <summary> - /// 获取DataReader的列名 - /// </summary> - /// <param name="reader"></param> - /// <param name="lower"></param> - /// <returns></returns> - public static String[] GetColumns(this DbDataReader reader, bool lower) - { - String[] columns = new String[reader.FieldCount]; - for (int i = 0, j = columns.Length; i < j; i++) - { - columns[i] = lower ? reader.GetName(i).ToLower() : reader.GetName(i); - } - return columns; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Extensions/DataExtensions.cs b/src/core/AtNet.DevFw.Data/Extensions/DataExtensions.cs deleted file mode 100644 index 6e71b96..0000000 --- a/src/core/AtNet.DevFw.Data/Extensions/DataExtensions.cs +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Copyright 2010 OPS,All rights reseved ! - * name : 泛型扩展 - * author : newmin - * date : 2010/11/08 07:31 - * - * 2010/12/13 00:30 newmin [!]:添加数据表字段为DBNull赋值给对象异常时候忽略的处理 - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Data.Common; -using System.Reflection; -using System.Text; - -namespace AtNet.DevFw.Data.Extensions -{ - public static class DataTableExtensions - { - /// <summary> - ///将当前DataTable中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) - /// </summary> - public static IList<T> ToEntityList<T>(this DataTable table) where T : new() - { - IList<T> list = new List<T>(); - T t; - object rowData; - - //获取各自的属性 - PropertyInfo[] props = GetTSetterProperties<T>(); - PropertyInfo _p; - - - int propertiesCount = -1, - //对应的属性数量 - hasFoundPropertiesCount = 0; //已经赋值的数量 - - - foreach (DataRow dr in table.Rows) - { - t = new T(); - foreach (DataColumn c in table.Columns) - { - _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); - if (_p == null) continue; - - rowData = dr[c.ColumnName]; - try - { - if (!(rowData is DBNull)) - { - if (_p.PropertyType.IsEnum) - { - if (rowData.GetType() == typeof (Int32)) - { - _p.SetValue(t, Convert.ToInt32(rowData), null); - } - else - { - _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); - } - } - else - { - _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); - } - } - } - catch - { - continue; - } - - //计算是否已经赋值完成 - if (++hasFoundPropertiesCount == propertiesCount) - { - hasFoundPropertiesCount = 0; - break; - } - } - list.Add(t); - - - //对所有属性赋值后跳出循环 - if (propertiesCount == -1) - { - propertiesCount = hasFoundPropertiesCount; - } - } - return list; - } - - /// <summary> - ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) - /// </summary> - public static IList<T> ToEntityList<T>(this DbDataReader reader) where T : new() - { - IList<T> list = new List<T>(); - T t; - - //获取表结构 - DataTable schemaTable = reader.GetSchemaTable(); - - //表结构列名 - string columnName; - - //获取泛型的的所有属性 - PropertyInfo[] props = GetTSetterProperties<T>(); - PropertyInfo pro; - object rowData; - - int propertiesCount = -1, - //对应的属性数量 - hasFoundPropertiesCount = 0; //已经赋值的数量 - - while (reader.Read()) - { - t = new T(); - - foreach (DataRow dr in schemaTable.Rows) - { - columnName = dr["ColumnName"].ToString(); - pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); - if (pro == null) continue; - - //如果数据库中的值不为空,则赋值 - if (!((rowData = reader[columnName]) is DBNull)) - { - try - { - if (pro.PropertyType.IsEnum) - { - if (rowData.GetType() == typeof (Int32)) - { - pro.SetValue(t, Convert.ToInt32(rowData), null); - } - else - { - pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); - } - } - else - { - pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); - } - } - - catch - { - continue; - } - - //计算是否已经赋值完成 - if (++hasFoundPropertiesCount == propertiesCount) - { - hasFoundPropertiesCount = 0; - break; - } - } - } - list.Add(t); - - - //对所有属性赋值后跳出循环 - if (propertiesCount == -1) - { - propertiesCount = hasFoundPropertiesCount; - } - } - return list; - } - - - public static T ToEntity<T>(this DataRow row) where T : new() - { - T t = new T(); - CopyToEntity<T>(row, t); - return t; - } - - public static void CopyToEntity<T>(this DataRow row, T t) - { - //获取各自的属性 - PropertyInfo[] props = GetTSetterProperties<T>(); - PropertyInfo _p; - object rowData; - int enumValue; - - - foreach (DataColumn c in row.Table.Columns) - { - _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); - rowData = row[c.ColumnName]; - - try - { - if (_p != null && !(rowData is DBNull)) - { - if (_p.PropertyType.IsEnum) - { - int.TryParse(rowData.ToString(), out enumValue); - - if (enumValue != 0) - { - _p.SetValue(t, enumValue, null); - } - else - { - _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); - } - } - else - { - _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); - } - } - } - catch - { - continue; - } - } - } - - private static PropertyInfo[] GetTSetterProperties<T>() - { - return new List<PropertyInfo>(GetEnumeratorProperties<T>()).ToArray(); - } - - private static IEnumerable<PropertyInfo> GetEnumeratorProperties<T>() - { - PropertyInfo[] props = typeof (T).GetProperties(); - - foreach (PropertyInfo pro in props) - { - if (pro.CanWrite && pro.GetIndexParameters().Length == 0) - { - yield return pro; - } - } - } - - public static T ToEntity<T>(this DbDataReader reader) where T : new() - { - T t = new T(); - if (reader.Read()) - { - CopyToEntity<T>(reader, t); - } - return t; - } - - /// <summary> - ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据,DataReader游标已经指向实体数据对应位置) - /// </summary> - public static void CopyToEntity<T>(this DbDataReader reader, T t) - { - //获取表结构 - DataTable schemaTable = reader.GetSchemaTable(); - - //表结构列名 - string columnName; - - //获取泛型的的所有属性 - PropertyInfo[] props = GetTSetterProperties<T>(); - PropertyInfo pro; - object rowData; - - - int propertiesCount = props.Length, - //属性数量 - hasFoundPropertiesCount = 0; //已经赋值的数量 - - - foreach (DataRow dr in schemaTable.Rows) - { - columnName = dr["ColumnName"].ToString(); - pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); - if (pro == null) continue; - - - if (!((rowData = reader[columnName]) is DBNull)) - { - try - { - if (pro.PropertyType.IsEnum) - { - if (rowData.GetType() == typeof (Int32)) - { - pro.SetValue(t, Convert.ToInt32(rowData), null); - } - else - { - pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); - } - } - else - { - pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); - } - } - catch - { - continue; - } - } - - if (++hasFoundPropertiesCount == propertiesCount) - { - hasFoundPropertiesCount = 0; - break; - } - } - } - - - /// <summary> - /// 生成SQL语句参数对象数组 - /// </summary> - /// <typeparam name="T">实体类型</typeparam> - /// <param name="obj"></param> - /// <param name="dbtype">数据库类型</param> - /// <param name="fields">字段,用空格隔开多个字段。参数名称需与字段名称一致!</param> - /// <returns></returns> - public static DbParameter[] GetDbParameter<T>(this T obj, DataBaseType dbtype, String fields) - { - DbParameter[] parameters; - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - - - type = obj.GetType(); - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - switch (dbtype) - { - case DataBaseType.MonoSQLite: - parameters = new Mono.Data.Sqlite.SqliteParameter[fieldCount]; - break; - - case DataBaseType.OLEDB: - parameters = new System.Data.OleDb.OleDbParameter[fieldCount]; - break; - case DataBaseType.SQLite: - parameters = new System.Data.SQLite.SQLiteParameter[fieldCount]; - break; - case DataBaseType.MySQL: - parameters = new MySql.Data.MySqlClient.MySqlParameter[fieldCount]; - break; - default: - case DataBaseType.SQLServer: - parameters = new System.Data.SqlClient.SqlParameter[fieldCount]; - break; - } - - - string fieldName; - - for (int i = 0; i < fieldCount; i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - - switch (dbtype) - { - case DataBaseType.MonoSQLite: - parameters[i] = new Mono.Data.Sqlite.SqliteParameter(String.Format("@{0}", fieldName), proValue); - break; - - case DataBaseType.SQLite: - parameters[i] = new System.Data.SQLite.SQLiteParameter(String.Format("@{0}", fieldName), - proValue); - break; - case DataBaseType.OLEDB: - parameters[i] = new System.Data.OleDb.OleDbParameter(String.Format("@{0}", fieldName), proValue); - break; - - case DataBaseType.MySQL: - parameters[i] = new MySql.Data.MySqlClient.MySqlParameter(String.Format("@{0}", fieldName), - proValue); - break; - - default: - case DataBaseType.SQLServer: - parameters[i] = new System.Data.SqlClient.SqlParameter(String.Format("@{0}", fieldName), - proValue); - break; - } - } - return parameters; - } - - /// <summary> - /// 生成SQL语句参数对象数组 - /// </summary> - /// <typeparam name="T">实体类型</typeparam> - /// <param name="obj"></param> - /// <param name="dbtype">数据库类型</param> - /// <param name="fields">字段,用空格隔开多个字段。参数名称需与字段名称一致!</param> - /// <returns></returns> - public static object[,] GetDbParameter<T>(this T obj, String fields) - { - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - object[,] parameters; - - type = obj.GetType(); - - bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); - - - if (autoPro) - { - PropertyInfo[] pros = - type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - parameters = new object[pros.Length, 2]; - - int i = 0; - foreach (PropertyInfo _pro in pros) - { - proValue = _pro.GetValue(obj, null); - parameters[i, 0] = String.Format("@{0}", _pro.Name); - parameters[i, 1] = proValue; - ++i; - } - } - else - { - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - - //参数数组 - parameters = new object[fieldCount, 2]; - - - string fieldName; - - for (int i = 0; i < parameters.GetLength(0); i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - - parameters[i, 0] = String.Format("@{0}", fieldName); - parameters[i, 1] = proValue; - } - } - return parameters; - } - - /// <summary> - /// 自动生成插入SQL语句 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="obj"></param> - /// <param name="fields"></param> - /// <param name="setValue"></param> - /// <returns></returns> - public static string AutoInsertSQL<T>(this T obj, string fields, bool setValue) - { - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); - - StringBuilder sb = new StringBuilder(); - - type = obj.GetType(); - - - sb.Append("INSERT INTO ").Append(type.Name).Append("("); - - - String temp1 = ""; - String temp2 = ""; - - if (autoPro) - { - PropertyInfo[] pros = - type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - int i = 0; - foreach (PropertyInfo _pro in pros) - { - if (i != 0) - { - temp1 += ","; - temp2 += ","; - } - temp1 += _pro.Name; - - if (setValue) - { - //获取对象的值 - proValue = _pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); - } - temp2 += proValue; - } - else - { - temp2 += "@" + _pro.Name; - } - ++i; - } - } - else - { - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - - - string fieldName; - - for (int i = 0; i < fieldCount; i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - - if (i != 0) - { - temp1 += ","; - temp2 += ","; - } - temp1 += fieldName; - - if (setValue) - { - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - temp2 += proValue; - } - else - { - temp2 += "@" + fieldName; - } - } - } - - - sb.Append(temp1).Append(")VALUES(").Append(temp2).Append(")"); - - return sb.ToString(); - } - - /// <summary> - /// 自动生成更新SQL语句 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="obj"></param> - /// <param name="fields"></param> - /// <param name="primaryKey"></param> - /// <param name="setValue"></param> - /// <returns></returns> - public static string AutoUpdateSQL<T>(this T obj, string fields, string primaryKey, bool setValue) - { - String[] filedArray; - Type type; - PropertyInfo pro; - object proValue; - bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); - - StringBuilder sb = new StringBuilder(); - - type = obj.GetType(); - filedArray = fields.Split(' ', ','); - - //初始化参数数组 - int fieldCount = filedArray.Length; - - sb.Append("UPDATE ").Append(type.Name).Append(" SET "); - - - string fieldName; - - if (autoPro) - { - string primaryValue = String.Empty; - - PropertyInfo[] pros = - type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - int i = 0; - foreach (PropertyInfo _pro in pros) - { - //主键值 - if (String.Compare(_pro.Name, primaryKey, true) == 0) - { - proValue = _pro.GetValue(obj, null); - primaryValue = proValue.ToString(); - continue; - } - - if (i != 0) - { - sb.Append(","); - } - - sb.Append(_pro.Name).Append("="); - - if (setValue) - { - //获取对象的值 - proValue = _pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); - } - - sb.Append(proValue.ToString()); - } - else - { - sb.Append("@" + _pro.Name); - } - - ++i; - } - sb.Append(" WHERE ").Append(primaryKey).Append("=").Append(setValue ? primaryValue : "@" + primaryKey); - } - else - { - for (int i = 0; i < fieldCount; i++) - { - fieldName = filedArray[i]; - pro = type.GetProperty(fieldName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro == null) - { - throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); - } - - if (i != 0) - { - sb.Append(","); - } - - sb.Append(fieldName).Append("="); - - if (setValue) - { - //获取对象的值 - proValue = pro.GetValue(obj, null); - if (proValue == null) - { - throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); - } - sb.Append(proValue); - } - else - { - sb.Append("@" + fieldName); - } - } - } - return sb.ToString(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/IDataBase.cs b/src/core/AtNet.DevFw.Data/IDataBase.cs deleted file mode 100644 index 64c1473..0000000 --- a/src/core/AtNet.DevFw.Data/IDataBase.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// -// Generated by StarUML(tm) C# Add-In -// -// @ Project : OPS.Data -// @ File Name : IDataBase.cs -// @ Date : 8/18/2011 -// @ Author : ���� -// -// - -using System.Data.Common; - -namespace AtNet.DevFw.Data -{ - public interface IDataBase - { - string ConnectionString { get; } - DbConnection GetConnection(); - DbParameter CreateParameter(string name, object value); - DbCommand CreateCommand(string sql); - DbDataAdapter CreateDataAdapter(DbConnection connection, string sql); - - /// <summary> - /// ִ�нű� - /// </summary> - /// <param name="sql">Sql�ű�</param> - /// <param name="delimiter">�ָ����Ĭ��Ϊ";"</param> - /// <returns></returns> - int ExecuteScript(DbConnection conn, string sql, string delimiter); - } - - public abstract class DataBaseFactory : IDataBase - { - protected string connectionString; - - public DataBaseFactory(string connectionString) - { - this.connectionString = connectionString; - } - - public string ConnectionString - { - get { return this.connectionString; } - } - - public abstract DbConnection GetConnection(); - - public abstract DbParameter CreateParameter(string name, object value); - - public abstract DbCommand CreateCommand(string commandText); - - public abstract DbDataAdapter CreateDataAdapter(DbConnection connection, string commandText); - - public abstract int ExecuteScript(DbConnection connection, string sql, string delimiter); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/ISqlFormat.cs b/src/core/AtNet.DevFw.Data/ISqlFormat.cs deleted file mode 100644 index 50fb14b..0000000 --- a/src/core/AtNet.DevFw.Data/ISqlFormat.cs +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 用户: newmin - * 日期: 2013/12/4 - * 时间: 6:26 - * - * 修改说明: - */ - -using System; - -namespace AtNet.DevFw.Data -{ - /// <summary> - /// 提供将字符串格式化的函数 - /// </summary> - public delegate string ISqlFormatHandler(string source); - - - public interface ISqlFormat - { - string Format(string source, params string[] objs); - } - - public class SqlFormat : ISqlFormat - { - public string Format(string source, params string[] objs) - { - if (objs.Length == 0) return source; - return String.Format(source, objs); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/MonoSQLiteFactory.cs b/src/core/AtNet.DevFw.Data/MonoSQLiteFactory.cs deleted file mode 100644 index 060156d..0000000 --- a/src/core/AtNet.DevFw.Data/MonoSQLiteFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLiteFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using Mono.Data.Sqlite; - -namespace AtNet.DevFw.Data -{ - public class MonoSQLiteFactory : DataBaseFactory - { - public MonoSQLiteFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new SqliteConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new SqliteParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new SqliteCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new SqliteDataAdapter(sql, (SqliteConnection) connection); - } - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/MySqlFactory.cs b/src/core/AtNet.DevFw.Data/MySqlFactory.cs deleted file mode 100644 index bb7eaec..0000000 --- a/src/core/AtNet.DevFw.Data/MySqlFactory.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLiteFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using MySql.Data.MySqlClient; - -namespace AtNet.DevFw.Data -{ - public class MySqlFactory : DataBaseFactory - { - public MySqlFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new MySqlConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new MySqlParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new MySqlCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new MySqlDataAdapter(sql, (MySqlConnection) connection); - } - - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - MySqlScript script = new MySqlScript((MySqlConnection) conn, sql); - - if (!string.IsNullOrEmpty(delimiter)) - { - script.Delimiter = delimiter; - } - - return script.Execute(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/OleDbFactory.cs b/src/core/AtNet.DevFw.Data/OleDbFactory.cs deleted file mode 100644 index 726fb76..0000000 --- a/src/core/AtNet.DevFw.Data/OleDbFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : OLEDBFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using System.Data.OleDb; - -namespace AtNet.DevFw.Data -{ - public class OleDbFactory : DataBaseFactory - { - public OleDbFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new OleDbConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new OleDbParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new OleDbCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new OleDbDataAdapter(sql, (OleDbConnection) connection); - } - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/EntityHelper.cs b/src/core/AtNet.DevFw.Data/Orm/EntityHelper.cs deleted file mode 100644 index e40307d..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/EntityHelper.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Reflection; -using AtNet.DevFw.Data.Orm.Mapping; - -namespace AtNet.DevFw.Data.Orm -{ - public static class EntityHelper - { - public static IEntityManager<Entity> GetManager<Entity>(DataBaseAccess db) where Entity : class - { - return new EntityManager<Entity>(db); - } - - public static PropertyInfo GetProperty<Entity>(string properName) where Entity : class - { - Type type = typeof (Entity); - PropertyInfo p = type.GetProperty(properName); - if (p == null) throw new DataMappingException("该实体:" + type.ToString() + "没有属性:" + properName); - return p; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/EntityManager.cs b/src/core/AtNet.DevFw.Data/Orm/EntityManager.cs deleted file mode 100644 index c04e51d..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/EntityManager.cs +++ /dev/null @@ -1,293 +0,0 @@ -/*------------------------------------------- - * Name : 实体操作管理 - * Author : Sonven - * Create : 2009-10-06 10:30 - * LastModify 2009-10-08 14:17 - * - * 1.修正Get方法如果没有返回数据行返回对象不为空 | Sonven 14:18 08/10 - * - * Note - * --------------------------------------------*/ - -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; -using System.Reflection; -using System.Text; -using AtNet.DevFw.Data.Orm.Mapping; - -namespace AtNet.DevFw.Data.Orm -{ - /// <summary> - /// 实体管理器 - /// </summary> - /// <typeparam name="Entity"></typeparam> - public class EntityManager<Entity> : IEntityManager<Entity> where Entity : class - { - private string tableName; - private PropertyInfo[] properties; - private DataBaseAccess db; - - public EntityManager(DataBaseAccess db) - { - object[] attrs; //datatableAttribtue - attrs = typeof (Entity).GetCustomAttributes(typeof (DataTableAttribute), true); - if (attrs.Length == 0) throw new DataMappingException("此类未加上DataTable特性!"); - DataTableAttribute tb = attrs[0] as DataTableAttribute; - tableName = tb.Name; - - properties = typeof (Entity).GetProperties(); - - this.db = db; - } - - /// <summary> - /// 向数据库添加一个实体 - /// </summary> - /// <param name="entity"></param> - public void Insert(Entity entity) - { - ColumnAttribute col; //列 - - string filedStr = null; - string paramStr = null; - IList<DbParameter> parameters = new List<DbParameter>(); - object[] attrs; //columnAttributes - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - col = attrs[0] as ColumnAttribute; - if (col.AutoGeneried) continue; //如果为自动创建 - else - { - if (col.Name == null) col.Name = p.Name; - filedStr += col.Name + ","; - paramStr += "@" + col.Name + ","; - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); - } - } - db.ExecuteNonQuery("insert into " + tableName + " (" + filedStr.Remove(filedStr.Length - 1) + - ")values(" + paramStr.Remove(paramStr.Length - 1) + ")", - parameters.ToArray()); - } - - - public void Save(object primaryValue, Entity entity) - { - if (primaryValue == null) - { - Insert(entity); - return; - } - StringBuilder sb = new StringBuilder(300); - sb.Append("UPDATE " + tableName + " SET "); - - IList<DbParameter> parameters = new List<DbParameter>(); - string fieldName = null; - ColumnAttribute col; //列 - object[] attrs; - string primaryKey = "id"; - - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - col = attrs[0] as ColumnAttribute; - if (col.AutoGeneried) continue; //如果为自动创建 - else if (col.IsPrimaryKey) - { - primaryKey = col.Name; - continue; - } - else - { - if (col.Name == null) col.Name = p.Name; - sb.Append(col.Name).Append("=@").Append(col.Name).Append(","); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); - } - } - - sb.Remove(sb.Length - 1, 1); //删除最后的, - - - // fieldName = primaryField.GetFieldName(); - sb.Append(" where " + primaryKey + "=@" + primaryKey); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + primaryKey, primaryValue)); - db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); - } - - - /// <summary> - /// 根据主键删除数据库记录 - /// </summary> - /// <param name="field"></param> - public void Delete(FieldValueDictionary field) - { - string fieldName = field.GetFieldName(); - db.ExecuteNonQuery("delete from " + tableName + " where " + fieldName + - "=@" + fieldName, db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); - } - - /// <summary> - /// 更新实体 - /// </summary> - /// <param name="primaryField"></param> - /// <param name="fields"></param> - public void Update(PrimaryKeyValueDictionary primaryField, params FieldValueDictionary[] fields) - { - StringBuilder sb = new StringBuilder(300); - sb.Append("update " + tableName + " set "); - - IList<DbParameter> parameters = new List<DbParameter>(); - string fieldName = null; - foreach (FieldValueDictionary f in fields) - { - fieldName = f.GetFieldName(); - sb.Append(fieldName + "=@" + fieldName + ","); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, f.Value)); - } - sb.Remove(sb.Length - 1, 1); //删除最后的, - fieldName = primaryField.GetFieldName(); - sb.Append(" where " + fieldName + "=@" + fieldName); - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, primaryField.Value)); - - db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); - } - - - /// <summary> - /// 根据主键获取单个实体 - /// </summary> - /// <param name="primaryField"></param> - /// <returns></returns> - public Entity Get(PrimaryKeyValueDictionary primaryField) - { - string fieldName = primaryField.GetFieldName(); - string sql = "SELECT TOP 1 * FROM " + tableName + - " WHERE " + fieldName + "=@" + fieldName; - - Entity obj = null; - ColumnAttribute attr; - Type type = typeof (Entity); - Assembly ass = type.Assembly; - - - db.ExecuteReader(new SqlQuery(sql, new object[,] - { - {"@" + fieldName, primaryField.Value} - }), rd => - { - object[] attrs; //columnAttributes - while (rd.Read()) - { - obj = ass.CreateInstance(type.ToString(), true) as Entity; - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - attr = attrs[0] as ColumnAttribute; - p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], - p.PropertyType), null); - } - break; - } - }); - - return obj; - } - - public Entity Get(FieldValueDictionary field) - { - string fieldName = field.GetFieldName(); - string sql = "SELECT TOP 1 * FROM " + tableName + - " WHERE " + fieldName + "=@" + fieldName; - - Entity obj = null; - ColumnAttribute attr; - Type type = typeof (Entity); - Assembly ass = type.Assembly; - - - db.ExecuteReader(new SqlQuery(sql, new object[,] - { - {"@" + fieldName, field.Value} - }), rd => - { - object[] attrs; //columnAttributes - while (rd.Read()) - { - obj = ass.CreateInstance(type.ToString(), true) as Entity; - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - attr = attrs[0] as ColumnAttribute; - p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], - p.PropertyType), null); - } - break; - } - }); - - return obj; - } - - public IEnumerable<Entity> GetEntityList(params FieldValueDictionary[] fields) - { - string fieldName = null; - IList<DbParameter> parameters = new List<DbParameter>(); - StringBuilder sb = new StringBuilder("select * from " + tableName, 400); - - if (fields.Count() != 0) - { - sb.Append(" WHERE "); - int i = 0; - foreach (FieldValueDictionary field in fields) - { - fieldName = field.GetFieldName(); - if (i != 0) - { - sb.Append("AND "); - } - sb.Append(fieldName + "=@" + fieldName).Append(" "); - - parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); - ++i; - } - } - - ColumnAttribute attr; - Type type = typeof (Entity); - Assembly ass = type.Assembly; - - IList<Entity> list = new List<Entity>(); - Entity entity; //单个实体 - - object[] attrs; //特性集合 - db.ExecuteReader(sb.ToString(), - rd => - { - while (rd.Read()) - { - entity = ass.CreateInstance(type.ToString(), true) as Entity; - - foreach (PropertyInfo p in properties) - { - attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) continue; - attr = attrs[0] as ColumnAttribute; - - p.SetValue(entity, Convert.ChangeType(rd[attr.Name ?? p.Name], p.PropertyType), null); - } - list.Add(entity); - } - }, - parameters.ToArray()); //获取数据 - - - return list; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/FieldValueDectionary.cs b/src/core/AtNet.DevFw.Data/Orm/FieldValueDectionary.cs deleted file mode 100644 index d080eb8..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/FieldValueDectionary.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System.Reflection; -using AtNet.DevFw.Data.Orm.Mapping; - -namespace AtNet.DevFw.Data.Orm -{ - /// <summary> - /// 数据库字段与值字典 - /// </summary> - public class FieldValueDictionary - { - public FieldValueDictionary() - { - } - - public FieldValueDictionary(PropertyInfo proper, object value) - { - Field = proper; - Value = value; - } - - /// <summary> - /// 数据库字段对应的属性 - /// </summary> - public PropertyInfo Field { get; set; } - - /// <summary> - /// 数据库字段对应属性的值 - /// </summary> - public object Value { get; set; } - - /// <summary> - /// 是否对应数据库主键字段 - /// </summary> - public virtual bool IsPrimaryKeyField - { - get - { - object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), false); - if (attrs.Length > 0) - { - ColumnAttribute att = attrs[0] as ColumnAttribute; - return att != null && att.IsPrimaryKey; - } - return false; - } - } - - /// <summary> - /// 获取属性对应的数据库字段 - /// </summary> - /// <returns></returns> - public string GetFieldName() - { - object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), true); - if (attrs.Length == 0) return null; - ColumnAttribute attr = attrs[0] as ColumnAttribute; - return attr.Name == null || attr.Name == "" ? Field.Name : attr.Name; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/FieldValueException.cs b/src/core/AtNet.DevFw.Data/Orm/FieldValueException.cs deleted file mode 100644 index 4831161..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/FieldValueException.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace AtNet.DevFw.Data.Orm -{ - public class FieldValueException : ApplicationException - { - public FieldValueException() - { - } - - public FieldValueException(string message) : base(message) - { - } - - public override string Message - { - get { return base.Message ?? "数据库字段与映射发生错误!"; } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/IEntityManager.cs b/src/core/AtNet.DevFw.Data/Orm/IEntityManager.cs deleted file mode 100644 index e4ddf41..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/IEntityManager.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; - -namespace AtNet.DevFw.Data.Orm -{ - public interface IEntityManager<Entity> where Entity : class - { - void Insert(Entity entity); - void Delete(FieldValueDictionary field); - void Update(PrimaryKeyValueDictionary parmaryField, params FieldValueDictionary[] filds); - Entity Get(PrimaryKeyValueDictionary parmaryField); - Entity Get(FieldValueDictionary parmaryField); - IEnumerable<Entity> GetEntityList(params FieldValueDictionary[] fileds); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs b/src/core/AtNet.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs deleted file mode 100644 index 584d5d2..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs +++ /dev/null @@ -1,48 +0,0 @@ -/*----------------------------------- - * Name : DataColumnMappingAttribute - * Author : Sonven - * Create : 2009-12-04 10:15 - * LastModify - * Note - * ---------------------------------*/ - -using System; - -namespace AtNet.DevFw.Data.Orm.Mapping -{ - /// <summary> - ///提供对数据表的列的映射 - /// </summary> - [AttributeUsage(AttributeTargets.Property, Inherited = true)] - public class ColumnAttribute : Attribute - { - public ColumnAttribute() - { - } - - public ColumnAttribute(string name) - { - Name = name; - } - - /// <summary> - /// 列名,如果列名与属性名称相同可省略 - /// </summary> - public string Name { get; set; } - - /// <summary> - /// 是否为主键 - /// </summary> - public bool IsPrimaryKey { get; set; } - - /// <summary> - /// 是否由数据库自动创建 - /// </summary> - public bool AutoGeneried { get; set; } - - /// <summary> - /// 匹配模式(Regex,用于验证数据是否正确) - /// </summary> - public string Parttern { get; set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/Mapping/DataMappingException.cs b/src/core/AtNet.DevFw.Data/Orm/Mapping/DataMappingException.cs deleted file mode 100644 index b41b228..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/Mapping/DataMappingException.cs +++ /dev/null @@ -1,45 +0,0 @@ -/*-------------------------------------- - * Name : DataMappingException - * Author : Sonven - * Create : 2009-12-04 10:18 - * LastModify - * Note - *-------------------------------------*/ - -using System; - -namespace AtNet.DevFw.Data.Orm.Mapping -{ - public class DataMappingException : ApplicationException - { - private string message; - private object source; - private string sourceId; - - public DataMappingException(string message) - { - this.message = message; - } - - public DataMappingException(string source, string message) : this(message) - { - this.sourceId = source; - } - - public DataMappingException(object source, string message) : this(message) - { - this.source = source; - } - - public override string Message - { - get { return message; } - } - - public override string Source - { - get { return sourceId; } - set { base.Source = value; } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/Mapping/DataTableAttribute.cs b/src/core/AtNet.DevFw.Data/Orm/Mapping/DataTableAttribute.cs deleted file mode 100644 index 7b785e3..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/Mapping/DataTableAttribute.cs +++ /dev/null @@ -1,52 +0,0 @@ -/* --------------------------------- - * Name : DataTableMapping - * Author : Sonven - * Create : 2009-12-04 10:20 - * LastModify - * Note - * ---------------------------------*/ - -using System; - -namespace AtNet.DevFw.Data.Orm.Mapping -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)] - public class DataTableAttribute : Attribute - { - private string name; - private Type type; - private ISqlFormat format; - - public DataTableAttribute(string name) - { - this.name = name; - } - - /// <summary> - /// 数据库表的名称 - /// </summary> - public string Name - { - get - { - if (name == null) - throw new DataMappingException("数据映射的表名不能为空!"); - return this.format == null ? name : this.format.Format(name); - } - set { name = value; } - } - - /// <summary> - /// 实现了Ops.Data.ISqlFormat接口的类型 - /// </summary> - public Type Format - { - get { return type; } - set - { - type = value; - format = Activator.CreateInstance(value) as ISqlFormat; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs b/src/core/AtNet.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs deleted file mode 100644 index 740d74a..0000000 --- a/src/core/AtNet.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; - -namespace AtNet.DevFw.Data.Orm -{ - public class PrimaryKeyValueDictionary : FieldValueDictionary - { - public PrimaryKeyValueDictionary() - { - } - - public PrimaryKeyValueDictionary(PropertyInfo proper, object value) - { - base.Field = proper; - base.Value = value; - } - - public override bool IsPrimaryKeyField - { - get - { - if (!base.IsPrimaryKeyField) - throw new FieldValueException("不是主键不能用做选取和删除操作!"); - return true; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/SQLiteFactory.cs b/src/core/AtNet.DevFw.Data/SQLiteFactory.cs deleted file mode 100644 index 99b3ebb..0000000 --- a/src/core/AtNet.DevFw.Data/SQLiteFactory.cs +++ /dev/null @@ -1,50 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLiteFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using System.Data.SQLite; - -namespace AtNet.DevFw.Data -{ - public class SQLiteFactory : DataBaseFactory - { - public SQLiteFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new SQLiteConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new SQLiteParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new SQLiteCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new SQLiteDataAdapter(sql, (SQLiteConnection) connection); - } - - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/SqlQuery.cs b/src/core/AtNet.DevFw.Data/SqlQuery.cs deleted file mode 100644 index 646e79c..0000000 --- a/src/core/AtNet.DevFw.Data/SqlQuery.cs +++ /dev/null @@ -1,80 +0,0 @@ -// -// -// Copryright 2013 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SqlEntity.cs -// Date : 05/27/2013 -// Author : 刘铭 -// -// - -using System; -using System.Data.Common; - -namespace AtNet.DevFw.Data -{ - /// <summary> - /// SQL查询实体 - /// </summary> - public class SqlQuery - { - private object[,] _parameters; - - - public SqlQuery(string sql) - { - this.Sql = sql; - } - - public SqlQuery(string sql, object[,] parameters) - { - if (parameters != null) - { - if (parameters.GetLength(0) != 0 && parameters.GetLength(1) != 2) - { - throw new ArgumentOutOfRangeException("Parameters", "多纬数组的二维长度必须为2"); - } - } - this._parameters = parameters; - - this.Sql = sql; - } - - /// <summary> - /// SQL语句 - /// </summary> - public String Sql { get; set; } - - /// <summary> - /// 参数 - /// - /// this.Parameters = new object[,]{ - /// {"@age","age"}, - /// {"@name","name"} - /// }; - /// </summary> - public object[,] Parameters - { - get { return this._parameters; } - } - - - /// <summary> - /// 转换为参数 - /// </summary> - /// <param name="db"></param> - /// <returns></returns> - public DbParameter[] ToParams(IDataBase db) - { - DbParameter[] parameters = new DbParameter[this.Parameters.GetLength(0)]; - - for (int i = 0; i < parameters.Length; i++) - { - parameters[i] = db.CreateParameter(this.Parameters[i, 0].ToString(), this.Parameters[i, 1]); - } - - return parameters; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/SqlServerFactory.cs b/src/core/AtNet.DevFw.Data/SqlServerFactory.cs deleted file mode 100644 index 585c11a..0000000 --- a/src/core/AtNet.DevFw.Data/SqlServerFactory.cs +++ /dev/null @@ -1,49 +0,0 @@ -// -// -// Copryright 2011 @ S1N1.COM.All rights reseved. -// -// Project : OPS.Data -// File Name : SQLServerFactory.cs -// Date : 8/19/2011 -// Author : -// -// - -using System.Data.Common; -using System.Data.SqlClient; - -namespace AtNet.DevFw.Data -{ - public class SqlServerFactory : DataBaseFactory - { - public SqlServerFactory(string connectionString) - : base(connectionString) - { - } - - public override DbConnection GetConnection() - { - return new SqlConnection(base.connectionString); - } - - public override DbParameter CreateParameter(string name, object value) - { - return new SqlParameter(name, value); - } - - public override DbCommand CreateCommand(string sql) - { - return new SqlCommand(sql); - } - - public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) - { - return new SqlDataAdapter(sql, (SqlConnection) connection); - } - - public override int ExecuteScript(DbConnection conn, string sql, string delimiter) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/AtNet.DevFw.PluginKernel.csproj b/src/core/AtNet.DevFw.PluginKernel/kernel/AtNet.DevFw.PluginKernel.csproj deleted file mode 100644 index 2dc1f26..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/AtNet.DevFw.PluginKernel.csproj +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.30703</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{CAD14DCC-112C-4B28-98EB-1CE143D09033}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>AtNet.DevFw.PluginKernel</RootNamespace> - <AssemblyName>AtNet.DevFw.PluginKernel</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\..\dist\dll\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DocumentationFile>..\..\..\..\dist\dll\AtNet.DevFw.PluginKernel.XML</DocumentationFile> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\..\Bin\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup> - <SignAssembly>true</SignAssembly> - </PropertyGroup> - <PropertyGroup> - <DelaySign>false</DelaySign> - </PropertyGroup> - <PropertyGroup> - <AssemblyOriginatorKeyFile>pluginKernel.snk</AssemblyOriginatorKeyFile> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Web" /> - </ItemGroup> - <ItemGroup> - <Compile Include="DefaultSettingKeys.cs" /> - <Compile Include="Demo\DemoPluginApp.cs" /> - <Compile Include="IPlugin.cs" /> - <Compile Include="IPluginHost.cs" /> - <Compile Include="IPluginHandleProxy.cs" /> - <Compile Include="Logger.cs" /> - <Compile Include="BasePluginHost.cs" /> - <Compile Include="PluginConfig.cs" /> - <Compile Include="PluginConnectionResult.cs" /> - <Compile Include="PluginException.cs" /> - <Compile Include="PluginHandleProxy.cs" /> - <Compile Include="PluginHandler.cs" /> - <Compile Include="PluginInfoAttribute.cs" /> - <Compile Include="PluginPackAttribute.cs" /> - <Compile Include="PluginState.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="PluginHostAttribute.cs" /> - <Compile Include="PluginUtil.cs" /> - <Compile Include="Web\BaseWebPluginHost.cs" /> - <Compile Include="Web\IWebPluginHost.cs" /> - <Compile Include="Web\WebPluginHandleProxy.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="pluginKernel.snk" /> - <None Include="README.md" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\AtNet.DevFw.Core\AtNet.DevFw.Core.csproj"> - <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> - <Name>AtNet.DevFw.Core</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/BasePluginHost.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/BasePluginHost.cs deleted file mode 100644 index 84b74c8..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/BasePluginHost.cs +++ /dev/null @@ -1,357 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text.RegularExpressions; -using AtNet.DevFw.Framework; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// - /// </summary> - public abstract class BasePluginHost : IPluginHost - { - internal static IDictionary<IPlugin, PluginPackAttribute> plugins; - - protected static LogFile Log; - private PluginHostAttribute _attr = null; - - - static BasePluginHost() - { - plugins = new Dictionary<IPlugin, PluginPackAttribute>(); - - string appDirectory = AppDomain.CurrentDomain.BaseDirectory; - - string pluginDirectory = String.Concat( - appDirectory, - PluginConfig.PLUGIN_DIRECTORY); - - //清空日志 - string pluginTmpDirectory = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY); - if (!Directory.Exists(pluginTmpDirectory)) - { - Directory.CreateDirectory(pluginTmpDirectory); - } - Log = new LogFile(String.Format("{0}load_{1:yyyyMMdd}.log", - pluginTmpDirectory, - DateTime.Now), false); - Log.Truncate(); - - if (Directory.Exists(pluginDirectory)) - { - LoadPluginFromDirectory(pluginDirectory); - } - else - { - Directory.CreateDirectory(pluginDirectory).Create(); - } - - //加载程序集的.so文件 - loadFromAppDomain(); - } - - /// <summary> - /// 从目录中加载插件 - /// </summary> - /// <param name="pluginDirectory"></param> - private static void LoadPluginFromDirectory(string pluginDirectory) - { - bool loadResult = true; - - //多个后缀的情况下 - IList<String> files = new List<string>(10); - - string[] multExt = PluginConfig.GetFilePartterns(); - foreach (String ext in multExt) - { - String[] searchedExt = Directory.GetFiles(pluginDirectory, ext); - foreach (String sext in searchedExt) - { - files.Add(sext); - } - } - - if (Log != null) - { - Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading" - + "\r\n========================================\r\n" - + "Directory:{1} \t Total DLL:{2}\r\n", - DateTime.Now, pluginDirectory.Replace("\\", "/"), - files.Count.ToString())); - } - foreach (string file in files) - { - if (!LoadPlugin(file)) - { - loadResult = false; - } - } - - if (Log != null) - { - Log.Println(String.Format("load complete!result:{0}", loadResult ? "Ok" : "Error")); - } - } - - /// <summary> - /// 加载单个插件 - /// </summary> - /// <param name="pluginFile"></param> - public static bool LoadPlugin(string pluginFile) - { - try - { - byte[] bytes = File.ReadAllBytes(pluginFile); - Assembly ass = Assembly.Load(bytes); - loadFromAssembly(ass); - } - catch (ReflectionTypeLoadException exc) - { - if (Log != null) - { - Log.Println(String.Format("Assembly {0} happend exception:{1}\r\nExceptions:\r\n", - pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] { '/', '\\' }) + 1), - exc.Message)); - foreach(Exception e in exc.LoaderExceptions){ - Log.Println(e.Message); - } - - } - return false; - } - catch (Exception err) - { - if (Log != null) - { - Log.Println(String.Format("\r\nAssembly {0} happend exception:{1}", - pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] {'/', '\\'}) + 1), - err.Message)); - } - return false; - } - return true; - } - - /// <summary> - /// - /// </summary> - private static void loadFromAppDomain() - { - string dir = AppDomain.CurrentDomain.BaseDirectory + "bin"; - if (!Directory.Exists(dir)) return; - string[] dllFiles = Directory.GetFiles(dir, "*.so"); - - Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading From Bin" - + "\r\n========================================\r\n" - + "Total .so file : {1}\r\n", - DateTime.Now, - dllFiles.Length.ToString())); - - foreach (string f in dllFiles) - { - LoadPlugin(f); - } - } - - /// <summary> - /// 从程序集中加载插件 - /// </summary> - /// <param name="assembly"></param> - /// <returns></returns> - private static bool loadFromAssembly(Assembly assembly) - { - PluginPackAttribute attribute = null; - IPlugin plugin = null; - - var attbs = assembly.GetCustomAttributes(typeof (PluginPackAttribute), false); - - if (attbs.Length != 0) - { - attribute = (PluginPackAttribute) attbs[0]; - } - else - { -// foreach (Attribute attr in assembly.GetCustomAttributes(false)) -// { -// if (attr.ToString().IndexOf("PluginPackAttribute") != -1) -// { -// attribute = (PluginPackAttribute) attr; -// -// Log.Println(attribute.Name); -// } -// else -// { -// Log.Println(attr.ToString()); -// } -// } -// -// Log.Println(assembly.GetName().Name+" not a plugin!"); - return false; - } - - var types = assembly.GetTypes(); - foreach (Type type in types) - { - if (type.IsClass) - { - foreach (Type t in type.GetInterfaces()) - { - if (t == typeof (IPlugin)) - { - plugin = Activator.CreateInstance(type) as IPlugin; - if (plugin == null) - { - continue; - } - - if (attribute != null) - { - plugins.Add(plugin, attribute); - } - } - } - } - } - - if (Log != null) - { - Log.Println(String.Format("{0}({1}) be found ; version is {2}.", - attribute.Name, - assembly.GetName().Name, - attribute.Version)); - } - return true; - } - - public bool LoadFromAssembly(Assembly assembly) - { - return loadFromAssembly(assembly); - } - - /// <summary> - /// 连接插件 - /// </summary> - /// <returns></returns> - public virtual bool Connect() - { - Iterate( - (p, a) => - { - if (a.State == PluginState.Normal) - { - p.Connect(this); - } - } - ); - return true; - } - - /// <summary> - /// 迭代插件 - /// </summary> - /// <param name="handler"></param> - public void Iterate(PluginHandler handler) - { - foreach (IPlugin p in plugins.Keys) - { - if (CanAdapter(p)) - { - handler(p, plugins[p]); - } - } - } - - public virtual void Run() - { - Iterate((p, i) => - { - if (i.State == PluginState.Normal) - { - p.Run(); - } - }); - } - - public virtual void Pause() - { - Iterate((p, i) => { i.State = PluginState.Stop; }); - } - - public bool Run(string pluginId) - { - var runed = false; - Iterate((p, i) => - { - if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) - { - p.Run(); - runed = true; - } - }); - return runed; - } - - public bool Pause(string pluginId) - { - var runed = false; - Iterate((p, i) => - { - if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) - { - i.State = PluginState.Stop; - runed = true; - } - }); - return runed; - } - - /// <summary> - /// 检查是否能适配插件 - /// </summary> - public bool CanAdapter(IPlugin plugin) - { - if (this.Attribute == null || String.IsNullOrEmpty(this.Attribute.TypePattern)) - { - return true; - } - return Regex.IsMatch(plugin.GetType().Name, this.Attribute.TypePattern, RegexOptions.IgnoreCase); - } - - /// <summary> - /// 附加日志 - /// </summary> - /// <param name="content"></param> - public void Logln(string content) - { - if (Log != null) - { - Log.Printf("{0:yyyy-MM-dd HH:mm:ss}\r\n========================================\r\n{1}\r\n\r\n", - DateTime.Now, content); - } - } - - private PluginHostAttribute Attribute - { - get - { - if (_attr == null) - { - var ppas = GetType().GetCustomAttributes(typeof (PluginHostAttribute), true); - if (ppas.Length != 0) - { - _attr = (PluginHostAttribute) ppas[0]; - } - } - return _attr; - } - } - - - public PluginPackAttribute GetAttribute(IPlugin plugin) - { - return PluginUtil.GetAttribute(plugin); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/DefaultSettingKeys.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/DefaultSettingKeys.cs deleted file mode 100644 index 02ece0d..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/DefaultSettingKeys.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; - -namespace AtNet.DevFw.PluginKernel -{ - public static class DefaultSettingKeys - { - /// <summary> - /// 插件状态 - /// </summary> - public static String State = "state"; - - /// <summary> - /// 重写的URL标识 - /// </summary> - public static String OverrideUrlIndent = "override.url.indent"; - } -} diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs deleted file mode 100644 index 5ee43f3..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using AtNet.DevFw.PluginKernel; - -namespace Com.PluginKernel.Demo -{ - public class DemoPluginApp : BasePluginHost - { - public event PluginHandler<string> OnPrinting; - - public override bool Connect() - { - Iterate((p, i) => - { - Console.WriteLine("连接插件:" + i.Name + " 作者:" + i.Author + " 版本:" + i.Version); - p.Connect(this); - }); - - return true; - } - - public void Print(string message) - { - var result = true; - if (OnPrinting != null) - { - OnPrinting(message, ref result); - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/IPlugin.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/IPlugin.cs deleted file mode 100644 index 8b89be0..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/IPlugin.cs +++ /dev/null @@ -1,63 +0,0 @@ -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件接口 - /// </summary> - public interface IPlugin - { - /// <summary> - /// 连接插件 - /// </summary> - /// <param name="app"></param> - /// <returns></returns> - PluginConnectionResult Connect(IPluginHost app); - - - /// <summary> - /// 安装 - /// </summary> - bool Install(); - - /// <summary> - /// 卸载 - /// </summary> - /// <returns></returns> - bool Uninstall(); - - /// <summary> - /// 运行 - /// </summary> - void Run(); - - /// <summary> - /// 暂停运行 - /// </summary> - void Pause(); - - /// <summary> - /// 返回插件操作的消息 - /// </summary> - /// <returns></returns> - string GetMessage(); - - /// <summary> - /// 获取插件的属性 - /// </summary> - /// <returns></returns> - PluginPackAttribute GetAttribute(); - - /// <summary> - /// 打印日志 - /// </summary> - /// <param name="line"></param> - void Logln(string line); - - /// <summary> - /// 开放调用 - /// </summary> - /// <param name="method"></param> - /// <param name="parameters"></param> - /// <returns></returns> - object Call(string method, params object[] parameters); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs deleted file mode 100644 index c5632ae..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace AtNet.DevFw.PluginKernel -{ - public interface IPluginHandleProxy<T> - { - /// <summary> - /// 处理请求,如在Web中可用来处理Get请求 - /// </summary> - /// <param name="context"></param> - /// <param name="pluginWorkIndent"></param> - /// <param name="handleResult"></param> - void HandleRequest(T context, - string pluginWorkIndent, - ref bool handleResult); - - /// <summary> - /// 使用指定的类型处理请求,如果action不正确则抛出异常 - /// </summary> - /// <typeparam name="HandleClass"></typeparam> - /// <param name="t"></param> - /// <param name="context"></param> - /// <param name="action"></param> - /// <returns>返回请求的结果,这通常返回String</returns> - object HandleRequestUse<HandleClass>( - HandleClass t, - T context, - string action); - - /// <summary> - /// 使用指定的类型处理请求,如果action不正确则抛出异常 - /// </summary> - /// <typeparam name="HandleClass"></typeparam> - /// <param name="t"></param> - /// <param name="context"></param> - /// <param name="action"></param> - /// <param name="source">请求来源</param> - /// <returns>返回请求的结果,这通常返回String</returns> - object HandleRequestUse<HandleClass>( - HandleClass t, - T context, - string action, - string source); - - /// <summary> - /// 注册处理事件 - /// </summary> - /// <param name="plugin"></param> - /// <param name="reqHandler"></param> - /// <param name="postReqHandler"></param> - /// <returns></returns> - bool Register(IPlugin plugin, PluginHandler<T> reqHandler); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/IPluginHost.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/IPluginHost.cs deleted file mode 100644 index a609035..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/IPluginHost.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System.Reflection; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件宿主接口 - /// </summary> - public interface IPluginHost - { - /// <summary> - /// 连接所有插件 - /// </summary> - /// <returns></returns> - bool Connect(); - - /// <summary> - /// 从程序集中加载插件 - /// </summary> - /// <param name="assembly"></param> - /// <returns></returns> - bool LoadFromAssembly(Assembly assembly); - - /// <summary> - /// 获取插件信息 - /// </summary> - /// <param name="plugin"></param> - /// <returns></returns> - PluginPackAttribute GetAttribute(IPlugin plugin); - - /// <summary> - /// 迭代插件集合 - /// </summary> - /// <param name="handler"></param> - void Iterate(PluginHandler handler); - - /// <summary> - /// 运行所有插件 - /// </summary> - void Run(); - - /// <summary> - /// 停用所有插件 - /// </summary> - void Pause(); - - /// <summary> - /// 运行指定的插件 - /// </summary> - /// <param name="pluginId"></param> - /// <returns></returns> - bool Run(string pluginId); - - /// <summary> - /// 停用指定的插件 - /// </summary> - /// <param name="pluginId"></param> - /// <returns></returns> - bool Pause(string pluginId); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Logger.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/Logger.cs deleted file mode 100644 index ff0f2dd..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/Logger.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections; -using System.IO; -using System.Text; -using AtNet.DevFw.Framework; -using AtNet.DevFw.Framework.Extensions; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// - /// </summary> - public static class Logger - { - private static LogFile _logFile; - - private static LogFile GetFile() - { - DateTime dt = DateTime.Now; - int unixInt = dt.Date.DayOfYear; - - if (_logFile == null || unixInt != _logFile.Seed) - { - string logDir = AppDomain.CurrentDomain.BaseDirectory + PluginConfig.PLUGIN_TMP_DIRECTORY; - - //创建日志目录 - if (!Directory.Exists(logDir)) - { - Directory.CreateDirectory(logDir).Create(); - } - - _logFile = new LogFile(String.Format("{0}/{1:yyyyMMdd}.log", logDir, dt), false); - _logFile.Seed = unixInt; - _logFile.FileEncoding = Encoding.UTF8; - } - return _logFile; - } - - /// <summary> - /// 记录异常 - /// </summary> - /// <param name="addr">引起异常的地址,比如网址</param> - /// <param name="except"></param> - public static void PrintException(string addr, Exception except) - { - if (!PluginConfig.PLUGIN_LOG_OPENED) return; - - LogFile log = GetFile(); - DateTime dt = DateTime.Now; - - Exception exc = except; - - if (exc.InnerException != null) - { - exc = except.InnerException; - } - - Hashtable hash = new Hashtable(); - hash.Add("addr", addr ?? "application"); - hash.Add("message", exc.Message); - hash.Add("stack", exc.StackTrace); - hash.Add("time", String.Format("{0:yyyy-MM-dd HH:mm:ss}", dt)); - hash.Add("source", exc.Source); - - //附加记录 - log.Println(PluginConfig.PLUGIN_LOG_EXCEPT_FORMAT.Template(hash)); - - throw except; //继续抛出异常 - } - - /// <summary> - /// - /// </summary> - /// <param name="line"></param> - public static void Println(string line) - { - if (!PluginConfig.PLUGIN_LOG_OPENED) return; - - LogFile log = GetFile(); - log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} {1}", DateTime.Now, line)); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginConfig.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginConfig.cs deleted file mode 100644 index 26365d7..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginConfig.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// - /// </summary> - public class PluginConfig - { - /// <summary> - /// 插件目录名称,以"/"结尾 - /// </summary> - public static string PLUGIN_DIRECTORY = "plugins/"; - - /// <summary> - /// 插件临时文件存放目录,以"/"结尾。用于存放日志,临时文件等 - /// </summary> - public static string PLUGIN_TMP_DIRECTORY = "tmp/plugin/"; - - /// <summary> - /// 插件日志是否打开,默认为关闭 - /// </summary> - public static bool PLUGIN_LOG_OPENED = false; - - /// <summary> - /// 插件异常日志格式,默认为:<{time}>:{message}\r\nSource:{source}\r\nAddress:{addr}\r\nStack:{stack}\r\n\r\n - /// </summary> - public static string PLUGIN_LOG_EXCEPT_FORMAT = - "**{time}** [Exeption] -{message}\r\nSource:{source} - Addr:{addr}\r\nStack:{stack}\r\n\r\n"; - - /// <summary> - /// 插件文件后缀,多个后缀用","隔开 - /// 默认加载bin目录下的.so文件 - /// </summary> - public static string PLUGIN_FILE_PARTTERN = "*.so,*.dll"; - - /// <summary> - /// - /// </summary> - /// <returns></returns> - public static string[] GetFilePartterns() - { - return (PLUGIN_FILE_PARTTERN ?? "*.dll").Split(','); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginConnectionResult.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginConnectionResult.cs deleted file mode 100644 index c136ffb..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginConnectionResult.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 表示插件与主程序连接的结果 - /// - /// </summary> - public enum PluginConnectionResult - { - /// <summary> - /// - /// </summary> - Failed, - - /// <summary> - /// 与版本号不匹配 - /// </summary> - NotMatch, - - /// <summary> - /// - /// </summary> - Success - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginException.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginException.cs deleted file mode 100644 index 5d11a39..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginException.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件异常 - /// </summary> - public class PluginException : Exception - { - /// <summary> - /// - /// </summary> - /// <param name="message"></param> - public PluginException(string message) : base(message) - { - } - - public override string HelpLink - { - get { return "http://www.s1n1.com"; } - set { throw new NotImplementedException(); } - } - - public override string Message - { - get { return "[ Plugin] -" + base.Message; } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHandleProxy.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHandleProxy.cs deleted file mode 100644 index 48644d7..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHandleProxy.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件处理代理类 - /// </summary> - /// <typeparam name="T"></typeparam> - public abstract class PluginHandleProxy<T> : IPluginHandleProxy<T> - { - private static IDictionary<string, PluginHandler<T>> reqHandlers; - - static PluginHandleProxy() - { - reqHandlers = new Dictionary<String, PluginHandler<T>>(); - } - - /// <summary> - /// 扩展模块GET请求,返回false则应立即截断请求 - /// </summary> - /// <param name="tag"></param> - /// <param name="page"></param> - public virtual void HandleRequest(T context, - string pluginWorkIndent, - ref bool handleResult) - { - pluginWorkIndent = pluginWorkIndent.ToLower(); - - //处理扩展 - if (reqHandlers.Keys.Contains(pluginWorkIndent)) - { - reqHandlers[pluginWorkIndent](context, ref handleResult); - } - } - - - /// <summary> - /// 注册扩展处理程序 - /// </summary> - /// <param name="extendName">扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件</param> - /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> - /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> - /// <returns></returns> - public bool Register(IPlugin plugin, - PluginHandler<T> reqHandler) - { - Type type = plugin.GetType(); - PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); - string indent = attr.WorkIndent; - - if (reqHandler == null || reqHandlers.Keys.Contains(indent)) - { - return false; - } - - if (reqHandler != null) - { - reqHandlers.Add(indent, reqHandler); - } - - return true; - } - - - public object HandleRequestUse<THandleClass>(THandleClass t, T context, string action, string source) - { - Type type = t.GetType(); - MethodInfo method = type.GetMethod( - action, - BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); - - if (method != null) - { - return method.Invoke(t, new object[] { context }); - } - throw new PluginException("无效请求:" + action); - } - - public object HandleRequestUse<THandleClass>( - THandleClass t, - T context, - string action) - { - return HandleRequestUse(t, context, action, null); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHandler.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHandler.cs deleted file mode 100644 index ceecd62..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHandler.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件处理事件 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="t"></param> - public delegate void PluginHandler<T>(T t, ref bool b); - - public delegate void PluginHandler<T, T1>(T t, T1 t1, ref bool b); - - public delegate void PluginHandler<T, T1, T2>(T t, T1 t1, T2 t2, ref bool b); - - public delegate void PluginHandler<T, T1, T2, T3>(T t, T1 t1, T2 t2, T3 t3, ref bool b); - - - /// <summary> - /// 插件处理事件 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="t"></param> - public delegate void PluginHandler(IPlugin plugin, PluginPackAttribute info); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHostAttribute.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHostAttribute.cs deleted file mode 100644 index 3befa0e..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginHostAttribute.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件信息 - /// </summary> - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] - public class PluginHostAttribute : Attribute - { - public PluginHostAttribute() - { - } - - public PluginHostAttribute(string name, string descript) - { - Name = name; - Descript = descript; - } - - /// <summary> - /// 插件名称 - /// </summary> - public string Name { get; set; } - - /// <summary> - /// 插件应用描述 - /// </summary> - public string Descript { get; set; } - - /// <summary> - /// 插件类名格式(正则表达式) - /// 默认为空,不限制 - /// </summary> - public string TypePattern { get; set; } - - /// <summary> - /// 记录日志 - /// </summary> - private bool WriteLog { get; set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs deleted file mode 100644 index caa11f7..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// Ϣ - /// </summary> - [Obsolete] - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] - public class PluginInfoAttribute : Attribute - { - /// <summary> - /// - /// </summary> - public PluginInfoAttribute() - { - } - - /// <summary> - /// - /// </summary> - /// <param name="name"></param> - /// <param name="author"></param> - /// <param name="webpage"></param> - /// <param name="descript"></param> - [Obsolete] - public PluginInfoAttribute(string name, string author, string webpage, string descript) - { - } - - private string id; - - /// <summary> - /// - /// </summary> - public string ID - { - get - { - if (id == null) - { - id = String.Format("{0}{1}", GetType().Assembly.GetName().Name, - IndexNum == 0 ? string.Empty : "_" + IndexNum); - } - return id; - } - } - - /// <summary> - /// ,ļ - /// </summary> - public int IndexNum { get; set; } - - /// <summary> - /// Ϣ - /// </summary> - public object Tag { get; set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginPackAttribute.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginPackAttribute.cs deleted file mode 100644 index aeef366..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginPackAttribute.cs +++ /dev/null @@ -1,167 +0,0 @@ -using System; -using System.IO; -using AtNet.DevFw.Framework; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件包信息 - /// </summary> - [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)] - public class PluginPackAttribute : Attribute - { - private SettingFile settings { get; set; } - - /// <summary> - /// - /// </summary> - /// <param name="workerIndent"></param> - public PluginPackAttribute(string workerIndent) - { - this.WorkIndent = workerIndent; - bool isChanged = false; - var dirPath = String.Concat( - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - workerIndent, - "/"); - - if (!Directory.Exists(dirPath)) - { - Directory.CreateDirectory(dirPath).Create(); - } - - settings = new SettingFile(string.Concat(dirPath, "plugin.config")); - - if (!settings.Contains("state")) - { - settings.Add("state", "Normal"); - isChanged = true; - } - if (!settings.Contains("override.url.indent")) - { - settings.Add("override.url.indent", ""); - isChanged = true; - } - - if (isChanged) - { - settings.Flush(); - } - } - - public PluginPackAttribute(string workerIndent, string icon, string name, string author, string portalUrl) - : - this(workerIndent) - { - Icon = icon; - Name = name; - Author = author; - PortalUrl = portalUrl; - } - - private string version; - private string _workSpace; - - /// <summary> - /// 工作目录标识,较好的命名:com.myplugin 或 mycompany.myplugin - /// 将会在plugins目录下生成目录,存放需要的文件 - /// </summary> - public string WorkIndent { get; set; } - - /// <summary> - /// 插件图标 - /// </summary> - public string Icon { get; set; } - - /// <summary> - /// 插件名称 - /// </summary> - public string Name { get; set; } - - /// <summary> - /// 插件作者 - /// </summary> - public string Author { get; set; } - - /// <summary> - /// 官方主页 - /// </summary> - public string WebPage { get; set; } - - /// <summary> - /// 版本号(主版本号.次版本号.修订版本号),与程序集版本号一致 - /// </summary> - public string Version - { - get - { - if (version == null) - { - var v = GetType().Assembly.GetName().Version; - version = String.Format("{0}.{1}.{2}", v.Major, v.Minor, v.Revision); - } - return version; - } - } - - /// <summary> - /// 设置地址 - /// </summary> - public string ConfigUrl { get; set; } - - /// <summary> - /// 插件入口地址 - /// </summary> - public string PortalUrl { get; set; } - - /// <summary> - /// 插件描述信息 - /// </summary> - public string Description { get; set; } - - /// <summary> - /// 工作目录(插件根目录),如:C:/plugins/com.plugin.demo/ - /// </summary> - public string WorkSpace - { - get - { - return this._workSpace ?? (this._workSpace = - String.Concat( - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - this.WorkIndent, - "/" - )); - } - } - - /// <summary> - /// 插件状态 - /// </summary> - public PluginState State - { - get - { - return (settings["state"] == "1" || settings["state"] == "Normal") - ? PluginState.Normal - : PluginState.Stop; - } - set - { - var state = value.ToString(); - settings["state"] = state; - settings.Flush(); - } - } - - /// <summary> - /// 插件配置 - /// </summary> - public SettingFile Settings - { - get { return settings; } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginState.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginState.cs deleted file mode 100644 index c5ed5e9..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginState.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件状态 - /// </summary> - public enum PluginState - { - /// <summary> - /// 正常 - /// </summary> - Normal = 1, - - /// <summary> - /// 停止 - /// </summary> - Stop = 0 - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginUtil.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/PluginUtil.cs deleted file mode 100644 index 3232dd1..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/PluginUtil.cs +++ /dev/null @@ -1,361 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Reflection; -using AtNet.DevFw.Framework.Extensions; -using AtNet.DevFw.Framework.Graphic; -using AtNet.DevFw.Framework.Net; -using AtNet.DevFw.Utils; - -namespace AtNet.DevFw.PluginKernel -{ - /// <summary> - /// 插件工具 - /// </summary> - public static class PluginUtil - { - /// <summary> - /// 插件属性字典 - /// </summary> - private static IDictionary<int, PluginPackAttribute> attrDicts; - - /// <summary> - /// 迭代插件 - /// </summary> - /// <param name="handler"></param> - public static void Iterate(PluginHandler handler) - { - foreach (IPlugin p in BasePluginHost.plugins.Keys) - { - handler(p, BasePluginHost.plugins[p]); - } - } - - /// <summary> - /// - /// </summary> - /// <param name="plugin"></param> - /// <returns></returns> - public static PluginPackAttribute GetAttribute(IPlugin plugin) - { - return GetAttributeByType(plugin.GetType()); - } - - private static PluginPackAttribute GetAttributeByType(Type type) - { - //int key = type.Assembly.GetHashCode(); - //if (attrDicts == null) - //{ - // attrDicts = new Dictionary<int, PluginPackAttribute>(); - //} - - //if (!attrDicts.Keys.Contains(key)) - //{ - - object[] attrs = type.Assembly.GetCustomAttributes(typeof(PluginPackAttribute), false); - if (attrs.Length == 0) - throw new Exception("assembly not contain any plugin package attribute!"); - - PluginPackAttribute attr = (PluginPackAttribute)attrs[0]; - //attrDicts.Add(key, attr); - return attr; - //} - - // return attrDicts[key]; - } - - /// <summary> - /// 获取插件 - /// </summary> - /// <param name="workerIndent"></param> - /// <returns></returns> - public static IPlugin GetPlugin(string workerIndent, out PluginPackAttribute attr) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - attr = plugins[p]; - return p; - } - } - - attr = null; - return null; - } - - /// <summary> - /// 根据类型获取插件 - /// </summary> - /// <param name="t"></param> - /// <returns></returns> - public static IPlugin GetPluginByType(Type t) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (p.GetType() == t) - { - return p; - } - } - return null; - } - - - /// <summary> - /// 获取插件包信息 - /// </summary> - /// <param name="workerIndent"></param> - /// <returns></returns> - public static PluginPackAttribute GetPluginPackAttribute(string workerIndent) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - return plugins[p]; - } - } - return null; - } - - /// <summary> - /// 获取插件 - /// </summary> - /// <param name="workerIndent"></param> - /// <returns></returns> - public static IEnumerable<IPlugin> GetPlugins(string workerIndent) - { - var plugins = BasePluginHost.plugins; - - foreach (IPlugin p in plugins.Keys) - { - if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - yield return p; - } - } - } - - - /// <summary> - /// 获取插件的图标 - /// </summary> - /// <param name="workerIndent"></param> - /// <returns></returns> - public static byte[] GetPluginIcon(string workerIndent, int width, int height, string defaultIconPath) - { - string icon = null; - var iconExist = false; - byte[] data; - - Iterate((p, a) => - { - if (String.Compare(a.WorkIndent, workerIndent, StringComparison.OrdinalIgnoreCase) == 0) - { - icon = String.Format("{0}{1}{2}/{3}", - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - workerIndent, a.Icon); - } - }); - - if (!String.IsNullOrEmpty(icon)) - { - iconExist = File.Exists(icon); - } - - resetIcon: - if (!iconExist) - { - icon = defaultIconPath; - } - - var bit = (Bitmap)null; - try - { - using (bit = new Bitmap(icon)) - { - var ms = GraphicsHelper.MakeThumbnail(bit, ImageSizeMode.AutoSuit, width, height, null); - data = ms.ToArray(); - ms.Dispose(); - bit.Dispose(); - } - } - catch - { - iconExist = false; - goto resetIcon; - } - finally - { - if (bit != null) - { - bit.Dispose(); - } - } - - return data; - } - - /// <summary> - /// 移除插件 - /// </summary> - /// <param name="workerIndent"></param> - /// <returns></returns> - public static bool RemovePlugin(string workerIndent) - { - PluginPackAttribute attr; - var plugin = GetPlugin(workerIndent, out attr); - - if (plugin != null) - { - try - { - plugin.Uninstall(); - } - catch - { - // ignored - } - - var dirName = String.Format("{0}{1}/{2}/", - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - attr.WorkIndent - ); - - if (Directory.Exists(dirName)) - { - Directory.Delete(dirName, true); - - var dllName = String.Format("{0}{1}/{2}", - AppDomain.CurrentDomain.BaseDirectory, - PluginConfig.PLUGIN_DIRECTORY, - plugin.GetType().Assembly.Location - ); - - File.Delete(dllName); - } - - return true; - } - - return false; - } - - /// <summary> - /// 安装/升级插件 - /// </summary> - /// <param name="url"></param> - /// <param name="handler"></param> - /// <returns></returns> - public static bool InstallPlugin(string url, PluginHandler<PluginPackAttribute> handler) - { - var installResult = false; - string appDirectory = AppDomain.CurrentDomain.BaseDirectory; - var pluginPath = String.Concat( - appDirectory, - PluginConfig.PLUGIN_DIRECTORY); - - var tempDir = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY, "plugin/"); - var fileName = tempDir + "dl_pack_" + String.Empty.RandomLetters(16) + ".zip"; - - if (Directory.Exists(tempDir)) - { - Directory.Delete(tempDir, true); - } - Directory.CreateDirectory(tempDir).Create(); - - var dir = new DirectoryInfo(tempDir); - - var data = HttpClient.DownloadFile(url, null); - using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) - { - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - - IList<PluginPackAttribute> pluginAttrs = new List<PluginPackAttribute>(GetPluginPackInfo(fileName)); - - if (pluginAttrs.Count != 0) - { - ZipUtility.UncompressFile(pluginPath, fileName, false); - - string[] multExt = PluginConfig.GetFilePartterns(); - foreach (String ext in multExt) - { - foreach (FileInfo file in dir.GetFiles(ext)) - { - File.Delete(pluginPath + file.Name); - file.MoveTo(pluginPath + file.Name); - } - } - - - if (handler != null) - { - var result = false; - foreach (PluginPackAttribute attr in pluginAttrs) - { - handler(attr, ref result); - } - } - - installResult = true; - } - - Directory.Delete(tempDir, true); - - return installResult; - } - - /// <summary> - /// 获取插件包的信息 - /// </summary> - /// <param name="fileName"></param> - /// <returns></returns> - public static IEnumerable<PluginPackAttribute> GetPluginPackInfo(string fileName) - { - var tempDir = String.Concat(AppDomain.CurrentDomain, PluginConfig.PLUGIN_TMP_DIRECTORY, "tmp/"); - - if (Directory.Exists(tempDir)) - { - Directory.Delete(tempDir, true); - } - Directory.CreateDirectory(tempDir).Create(); - - var dir = new DirectoryInfo(tempDir); - - ZipUtility.UncompressFile(tempDir, fileName, false); - - Assembly ass; - string[] multExt = PluginConfig.GetFilePartterns(); - foreach (String ext in multExt) - { - var files = dir.GetFiles(ext); - foreach (FileInfo f in files) - { - ass = Assembly.Load(File.ReadAllBytes(f.FullName)); - - var attbs = ass.GetCustomAttributes(typeof(PluginPackAttribute), false); - foreach (object attb in attbs) - { - if (attb is PluginPackAttribute) - { - yield return (PluginPackAttribute)attb; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs deleted file mode 100644 index aebe25c..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Text.RegularExpressions; -using System.Web; - -namespace AtNet.DevFw.PluginKernel.Web -{ - /// <summary> - /// B/S插件宿主 - /// </summary> - [PluginHost("B/S插件宿主", "使用{module}.sh/{action}访问自定义扩展")] - public abstract class BaseWebPluginHost : BasePluginHost, IWebPluginHost - { - protected WebPluginHandleProxy<HttpContext> WebHandler; - - /// <summary> - /// - /// </summary> - protected BaseWebPluginHost() - { - } - - /// <summary> - /// - /// </summary> - /// <param name="_webHandler"></param> - protected BaseWebPluginHost(WebPluginHandleProxy<HttpContext> _webHandler) - { - this.WebHandler = _webHandler; - } - - /// <summary> - /// 注册扩展处理程序 - /// </summary> - /// <param name="plugin">扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件</param> - /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> - /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> - /// <returns></returns> - public bool Register(IPlugin plugin, PluginHandler<HttpContext> getReqHandler, - PluginHandler<HttpContext> postReqHandler) - { - return this.WebHandler.Register(plugin, getReqHandler, postReqHandler); - } - - - /// <summary> - /// 扩展模块GET请求,返回false则应立即截断请求 - /// </summary> - /// <param name="tag"></param> - /// <param name="page"></param> - public virtual void ExtendModuleRequest(HttpContext context, string extendName, ref bool result) - { - extendName = extendName.ToLower(); - this.WebHandler.HandleGetRequest(context, extendName, ref result); - } - - - /// <summary> - /// 扩展模块POST请求,返回false则应立即截断请求 - /// </summary> - /// <param name="tag"></param> - /// <param name="page"></param> - public virtual void ExtendModulePost(HttpContext context, string extendName, ref bool result) - { - extendName = extendName.ToLower(); - this.WebHandler.HandlePostRequest(context, extendName, ref result); - } - - /// <summary> - /// 获取请求路径 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - public string GetRequestPath(HttpContext context) - { - Match match = Regex.Match(context.Request.Path, "/(.+?)/([^\\?]+)"); - return match == Match.Empty ? "" : match.Groups[2].Value; - } - - /// <summary> - /// 扩展插件Action请求,为插件提供Action功能 - /// </summary> - /// <param name="t"></param> - /// <param name="context"></param> - /// <param name="isPostRequest"></param> - public virtual bool HandleRequestUse<T>(T t, HttpContext context, bool isPostRequest) - { - string path = this.GetRequestPath(context); - return this.HandleCustomRequestUse(t, context, path, isPostRequest); - } - - - public bool HandleCustomRequestUse<T>(T t, HttpContext context, string path, bool isPostRequest) - { - string action = null; - - if (path.Length != 0) - { - action = path.IndexOf('/') == -1 ? path : path.Substring(0, path.IndexOf('/')); - } - action = String.Concat(action ?? "default", isPostRequest ? "_post" : ""); - - try - { - object obj = this.WebHandler.HandleRequestUse<T>( - t - , context - , action - , context.Request.RawUrl); - - - if (obj != null) - { - context.Response.Write(obj.ToString()); - } - return true; - } - catch (PluginException exc) - { - Logger.Println("[ Request][ Error]" + exc.Message + ";url :" + context.Request.RawUrl); - throw exc.InnerException ?? exc; - } - catch (Exception exc) - { - Logger.PrintException(context.Request.RawUrl, exc); - throw; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs deleted file mode 100644 index 4095293..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Web; - -namespace AtNet.DevFw.PluginKernel.Web -{ - /// <summary> - /// B/S插件宿主 - /// </summary> - public interface IWebPluginHost : IPluginHost - { - /// <summary> - /// 注册扩展处理程序 - /// </summary> - /// <param name="plugin"></param> - /// <param name="getReqHandler">委托PluginHandler<HttpContext,string>的实例</param> - /// <param name="postReqHandler">委托PluginHandler<HttpContext,string>的实例</param> - /// <returns></returns> - bool Register(IPlugin plugin, PluginHandler<HttpContext> getReqHandler, - PluginHandler<HttpContext> postReqHandler); - - #region 调用插件 - - /// <summary> - /// 扩展模块GET请求,返回false则应立即截断请求 - /// </summary> - /// <param name="extendName"></param> - /// <param name="result"></param> - /// <param name="context"></param> - void ExtendModuleRequest(HttpContext context, string extendName, ref bool result); - - /// <summary> - /// 扩展模块POST请求,返回false则应立即截断请求 - /// </summary> - /// <param name="context"></param> - /// <param name="extendName"></param> - /// <param name="result"></param> - void ExtendModulePost(HttpContext context, string extendName, ref bool result); - - #endregion - - /// <summary> - /// 获取请求路径 - /// </summary> - /// <param name="context"></param> - /// <returns></returns> - string GetRequestPath(HttpContext context); - - /// <summary> - /// 扩展插件Action请求,为插件提供Action功能 - /// </summary> - /// <param name="t"></param> - /// <param name="context"></param> - /// <param name="isPostRequest"></param> - bool HandleRequestUse<T>(T t, HttpContext context, bool isPostRequest); - - - /// <summary> - /// 为自定义请求提供Action功能 - /// </summary> - /// <param name="t"></param> - /// <param name="context"></param> - /// <param name="isPostRequest"></param> - bool HandleCustomRequestUse<T>(T t, HttpContext context, String path,bool isPostRequest); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs b/src/core/AtNet.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs deleted file mode 100644 index f07e4db..0000000 --- a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Web; - -namespace AtNet.DevFw.PluginKernel.Web -{ - /// <summary> - /// - /// </summary> - /// <typeparam name="T"></typeparam> - public class WebPluginHandleProxy<T> : PluginHandleProxy<T> - { - private static readonly IDictionary<string, PluginHandler<T>> postHandlers; - - static WebPluginHandleProxy() - { - postHandlers = new Dictionary<string, PluginHandler<T>>(); - } - - public virtual void HandleGetRequest(T context, - string pluginWorkIndent, - ref bool handleResult) - { - this.HandleRequest(context, pluginWorkIndent, ref handleResult); - } - - public virtual void HandlePostRequest(T context, - string pluginWorkIndent, - ref bool handleResult) - { - pluginWorkIndent = pluginWorkIndent.ToLower(); - - //处理扩展 - if (postHandlers.Keys.Contains(pluginWorkIndent)) - { - postHandlers[pluginWorkIndent](context, ref handleResult); - } - } - - - /// <summary> - /// 注册处理事件 - /// </summary> - /// <param name="plugin"></param> - /// <param name="reqHandler"></param> - /// <param name="postReqHandler"></param> - /// <returns></returns> - public bool Register(IPlugin plugin, PluginHandler<T> getHandler, PluginHandler<T> postHandler) - { - Type type = plugin.GetType(); - PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); - string indent = attr.WorkIndent; - - if (postHandler == null || postHandlers.Keys.Contains(indent)) - { - return false; - } - postHandlers.Add(indent, postHandler); - - return base.Register(plugin, getHandler); - } - - - // - // 此段代码仅供参考 - // - private bool HandleRequestUse2<HandleClass>(HandleClass t, T context, bool isPostRequest, string requestPath) - { - string action = null; - HttpContext httpContext = HttpContext.Current; - - if (requestPath.Length != 0) - { - action = requestPath.IndexOf('/') == -1 - ? requestPath - : requestPath.Substring(0, requestPath.IndexOf('/')); - } - - if (action == null) action = "default"; - - //交由C#处理 - - Type type = t.GetType(); - MethodInfo method = type.GetMethod( - String.Concat(action, isPostRequest ? "_post" : ""), - BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); - if (method != null) - { - try - { - if (method.ReturnType == typeof (String)) - { - httpContext.Response.Write( - method.Invoke(t, new object[] {context}) as String - ); - } - else - { - method.Invoke(t, new object[] {context}); - } - } - catch (Exception exc) - { - Logger.PrintException(httpContext.Request.RawUrl, exc); - } - - return true; - } - return false; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/AtNet.DevFw.Template.csproj b/src/core/AtNet.DevFw.Template/AtNet.DevFw.Template.csproj deleted file mode 100644 index cc76fab..0000000 --- a/src/core/AtNet.DevFw.Template/AtNet.DevFw.Template.csproj +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.30703</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{275CAE3E-A9E0-4DE0-8031-E9137BBDD693}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>AtNet.DevFw.Template</RootNamespace> - <AssemblyName>AtNet.DevFw.Template</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\dist\dll\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DocumentationFile>..\..\..\dist\dll\AtNet.DevFw.Template.XML</DocumentationFile> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\Bin\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup> - <SignAssembly>true</SignAssembly> - </PropertyGroup> - <PropertyGroup> - <AssemblyOriginatorKeyFile>template.snk</AssemblyOriginatorKeyFile> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Web" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Compiler\CompilerException.cs" /> - <Compile Include="Compiler\CSharpProvider.cs" /> - <Compile Include="Compiler\DotNetReferences.cs" /> - <Compile Include="Compiler\RemoteLoader.cs" /> - <Compile Include="Compiler\Text\File.cs" /> - <Compile Include="Compiler\Text\ReferenceInCode.cs" /> - <Compile Include="Compiler\Text\Regx.cs" /> - <Compile Include="old\Delegate.cs" /> - <Compile Include="Embed.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>Embed.resx</DependentUpon> - </Compile> - <Compile Include="old\Eval.cs" /> - <Compile Include="old\HttpDataContainer.cs" /> - <Compile Include="old\IDataContrainer.cs" /> - <Compile Include="old\ITemplateVariableObject.cs" /> - <Compile Include="old\MD5.cs" /> - <Compile Include="old\NormalDataContrainer.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="old\SimpleTplEngine.cs" /> - <Compile Include="old\TemplateCache.cs" /> - <Compile Include="old\ITemplate.cs" /> - <Compile Include="old\TemplateNames.cs" /> - <Compile Include="old\TemplateRegister.cs" /> - <Compile Include="old\TemplateAttribute.cs" /> - <Compile Include="old\TemplateUtility.cs" /> - <Compile Include="old\TemplateRegexUtility.cs" /> - <Compile Include="old\Config.cs" /> - <Compile Include="old\TemplatePage.cs" /> - <Compile Include="old\temp\~Example.cs" /> - <Compile Include="old\Template.cs" /> - <Compile Include="old\temp\EventLog.cs" /> - <Compile Include="old\test.cs" /> - <Compile Include="old\Variable.cs" /> - </ItemGroup> - <ItemGroup> - <EmbeddedResource Include="Embed.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Embed.Designer.cs</LastGenOutput> - </EmbeddedResource> - </ItemGroup> - <ItemGroup> - <Content Include="embed\SysTemplatePage.html" /> - </ItemGroup> - <ItemGroup> - <None Include="template.snk" /> - </ItemGroup> - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/CSharpProvider.cs b/src/core/AtNet.DevFw.Template/Compiler/CSharpProvider.cs deleted file mode 100644 index f63e55e..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/CSharpProvider.cs +++ /dev/null @@ -1,298 +0,0 @@ -using System; -using System.CodeDom.Compiler; -using System.Text; -using Microsoft.CSharp; -using AtNet.DevFw.Template.Compiler.Text; - -namespace AtNet.DevFw.Template.Compiler -{ - public class CSharpProvider : IDisposable - { - #region Private fields - - private CSharpCodeProvider _CSharpCodePrivoder; - private CompilerParameters _CompilerParameters = new CompilerParameters(); - private CompilerResults _Clr; - private string _Code; - private DateTime _LstFileTime = DateTime.Parse("1900-1-1"); - private AppDomain _AppDomain; - private string _AssemblyFileName = "DynamicTemp.dll"; - private bool _RemoveAssemblyFile; - private Encoding _SourceCodeFileEncoding = Encoding.Default; - private DotNetReferences _DotNetReferences = new DotNetReferences(); - - #endregion - - #region Public Properties - - /// <summary> - /// Manage the references - /// </summary> - public DotNetReferences References - { - get { return _DotNetReferences; } - } - - /// <summary> - /// Get or set the output assembly file name for the dynamic source code - /// </summary> - public string AssemblyFileName - { - get { return _AssemblyFileName; } - - set { _AssemblyFileName = value; } - } - - /// <summary> - /// The compilier parameters - /// </summary> - public CompilerParameters CompilerParameters - { - get { return _CompilerParameters; } - } - - /// <summary> - /// If this property set to true, - /// When the object intance from this class dispose, - /// the assembly File that is compiled will be deleted. - /// </summary> - public bool RemoveAssemblyFile - { - get { return _RemoveAssemblyFile; } - - set { _RemoveAssemblyFile = value; } - } - - /// <summary> - /// Get or set the encoding of source code file - /// </summary> - public Encoding SourceCodeFileEncoding - { - get { return _SourceCodeFileEncoding; } - - set { _SourceCodeFileEncoding = value; } - } - - #endregion - - #region Private methods - - private void LoadReference(string code) - { - foreach (string reference in References.GetReferences()) - { - if (reference != null) - { - if (_CompilerParameters.ReferencedAssemblies.IndexOf(reference) < 0) - { - _CompilerParameters.ReferencedAssemblies.Add(reference); - } - } - } - - foreach (string nameSpace in ReferenceInCode.GetNameSpacesInSourceCode(code)) - { - string referenceDll = References[nameSpace]; - if (referenceDll != null) - { - if (_CompilerParameters.ReferencedAssemblies.IndexOf(referenceDll) < 0) - { - _CompilerParameters.ReferencedAssemblies.Add(referenceDll); - } - } - } - } - - - /// <summary> - /// Create the instance named or inherited by typeFullName - /// </summary> - /// <param name="code">code string or source code file name</param> - /// <param name="typeFullName">the full name of type</param> - /// <param name="fromFile">from file or from code string</param> - /// <returns>instance object</returns> - /// <remarks>If the type named or inherited by typefullname does not exits, return null</remarks> - private object InnerCreateInstance(string code, string typeFullName, bool fromFile) - { - bool reCompile = false; - - if (fromFile) - { - reCompile = CompileFromFile(code); - } - else - { - reCompile = Compile(code); - } - - if (reCompile) - { - AppDomainSetup appDomainSetup; - - appDomainSetup = new AppDomainSetup(); - appDomainSetup.LoaderOptimization = LoaderOptimization.SingleDomain; - appDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; - appDomainSetup.ShadowCopyDirectories = appDomainSetup.ApplicationBase; - appDomainSetup.ShadowCopyFiles = "true"; - _AppDomain = AppDomain.CreateDomain(AssemblyFileName, null, appDomainSetup); - } - - RemoteLoader remoteLoader = - (RemoteLoader) _AppDomain.CreateInstance("Compiler.Dynamic", "RemoteAccess.RemoteLoader").Unwrap(); - return remoteLoader.Create(AssemblyFileName, typeFullName, null); - } - - #endregion - - #region Constructor - - public CSharpProvider() - { - } - - ~CSharpProvider() - { - try - { - Dispose(); - } - catch - { - } - } - - #endregion - - #region Public methods - - /// <summary> - /// Compiler From source code file - /// </summary> - /// <param name="sourceCodeFileName">The file name of source code</param> - /// <returns></returns> - public bool CompileFromFile(string sourceCodeFileName) - { - DateTime fileTime = System.IO.File.GetLastWriteTime(sourceCodeFileName); - - if (_LstFileTime == fileTime) - { - return false; - } - - _LstFileTime = fileTime; - - string code = File.ReadFileToString(sourceCodeFileName, SourceCodeFileEncoding); - - bool removeAssemblyFile = RemoveAssemblyFile; - RemoveAssemblyFile = true; - Dispose(); - RemoveAssemblyFile = removeAssemblyFile; - - _CSharpCodePrivoder = new CSharpCodeProvider(); - - LoadReference(code); - _Code = code; - _CompilerParameters.GenerateInMemory = false; - _CompilerParameters.OutputAssembly = AssemblyFileName; - - string[] files = new string[1]; - files[0] = sourceCodeFileName; - - _Clr = _CSharpCodePrivoder.CompileAssemblyFromFile(_CompilerParameters, files); - - if (_Clr.Errors.HasErrors) - { - throw new CompilerException(code, _Clr.Errors); - } - - return true; - } - - public bool Compile(string code) - { - if (code == _Code) - { - return false; - } - - bool removeAssemblyFile = RemoveAssemblyFile; - RemoveAssemblyFile = true; - Dispose(); - RemoveAssemblyFile = removeAssemblyFile; - - _Code = code; - _CSharpCodePrivoder = new CSharpCodeProvider(); - - LoadReference(code); - - _CompilerParameters.GenerateInMemory = false; - _CompilerParameters.OutputAssembly = AssemblyFileName; - - _Clr = _CSharpCodePrivoder.CompileAssemblyFromSource(_CompilerParameters, code); - - if (_Clr.Errors.HasErrors) - { - throw new CompilerException(code, _Clr.Errors); - } - - return true; - } - - - /// <summary> - /// Create the instance named or inherited by typeFullName - /// </summary> - /// <param name="code">source code string</param> - /// <param name="typeFullName">the full name of type</param> - /// <returns>instance object</returns> - /// <remarks>If the type named or inherited by typefullname does not exits, return null</remarks> - public object CreateInstance(string code, string typeFullName) - { - return InnerCreateInstance(code, typeFullName, false); - } - - /// <summary> - /// Create the instance named or inherited by typeFullName - /// </summary> - /// <param name="fileName">source code file</param> - /// <param name="typeFullName">the full name of type</param> - /// <returns>instance object</returns> - /// <remarks>If the type named or inherited by typefullname does not exits, return null</remarks> - public object CreateInstanceFromFile(string fileName, string typeFullName) - { - return InnerCreateInstance(fileName, typeFullName, true); - } - - #endregion - - #region IDisposable Members - - public void Dispose() - { - if (_AppDomain != null) - { - AppDomain.Unload(_AppDomain); - _AppDomain = null; - } - - _Clr = null; - - GC.Collect(); - - if (RemoveAssemblyFile) - { - if (System.IO.File.Exists(AssemblyFileName)) - { - System.IO.File.Delete(AssemblyFileName); - } - - if (System.IO.File.Exists(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb")) - { - System.IO.File.Delete(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb"); - } - } - } - - #endregion - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/CompilerException.cs b/src/core/AtNet.DevFw.Template/Compiler/CompilerException.cs deleted file mode 100644 index c9d2100..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/CompilerException.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.CodeDom.Compiler; -using System.Text; - -namespace AtNet.DevFw.Template.Compiler -{ - public class CompilerException : Exception - { - private string _Code; - private CompilerErrorCollection _Errors; - - public string Code - { - get { return _Code; } - } - - public CompilerErrorCollection Errors - { - get { return _Errors; } - } - - public CompilerException(string code, CompilerErrorCollection errors) - { - _Code = code; - _Errors = errors; - } - - public override string ToString() - { - StringBuilder message = new StringBuilder(); - - foreach (CompilerError err in _Errors) - { - message.AppendFormat("({0}): error {1}: {2}", err.Line, err.ErrorNumber, err.ErrorText); - } - - return message.ToString(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/DotNetReferences.cs b/src/core/AtNet.DevFw.Template/Compiler/DotNetReferences.cs deleted file mode 100644 index faf5f9f..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/DotNetReferences.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using AtNet.DevFw.Template.Compiler.Text; - -namespace AtNet.DevFw.Template.Compiler -{ - public class DotNetReferences - { - #region Private fields - - private List<String> _References = new List<string>(); - - #endregion - - #region Private methods - - #endregion - - #region Public methods - - public void Add(string reference) - { - _References.Add(reference); - } - - public void Remove(string reference) - { - _References.Remove(reference); - } - - public IEnumerable<string> GetReferences() - { - foreach (string reference in _References) - { - yield return reference; - } - } - - public string this[string nameSpace] - { - get { return ReferenceInCode.GetDefaultReferenceDllName(nameSpace); } - } - - #endregion - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/RemoteLoader.cs b/src/core/AtNet.DevFw.Template/Compiler/RemoteLoader.cs deleted file mode 100644 index 5d898d9..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/RemoteLoader.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Reflection; - -namespace AtNet.DevFw.Template.Compiler -{ - /// <summary> - /// Factory class to create objects exposing IRemoteInterface - /// </summary> - internal class RemoteLoader : MarshalByRefObject - { - private Type _Type; - - public RemoteLoader() - { - } - - /// <summary> Factory method to create an instance of the type whose name is specified, - /// using the named assembly file and the constructor that best matches the specified parameters. </summary> - /// <param name="assemblyFile"> The name of a file that contains an assembly where the type named typeName is sought. </param> - /// <param name="typeName"> The name of the preferred type. </param> - /// <param name="constructArgs"> An array of arguments that match in number, order, and type the parameters of the constructor to invoke, or null for default constructor. </param> - /// <returns> The return value is the created object represented as ILiveInterface. </returns> - public object Create(string assemblyFile, string typeName, object[] constructArgs) - { - if (_Type == null) - { - string asmName = System.IO.Path.GetFileNameWithoutExtension(assemblyFile); - - AppDomain.CurrentDomain.Load(asmName); - - Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies(); - Assembly asm = null; - - foreach (Assembly a in asms) - { - if (System.IO.Path.GetFileName(a.Location) - .Equals(assemblyFile, StringComparison.CurrentCultureIgnoreCase)) - { - asm = a; - } - } - - Type[] types = asm.GetTypes(); - - Type matchType = null; - - foreach (Type type in types) - { - if (type.FullName == typeName) - { - matchType = type; - break; - } - - if (type.BaseType != null) - { - if (type.BaseType.FullName == typeName) - { - matchType = type; - break; - } - } - - if (type.GetInterface(typeName) != null) - { - matchType = type; - break; - } - } - - if (matchType == null) - { - return null; - } - - _Type = matchType; - } - - return Activator.CreateInstance(_Type); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/Text/File.cs b/src/core/AtNet.DevFw.Template/Compiler/Text/File.cs deleted file mode 100644 index 926c21c..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/Text/File.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.IO; -using System.Text; - -namespace AtNet.DevFw.Template.Compiler.Text -{ - internal class File - { - public static String ReadFileToString(String fileName, Encoding encoding) - { - using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) - { - StreamReader sr = new StreamReader(fs, encoding); - return sr.ReadToEnd(); - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/Text/ReferenceInCode.cs b/src/core/AtNet.DevFw.Template/Compiler/Text/ReferenceInCode.cs deleted file mode 100644 index 63c9491..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/Text/ReferenceInCode.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System.Collections.Generic; - -namespace AtNet.DevFw.Template.Compiler.Text -{ - internal class ReferenceInCode - { - private static readonly string[] _SystemSpecRefs = - { - "System.Configuration", - "System.Configuration.Install", - "System.Data", - "System.Data.SqlClient", - "System.Data.SqlXml", - "System.Deployment", - "System.Design", - "Sysemt.DirecoryServices", - "System.DirectoryServices.Protocols", - "System.Drawing", - "System.Drawing.Design", - "System.EnterpriseServices", - "System.Management", - "System.Messaging", - "System.Runtime.Remoting", - "System.Runtime.Serialization.Formatters.Soap", - "System.Security", - "System.ServiceProcess", - "System.Transactions", - "System.Web", - "System.Web.Mobile", - "System.Web.RegularExpressions", - "System.Web.Services", - "System.Windows.Forms", - "System.Xml" - }; - - private static string GetSystemReferenceDllName(string namespaceText) - { - foreach (string sysSpecRef in _SystemSpecRefs) - { - if (namespaceText.IndexOf(sysSpecRef) == 0) - { - return sysSpecRef + ".dll"; - } - } - - return "System.dll"; - } - - public static List<string> GetNameSpacesInSourceCode(string code) - { - return Regx.GetMatchStrings(code, @"using\s+(.+?)\s*;", false); - } - - public static string GetDefaultReferenceDllName(string namespaceText) - { - namespaceText = namespaceText.Trim(); - - if (namespaceText.IndexOf("System") == 0) - { - return GetSystemReferenceDllName(namespaceText); - } - else - { - return namespaceText + ".dll"; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Compiler/Text/Regx.cs b/src/core/AtNet.DevFw.Template/Compiler/Text/Regx.cs deleted file mode 100644 index 475af6c..0000000 --- a/src/core/AtNet.DevFw.Template/Compiler/Text/Regx.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Template.Compiler.Text -{ - internal class Regx - { - public static List<string> GetMatchStrings(String text, String regx, - bool ignoreCase) - { - List<string> output = new List<string>(); - - Regex reg; - - int index = 0; - int begin = 0; - index = regx.IndexOf("(.+)"); - if (index < 0) - { - index = regx.IndexOf("(.+?)"); - if (index >= 0) - { - begin = index + 5; - } - } - else - { - begin = index + 4; - } - - if (index >= 0) - { - String endText = regx.Substring(begin); - - if (GetMatch(text, endText, ignoreCase) == "") - { - return output; - } - } - - if (ignoreCase) - { - reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); - } - else - { - reg = new Regex(regx, RegexOptions.Singleline); - } - - MatchCollection m = reg.Matches(text); - - if (m.Count == 0) - { - return output; - } - - for (int j = 0; j < m.Count; j++) - { - int count = m[j].Groups.Count; - - for (int i = 1; i < count; i++) - { - output.Add(m[j].Groups[i].Value.Trim()); - } - } - - return output; - } - - public static String GetMatch(String text, String regx, bool ignoreCase) - { - Regex reg; - - int index = 0; - int begin = 0; - index = regx.IndexOf("(.+)"); - if (index < 0) - { - index = regx.IndexOf("(.+?)"); - if (index >= 0) - { - begin = index + 5; - } - } - else - { - begin = index + 4; - } - - if (index >= 0) - { - String endText = regx.Substring(begin); - - if (endText != "") - { - if (GetMatch(text, endText, ignoreCase) == "") - { - return ""; - } - } - } - - if (ignoreCase) - { - reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); - } - else - { - reg = new Regex(regx, RegexOptions.Singleline); - } - - String ret = ""; - Match m = reg.Match(text); - - if (m.Groups.Count > 0) - { - ret = m.Groups[m.Groups.Count - 1].Value; - } - - return ret; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/Embed.Designer.cs b/src/core/AtNet.DevFw.Template/Embed.Designer.cs deleted file mode 100644 index 44b13ac..0000000 --- a/src/core/AtNet.DevFw.Template/Embed.Designer.cs +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// 此代码由工具生成。 -// 运行时版本:4.0.30319.33440 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace AtNet.DevFw.Template { - using System; - - - /// <summary> - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// </summary> - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Embed { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Embed() { - } - - /// <summary> - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AtNet.DevFw.Template.Embed", typeof(Embed).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// <summary> - /// 查找类似 <!DOCTYPE HTML> - ///<html> - ///<head> - /// <title>${title} - ASP.NET模板系统 - Power by opsoft</title> - /// <style type="text/css"> - /// body { margin: 0; } - /// - /// * { - /// font-size: 12px; - /// font-family: Tahoma; - /// } - /// - /// .center { text-align: Center; } - /// - /// #footer { - /// background: #e5e5e5; - /// color: #006699; - /// text-align: center; - /// line-height: 30px; - /// } - /// - /// a { - /// color: #006699; - /// outline: no [字符串的其余部分被截断]"; 的本地化字符串。 - /// </summary> - internal static string SysTemplatePage { - get { - return ResourceManager.GetString("SysTemplatePage", resourceCulture); - } - } - } -} diff --git a/src/core/AtNet.DevFw.Template/Properties/AssemblyInfo.cs b/src/core/AtNet.DevFw.Template/Properties/AssemblyInfo.cs deleted file mode 100644 index 8a29d53..0000000 --- a/src/core/AtNet.DevFw.Template/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Reflection; -using System.Security; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -//publicKey:7baff2e0bbd0ef52 - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 - -[assembly: AllowPartiallyTrustedCallers] -[assembly: AssemblyTitle("ASP.NET模板引擎 v2.2")] -[assembly: AssemblyDescription("asp.net模板引擎")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("OPSoft(www.AtNet.DevFwcc)")] -[assembly: AssemblyProduct("OPSoft.Template")] -[assembly: AssemblyCopyright("Copyright © OPSoft 2013")] -[assembly: AssemblyTrademark("OPSoft")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 - -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID - -[assembly: Guid("129b8456-d420-43e2-9376-b16530a1d6af")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("2.3.0.0")] -[assembly: AssemblyFileVersion("2.3.0.0")] \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/embed/SysTemplatePage.html b/src/core/AtNet.DevFw.Template/embed/SysTemplatePage.html deleted file mode 100644 index 59b9f07..0000000 --- a/src/core/AtNet.DevFw.Template/embed/SysTemplatePage.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>${title} - ASP.NET模板系统 - Power by opsoft - - - -${content} - - - \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/Config.cs b/src/core/AtNet.DevFw.Template/old/Config.cs deleted file mode 100644 index c9e9af5..0000000 --- a/src/core/AtNet.DevFw.Template/old/Config.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:ITemplate.cs -// Author:newmin -// Create:2011/06/05 -// - -namespace AtNet.DevFw.Template -{ - public delegate void TemplatePageHandler(TemplatePage page); - - public class Config - { - private static readonly string _version; - - public static string Version - { - get { return "2.1"; } - } - - /// - /// 是否启用Html压缩 - /// - public static bool EnabledCompress = true; - - /// - /// 是否将模板缓存 - /// - public static bool EnabledCache = true; - - /// - /// 是否共享URL参数值 - /// - public static bool UrlQueryShared = true; - - /// - /// 共享HttpItem传递的数据 - /// - public static bool HttpItemShared = true; - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/Delegate.cs b/src/core/AtNet.DevFw.Template/old/Delegate.cs deleted file mode 100644 index 88071f8..0000000 --- a/src/core/AtNet.DevFw.Template/old/Delegate.cs +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:delegate.cs -// Author:newmin -// Create:2011/06/28 -// - -namespace AtNet.DevFw.Template -{ - /// - /// 模板呈现处理 - /// - /// 模板内容 - /// 数据对象 - public delegate void TemplateHandler(T obj, ref string templateContent); - - public delegate void TemplateBehavior(); -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/Eval.cs b/src/core/AtNet.DevFw.Template/old/Eval.cs deleted file mode 100644 index 9b98610..0000000 --- a/src/core/AtNet.DevFw.Template/old/Eval.cs +++ /dev/null @@ -1,444 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2013/09/05 -// - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text.RegularExpressions; -using System.Web; - -namespace AtNet.DevFw.Template -{ - public sealed class Eval - { - /// - /// 添加到数据项 - /// - /// - public static void ToItem(string expression) - { - //$item:x=123 - } - - /// - /// 赋值到变量 - /// - /// - public static string SetToVariable(IDataContrainer dc, string content) - { - //正则模式,支持以下 - // //$menu="123456\" f" sdf - // $menu=12 fsdf - // $menu=item:123456 - // $menu=>getmenu(test,item,get) - const string expressionPattern = - "(/*/*)\\$([_a-zA-Z][a-zA-Z0-9_]*)=(\"(\\\\\"|[^\"\\\\\\n])*\"|[^<>\\s\\\\\\n\"\\$/]+)(\\s+\\B)*"; - //设置表达式 - const string specialVarPattern = "(item|cache|query):(.+)"; //特殊数据 - - string outHtml, - varName, - varValue, - varKey; - - Match valueMatch; - - outHtml = Regex.Replace(content, expressionPattern, m => - { - //注释 - if (m.Groups[1].Value != "") return String.Empty; - - - //获取变量及表达式 - varName = m.Groups[2].Value; - varValue = m.Groups[3].Value; - - if (Regex.IsMatch(varValue, specialVarPattern, RegexOptions.IgnoreCase)) - { - valueMatch = Regex.Match(varValue, specialVarPattern, RegexOptions.IgnoreCase); - varKey = valueMatch.Groups[2].Value; - - switch (valueMatch.Groups[1].Value.ToLower()) - { - case "item": - dc.DefineVariable(varName, HttpContext.Current.Items[varKey]); - break; - case "cache": - dc.DefineVariable(varName, HttpRuntime.Cache[varKey]); - break; - case "query": - dc.DefineVariable(varName, HttpContext.Current.Request[varKey]); - break; - } - } - else - { - string varRealValue = Regex.Replace(varValue, "\\B\"|\"\\B", String.Empty); - - //如果为字符,否则读取指定值的变量 - if (Regex.IsMatch(varValue, "\\B\"|\"\\B")) - { - dc.DefineVariable(varName, varRealValue); - } - else - { - object obj = dc.GetVariable(varRealValue); - if (obj != null) - { - if (obj is Variable) - { - dc.DefineVariable(varName, (Variable) obj); - } - else - { - dc.DefineVariable(varName, obj.ToString()); - } - } - else - { - string message = ""; - int i = 0; - foreach (string key in dc.GetDefineVariable().Keys) - { - message += (++i == 1 ? "" : "," + key); - } - throw new NotSupportedException("数据引用键错误:" + m.Value + "\n" - + - (message != "" - ? "受支持可引用的数据键包括" + message + "\n使用\"$" + varName + - "=>键\"进行调用!" - : "")); - } - } - } - - return String.Empty; - }, RegexOptions.Singleline); - return outHtml; - } - - /// - /// 执行方法并将返回值赋予变量 - /// - /// - /// - /// - public static string EvalMethodToVar(IDataContrainer dc, string content, object data) - { - //正则模式,支持以下 - // //$menu="123456\" f" sdf - // $menu=12 fsdf - // $menu=item:123456 - // $menu=>getmenu(test,item,get) - const string expressionPattern = - "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)=>([a-zA-Z][a-zA-Z0-9_]*)\\((([^\\)]|\\\\\\))*)\\)(\\s+\\B)*"; //设置表达式 - - string outHtml, - varName, - methodName, - paramArray; - - Type type = data.GetType(); - MethodInfo method; - Type[] parameterTypes; - object[] parameters; - int parametersNum; - - - outHtml = Regex.Replace(content, expressionPattern, m => - { - //注释 - if (m.Groups[1].Value != "") return String.Empty; - - - //获取变量及表达式 - varName = m.Groups[2].Value; - methodName = m.Groups[3].Value; - paramArray = m.Groups[4].Value.Replace("\\,", "__CSP__"); - - parameters = paramArray.Trim().Length == 0 ? new object[0] : paramArray.Split(','); - parametersNum = parameters.Length; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parametersNum]; - for (int i = 0; i < parametersNum; i++) - { - parameterTypes[i] = typeof (String); - parameters[i] = - Regex.Replace(parameters[i].ToString(), "\\B\"|\"\\B", String.Empty).Replace("__CSP__", ","); - } - - method = type.GetMethod( - methodName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - if (method != null) - { - Type returnType = method.ReturnType; - if (returnType != typeof (void)) - { - object result = method.Invoke(data, parameters); - if (result != null) - { - if (returnType.IsPrimitive || returnType == typeof (String)) - { - dc.DefineVariable(varName, (result ?? "").ToString()); - } - else - { - dc.DefineVariable(varName, - new Variable {Key = varName, Value = result, Type = returnType}); - } - } - } - } - - /* - else - { - //throw new MissingMethodException("在对象中找不到"); - - Config.DC.DefineVar(varName, "在对象中找不到方法"+methodName+""+ - (parametersNum==0?"":",参数"+parametersNum.ToString()+"个") - +"。"); - } - */ - - return String.Empty; - }, RegexOptions.Singleline); - return outHtml; - } - - /// - /// 执行方法并将返回值赋予变量 - /// - /// - /// - /// - [Obsolete] - public static string EntityVariable(IDataContrainer dc, string content) - { - //正则模式,支持以下 - // //$menu="123456\" f" sdf - // $menu=12 fsdf - // $menu=item:123456 - // $menu=>getmenu(test,item,get) - const string expressionPattern = "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)=>([a-zA-Z0-9_]+)(\\s+\\B)*"; //设置表达式 - - string outHtml = content, - varName, - entityName; - - - outHtml = Regex.Replace(content, expressionPattern, m => - { - //注释 - if (m.Groups[1].Value != "") return String.Empty; - - //获取变量及表达式 - varName = m.Groups[2].Value; - entityName = m.Groups[3].Value; - - object obj = dc.GetVariable(entityName); - if (obj != null && obj is Variable) - { - Variable var = (Variable) obj; - obj = var.Value; - Type type = var.Type; - - //解析属性的值 - PropertyInfo[] pros = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); - foreach (PropertyInfo pro in pros) - { - outHtml = Regex.Replace(outHtml, - String.Format("\\$\\{0}{1}\\.{1}{2}", "\\{", varName, pro.Name, "\\}"), - m2 => { return (pro.GetValue(obj, null) ?? "").ToString(); }, RegexOptions.IgnoreCase); - } - } - return String.Empty; - }, RegexOptions.Singleline); - return outHtml; - } - - - public static string Complie(IDataContrainer dc, string html, object data) - { - string outHtml; - - //======= 设置变量 ======// - outHtml = SetToVariable(dc, html); - - //======= 求方法 =======// - if (data != null) - { - outHtml = EvalMethodToVar(dc, outHtml, data); - } - - // outHtml = EntityVariable(dc, outHtml); - - return outHtml; - } - - internal static string ResolveEntityProperties(IDataContrainer dc, string templateHtml) - { - const string keyParttern = "\\$\\{([a-zA-Z][a-zA-Z0-9_]*)\\.([A-Z_a-z][a-zA-Z0-9_]*)\\}"; - IDictionary entityKeys = new Dictionary(); - IDictionary entityValues = new Dictionary(); - - string entityName, proName; - Variable var; - PropertyInfo pro; - object varValue; - - templateHtml = Regex.Replace(templateHtml, keyParttern, m => - { - entityName = m.Groups[1].Value; - proName = m.Groups[2].Value; - - if (!entityValues.Keys.Contains(entityName)) - { - varValue = dc.GetVariable(entityName); - entityValues.Add(entityName, varValue != null ? (Variable) varValue : default(Variable)); - } - - var = entityValues[entityName]; - if (var.Value != null) - { - //解析属性的值 - pro = var.Type.GetProperty(entityName, - BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (pro != null) - { - return (pro.GetValue(var.Value, null) ?? "").ToString(); - } - - string message = ""; - int i = 0; - foreach ( - PropertyInfo p in - var.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | - BindingFlags.IgnoreCase)) - { - message += (++i == 1 ? "" : ",") + p.Name; - } - - throw new NotSupportedException("不支持的属性调用${" + var.Key + "." + proName + "}\n" + var.Key + - "支持可选的属性:" + message + "\n使用\"${" + var.Key + ".属性}\"进行调用!"); - } - return String.Empty; - }); - return templateHtml; - } - - /// - /// 解析变量 - /// - /// - /// - /// - internal static string ResolveVariable(string templateHtml, Variable variable) - { - // - // ${obj.name}; - // 字典方式 ${obj.__dict__[key]} - // 不支持的属性,默认以_开头 - // a-z下划线或中文开头 - // - string keyParttern = "\\$\\{" + variable.Key + - "\\.([A-Z_a-z\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*|__dict__\\[([^\\]]+)\\])\\}"; - string proName, dictKey; - PropertyInfo pro = null; - IDictionary propDict = null; - - templateHtml = Regex.Replace(templateHtml, keyParttern, m => - { - proName = m.Groups[1].Value; - if (variable.Value != null) - { - //解析属性的值 - pro = variable.Type.GetProperty(proName, - BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.IgnoreCase); - if (pro != null) - { - return (pro.GetValue(variable.Value, null) ?? "").ToString(); - } - - #region 获取字典 - - if (!String.IsNullOrEmpty(m.Groups[2].Value)) - { - //获取属性字典,并缓存 - if (propDict == null) - { - pro = variable.Type.GetProperty("__dict__", - BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | - BindingFlags.IgnoreCase); - if (pro != null) - { - if (pro.PropertyType != typeof (IDictionary)) - { - throw new TypeLoadException("__dict__属性的类型应为IDictionary"); - } - else - { - propDict = pro.GetValue(variable.Value, null) as IDictionary; - } - } - else - { - //未定义字典 - throw new TypeLoadException("字典不存在!"); - } - } - - //获取值 - dictKey = m.Groups[2].Value; - if (propDict.ContainsKey(dictKey)) - { - return propDict[dictKey]; - } - else - { - //字典不存在值 - return String.Empty; - } - } - - #endregion - - string message = ""; - TemplateVariableFieldAttribute[] attr; - int i = 0; - foreach ( - PropertyInfo p in - variable.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | - BindingFlags.NonPublic | BindingFlags.IgnoreCase)) - { - if (!p.Name.StartsWith("_")) - { - attr = - (TemplateVariableFieldAttribute[]) - p.GetCustomAttributes(typeof (TemplateVariableFieldAttribute), true); - //message += (++i == 1 ? "" : ",") + p.Name; - message += (++i == 1 ? "\n=================================\n" : "\n") + p.Name + "\t : \t" + - (attr.Length > 0 ? attr[0].Descript : ""); - } - } - - throw new NotSupportedException("不支持的属性调用${" + variable.Key + "." + proName + "}\n\n" + variable.Key + - "支持下列可选属性:" + message + "\n\n注:使用\"${" + variable.Key + - ".属性}\"进行调用,属性不区分大小写。"); - } - return m.Value; - }); - return templateHtml; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/HttpDataContainer.cs b/src/core/AtNet.DevFw.Template/old/HttpDataContainer.cs deleted file mode 100644 index d9364e4..0000000 --- a/src/core/AtNet.DevFw.Template/old/HttpDataContainer.cs +++ /dev/null @@ -1,124 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2013/09/05 -// - -using System; -using System.Collections.Generic; -using System.Web; - -namespace AtNet.DevFw.Template -{ - /// - /// HTTP数据容器 - /// - internal sealed class HttpDataContrainer : IDataContrainer - { - private IDictionary varDict; - - public HttpDataContrainer() - { - object obj = HttpContext.Current.Items["__tpl_var_define__"]; - if (obj != null) - { - varDict = obj as IDictionary; - } - else - { - varDict = new Dictionary(); - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - } - } - - public string GetTemplatePageCacheContent(string templateID) - { - if (TemplateCache.templateDictionary.ContainsKey(templateID)) - { - return HttpRuntime.Cache["tpl_cache_" + templateID] as string; - } - return null; - } - - public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) - { - HttpRuntime.Cache.Insert("tpl_cache_" + templateID, content, - new System.Web.Caching.CacheDependency(dependFileName), DateTime.Now.AddDays(30), TimeSpan.Zero); - } - - public void DefineVariable(string key, T value) - { - if (value == null) return; //防止非法参数 - - /* - IDictionary varDict; - object obj = HttpContext.Current.Items["__tpl_var_define__"]; - if (obj != null) - { - varDict = obj as IDictionary; - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - } - else - { - varDict = new Dictionary(); - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - }*/ - - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - - //如果不是基元类型,则保存类型 - Type t = typeof (T); - if (t == typeof (String) || t.IsPrimitive) - { - varDict.Add(key, value); - } - else - { - varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); - } - - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - } - - public void DefineVariable(string key, Variable variable) - { - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - variable.Key = key; - varDict.Add(key, variable); - HttpContext.Current.Items["__tpl_var_define__"] = varDict; - } - - public object GetVariable(string key) - { - if (this.varDict.Keys.Contains(key)) - { - return varDict[key]; - } - return null; - } - - public IDictionary GetDefineVariable() - { - /* - object obj = HttpContext.Current.Items["__tpl_var_define__"]; - if (obj != null) - { - return obj as IDictionary; - } - return null; - */ - - return this.varDict; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/IDataContrainer.cs b/src/core/AtNet.DevFw.Template/old/IDataContrainer.cs deleted file mode 100644 index 21b50f3..0000000 --- a/src/core/AtNet.DevFw.Template/old/IDataContrainer.cs +++ /dev/null @@ -1,59 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2013/09/05 -// - -using System.Collections.Generic; - -namespace AtNet.DevFw.Template -{ - /// - /// IDataContainer接口 - /// - public interface IDataContrainer - { - /// - /// 获取模板页缓存内容 - /// - /// - /// - string GetTemplatePageCacheContent(string templateID); - - /// - /// 设置模板页缓存内容 - /// - /// - /// - /// - void SetTemplatePageCacheContent(string templateID, string content, string dependFileName); - - /// - /// 设置变量 - /// - /// - /// - void DefineVariable(string key, T variable); - - /// - /// 定义变量 - /// - /// - /// - void DefineVariable(string key, Variable variable); - - /// - /// 获取变量 - /// - /// - /// - object GetVariable(string key); - - /// - /// 获取自定义变量 - /// - /// - IDictionary GetDefineVariable(); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/ITemplate.cs b/src/core/AtNet.DevFw.Template/old/ITemplate.cs deleted file mode 100644 index 1a10746..0000000 --- a/src/core/AtNet.DevFw.Template/old/ITemplate.cs +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:ITemplate.cs -// Author:newmin -// Create:2011/06/05 -// - -namespace AtNet.DevFw.Template -{ - public interface ITemplate - { - /// - /// 读取模板 - /// - /// - /// - string Read(string templateID); - - /// - /// 压缩模板 - /// - /// - void Compress(string templateID); - - /// - /// 压缩Html - /// - /// - string CompressHtml(string html); - - /// - /// 根据模板路径获取模板的ID - /// 计算规则:小写文件名的16位md5 - /// - /// - /// - string GetTemplateID(string filePath); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/ITemplateVariableObject.cs b/src/core/AtNet.DevFw.Template/old/ITemplateVariableObject.cs deleted file mode 100644 index 2943bb5..0000000 --- a/src/core/AtNet.DevFw.Template/old/ITemplateVariableObject.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace AtNet.DevFw.Template -{ - /// - /// 模板变量对象 - /// - public interface ITemplateVariableObject - { - /// - /// 数据字典 - /// - IDictionary __dict__ { get; } - - /// - /// 添加数据 - /// - /// - /// - void AddData(string key, string data); - - /// - /// 删除数据 - /// - /// - void RemoveData(string key); - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/MD5.cs b/src/core/AtNet.DevFw.Template/old/MD5.cs deleted file mode 100644 index ef771a0..0000000 --- a/src/core/AtNet.DevFw.Template/old/MD5.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Text; - -namespace AtNet.DevFw.Template -{ - internal class MD5 - { - /// - /// 用md5加密 - /// - /// - /// - public static string Encode(String str) - { - StringBuilder sb = new StringBuilder(); - var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 - // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  - byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); - foreach (byte b in s) - { - sb.Append(b.ToString("x2")); - } - return sb.ToString(); - } - - /// - /// 16位MD5加密 - /// - /// - /// - public static string EncodeTo16(String str) - { - //取32位的中间部分 - var md5 = System.Security.Cryptography.MD5.Create(); - return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8) - .Replace("-", String.Empty); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/NormalDataContrainer.cs b/src/core/AtNet.DevFw.Template/old/NormalDataContrainer.cs deleted file mode 100644 index 59399e0..0000000 --- a/src/core/AtNet.DevFw.Template/old/NormalDataContrainer.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace AtNet.DevFw.Template -{ - internal class NormalDataContrainer : IDataContrainer - { - private IDictionary varDict; - - public string GetTemplatePageCacheContent(string templateID) - { - throw new Exception(); - } - - public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) - { - } - - public void DefineVariable(string key, T value) - { - if (value == null) return; //防止非法参数 - - - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - - //如果不是基元类型,则保存类型 - Type t = typeof (T); - if (t == typeof (String) || t.IsPrimitive) - { - varDict.Add(key, value); - } - else - { - varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); - } - } - - public void DefineVariable(string key, Variable variable) - { - if (varDict.Keys.Contains(key)) - { - throw new ArgumentException("模板变量已定义。", key); - } - variable.Key = key; - varDict.Add(key, variable); - } - - public object GetVariable(string key) - { - if (this.varDict.Keys.Contains(key)) - { - return varDict[key]; - } - return null; - } - - public IDictionary GetDefineVariable() - { - if (varDict == null) - { - varDict = new Dictionary(); - } - return varDict; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/SimpleTplEngine.cs b/src/core/AtNet.DevFw.Template/old/SimpleTplEngine.cs deleted file mode 100644 index 1961e3f..0000000 --- a/src/core/AtNet.DevFw.Template/old/SimpleTplEngine.cs +++ /dev/null @@ -1,255 +0,0 @@ -/* -* Copyright(C) 2010-2012 S1N1.COM -* -* File Name : SimpleTemplateEngine -* Author : Administrator -* Create : 2012/10/26 23:49:52 -* Description : -* Mofify: -* 2013-04-11 10:29 newmin [+]: 添加TemplateAttribute特性判断是否为返回数据, 返回数据的方法不再限制为私有 -* 2013-04-23 22:45 newmin [+]: 支持私有,公共,受保护的成员调用 -* 2013-04-23 22:46 newmin [+]: 支持int参数,如$tpl(3,'c,a,r') -* 2013-04-26 17:15 newmin [+]: 支持method -*/ - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Template -{ - /// - /// 简单模板解析类 - /// - public sealed class SimpleTplEngine - { - /// - /// 包含方法的类型实例 - /// - private object classInstance; - - public SimpleTplEngine(object classInstance, bool counter) - { - this.classInstance = classInstance; - if (counter) - { - this.Count = new List(); - } - } - - /// - /// 计数 - /// - public IList Count; - - - /// - /// 数据列正则 - /// - private static Regex fieldRegex = new Regex("{([a-z0-9_\\]\\[\u4e00-\u9fa5]+)}"); - - /// - /// 编译模版方法 - /// - /// - private void ComplieTemplateMethod(ref string html) - { - //返回结果 - const string methodPattern = "\\@([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)\\s*([\\S\\s]+)@each\\s*off"; - //@each(id){ $nav() } - const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; - - Regex methodRegex = new Regex(methodPattern); //方法正则 - - //如果不包括方法,则直接返回 - if (!methodRegex.IsMatch(html)) - { - return; - } - - - Regex paramRegex = new Regex(paramPattern); //参数正则 - - Type type = this.classInstance.GetType(); - MethodInfo method; - string tagName; - string tagFormat; - object[] parameters; - Type[] parameterTypes; //参数类型数组 - MatchCollection paramMcs; - - - html = methodRegex.Replace(html, m => - { - tagName = m.Groups[1].Value; - tagFormat = m.Groups[3].Value; - - //获得参数 - paramMcs = paramRegex.Matches(m.Groups[2].Value); - - //参数,多添加一个tagFormat参数 - parameters = new object[paramMcs.Count + 1]; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parameters.Length]; - for (int i = 0; i < parameterTypes.Length; i++) - { - parameterTypes[i] = typeof (String); - } - - method = type.GetMethod( - tagName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - - //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 - if (method == null || method.GetCustomAttributes(typeof (TemplateMethodAttribute), true) == null) - { - return m.Value; - } - else - { - //数字参数 - string intParamValue; - //则给参数数组赋值 - for (int i = 0; i < paramMcs.Count; i++) - { - intParamValue = paramMcs[i].Groups[2].Value; - if (intParamValue != String.Empty) - { - parameters[i] = intParamValue; - } - else - { - parameters[i] = paramMcs[i].Groups[1].Value; - } - } - - parameters[parameters.Length - 1] = tagFormat; - - if (this.Count != null) - this.Count.Add(String.Format("Method:{0},{1:mmssfff}", method.Name, DateTime.Now)); - - //执行方法并返回结果 - return method.Invoke(this.classInstance, parameters).ToString(); - } - }); - } - - /// - /// 执行解析模板内容 - /// - /// - /// - public void ComplieTemplateTag(ref string html) - { - //返回结果 - - const string tagPattern = "\\$([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; - const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; - - Regex tagRegex, - paramRegex; - - tagRegex = new Regex(tagPattern); //方法正则 - - if (!tagRegex.IsMatch(html)) - { - return; - } - - paramRegex = new Regex(paramPattern); //参数正则 - - Type type = this.classInstance.GetType(); - MethodInfo method; - string tagName; - object[] parameters; - Type[] parameterTypes; //参数类型数组 - MatchCollection paramMcs; - - html = tagRegex.Replace(html, m => - { - tagName = m.Groups[1].Value; - - //获得参数 - paramMcs = paramRegex.Matches(m.Groups[2].Value); - - //参数 - parameters = new object[paramMcs.Count]; - - //查找是否存在方法(方法参数均为string类型) - parameterTypes = new Type[parameters.Length]; - for (int i = 0; i < parameterTypes.Length; i++) - { - parameterTypes[i] = typeof (String); - } - - method = type.GetMethod( - tagName, - BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, - null, - parameterTypes, - null); - - - //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 - if (method == null || method.GetCustomAttributes(typeof (TemplateTagAttribute), true) == null) - { - return m.Value; - } - else - { - //数字参数 - string intParamValue; - //则给参数数组赋值 - for (int i = 0; i < paramMcs.Count; i++) - { - intParamValue = paramMcs[i].Groups[2].Value; - if (intParamValue != String.Empty) - { - parameters[i] = intParamValue; - } - else - { - parameters[i] = paramMcs[i].Groups[1].Value; - } - } - - if (this.Count != null) - this.Count.Add(String.Format("Tag:{0},{1:mmssfff}", method.Name, DateTime.Now)); - - //执行方法并返回结果 - return method.Invoke(this.classInstance, parameters).ToString(); - } - }); - } - - /// - /// 执行解析模板内容 - /// - /// - /// - public string Execute(string html) - { - string resultHtml = html; - this.ComplieTemplateMethod(ref resultHtml); - this.ComplieTemplateTag(ref resultHtml); - return resultHtml; - } - - /// - /// 替换列中的模板字符 - /// - /// - /// - /// - public static string FieldTemplate(string format, Func func) - { - return fieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/Template.cs b/src/core/AtNet.DevFw.Template/old/Template.cs deleted file mode 100644 index d4cf841..0000000 --- a/src/core/AtNet.DevFw.Template/old/Template.cs +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:Template.cs -// Author:newmin -// Create:2011/06/13 -// - -using System; -using System.IO; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Template -{ - /// - /// 模板实体 - /// - public sealed class Template - { - /// - /// 模板ID - /// - public string ID { get; set; } - - /// - /// 模板路径 - /// - public string FilePath { get; set; } - - /// - /// 模板注释(第一个html注释) - /// - public string Comment - { - get - { - //读取文件开头部分注释 - Regex reg = new Regex("", RegexOptions.Multiline); - - //保存内容到变量,避免重复读取 - string content = null; - - using (StreamReader sr = new StreamReader(FilePath)) - { - content = sr.ReadToEnd(); - } - Match match = reg.Match(content); - - - return match == null ? String.Empty : match.Groups[1].Value; - } - } - - - /// - /// 模板内容 - /// - public string Content - { - get - { - string content; - IDataContrainer dc = new HttpDataContrainer(); - - //从缓存中读取模板内容 - if (Config.EnabledCache) - { - content = dc.GetTemplatePageCacheContent(this.ID); - if (content != null) return content; - } - - if (String.IsNullOrEmpty(this.FilePath)) throw new ArgumentNullException("模板文件不存在!" + this.FilePath); - - //读取内容并缓存 - StreamReader sr = new StreamReader(this.FilePath); - content = sr.ReadToEnd(); - sr.Dispose(); - - - string partialFilePath = ""; - //读取模板里的部分视图 - content = TemplateRegexUtility.partialRegex.Replace(content, m => - { - string _path = m.Groups[1].Value; - string tplID = TemplateUtility.GetPartialTemplateID(_path, this.FilePath, out partialFilePath); - return Regex.Replace(m.Value, _path, tplID); - }); - - - //替换系统标签 - content = TemplateRegexUtility.Replace(content, m => { return TemplateCache.Tags[m.Groups[1].Value]; }); - - - //压缩模板代码 - if (false || Config.EnabledCompress) - { - content = TemplateUtility.CompressHtml(content); - } - - //缓存模板 - if (Config.EnabledCache) dc.SetTemplatePageCacheContent(this.ID, content, this.FilePath); - - return content; - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplateAttribute.cs b/src/core/AtNet.DevFw.Template/old/TemplateAttribute.cs deleted file mode 100644 index 9f25e4e..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplateAttribute.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; - -namespace AtNet.DevFw.Template -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] - public class TemplateTagAttribute : Attribute - { - } - - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] - public class TemplateMethodAttribute : Attribute - { - } - - /// - /// 变量字段属性 - /// - [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)] - public class TemplateVariableFieldAttribute : Attribute - { - public TemplateVariableFieldAttribute() - { - } - - public TemplateVariableFieldAttribute(string descript) - { - this.Descript = descript; - } - - public string Descript { get; set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplateCache.cs b/src/core/AtNet.DevFw.Template/old/TemplateCache.cs deleted file mode 100644 index fe2d514..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplateCache.cs +++ /dev/null @@ -1,105 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateCache.cs -// Author:newmin -// Create:2011/06/05 -// - -using System; -using System.Collections.Generic; - -namespace AtNet.DevFw.Template -{ - /// - /// 模板缓存 - /// - public static class TemplateCache - { - /// - /// 模板编号列表 - /// - internal static IDictionary templateDictionary = new Dictionary(); - - /// - /// 标签词典 - /// - public static readonly TagCollection Tags = new TagCollection(); - - - /// - /// 标签 - /// - public class TagCollection - { - private static IDictionary tagDictionary = new Dictionary(); - - public string this[string key] - { - get - { - if (!tagDictionary.ContainsKey(key)) return "${" + key + "}"; - return tagDictionary[key]; - } - set - { - if (tagDictionary.ContainsKey(key)) tagDictionary[key] = value; - else tagDictionary.Add(key, value); - } - } - - public void Add(string key, string value) - { - if (tagDictionary.ContainsKey(key)) - throw new ArgumentException("键:" + key + "已经存在!"); - else tagDictionary.Add(key, value); - } - } - - /// - /// 注册模板 - /// - /// - /// - internal static void RegisterTemplate(string templateID, string filePath) - { - templateID = templateID.ToLower(); - if (!templateDictionary.ContainsKey(templateID)) - { - templateDictionary.Add(templateID, new Template - { - ID = templateID, - FilePath = filePath - }); - } - } - - /// - /// 如果模板字典包含改模板则获取缓存 - /// - /// - /// - internal static string GetTemplateContent(string templateID) - { - string _templateID = templateID.ToLower(); - - if (templateDictionary.ContainsKey(_templateID)) - { - return templateDictionary[_templateID].Content; - } - //throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在,ID:", templateID)); - throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在。", templateID)); - } - - /// - /// 清除所有模板缓存 - /// - //internal static void Clear() - //{ - // templateDictionary = null; - // foreach (System.Collections.DictionaryEntry k in HttpRuntime.Cache) - // { - // if (k.Key.ToString().StartsWith("tpl_")) HttpRuntime.Cache.Remove(k.Key.ToString()); - // } - //} - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplateNames.cs b/src/core/AtNet.DevFw.Template/old/TemplateNames.cs deleted file mode 100644 index 23ac90c..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplateNames.cs +++ /dev/null @@ -1,22 +0,0 @@ -// -// File : TemplateNames.cs -// Name : 模板命名 -// Author : newmin -// Date : 2012-03-04 -// - -namespace AtNet.DevFw.Template -{ - public enum TemplateNames - { - /// - /// 以16位md5标识的ID - /// - ID, - - /// - /// 以文件名为标识 - /// - FileName - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplatePage.cs b/src/core/AtNet.DevFw.Template/old/TemplatePage.cs deleted file mode 100644 index 2e0083f..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplatePage.cs +++ /dev/null @@ -1,284 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplatePage.cs -// Author:newmin -// Create:2011/06/06 -// - -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text; -using System.Web; -using System.Threading; - -namespace AtNet.DevFw.Template -{ - /// - /// 模板页 - /// - public class TemplatePage - { - /// - /// 模板初始化,替换数据之前发生的事件 - /// - public event TemplateHandler OnPreInit; - - /// - /// 模板呈现之前发生的事件 - /// - public event TemplateHandler OnPreRender; - - - private string templateID; - private IDataContrainer dc; - - /// - /// 模板数据 - /// - private IDictionary data = new Dictionary(); - - private string templateHtml; - - public TemplatePage() - { - if (HttpContext.Current != null) - { - dc = new HttpDataContrainer(); - } - else - { - dc = new NormalDataContrainer(); - } - } - - public TemplatePage(string templateId) - : this() - { - this.templateID = templateId; - } - - public TemplatePage(string templateId, object templateData) - : this(templateId) - { - this.AddDataObject(templateData); - } - - /// - /// 模板编号 - /// - public string TemplateID - { - get { return templateID; } - set { templateID = value; } - } - - /// - /// 模板内容 - /// - public string TemplateContent - { - get { return templateHtml; } - set - { - if (!String.IsNullOrEmpty(templateID)) - throw new ArgumentException("已经指定模板ID,将自动读取模板内容,无法在过程中设置模板的内容!", "TemplateContent"); - templateHtml = value; - } - } - - /// - /// 模板处理对象,用于在OnPreInit和OnInit事件中处理的数据对象 - /// - public object TemplateHandleObject { get; set; } - - /// - /// 添加变量 - /// - /// - /// - public TemplatePage AddVariable(string key, T value) - { - dc.DefineVariable(key, value); - return this; - } - - /// - /// 添加匿名对象实例 - /// - /// - public void AddDataObject(object templateData) - { - //替换传入的标签参数 - PropertyInfo[] properties = templateData.GetType().GetProperties(); - object dataValue; - foreach (PropertyInfo p in properties) - { - dataValue = p.GetValue(templateData, null); - if (dataValue != null) - { - data.Add(p.Name, dataValue); - } - } - } - - - internal void PreRender(object obj, ref string content) - { - if (this.OnPreRender != null) - { - this.OnPreRender(obj, ref content); - } - } - - internal void PreInit(object obj, ref string content) - { - if (this.OnPreInit != null && obj != null) - { - this.OnPreInit(obj, ref content); - } - } - - - public override string ToString() - { - DateTime dt = DateTime.Now; - - //指定了模板ID - if (!String.IsNullOrEmpty(templateID)) - { - //读取内容 - templateHtml = TemplateUtility.Read(templateID); - - //替换部分视图 - templateHtml = TemplateRegexUtility.ReplacePartial(templateHtml); - } - - //HttpContext.Current.Response.Write("
                                                                                                                                            1." + (DateTime.Now - dt).Milliseconds.ToString()); - //初始化之前发生 - this.PreInit(this.TemplateHandleObject, ref templateHtml); - - //如果参数不为空,则替换标签并返回内容 - if (this.data.Count != 0) - { - foreach (string key in this.data.Keys) - { - templateHtml = TemplateRegexUtility.ReplaceHtml(templateHtml, key, this.data[key].ToString()); - } - } - - // HttpContext.Current.Response.Write("
                                                                                                                                            2." + (DateTime.Now - dt).Milliseconds.ToString()); - //执行模板语法 - templateHtml = Eval.Complie(dc, templateHtml, this.TemplateHandleObject); - - - //替换自定义变量 - IDictionary defineVars = dc.GetDefineVariable(); - - if (defineVars != null && defineVars.Count != 0) - { - foreach (string key in defineVars.Keys) - { - if (defineVars[key] is Variable) - { - templateHtml = Eval.ResolveVariable(templateHtml, (Variable) defineVars[key]); - } - else - { - templateHtml = TemplateRegexUtility.ReplaceHtml(templateHtml, key, - (defineVars[key] ?? "").ToString()); - } - } - } - - // HttpContext.Current.Response.Write("
                                                                                                                                            3." + (DateTime.Now - dt).Milliseconds.ToString()); - - //解析实体的值 - //templateHtml = Eval.ExplanEntityProperties(dc,templateHtml); - - //呈现之前处理 - this.PreRender(this.TemplateHandleObject, ref templateHtml); - - // HttpContext.Current.Response.Write("
                                                                                                                                            4."+(DateTime.Now - dt).Milliseconds.ToString()); - - return templateHtml; - } - - /// - /// 压缩后的字符 - /// - /// - public string ToCompressedString() - { - return TemplateUtility.CompressHtml(ToString()); - } - - /// - /// 输出Html,并终止响应 - /// - public void Render() - { - HttpContext.Current.Response.Write(this.ToString()); - try - { - HttpContext.Current.Response.End(); - } - catch (ThreadAbortException exc) - { - - } - } - - /// - /// 使用指定编码保存成为本地文件 - /// - /// 包含路径的文件名称,如:/html/default.html - /// - /// - /// - public void SaveToFile(string fileName, Encoding coder, bool compressed, out string html) - { - string filePath = AppDomain.CurrentDomain.BaseDirectory + fileName; - - //FileShare.None 独占方式打开 - - FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None); - - //byte[] bytes = coder.GetBytes(this.ToString()); - //fs.Write(bytes, 0, bytes.Length); - - StreamWriter sr = new StreamWriter(fs, coder); - - html = compressed - ? this.ToCompressedString() - : this.ToString(); - - sr.Write(html); - - sr.Flush(); - fs.Flush(); - sr.Dispose(); - fs.Dispose(); - } - - /// - /// 保存成为本地文件(Unicode) - /// - /// 包含路径的文件名称,如:/html/default.html - public void SaveToFile(string fileName) - { - string html; - SaveToFile(fileName, Encoding.UTF8, false, out html); - } - - /// - /// 保存成为本地文件(Unicode) - /// - /// 包含路径的文件名称,如:/html/default.html - public void SaveToFile(string fileName, out string html) - { - SaveToFile(fileName, Encoding.UTF8, false, out html); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplateRegexUtility.cs b/src/core/AtNet.DevFw.Template/old/TemplateRegexUtility.cs deleted file mode 100644 index 23f2791..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplateRegexUtility.cs +++ /dev/null @@ -1,85 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:RegexUtility.cs -// Author:newmin -// Create:2011/06/05 -// - -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Template -{ - public sealed class TemplateRegexUtility - { - private static readonly Regex tagRegex = new Regex("\\${([a-zA-Z\u4e00-\u9fa5\\._]+)}"); - - //部分页匹配模式 - internal static Regex partialRegex = new Regex("\\${partial:\"(.+?)\"}"); - - public static string Replace(string templateID, string tagKey, string tagValue) - { - return null; - } - - /// - /// 替换模板数据 - /// - /// - /// - /// - internal static string ReplaceTemplate(string templateID, MatchEvaluator eval) - { - string html = TemplateUtility.Read(templateID); - - return TemplateRegexUtility.Replace(html, eval); - } - - /// - /// 替换标签 - /// - /// - /// - /// - public static string Replace(string html, MatchEvaluator eval) - { - //如果包含部分视图,则替换成部分视图的内容 - //ReplacePartial(html); - - //替换匹配 - return tagRegex.Replace(html, eval); - } - - internal static string ReplaceHtml(string html, string tagKey, string tagValue) - { - return Regex.Replace(html, "\\${" + tagKey + "}", tagValue, RegexOptions.IgnoreCase); - } - - - /// - /// 替换模板的部分视图 - /// - /// - /// - internal static string ReplacePartial(string html) - { - //匹配的部分视图编号 - string matchValue; - - //如果包含部分视图,则替换成部分视图的内容 - if (partialRegex.IsMatch(html)) - { - //替换模板里的部分视图,并将内容添加到模板内容中 - html = Regex.Replace(html, "\\${partial:\"(.+?)\"}", match => - { - matchValue = match.Groups[1].Value; - return Regex.IsMatch(matchValue, "^[a-z0-9]+$", RegexOptions.IgnoreCase) - ? TemplateUtility.Read(match.Groups[1].Value) - : match.Value; - }); - } - - //返回替换部分视图后的内容 - return html; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplateRegister.cs b/src/core/AtNet.DevFw.Template/old/TemplateRegister.cs deleted file mode 100644 index 588ac1b..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplateRegister.cs +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateRegister.cs -// Author:newmin -// Create:2011/06/28 -// - -using System; -using System.IO; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Template -{ - /// - /// 模板注册 - /// - public class TemplateRegister - { - private DirectoryInfo directory; - private TemplateNames nametype; - - /// - /// 注册模板时发生 - /// - public event TemplateBehavior OnRegister; - - public TemplateRegister(string directoryPath, TemplateNames nametype) - { - this.nametype = nametype; - this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); - if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); - } - - public TemplateRegister(string directoryPath) - { - this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); - if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); - } - - public TemplateRegister(DirectoryInfo templateDirectory, TemplateNames nametype) - { - this.nametype = nametype; - this.directory = templateDirectory; - if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); - } - - /// - /// 注册模板 - /// - public void Register() - { - //注册模板 - RegisterTemplates(directory, this.nametype); - - //触发注册模板事件 - if (OnRegister != null) OnRegister(); - } - - //递归方式注册模板 - private static void RegisterTemplates(DirectoryInfo dir, TemplateNames nametype) - { - // tml 为模板文件,防止可以被直接浏览 - Regex allowExt = new Regex("(.html|.tml|.phtml)$", RegexOptions.IgnoreCase); - foreach (FileInfo file in dir.GetFiles()) - { - if (allowExt.IsMatch(file.Extension)) - { - TemplateCache.RegisterTemplate(TemplateUtility.GetTemplateId(file.FullName, nametype), file.FullName); - } - } - foreach (DirectoryInfo _dir in dir.GetDirectories()) - { - //如果文件夹是可见的 - if ((_dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) - { - RegisterTemplates(_dir, nametype); - } - } - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/TemplateUtility.cs b/src/core/AtNet.DevFw.Template/old/TemplateUtility.cs deleted file mode 100644 index 0785bae..0000000 --- a/src/core/AtNet.DevFw.Template/old/TemplateUtility.cs +++ /dev/null @@ -1,252 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:TemplateUtility.cs -// Author:newmin -// Create:2011/06/05 -// - -using System; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using AtNet.DevFw.Template; - -namespace AtNet.DevFw.Template -{ - public sealed class TemplateUtility - { - internal static string Read(string templateID) - { - //从缓存中获取模板内容 - return TemplateCache.GetTemplateContent(templateID); - } - - /// - /// 使用模板引擎自带的压缩程序压缩代码 - /// - /// - /// - public static string CompressHtml(string html) - { - //html = Regex.Replace(html, ">(\\s)+<", "><"); - ////html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); - //html = Regex.Replace(html, "|\r|\n|\t|(\\s\\s)", String.Empty); - //return html; - - html = Regex.Replace(html, ">(\\s)+<", "><"); - - //替换 //单行注释 - html = Regex.Replace(html, "[\\s|\\t]+\\/\\/[^\\n]*(?=\\n)", String.Empty); - - //替换多行注释 - //const string multCommentPattern = ""; - html = Regex.Replace(html, "/\\*[^\\*]+\\*/", String.Empty); - - //替换 - html = Regex.Replace(html, "", String.Empty); - - //html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); - html = Regex.Replace(html, "\r|\n|\t|(\\s\\s)", String.Empty); - - return html; - } - - internal static string GetTemplateId(string filePath, TemplateNames nametype) - { - Match match = Regex.Match(filePath, "templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase); - if (String.IsNullOrEmpty(match.Value)) throw new Exception("模版页文件名:" + filePath + "不合法"); - - string fileName = match.Groups[2].Value; - if (!fileName.ToLower().EndsWith(".phtml") && nametype == TemplateNames.FileName) - { - string id = String.Format("{0}{1}", - match.Groups[1].Value, - match.Groups[2].Value) - .Replace('\\', '/'); - - return id.Substring(0, id.LastIndexOf('.')); - } - else - { - return MD5.EncodeTo16(Regex.Replace(fileName, "/|\\\\", String.Empty).ToLower()); - } - } - - /// - /// 获取部分模板的编号 - /// - /// - /// - /// - internal static string GetPartialTemplateID(string _path, string tmpPath, out string partialFilePath) - { - string _filepath = tmpPath; - string _filename = _path; - - // - // inc/header.html - // - - if (!_path.StartsWith("/")) - { - DirectoryInfo p_wrap = null, - p_par = null, - p_curr = new FileInfo(_filepath).Directory; - - - //exsample path: ../../inc/top.phtml - if (Regex.IsMatch(_path, "^\\.\\./")) - { - Regex pathRegex = new Regex("\\.\\./"); - int dirlayer = pathRegex.Matches(_path).Count; - _filename = pathRegex.Replace(_filename, String.Empty); - - int i = 0; - do - { - if (p_par != null) - { - p_wrap = p_par; - p_par = p_par.Parent; - } - else - { - p_par = p_curr.Parent; - } - - if (p_wrap != null) - { - p_curr = p_wrap; - } - } while (++i <= dirlayer); - - _filename = String.Format("{0}/{1}", p_curr.Name, _filename); - } - else - { - // - //exsample path: inc/top.phtml - // - - do - { - if (p_par != null) - { - p_wrap = p_par; - p_par = p_par.Parent; - } - else - { - p_par = p_curr.Parent; - } - - if (p_wrap != null) - { - p_curr = p_wrap; - } - - _filename = String.Format("{0}/{1}", p_curr.Name, _filename); - } while (String.Compare(p_par.Name, "templates", true) != 0); - } - } - - // - //TODO:测试 - // - partialFilePath = _filename; - - return MD5.EncodeTo16(Regex.Replace(_filename, "/|\\\\", String.Empty).ToLower()); - } - - /// - /// 显示模板信息到页面 - /// - public static void PrintTemplatesInfo() - { - string templateContent = Embed.SysTemplatePage; - StringBuilder sb = new StringBuilder(); - - sb.Append(@" - - - - - - "); - - Template tpl; - string tplFileName, tplContent; //模板文件名,内容 - int i = 0; - - foreach (string key in TemplateCache.templateDictionary.Keys) - { - tpl = TemplateCache.templateDictionary[key]; - tplFileName = - new Regex("templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase).Match(tpl.FilePath).Groups[2].Value - .Replace("\\", "/"); - tplContent = tpl.Content; - - sb.Append("") + .Append(""); + } + tagsHtml = sb.ToString(); + } + else + { + tagsHtml = ""; + } + + string html = reg.Replace(pageContent, match => + { + switch (match.Groups[1].Value) + { + default: return null; + case "css": return ReturnStyleLink(); + case "tagsHtml": return tagsHtml; + case "pagetext": return ""; + + } + }); + response.Write(html); + } + + + + private void Invoke_TestReplace() + { + TagsManager tagsManager = new TagsManager(AppDomain.CurrentDomain.BaseDirectory + "tag.xml"); + + + const string testContent = @"最近项目有需要开发一个模板的功能,在asp.net mvc项目中使用模板在不压缩代码的模板情况下,性能能提升0.02s左右(本地IIS+FF)"; + + + const string testContent2 = @"奥博建站系统是厦门奥博科技技术

                                                                                                                                            开发的一款奥博科技技术基于asp.net mvc和asp.net 模板组件的网站管理系统。程序高效,安全,功能强大。从最初的v1.0到v1.5,v1.8,v2.0,v2.2,v2.7 + + 经过无数次的改进,不仅支持模板技术,缓存,自定义路由,全站静态化,更包括一键生成文档文件!奥博建站系统包括多用户管理,和会员系统,消息系统,评论系统,同时提供接口方便二次开发。 + + 今天奥博建站系统升级到3.0了,最大的特色就是:多数据库的支持。您现在可以做为网站的数据库,同时支持数据库的切换。小型网站使用更快。

                                                                                                                                            "; + + const string testContent1 = @" 淘宝网上卖银耳的卖家很多,但是在这里面很多卖家并不是我们通江人,而且也没有我们通江的银耳,很多卖家是以袋料银耳来充通江银耳,所以买到这样的假货心里一定很不舒服吧,很多买银耳的朋友非常担心这个问题,都想买到品质优良的正宗的通江银耳,我们是通江土特产专营,为了让淘宝网上的买家买到正宗的通江银耳,我们建立了专业的网站和论坛来对通江银耳进行宣传,我们还成立了专业的银耳合作社,和农户签订了购销合同,农民采收,我们包销售,这样农民也就有了相当的积极性。我们这样做也是为保证有大量的货源,能让淘宝网上的买家更多的买到正宗的通江银耳,我们销售的银耳力争是在野生天然环境下生长的银耳,虽然产量很小,但品质优良,所以价格高大家也愿意接受。因为我们不销售假银耳,我们的银耳是正宗地通江野生银耳。"; + + + + response.Write(String.Format("测试内容为:
                                                                                                                                            {0}
                                                                                                                                            ", testContent)); + + + string x1 = tagsManager.ReplaceSingleTag(testContent); + + + + response.Write(String.Format("

                                                                                                                                            替换标签后的内容为:
                                                                                                                                            {0}", x1)); + + + string x2 = tagsManager.ReplaceSingleTag(x1); + + + response.Write(String.Format("

                                                                                                                                            再次替换后的内容为:
                                                                                                                                            {0}", x2)); + + + response.Write(String.Format("

                                                                                                                                            移除多余的Tags:
                                                                                                                                            {0}", tagsManager.RemoveAutoTags(x2))); + + + } + + /// + /// 返回样式表链接 + /// + /// + public virtual string ReturnStyleLink() + { + return String.Format("", Resource.managestyle); + } + + #region test + + /* + /// + /// 给关键字加链接,同一关键字只加一次 + /// + /// 源字符串 + /// 关键字泛型 + /// 替换后结果 + private string keyAddUrl(string src, List keys) + { + Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); + int length = 0; + string temp = string.Empty; + return reg.Replace(src, delegate(Match m) + { + temp = m.Value; + length = temp.Length; + for (int i = keys.Count - 1; i >= 0;i--) + { + temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(keys[i])), @"$1${tag}"); + if (length != temp.Length) + { + keys.Remove(keys[i]); + } + length = temp.Length; + } + return temp; + }); + } + private void test() + { + //调用 + string str1 = "我想学习c语言教程,我想看的是C语言视频教程,其它什么C语言教程,我都不想看。我喜欢C语言,还是C语言。"; + List keys = new List(new string[] { "c语言", "C语言教程", "c语言视频教程" }); + string result = keyAddUrl(str1, keys); + response.Write(result); + } + */ + #endregion + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/J6.DevFw.Toolkit.Tags.csproj b/src/toolkit/J6.DevFw.Toolkit.Tags/J6.DevFw.Toolkit.Tags.csproj similarity index 96% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/J6.DevFw.Toolkit.Tags.csproj rename to src/toolkit/J6.DevFw.Toolkit.Tags/J6.DevFw.Toolkit.Tags.csproj index 5cb8499..2e38372 100644 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/J6.DevFw.Toolkit.Tags.csproj +++ b/src/toolkit/J6.DevFw.Toolkit.Tags/J6.DevFw.Toolkit.Tags.csproj @@ -8,8 +8,8 @@ {1E9FCAD5-DF56-469B-BCEB-806BF9085A47} Library Properties - J6.DevFw.Toolkit.Tags - J6.DevFw.Toolkit.Tags + JR.DevFw.Toolkit.Tags + jrdev.toolkit.tags v4.0 512 diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/OPSoft.Tags.csproj.user b/src/toolkit/J6.DevFw.Toolkit.Tags/OPSoft.Tags.csproj.user similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Tags/OPSoft.Tags.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.Tags/OPSoft.Tags.csproj.user diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs diff --git a/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.Designer.cs b/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.Designer.cs new file mode 100644 index 0000000..f4484ef --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.Designer.cs @@ -0,0 +1,116 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace JR.DevFw.Toolkit.Tags { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resource { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resource() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JR.DevFw.Toolkit.Tags.Resource", typeof(Resource).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找类似 body + ///{ + /// font-size:12px;color:#666; + ///} + ///a{color:#0066cc;} + ///a:hover{color:#006699;} + ///h1{display:none;} + ///table{background:#f0f0f0;width:100%;} + ///th{border-bottom:solid 1px #e5e5e5;background:#006699;color:White;font-size:12px;line-height:23px;} + ///td{background:white;font-size:12px;padding:2px;line-height:23px;} + ///td.center{text-align:center;} + ///input.button{border:outset 1px #f0f0f0;} + ///td input{border:solid 1px #DCE5F1;padding:1px;line-height:16px;height:20px;width:100%;color:#006699} + ///td input.ck{border:none [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string managestyle { + get { + return ResourceManager.GetString("managestyle", resourceCulture); + } + } + + /// + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + /// <head> + /// <title>标签管理</title> + /// ${css} + /// </head> + /// <body> + /// <!-- + /// + /// // + /// // Copyright 2011 @ S1N1.COM,All rights reseved. + /// // Project : 奥博网站管理系统 + /// // Name : 标签组件 + /// // Author : Newmin (newmin.net@gmail.com) + /// // Create : 2011/08/28 16:27 + /// // Product Link: http://www.ops.cc + /// // + /// + /// --> + /// + /// + /// <h1>标签管理</h1> + /// <form action="" method="post" target="tag_ifr" enctype="application/x-www-form-u [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string tagsmanager { + get { + return ResourceManager.GetString("tagsmanager", resourceCulture); + } + } + } +} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Resource.resx b/src/toolkit/J6.DevFw.Toolkit.Tags/Resource.resx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Tags/Resource.resx rename to src/toolkit/J6.DevFw.Toolkit.Tags/Resource.resx diff --git a/src/toolkit/J6.DevFw.Toolkit.Tags/Tag.cs b/src/toolkit/J6.DevFw.Toolkit.Tags/Tag.cs new file mode 100644 index 0000000..4882b4b --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Tags/Tag.cs @@ -0,0 +1,42 @@ +// +// +// Copyright 2011 (C) S1N1.COM,All rights reseved. +// +// Project : tagsplugin +// File Name : Tag.cs +// Date : 8/27/2011 +// Author : +// +// + + +namespace JR.DevFw.Toolkit.Tags +{ + + /// + /// ǩ + /// + public class Tag + { + /// + /// ʶID + /// + public int Indent { get; set; } + + /// + /// + /// + public string Name { get; set; } + + /// + /// + /// + public string Description { get; set; } + + /// + /// ӵַ + /// + public string LinkUri { get; set; } + } + +} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/TagsManage.cs b/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManage.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Tags/TagsManage.cs rename to src/toolkit/J6.DevFw.Toolkit.Tags/TagsManage.cs diff --git a/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManager.cs b/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManager.cs new file mode 100644 index 0000000..d8215c6 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Tags/TagsManager.cs @@ -0,0 +1,514 @@ +// +// +// Copyright 2011 (C) S1N1.COM,All rights reseved. +// +// Project : tagsplugin +// File Name : Tags.cs +// Date : 8/27/2011 +// Author : Newmin +// --------------------------------------------- +// 2011-09-13 newmin[+]:滻ǩReplaceSingleTag() +// [!]:޸ĿĿ +// +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Xml; + +namespace JR.DevFw.Toolkit.Tags +{ + public class TagsManager + { + //ļ· + private string configFilePath; + + private string[] nameArray; + + private TagsCollection tags=new TagsCollection(); + + + public class TagsCollection:IEnumerable + { + internal IDictionary dict = new Dictionary(); + + /// + /// ǩ + /// + public int Count + { + get { return dict.Count; } + } + + public IEnumerator GetEnumerator() + { + + foreach (KeyValuePair pair in dict) + { + yield return pair.Value; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } + + + public TagsManager(string configFilePath) + { + this.configFilePath = configFilePath; + if (!File.Exists(this.configFilePath)) + { + //ļ,򴴽ʼ + File.Create(this.configFilePath).Dispose(); + const string initData = "\r\n\r\n\t\r\n\t\r\n"; + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(this.configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + this.LoadAllTags(); + } + + /// + /// ǩ + /// + public TagsCollection Tags { get { return tags; } } + + + /// + /// Tags + /// + /// + private void LoadAllTags() + { + + XmlDocument xd = new XmlDocument(); + + //ļ + xd.Load(configFilePath); + + //бǩڵ + XmlNodeList tagNodes = xd.SelectNodes("/tags/list/tag"); + + // + tags.dict.Clear(); + + //ؼ + nameArray = new String[tagNodes.Count]; + + //ӹؼʵʵ䣬Ϊؼ鸳ֵ + for (int i = 0; i < tagNodes.Count; i++) + { + nameArray[i] = tagNodes[i].InnerText; + + tags.dict.Add(nameArray[i], + new Tag + { + Indent=int.Parse(tagNodes[i].Attributes["indent"].Value), + Name = tagNodes[i].InnerText, + Description = tagNodes[i].Attributes["description"].Value, + LinkUri = tagNodes[i].Attributes["linkuri"].Value + }); + } + + Array.Sort(nameArray, (a, b) => { return b.Length-a.Length; }); + + } + + /// + /// ӱǩ + /// + /// + /// + public bool Add(Tag tag) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + //ǩǷظ + if (xd.SelectSingleNode(String.Format("/tags/list/tag[@name=\"{0}\"]", tag.Name)) != null) return false; + + //ȡһڵ + XmlNode node = xd.SelectSingleNode("/tags/list/tag[last()]"); + if (node != null) + { + int tagIndex; + int.TryParse(node.Attributes["indent"].Value, out tagIndex); + tag.Indent = tagIndex + 1; + } + else + { + tag.Indent=1; + } + + + //бǩڵ + XmlNode root = xd.SelectSingleNode("/tags/list"); + + XmlNode tagNode = xd.CreateElement("tag"); + + XmlAttribute xn =xd.CreateAttribute("indent"); + xn.Value = tag.Indent.ToString(); + tagNode.Attributes.Append(xn); + + //xn = xd.CreateAttribute("name"); + //xn.Value = tag.Name; + //tagNode.Attributes.Append(xn); + + xn = xd.CreateAttribute("description"); + xn.Value = tag.Description; + tagNode.Attributes.Append(xn); + + xn = xd.CreateAttribute("linkuri"); + xn.Value = tag.LinkUri; + tagNode.Attributes.Append(xn); + + tagNode.InnerText = tag.Name; + + root.AppendChild(tagNode); + + // + xd.Save(configFilePath); + + //ݲ¼ + LoadAllTags(); + + return true; + + } + + /// + /// ȡ + /// + /// + /// + public string GetConfig(string key) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]",key)); + if (keyNode != null) + { + return keyNode.Attributes["value"].Value; + } + return null; + } + + /// + /// ޸ + /// + /// + /// + public void SetConfig(string key, string value) + { + + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]", key)); + if (keyNode != null) + { + keyNode.Attributes["value"].Value = value; + } + else + { + XmlNode rootNode = xd.SelectSingleNode("/tags/config"); + keyNode = xd.CreateElement("add"); + + XmlAttribute xa=xd.CreateAttribute("key"); + xa.Value=key; + keyNode.Attributes.Append(xa); + + xa=xd.CreateAttribute("value"); + xa.Value=value; + keyNode.Attributes.Append(xa); + + rootNode.AppendChild(keyNode); + } + + xd.Save(configFilePath); + } + + /// + /// ±ǩ + /// + /// + public void Update(Tag tag) + { + + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", tag.Indent.ToString())); + + tagNode.InnerText = tag.Name; + tagNode.Attributes["description"].Value = tag.Description; + tagNode.Attributes["linkuri"].Value = tag.LinkUri; + + // + xd.Save(configFilePath); + + //ݲ¼ + LoadAllTags(); + + } + + /// + /// ɾǩ + /// + /// + public void Delete(string id) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode root = xd.SelectSingleNode("/tags/list"); + XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", id)); + + if (tagNode != null) + { + root.RemoveChild(tagNode); + xd.Save(configFilePath); + + //ݲ¼ + LoadAllTags(); + } + } + + /// + /// ƻȡǩ + /// + /// + /// + private Tag FindByName(string name) + { + if (tags.dict.Keys.Contains(name)) return tags.dict[name]; + return null; + } + + private string Replace(string content,bool openInBlank) + { + //if (!defaultTagLinkFormat.Contains("{0}")) throw new ArgumentException("{0}ʾñǩID"); + + Tag tag; + Regex reg; + + //ǩӸʽ + string tagLinkFormat =openInBlank? + "{2}" : + "{2}"; + + + foreach (string key in nameArray) + { + tag=FindByName(key); + if(tag==null)continue; + + reg = new Regex(String.Format("]+>(?{0})|(?!]*)(?{0})(?![^<]*)", Regex.Escape(key)), RegexOptions.IgnoreCase); + + + content = reg.Replace(content, match => + { + return String.Format(tagLinkFormat, + String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, + tag.Description, + key); + }); + } + + return content; + } + + + /// + /// 滻 + /// + /// + /// + /// + /// + public string Replace(string content, bool openInBlank,bool singleMode) + { + //ȫ滻 + if (!singleMode) return Replace(content, openInBlank); + + Tag tag; + Regex reg; + + // + int _index=0; + + foreach(string key in nameArray) + { + tag = FindByName(key); + if (tag == null) continue; + + reg = new Regex(String.Format("]+>(?{0})|(?!]*)(?{0})(?![^<]*)", + Regex.Escape(key)), RegexOptions.IgnoreCase); + + + content = reg.Replace(content, match => + { + + if (++_index == 1) + { + return String.Format( + + //ǩӸʽ + openInBlank ?"{2}" : + "{2}", + + + String.IsNullOrEmpty(tag.LinkUri) ?"javascript:;":tag.LinkUri, + tag.Description, + key); + } + else + { + return match.Groups["key"].Value; + } + }); + + _index = 0; + } + return content; + } + + /// + /// ǩ滻 + /// + /// + /// + public string ReplaceSingleTag(string content) + { + return Replace(content, true, true); + } + + /// + /// ƳڵTag + /// + /// + /// + public string RemoveAutoTags(string content) + { + string linkText; + return Regex.Replace(content, "]+>(.+?)", match => + { + linkText = match.Groups[2].Value; + if (!tags.dict.Keys.Contains(linkText)) + { + return linkText; + } + return match.Value; + },RegexOptions.Multiline); + } + + + /// + /// 滻Ϊǩ + /// + /// + /// + /// + private string Replace2(string content) + { + return null; + + + + Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); + +#if DEBUG + //System.Web.HttpContext.Current.Response.Write(String.Format("

                                                                                                                                            ƥ{0}

                                                                                                                                            ",reg.IsMatch(content))); + + + + +#endif + //int length = 0; + string temp; + Tag tag; + + //Ѿӵջ,ȷֻ滻һ + Stack stack = new Stack(); + + return reg.Replace(content, m => + { + temp =Regex.Replace(m.Value,"<|>|\\/",String.Empty); + + + // System.Web.HttpContext.Current.Response.Write(String.Format("
                                                                                                                                            ({0})
                                                                                                                                            ", m.Value)); + + //length = temp.Length; + + //ؼ,ұ֤ؼвջ + for (int i = nameArray.Length - 1; i >= 0 && !stack.Contains(i); i--) + { + tag = this.FindByName(nameArray[i]); + + if (tag != null) + { + temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(tag.Name)) + , String.Format("$1{2}", + String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, //δӣʹĬϸʽ + tag.Description, "${tag}")); + } + + //ֻ֤滻һ + stack.Push(i); + + // if (length != temp.Length) + //{ + // stack.Push(i); + + // } + //length = temp.Length; + } + + return temp; + }); + } + + /// + /// ؼּӣͬһؼֻһ + /// + /// Դַ + /// ؼַ + /// + private string keyAddUrl(string content) + { + return null; + /* + Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); + int length = 0; + string temp; + Tag tag; + + return reg.Replace(content, m => + { + temp = m.Value; + length = temp.Length; + for (int i = tags.Count - 1; i >= 0; i--) + { + tag = this.FindByName(nameArray[i]); + temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(tag.Name)) + , String.Format("$1${tag}",tag.LinkUri,tag.Description)); + + if (length != temp.Length) + { + //tags.nameDict.Remove(tags.nameDict[i]); + } + length = temp.Length; + } + return temp; + });*/ + } + } +} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/managestyle.css b/src/toolkit/J6.DevFw.Toolkit.Tags/managestyle.css similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Tags/managestyle.css rename to src/toolkit/J6.DevFw.Toolkit.Tags/managestyle.css diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Tags/tagsmanager.html b/src/toolkit/J6.DevFw.Toolkit.Tags/tagsmanager.html similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Tags/tagsmanager.html rename to src/toolkit/J6.DevFw.Toolkit.Tags/tagsmanager.html diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs new file mode 100644 index 0000000..595be7b --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs @@ -0,0 +1,333 @@ +using System; +using System.Text; + +namespace JR.DevFw.Toolkit.ThirdApi.Discuz +{ + public enum DiscuzAuthcodeMode { Encode, Decode }; + + + public class Authcode + { + private static Encoding encoding = Encoding.GetEncoding(Request.UC_CHARSET); + + /// + /// 从字符串的指定位置截取指定长度的子字符串 + /// + /// 原字符串 + /// 子字符串的起始位置 + /// 子字符串的长度 + /// 子字符串 + private static string CutString(string str, int startIndex, int length) + { + if (startIndex >= 0) + { + if (length < 0) + { + length = length * -1; + if (startIndex - length < 0) + { + length = startIndex; + startIndex = 0; + } + else + { + startIndex = startIndex - length; + } + } + + if (startIndex > str.Length) + { + return ""; + } + } + else + { + if (length < 0) + { + return ""; + } + else + { + if (length + startIndex > 0) + { + length = length + startIndex; + startIndex = 0; + } + else + { + return ""; + } + } + } + + if (str.Length - startIndex < length) + { + length = str.Length - startIndex; + } + + return str.Substring(startIndex, length); + } + + /// + /// 从字符串的指定位置开始截取到字符串结尾的了符串 + /// + /// 原字符串 + /// 子字符串的起始位置 + /// 子字符串 + private static string CutString(string str, int startIndex) + { + return CutString(str, startIndex, str.Length); + } + + /// + /// MD5函数 + /// + /// 原始字符串 + /// MD5结果 + public static string MD5(string str) + { + byte[] b = encoding.GetBytes(str); + b = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b); + string ret = ""; + for (int i = 0; i < b.Length; i++) + { + ret += b[i].ToString("x").PadLeft(2, '0'); + } + return ret; + } + + /// + /// 用于 RC4 处理密码 + /// + /// 密码字串 + /// 密钥长度,一般为 256 + /// + private static Byte[] GetKey(Byte[] pass, Int32 kLen) + { + Byte[] mBox = new Byte[kLen]; + + for (Int64 i = 0; i < kLen; i++) + { + mBox[i] = (Byte)i; + } + Int64 j = 0; + for (Int64 i = 0; i < kLen; i++) + { + j = (j + mBox[i] + pass[i % pass.Length]) % kLen; + Byte temp = mBox[i]; + mBox[i] = mBox[j]; + mBox[j] = temp; + } + return mBox; + } + + /// + /// 生成随机字符 + /// + /// 随机字符长度 + /// 随机字符 + private static string RandomString(int lens) + { + char[] CharArray = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; + int clens = CharArray.Length; + string sCode = ""; + Random random = new Random(); + for (int i = 0; i < lens; i++) + { + sCode += CharArray[random.Next(clens)]; + } + return sCode; + } + + /// + /// 使用 authcode 方法对字符串加密 + /// + /// 原始字符串 + /// 密钥 + /// 加密字串有效时间,单位是秒 + /// 加密结果 + public static string DiscuzAuthcodeEncode(string source, string key, int expiry) + { + return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Encode, expiry); + + } + + /// + /// 使用 Discuz authcode 方法对字符串加密 + /// + /// 原始字符串 + /// 密钥 + /// 加密结果 + public static string DiscuzAuthcodeEncode(string source, string key) + { + return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Encode, 0); + + } + + /// + /// 使用 Discuz authcode 方法对字符串解密 + /// + /// 原始字符串 + /// 密钥 + /// 解密结果 + public static string DiscuzAuthcodeDecode(string source, string key) + { + return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Decode, 0); + + } + + /// + /// 使用 变形的 rc4 编码方法对字符串进行加密或者解密 + /// + /// 原始字符串 + /// 密钥 + /// 操作 加密还是解密 + /// 密文有效期, 加密时候有效, 单 位 秒,0 为永久有效 + /// 加密或者解密后的字符串 + private static string DiscuzAuthcode(string source, string key, DiscuzAuthcodeMode operation, int expiry) + { + if (source == null || key == null) + { + return ""; + } + + int ckey_length = 4; + string keya, keyb, keyc, cryptkey, result; + + key = MD5(key); + keya = MD5(CutString(key, 0, 16)); + keyb = MD5(CutString(key, 16, 16)); + keyc = ckey_length > 0 ? (operation == DiscuzAuthcodeMode.Decode ? CutString(source, 0, ckey_length) : RandomString(ckey_length)) : ""; + + cryptkey = keya + MD5(keya + keyc); + + if (operation == DiscuzAuthcodeMode.Decode) + { + byte[] temp; + try + { + temp = System.Convert.FromBase64String(CutString(source, ckey_length)); + } + catch + { + try + { + temp = System.Convert.FromBase64String(CutString(source + "=", ckey_length)); + } + catch + { + try + { + temp = System.Convert.FromBase64String(CutString(source + "==", ckey_length)); + } + catch + { + return ""; + } + } + } + + result = encoding.GetString(RC4(temp, cryptkey)); + + //throw new Exception(CutString(result, 0, 10)); + long timestamp = long.Parse(CutString(result, 0, 10)); + + if ((timestamp == 0 || timestamp - UnixTimestamp() > 0) && CutString(result, 10, 16) == CutString(MD5(CutString(result, 26) + keyb), 0, 16)) + { + return CutString(result, 26); + } + else + { + return ""; + } + } + else + { + source = (expiry == 0 ? "0000000000" : (expiry + UnixTimestamp()).ToString()) + CutString(MD5(source + keyb), 0, 16) + source; + byte[] temp = RC4(encoding.GetBytes(source), cryptkey); + return keyc + System.Convert.ToBase64String(temp); + } + } + + /// + /// RC4 原始算法 + /// + /// 原始字串数组 + /// 密钥 + /// 处理后的字串数组 + private static Byte[] RC4(Byte[] input, String pass) + { + if (input == null || pass == null) return null; + + byte[] output = new Byte[input.Length]; + byte[] mBox = GetKey(encoding.GetBytes(pass), 256); + + // 加密 + Int64 i = 0; + Int64 j = 0; + for (Int64 offset = 0; offset < input.Length; offset++) + { + i = (i + 1) % mBox.Length; + j = (j + mBox[i]) % mBox.Length; + Byte temp = mBox[i]; + mBox[i] = mBox[j]; + mBox[j] = temp; + Byte a = input[offset]; + //Byte b = mBox[(mBox[i] + mBox[j] % mBox.Length) % mBox.Length]; + // mBox[j] 一定比 mBox.Length 小,不需要在取模 + Byte b = mBox[(mBox[i] + mBox[j]) % mBox.Length]; + output[offset] = (Byte)((Int32)a ^ (Int32)b); + } + + return output; + } + + + private static string AscArr2Str(byte[] b) + { + return System.Text.UnicodeEncoding.Unicode.GetString( + System.Text.ASCIIEncoding.Convert(System.Text.Encoding.ASCII, + System.Text.Encoding.Unicode, b) + ); + } + + public static long UnixTimestamp() + { + DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + DateTime dtNow = DateTime.Parse(DateTime.Now.ToString()); + TimeSpan toNow = dtNow.Subtract(dtStart); + string timeStamp = toNow.Ticks.ToString(); + return long.Parse(timeStamp.Substring(0, timeStamp.Length - 7)); + } + + public static string urlencode(string str) + { + //php的urlencode不同于HttpUtility.UrlEncode + //return HttpUtility.UrlEncode(str); + + string tmp = string.Empty; + string strSpecial = "_-.1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for (int i = 0; i < str.Length; i++) + { + string crt = str.Substring(i, 1); + if (strSpecial.Contains(crt)) + tmp += crt; + else + { + byte[] bts = encoding.GetBytes(crt); + foreach (byte bt in bts) + { + tmp += "%" + bt.ToString("X"); + } + } + } + return tmp; + } + + public static long time() + { + TimeSpan ts = new TimeSpan(System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks); + return (long)ts.TotalMilliseconds; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Request.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Request.cs new file mode 100644 index 0000000..9cc9a99 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/Request.cs @@ -0,0 +1,252 @@ +/* + * name : Request + * author : newmin + * date : 2010/12/20 + * + */ + +using System; +using System.Configuration; +using System.IO; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using System.Web; + +namespace JR.DevFw.Toolkit.ThirdApi.Discuz +{ + public class Request + { + #region 对asp.net无用的 + /* + /// + /// 连接 UCenter 的方式 + /// mysql:MySQL 方式;空:远程方式 + /// + public const string UC_CONNECT="mysql"; + /// + ///UCenter 数据库主机 + /// + public const string UC_DBHOST="192.168.1.82"; + /// + ///UCenter 数据库用户名 + /// + public const string UC_DBUSER="root"; + /// + /// UCenter 数据库密码 + /// + public const string UC_DBPW=""; + /// + /// UCenter 数据库名称 + /// + public const string UC_DBNAME=""; + /// + /// UCenter 数据库字符集 + /// + public const string UC_DBCHARSET=""; + /// + /// UCenter 数据库表前缀 + /// + public const string UC_DBTABLEPRE=""; + /// + /// UCenter 数据库持久连接 0=关闭, 1=打开 + /// + public const string UC_DBCONNECT=""; + */ + #endregion + + + /// + /// 与 UCenter 的通信密钥, 要与 UCenter 保持一致 + /// + public static string UC_KEY; + /// + /// UCenter 服务端的 URL 地址 + /// + public static string UC_API; + /// + /// UCenter 的字符集 + /// + public static string UC_CHARSET; + /// + /// 当前应用的 ID + /// + public static string UC_APPID; + public static bool UC_RecordLog; + //匹配host的模式 + private static readonly string hostPattern; + static Request() + { + UC_APPID = ConfigurationManager.AppSettings["uc_appid"]; + UC_KEY = ConfigurationManager.AppSettings["uc_key"]; + UC_API = ConfigurationManager.AppSettings["uc_api"]; + UC_CHARSET = ConfigurationManager.AppSettings["uc_charset"] ?? "gbk"; + UC_RecordLog = ConfigurationManager.AppSettings["uc_log"] == "True"; + + hostPattern = "^(?=" + UC_API.Remove(UC_API.IndexOf("/", 7)).Replace("/", "\\/") + "|http:\\/\\/" + HttpContext.Current.Request.Url.Host + ")"; + } + + internal static object SendRequest(string path, string module, string action, string param) + { + //获取时间参数 + string time = ((DateTime.UtcNow.Ticks - new DateTime(0x7b2, 1, 1).Ticks) / 0x989680L).ToString(); + //获取agent参数 + string agent = Authcode.MD5(HttpContext.Current.Request.UserAgent); + StringBuilder sb = new StringBuilder(); + sb.Append("agent=").Append(agent).Append("&time=") + .Append(time).Append("&").Append(param); + //需要先解码 + string input = HttpContext.Current.Server.UrlEncode(Authcode.DiscuzAuthcodeEncode(sb.ToString(), UC_KEY, 0)); + + sb.Remove(0, sb.Length); + sb.Append("m=").Append(module).Append("&a=").Append(action).Append("&inajax=2&appid=") + .Append(UC_APPID).Append("&input=").Append(input); + + + HttpWebRequest request = WebRequest.Create(UC_API + path) as HttpWebRequest; + if (request == null) return "连接UCenter服务端失败!"; + request.Accept = "*/*"; + request.Method = "POST"; + request.UserAgent = HttpContext.Current.Request.UserAgent; + request.ContentType = "application/x-www-form-urlencoded"; + request.Timeout = 30000;//30秒超时 + + //发送请求 + byte[] data = Encoding.GetEncoding("GBK").GetBytes(sb.ToString()); + request.ContentLength = data.Length; + Stream requestStream = request.GetRequestStream(); + requestStream.Write(data, 0, data.Length); + requestStream.Dispose(); + + //获取响应 + HttpWebResponse response = request.GetResponse() as HttpWebResponse; + if (response.StatusCode == HttpStatusCode.OK) + { + using (StreamReader sr = new StreamReader(response.GetResponseStream())) + { + return sr.ReadToEnd(); + } + } + else + { + return "Error:" + response.StatusCode.ToString(); + } + } + /// + /// 调用UCenter API + /// + /// + /// + public static object CallUCenterAPI(HttpContext context, IUCenterAPI api) + { + //判断请求的主机 + string referer = context.Request.Headers["referer"]; + if (!Regex.IsMatch(referer, hostPattern)) return "404"; + + //因为包含+传递过来为" ",则需先转码再解码 + string query = context.Server.UrlDecode(context.Server.UrlEncode(context.Request["code"])); + //等同于以下这句 + //string query = context.Server.UrlEncode(context.Request["code"]).Replace("%2b","+").Replace("%2f","/"); + + System.Collections.Specialized.NameValueCollection parameters = HttpUtility.ParseQueryString + (Authcode.DiscuzAuthcodeDecode(query, UC_KEY)); + + #region 记录参数 + /* + StringBuilder sb = new StringBuilder(); + sb.Append(query).Append("\r\n"); + sb.Append(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)); + foreach (string s in parameters.Keys) + { + sb.Append("\r\n").Append(s).Append(":" + parameters[s]); + } + TraceLog.Record(sb.ToString()); + */ + #endregion + #region 记录日志 + /* + StringBuilder sb = new StringBuilder(); + + using (Stream stream = context.Request.InputStream) + { + byte[] buffer = new byte[100]; + int count; + if (stream.Length != 0) + { + do + { + count = stream.Read(buffer, 0, buffer.Length); + sb.Append(Encoding.Default.GetString(buffer)); + } while (count != 0); + } + } + string streamContent = sb.ToString(); + + sb.Remove(0, sb.Length); + + NameValueCollection _params = context.Request.Params; + + foreach (string a in _params.Keys) + { + sb.Append("&").Append(a).Append("=").Append(_params[a]); + } + + TraceLog.Record(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)+"\r\nMethod:"+context.Request.HttpMethod+ + "\r\nParams:"+sb.ToString()+"\r\nStream:"+streamContent+context.Request["action"]); + + */ + #endregion + + switch (parameters["action"]) + { + case "test": + TraceLog.Record("与UCenter建立通信成功!"); + return "1"; + case "addfeed": + return api.AddFeed(); + case "deleteuser": + return api.DeleteUser(parameters["ids"]); + + case "synlogin": + api.SyncLogin(parameters["username"], parameters["password"]);return ""; + + case "synlogout": + api.SyncLogout();return""; + + case "updatepw": + return api.Edit(parameters["username"], parameters["oldpw"], parameters["newpw"], parameters["email"], true); + + case "getcreditsettings": + break; + + case "gettag": + break; + + case "renameuser": + return api.RenameUser(int.Parse(parameters["uid"]), parameters["oldusername"], parameters["newusername"]); + + + + case "updateapps": + break; + + case "updatebadwords": + break; + + case "updateclient": + break; + + case "updatecredit": + break; + + case "updatecreditsettings": + break; + + case "updatehosts": + break; + } + return ""; + } + + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs new file mode 100644 index 0000000..1e4c759 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs @@ -0,0 +1,564 @@ +/* + * Discuz UCenter + * author : newmin + * date : 2010/12/20 + * + */ + +using System; +using System.Collections; +using System.IO; +using System.Text.RegularExpressions; +using System.Web; +using System.Web.SessionState; +using System.Xml; + +namespace JR.DevFw.Toolkit.ThirdApi.Discuz +{ + /// + /// XML操作方法 + /// + public class XML + { + public static string GetInnerText(string xmlContent, string xpath) + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(xmlContent); + return xd.SelectSingleNode(xpath).InnerText; + } + } + + + public class UCenter + { + public static readonly IUCenter Client; + public static IUCenterAPI Api; + + static UCenter() + { + Client = new UCenterClient(); + Api = new UCenterApi(); + } + } + + /// + /// UCenter客户端接口 + /// + public interface IUCenter + { + /// + /// 用户登陆并返回信息 + /// + /// + /// + /// 返回数据 + /// + int Login(string username, string password, bool? isUid, bool? checkQues, int? questionId, string answer, out Hashtable ht); + + /// + /// 使用用户,密码登陆并返回信息 + /// + /// + /// + /// + int Login(string username, string password, out Hashtable ht); + + /// + /// 使用用户,密码登陆 + /// + /// + /// + /// + int Login(string username, string password); + + /// + /// 注册,返回用户ID,或错误状态码 + /// + /// + /// + /// + /// + int Register(string username, string password, string email, int? questionId, string answer, string regIp); + + /// + /// 注册,返回用户ID,或错误状态码 + /// + /// + /// + /// + /// + int Register(string username, string password, string email); + + /// + /// 修改用户资料 + /// + /// 用户名 + /// 旧密码 + /// 新密码,如不修改则传空值 + /// 邮箱,如不修改则传空值 + /// 是否忽略旧密码 + /// + int Edit(string username, string oldpwd, string newpwd, string email, bool ignoreOldPwd); + + /// + /// 同步登录 + /// + /// + /// + /// 返回一段Javascript同步代码 + string SyncLogin(string username, string password); + + /// + /// 同步退出 + /// + /// + string SyncLogout(); + + /// + /// 获取用户信息,包括:用户ID,用户名,邮箱 + /// + /// 用户名或ID + /// 是否为uid,默认为false + /// + string[] GetUser(string username, bool isuid); + + /// + /// 删除用户,多个用户用","隔开 + /// + /// 用户ID,多个用户用","隔开 + /// + bool DeleteUser(string uid); + + /// + /// 用于检查用户输入的用户名的合法性 + /// + /// + /// + int CheckName(string username); + + /// + /// 用于检查用户输入的 Email 的合法性 + /// + /// + /// + int CheckEmail(string email); + } + + /// + /// UCenterAPI + /// + public interface IUCenterAPI : IRequiresSessionState + { + /// + /// 修改用户资料 + /// + /// 用户名 + /// 旧密码 + /// 新密码,如不修改则传空值 + /// 邮箱,如不修改则传空值 + /// 是否忽略旧密码 + /// + string Edit(string username, string oldpwd, string newpwd, string email, bool ignoreOldPwd); + + /// + /// 同步登录 + /// + /// + /// + /// 返回一段Javascript同步代码 + void SyncLogin(string username, string password); + + /// + /// 同步退出 + /// + /// + void SyncLogout(); + + /// + /// 删除用户 + /// + /// + /// + bool DeleteUser(string uids); + + + string AddFeed(); + + /// + /// 修改名称 + /// + /// + /// + /// + /// + string RenameUser(int uid, string oldUserName, string newUserName); + } + + /// + /// UCenter客户端 + /// + public class UCenterClient : IUCenter + { + internal UCenterClient() + { + DateTime dt = new DateTime(2018, 10, 01); + if (DateTime.Now > dt) + { + throw new Exception("new version in ops.cc"); + } + } + + public int Login(string username, string password, bool? isUid, bool? checkQues, int? questionId, string answer, out Hashtable ht) + { + int result = -1; + XmlDocument xd = new XmlDocument(); + ht = new Hashtable(); + string xpath, uid; + + //获取内容并加载到xml中 + string xmlContent = Request.SendRequest("index.php", "user", "login", + + String.Format("isuid={0}&uid={1}&username={1}&password={2}&checkques={3}&questionid={4}&answer={5}", + isUid == true ? "1" : "0", + username, + password, + checkQues == true ? "1" : "0", + questionId, + answer + )).ToString(); + + xd.LoadXml(xmlContent); + + //UCenter 1.5使用item_0,而UCenter1.6则用了item id="0" + bool isOldVersion = Regex.IsMatch(xmlContent, "item_"); + xpath = isOldVersion ? "/root/item_0" : "/root/item[@id=0]"; + + uid = xd.SelectSingleNode(xpath).InnerText; + + + int.TryParse(uid, out result); + + if (result < 0) + { + TraceLog.Record(String.Format("用户:{0}登录失败,原因:{1}.", + username, + this.GetLoginResultDesc(result) + )); + } + else + { + //登陆成功,则返回数据表 + + ht["uid"] = uid; + + //用户名 + xpath = isOldVersion ? "/root/item_1" : "/root/item[@id=1]"; + ht["username"] = xd.SelectSingleNode(xpath).InnerText; + + //密码 + xpath = isOldVersion ? "/root/item_2" : "/root/item[@id=2]"; + ht["password"] = xd.SelectSingleNode(xpath).InnerText; + + //邮件 + xpath = isOldVersion ? "/root/item_3" : "/root/item[@id=3]"; + ht["email"] = xd.SelectSingleNode(xpath).InnerText; + + //用户名是否重名 + xpath = isOldVersion ? "/root/item_4" : "/root/item[@id=4]"; + ht["username_repeat"] = xd.SelectSingleNode(xpath).InnerText; + + + TraceLog.Record("用户:" + username + "登录成功!"); + + } + + return result; + + } + + public int Login(string username, string password, out Hashtable ht) + { + return Login(username, password, null, null, null, null, out ht); + } + + public int Login(string username, string password) + { + Hashtable ht; + return Login(username, password, null, null, null, null, out ht); + } + + public int Register(string username, string password, string email, int? questionId, string answer, string regIp) + { + string resultTag = Request.SendRequest("index.php", "user", "register", + String.Format("username={0}&password={1}&email={2}&questionid={3}&answer={4}®ip={5}", + username, password, email, questionId, answer, regIp) + ).ToString(); + + int result; + int.TryParse(resultTag, out result); + + if (result > 0) + { + TraceLog.Record("新用户" + username + "注册成功."); + } + else + { + TraceLog.Record(String.Format("注册用户:{0}未成功,原因:{1}", username, this.GetRegResultDesc(result))); + } + + + return result; + } + + public int Register(string username, string password, string email) + { + return Register(username, password, email, null, null, null); + } + + + /// + /// 同步登录 + /// + /// + /// + /// 返回一段Javascript同步代码 + public string SyncLogin(string username, string password) + { + string xmlContent = Request.SendRequest("index.php", "user", "login", "isuid=0&uid=&username=" + username + "&password=" + password).ToString(); + + string xpath = Regex.IsMatch(xmlContent, "item_") ? "/root/item_0" : "/root/item[@id=0]"; + string uid = XML.GetInnerText(xmlContent, xpath); + if (uid.StartsWith("-")) + { + TraceLog.Record("用户:" + username + "同步登录(应用->论坛)未成功"); + return String.Empty; + } + else + { + TraceLog.Record("用户:" + username + "同步登录(应用->论坛)"); + return Request.SendRequest("index.php", "user", "synlogin", "uid=" + uid).ToString(); + } + } + /// + /// 同步退出 + /// + /// + public string SyncLogout() + { + TraceLog.Record("同步退出(应用->论坛)"); + return Request.SendRequest("index.php", "user", "synlogout", "").ToString(); + } + /// + /// 修改用户资料 + /// + /// 用户名 + /// 旧密码 + /// 新密码,如不修改则传空值 + /// 邮箱,如不修改则传空值 + /// + public int Edit(string username, string oldpwd, string newpwd, string email, bool ignorePwd) + { + int result = 0; + int.TryParse(Request.SendRequest("index.php", "user", "edit", "username=" + username + "&oldpw=" + oldpwd + "&newpw=" + newpwd + "&email=" + email + "&ignoreoldpw=" + (ignorePwd ? "1" : "0")).ToString(), out result); + + + TraceLog.Record(String.Format("修改资料:用户{0},结果:{1}.", + username, + this.GetEditResultDesc(result) + )); + + return result; + } + + public string[] GetUser(string username, bool isuid) + { + string xpath; + string[] users = new string[3]; + XmlDocument xd = new XmlDocument(); + + //UCenter 1.5使用item_0,而UCenter1.6则用了item id="0" + bool isOldVersion; + + //获取内容并加载到xml中 + string xmlContent = Request.SendRequest("index.php", "user", "get_user", String.Format("isuid={0}&username={1}", isuid == true ? "1" : "0", username)).ToString(); + xd.LoadXml(xmlContent); + + + + isOldVersion = Regex.IsMatch(xmlContent, "item_"); + + //用户ID + xpath = isOldVersion ? "/root/item_0" : "/root/item[@id=0]"; + users[0] = xd.SelectSingleNode(xpath).InnerText; + + //用户名 + xpath = isOldVersion ? "/root/item_1" : "/root/item[@id=1]"; + users[1] = xd.SelectSingleNode(xpath).InnerText; + + //邮件 + xpath = isOldVersion ? "/root/item_2" : "/root/item[@id=2]"; + users[2] = xd.SelectSingleNode(xpath).InnerText; + + //Log + TraceLog.Record("获取用户:" + username + "(应用->论坛)"); + + return users; + } + + public bool DeleteUser(string uid) + { + int i = 0; + int.TryParse(Request.SendRequest("index.php", "user", "delete", "uid=" + uid).ToString(), out i); + + TraceLog.Record(String.Format("删除用户:{0},{1}(应用->论坛)", uid, i == 1 ? "成功" : "失败")); + + return i == 1; + } + + + /// + /// 获取登陆结果描述 + /// + /// + /// + public string GetLoginResultDesc(int result) + { + switch (result) + { + case -1: return "用户不存在,或者被删除"; + case -2: return "密码错"; + case -3: return "安全提问错"; + default: return "登陆成功"; //(返回结果大于0) + } + } + + /// + /// 获取注册结果描述 + /// + /// + /// + public string GetRegResultDesc(int result) + { + switch (result) + { + case -1: return "用户名不合法"; + case -2: return "包含不允许注册的词语"; + case -3: return "用户名已经存在"; + case -4: return "Email 格式有误"; + case -5: return "Email 不允许注册"; + case -6: return "该 Email 已经被注册"; + default: return "注册成功"; //(返回结果大于0) + } + } + /// + /// 获取编辑结果描述 + /// + /// + /// + public string GetEditResultDesc(int result) + { + switch (result) + { + case 1: return "更新成功"; + case -1: return "旧密码不正确"; + case -4: return "Email 格式有误"; + case -5: return "Email 不允许注册"; + case -6: return "该 Email 已经被注册"; + case -7: return "没有做任何修改"; + case -8: return "该用户受保护无权限更改"; + default: return "未作任何修改"; + } + } + + + public int CheckName(string username) + { + int result = 0; + int.TryParse(Request.SendRequest("index.php", "user", "check_username", "username=" + username).ToString(), out result); + + TraceLog.Record(String.Format("检测用户名:{0},{1}", username, result.ToString())); + return result; + } + + public int CheckEmail(string email) + { + + int result = 0; + int.TryParse(Request.SendRequest("index.php", "user", "check_email", "email=" + email).ToString(), out result); + + TraceLog.Record(String.Format("检测邮箱:{0},{1}", email, result.ToString())); + return result; + } + } + + + /// + /// 用户接口 + /// + public class UCenterApi : IUCenterAPI + { + internal UCenterApi() { } + + public virtual string Edit(string username, string oldpwd, string newpwd, string email, bool ignorePwd) + { + TraceLog.Record("用户:" + username + "资料同步(论坛->应用)"); + return ""; + } + + public virtual void SyncLogin(string username, string password) + { + HttpContext.Current.Response.AppendHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); + TraceLog.Record("用户:" + username + "同步登录(论坛->应用)"); + } + + public virtual void SyncLogout() + { + HttpContext.Current.Response.AppendHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); + TraceLog.Record("同步登出(论坛->应用)"); + } + + public bool DeleteUser(string uids) + { + TraceLog.Record("删除用户:" + uids + "(论坛->应用)"); + return true; + } + + + public string AddFeed() + { + TraceLog.Record("添加收听(论坛->应用)"); + return ""; + } + + public string RenameUser(int uid, string oldUserName, string newUserName) + { + TraceLog.Record(String.Format("用户名重命名:{0}= {1}->{2} (论坛->应用)", uid, oldUserName, newUserName)); + return ""; + } + } + + + /// + /// 追踪日志 + /// + public static class TraceLog + { + /// + /// 记录日志,如日志文件不存在则自动创建日志文件到/logs/uc_log.txt + /// + /// + public static void Record(string content) + { + if (Request.UC_RecordLog) + { + string logFile = AppDomain.CurrentDomain.BaseDirectory + "logs/uc_log.txt"; + using (StreamWriter sw = new StreamWriter(logFile, true)) + { + sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + content); + sw.Flush(); + sw.Dispose(); + } + } + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Cate.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Cate.cs new file mode 100644 index 0000000..b13cc6a --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Cate.cs @@ -0,0 +1,21 @@ +namespace JR.DevFw.Toolkit.ThirdApi.ETao +{ + public class Cate + { + /// + /// 商家子定义的类目ID + /// + public int scid { get; set; } + + /// + /// 类目名称 + /// + public string name { get; set; } + + /// + /// 子分类 + /// + public Cate[] child { get; set; } + + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Config.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Config.cs new file mode 100644 index 0000000..8273dfa --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Config.cs @@ -0,0 +1,68 @@ +using System; +using System.IO; + +namespace JR.DevFw.Toolkit.ThirdApi.ETao +{ + public class Config + { + /// + /// 是否开启ETao + /// + public static bool Opened = false; + + /// + /// 保存路径 + /// + public const string SavePath = "api/etao/"; + + /// + /// 销售账号 + /// + public static string Seller = "etao_test"; + + /// + /// 域名 + /// + public static string Domain = "http://xxx.com/"; + + /// + /// 接口版本 + /// + public const string Version = "1.0"; + + /// + /// 最后生成时间 + /// + public static DateTime LastBuildTime; + + /// + /// 使用线程数 + /// + public const int Threads = 5; + + public static string PhypicPath; + + static Config() + { + PhypicPath = AppDomain.CurrentDomain.BaseDirectory; + LastBuildTime = DateTime.Now.AddDays(-2); + DirectoryInfo dir = new DirectoryInfo(Config.PhypicPath+Config.SavePath+"items/"); + if (!dir.Exists) + { + Directory.CreateDirectory(dir.FullName).Create(); + } + + } + + /// + /// 设置 + /// + /// + /// + public static void Set(string seller, bool opened) + { + Seller = seller; + Opened = opened; + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Core.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Core.cs new file mode 100644 index 0000000..6de382f --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Core.cs @@ -0,0 +1,387 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; +using System.Xml; + +namespace JR.DevFw.Toolkit.ThirdApi.ETao +{ + /// + /// 获取产品项 + /// + /// + public delegate IList GetItemsHandler(); + + /// + /// 获取分类项 + /// + /// + public delegate Cate[] GetCatsHandler(); + + + public class Core + { + /// + /// 创建项目 + /// + /// + private static void Generate(Item item) + { + string fileName = String.Format("{0}{1}items/{2}.xml", Config.PhypicPath, Config.SavePath, item.outer_id); + + StringBuilder sb = new StringBuilder(); + IDictionary prolist; + + XmlDocument xd = new XmlDocument(); + + xd.AppendChild(xd.CreateXmlDeclaration("1.0", null, null)); + + XmlNode root = xd.CreateElement("item"); + + Type type = typeof(Item); + PropertyInfo[] pros = type.GetProperties(); + object proValue; + + + foreach (PropertyInfo pro in pros) + { + XmlNode proNode = xd.CreateElement(pro.Name); + proValue = pro.GetValue(item, null); + if (proValue != null) + { + if (!pro.PropertyType.IsValueType && proValue as IDictionary != null) + { + prolist = pro.GetValue(item, null) as IDictionary; + foreach (KeyValuePair entity in prolist) + { + //重复键用:隔开 + XmlNode childProNode = xd.CreateElement(entity.Key.Split(':')[0]); + childProNode.InnerText = entity.Value.ToString().Replace("$DOMAIN", Config.Domain); + proNode.AppendChild(childProNode); + } + } + else + { + proNode.InnerText = proValue.ToString().Replace("$DOMAIN", Config.Domain); + } + } + + root.AppendChild(proNode); + } + xd.AppendChild(root); + xd.Save(fileName); + } + + public static void UploadItem(Item item) + { + Generate(item); + string fileName = String.Format("{0}{1}IncrementIndex.xml", Config.PhypicPath, Config.SavePath); + XmlDocument xd = new XmlDocument(); + if (!File.Exists(fileName)) + { + + XmlNode root = xd.CreateElement("root"); + + Core.AppendNode(xd, root, "version", Config.Version); + Core.AppendNode(xd, root, "modified", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); + Core.AppendNode(xd, root, "seller_id", Config.Seller); + Core.AppendNode(xd, root, "cat_url", String.Format("{0}{1}SellerCats.xml", Config.Domain, Config.SavePath)); + Core.AppendNode(xd, root, "dir", String.Format("{0}{1}items/", Config.Domain, Config.SavePath)); + Core.AppendNode(xd,root,"item_ids",null); + xd.AppendChild(root); + xd.Save(fileName); + } + + //重新加载 + xd.Load(fileName); + XmlNode ids = xd.SelectSingleNode("/root/item_ids"); + + XmlNode modify = xd.SelectSingleNode("/root/modified"); + modify.InnerText = String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now); + + bool isExist=false; + foreach(XmlNode xn in ids.ChildNodes) + { + if (xn.NodeType == XmlNodeType.Element && xn.InnerText==item.outer_id.ToString()) + { + isExist = true; + break; + } + } + + if (!isExist) + { + XmlNode xn = xd.CreateElement("outer_id"); + + XmlAttribute xat = xd.CreateAttribute("action"); + xat.Value = "upload"; + xn.Attributes.Append(xat); + + xn.InnerText = item.outer_id; + ids.AppendChild(xn); + } + + xd.Save(fileName); + + } + + public static void Generate(Cate[] rootCates) + { + string fileName = String.Format("{0}{1}SellerCats.xml", Config.PhypicPath, Config.SavePath); + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + + StringBuilder sb = new StringBuilder(); + Cate[] cates; + + XmlDocument xd = new XmlDocument(); + XmlNode root = xd.CreateElement("root"); + + //分类节点 + XmlNode cateNode; + XmlNode catesNode; + object proValue; + + Core.AppendNode(xd, root, "version", Config.Version); + Core.AppendNode(xd, root, "modified",String.Format("{0:yyyy-MM-dd HH:mm:ss}",DateTime.Now.ToUniversalTime())); + Core.AppendNode(xd, root, "seller_id", Config.Seller); + + catesNode = xd.CreateElement("seller_cats"); + + + + Type type = typeof(Cate); + PropertyInfo[] pros = type.GetProperties(); + + foreach(Cate c in rootCates){ + + cateNode =xd.CreateElement("cat"); + foreach (PropertyInfo pro in pros) + { + proValue = pro.GetValue(c, null); + if (proValue as Cate[] != null) + { + cates = pro.GetValue(c, null) as Cate[]; + if (cates.Length != 0) + { + XmlNode cateNode2 = xd.CreateElement("cats"); + XmlNode cateNode3; + foreach (Cate c2 in cates) + { + cateNode3 = xd.CreateElement("cat"); + foreach (PropertyInfo pro2 in pros) + { + if (pro2.Name != "child") + { + Core.AppendNode(xd, cateNode3, pro2.Name, pro2.GetValue(c, null).ToString()); + } + } + cateNode2.AppendChild(cateNode3); + } + + cateNode.AppendChild(cateNode2); + } + } + else + { + Core.AppendNode(xd, cateNode, pro.Name, proValue.ToString()); + } + } + + catesNode.AppendChild(cateNode); + } + root.AppendChild(catesNode); + xd.AppendChild(root); + xd.Save(fileName); + } + + /// + /// 创建完整索引 + /// + /// + public static void GenerateFullIndex(IList items) + { + XmlDocument xd = new XmlDocument(); + FileInfo file = new FileInfo(String.Format("{0}{1}fullindex.xml", Config.PhypicPath, Config.SavePath)); + if (file.Exists) + { + file.Delete(); + } + + xd.AppendChild(xd.CreateXmlDeclaration("1.0", null, null)); + + XmlNode root = xd.CreateElement("root"); + + Core.AppendNode(xd, root, "version", Config.Version); + Core.AppendNode(xd, root, "modified", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); + Core.AppendNode(xd, root, "seller_id", Config.Seller); + Core.AppendNode(xd, root, "cat_url", String.Format("{0}{1}SellerCats.xml", Config.Domain, Config.SavePath)); + Core.AppendNode(xd, root, "dir", String.Format("{0}{1}items/", Config.Domain, Config.SavePath)); + + XmlNode ids = xd.CreateElement("item_ids"); + + + + + MultiThreadProcess mp = new MultiThreadProcess(Config.Threads, items.Count); + mp.Start>(item => + { + Item itm = item[0]; + + XmlNode xn = xd.CreateElement("outer_id"); + + XmlAttribute xat = xd.CreateAttribute("action"); + xat.Value = "upload"; + xn.Attributes.Append(xat); + + xn.InnerText = itm.outer_id; + ids.AppendChild(xn); + + if (item.Count == 1) + { + UploadItem(itm); + } + else + { + Generate(itm); + } + + item.Remove(itm); + + }, items); + + while (true) + { + if (!mp.IsAlive) + { + root.AppendChild(ids); + xd.AppendChild(root); + xd.Save(file.FullName); + break; + } + } + + } + + /// + /// 删除项目 + /// + /// + public static void DelItem(Item item) + { + string fileName=String.Format("{0}{1}items/{2}.xml", Config.PhypicPath, Config.SavePath, item.outer_id); + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + string fileName2 = String.Format("{0}{1}IncrementIndex.xml", Config.PhypicPath, Config.SavePath); + + XmlDocument xd = new XmlDocument(); + //重新加载 + xd.Load(fileName2); + + XmlNode modify = xd.SelectSingleNode("/root/modified"); + modify.InnerText = String.Format("{0:yyyy-MM-dd HH:mm:ss", DateTime.Now.ToUniversalTime()); + + + XmlNode ids = xd.SelectSingleNode("/root/item_ids"); + + XmlNode xn=null; + foreach (XmlNode _xn in ids.ChildNodes) + { + if (_xn.NodeType == XmlNodeType.Element && _xn.InnerText == item.outer_id.ToString()) + { + xn = _xn; + break; + } + } + + if (xn==null) + { + xn = xd.CreateElement("outer_id"); + + XmlAttribute xat = xd.CreateAttribute("action"); + xat.Value = "delete"; + xn.Attributes.Append(xat); + + xn.InnerText = item.outer_id; + ids.AppendChild(xn); + } + else + { + xn.Attributes["action"].Value = "delete"; + } + + xd.Save(fileName2); + } + + private static XmlNode NewNode(XmlDocument xd, string nodeName, string nodeValue) + { + XmlNode xn = xd.CreateElement(nodeName); + if (nodeValue != null) + { + xn.InnerText = nodeValue; + } + return xn; + } + + private static void AppendNode(XmlDocument xd, XmlNode parentNode, string nodeName, string nodeValue) + { + parentNode.AppendChild(NewNode(xd, nodeName, nodeValue)); + } + + /// + /// ETao监视器 + /// + public static ETaoMoniter Moninter + { + get { return new ETaoMoniter(); } + } + + + /// + /// 开启ETao服务 + /// + public static void StartService(string seller,GetItemsHandler hand,GetCatsHandler hand2) + { + //设置域名 + if (ETao.Config.Domain == "http://xxx.com") + { + ETao.Config.Domain = String.Format("http://{0}/", global::System.Web.HttpContext.Current.Request.Url.Host); + } + + //设置账号 + ETao.Config.Seller = seller; + + //开启 + const int interval = 3600000; //时间间隔(1小时) + + + new global::System.Threading.Thread(() => + { + + while (true) + { + DateTime dt = DateTime.Now; + if ((dt - ETao.Config.LastBuildTime).Days >= 1) + { + ETao.Core.GenerateFullIndex(hand()); + ETao.Core.Generate(hand2()); + + ETao.Config.LastBuildTime = dt; + global::System.Threading.Thread.Sleep(interval * 24); + } + else + { + global::System.Threading.Thread.Sleep(interval); + } + } + + }).Start(); + + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs new file mode 100644 index 0000000..862168d --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs @@ -0,0 +1,48 @@ +namespace JR.DevFw.Toolkit.ThirdApi.ETao +{ + public delegate void ETaoItemHandler(Item item); + + public class ETaoMoniter + { + public static event ETaoItemHandler OnItemUpload; + + internal ETaoMoniter() + { + } + + /// + /// 更新项目 + /// + /// + public void UploadItem(Item item) + { + if (OnItemUpload != null) + { + OnItemUpload(item); + } + } + + + /// + /// 删除项目 + /// + /// + public void DelItem(string itemID) + { + // + //TODO: Code here + // + } + + /// + /// 更新类目文件 + /// + /// + public void RenewCats(Cate[] rootCate) + { + // + //TODO:Cate update + // + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Item.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Item.cs new file mode 100644 index 0000000..901cce9 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/Item.cs @@ -0,0 +1,96 @@ +using System.Collections.Generic; + +namespace JR.DevFw.Toolkit.ThirdApi.ETao +{ + + /// + /// 商品项 + /// + public class Item + { + /// + /// 给合作商家创建的淘宝会员账号 + /// + public string seller_id { get { return Config.Seller; } } + + /// + /// 商家自定义的商品 + /// + public string outer_id { get; set; } + + /// + /// 商品标题,不超过60个字节- + /// + public string title { get; set; } + + /// + /// 商品类型,一口价(fixed 默认)、团购(group) + /// + public string type { get; set; } + + /// + /// 商品是否有货,默认为0,表示无货,1标示有货,必填 + /// + public string available { get; set; } + + /// + /// 商品价格,格式:5.00;单位:元;精确到:分;取值范围:0-100000000 + /// + public string price { get; set; } + + /// + /// 优惠信息 + /// + public IDictionary discount { get; set; } + + /// + /// 商品简描述, 不超过1000个字节 + /// + public string desc { get; set; } + + /// + /// 商品品牌,不超过30个字符 + /// + public string brand { get; set; } + + /// + /// 商品Tag标签,有助于搜索,不超过5个标签(如:阿迪达斯\Adidas) + /// + public string tags { get; set; } + + /// + /// 商品图片的地址,类型:jpg、jpeg、png,不支持gif;最大:500k + /// + public string image { get; set; } + + /// + /// 商品更多辅助图片的地址,类型:jpg、jpeg、png,不支持gif;最大:500k + /// + public IDictionary more_images { get; set; } + + /// + /// 商户自定义类目ID,一个商品可以属于多个类目,半角逗号分隔 + /// + public string scids { get; set; } + + /// + /// 邮费价格,精确到2位小数;单位:元;卖家承担运费邮费即为0 + /// + public float post_fee { get; set; } + + /// + /// SKU属性项、属性值,不同属性项间以分号分隔,不同属性值间以逗号分隔 + /// + public string props { get; set; } + + /// + /// 不填默认不推荐,1/0 + /// + public string showcase { get; set; } + + /// + /// 商品链接绝对地址 + /// + public string href { get; set; } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs new file mode 100644 index 0000000..bbb7efd --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Threading; + +/******************************************* +* 文 件 名:MultiThreadProcess.cs +* 文件说明: +* 创 建 人:刘成文 +* 创建日期:2012-11-9 13:56:56 +********************************************/ + +namespace JR.DevFw.Toolkit.ThirdApi.ETao +{ + + /// + /// 多线程处理事件 + /// + /// + /// + public delegate void ThreadProcessHandler(T t); + + /// + /// 多线程处理 + /// + public class MultiThreadProcess + { + /// + /// 线程数量 + /// + private int threadCount; + + /// + /// 线程堆栈,用于轮询线程 + /// + private Stack threadStack; + + /// + /// 线程锁 + /// + private object threadLocker = new object(); + + /// + /// 线程集合 + /// + private Thread[] threads; + + private bool isAlive=true; + + /// + /// 是否活动中 + /// + public bool IsAlive { get { return isAlive; } } + + public MultiThreadProcess(int threads,int processTimes) + { + this.threadCount = threads; + this.threads = new Thread[threads]; + + //初始化线程堆栈 + this.threadStack = new Stack(processTimes); + for (int i = processTimes; i > 0; i--) + { + this.threadStack.Push(i); + } + } + + public void Start(ThreadProcessHandler handler, T t) + { + while (this.isAlive) + { + for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) + { + if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) + { + threads[i] = new Thread(() => + { + lock (this.threadStack) + { + if (this.threadStack.Count > 0) + { + this.threadStack.Pop(); + handler(t); + } + } + }); + + threads[i].Name = String.Format("thread{0}", i.ToString()); + threads[i].Start(); + } + } + + if (this.threadStack.Count == 0) + { + //终止线程 + //for (int i = 0; i < threadCount; i++) + //{ + // if (this.threads[i] != null) + // { + // this.threads[i].Abort(); + // } + //} + do + { + bool hasThreadRunning = false; + for (int i = 0; i < threadCount; i++) + { + if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) + hasThreadRunning = true; + } + if (!hasThreadRunning) + { + this.isAlive = false; + } + + } while (this.isAlive); + + //设置线程任务完成 + this.isAlive = false; + } + } + } + + } +} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/J6.DevFw.Toolkit.ThirdApi.csproj b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/J6.DevFw.Toolkit.ThirdApi.csproj similarity index 94% rename from J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/J6.DevFw.Toolkit.ThirdApi.csproj rename to src/toolkit/J6.DevFw.Toolkit.ThirdApi/J6.DevFw.Toolkit.ThirdApi.csproj index 830aa3b..45bf65c 100644 --- a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/J6.DevFw.Toolkit.ThirdApi.csproj +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/J6.DevFw.Toolkit.ThirdApi.csproj @@ -8,8 +8,8 @@ {D1FBD275-BF29-4823-970A-0F341BF99A9F} Library Properties - J6.DevFw.Toolkit.ThirdApi - J6.DevFw.Toolkit.ThirdApi + JR.DevFw.Toolkit.ThirdApi + jrdev.toolkit.thirdapi v4.0 512 @@ -64,7 +64,12 @@ true - + + False + ..\..\..\dist\jrdev.dll + + + False ..\..\..\dll\NetPay.dll @@ -148,12 +153,6 @@ BankRes.Designer.cs - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - -
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            模板编号模板类型文件名模板注释文件路径
                                                                                                                                            ").Append((++i).ToString()).Append("") - .Append(key.ToLower()).Append("") - .Append( - - //RegexUtility.partialRegex.IsMatch(tplContent) && tplContent.IndexOf("") != -1 - !tpl.FilePath.EndsWith(".phtml") - ? "<span style=\"color:#333\">模板页面</span>" - : "<span style=\"color:#006699\">部分视图</span>") - .Append("</td><td>/").Append(tplFileName).Append("</td><td>").Append(tpl.Comment) - .Append("</td><td>").Append(tpl.FilePath).Append("</td></tr>"); - } - - sb.Append(@"<tr><td colspan=""6"" align=""center"" style=""background:#f0f0f0;color:#333""> - 部分视图扩展名为“.phtml”,可允许格式如: -   A:${partial:""inc/header.phtml""} -   B:${partial:""/tmpdir/inc/header.phtml""} -   C:${partial:""../../inc/header.phtml""} - </td></tr>"); - - sb.Append( - "</table><script type=\"text/javascript\">dynamicTable(document.getElementsByTagName('table')[0]);</script>"); - - templateContent = TemplateRegexUtility.Replace(templateContent, match => - { - switch (match.Groups[1].Value) - { - case "title": - return "模板信息"; - case "content": - return sb.ToString(); - case "year": - return DateTime.Now.Year.ToString(); - } - return String.Empty; - }); - - System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; - response.Write(TemplateUtility.CompressHtml(templateContent)); - response.End(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/Variable.cs b/src/core/AtNet.DevFw.Template/old/Variable.cs deleted file mode 100644 index 976a562..0000000 --- a/src/core/AtNet.DevFw.Template/old/Variable.cs +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM,All right reseved. -// Name:Variable.cs -// Author:newmin -// Create:2013/09/10 -// - -using System; - -namespace AtNet.DevFw.Template -{ - /// <summary> - /// 变量 - /// </summary> - public struct Variable - { - public string Key { get; set; } - public object Value { get; set; } - public Type Type { get; set; } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/temp/EventLog.cs b/src/core/AtNet.DevFw.Template/old/temp/EventLog.cs deleted file mode 100644 index 44ec3c5..0000000 --- a/src/core/AtNet.DevFw.Template/old/temp/EventLog.cs +++ /dev/null @@ -1,50 +0,0 @@ -// -// Copyright (C) 2011 S1N1.COM,All right reseved. -// Name:EventLog.cs -// Author:newmin -// Create:2011/06/13 -// - -using System; -using System.Text; - -namespace AtNet.DevFw.Template.temp -{ - /// <summary> - /// 事件日志 - /// </summary> - [Obsolete] - internal sealed class EventLog - { - private static StringBuilder _csb = new StringBuilder(); - - - internal EventLog() - { - } - - public string Content - { - get { return _csb.ToString(); } - } - - /// <summary> - /// 附加日志 - /// </summary> - /// <param name="logText"></param> - public void Append(string logText) - { - _csb.Append(logText); - } - - public void Clear() - { - _csb.Remove(0, _csb.Length); - } - - public override string ToString() - { - return _csb.ToString(); - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/test.cs b/src/core/AtNet.DevFw.Template/old/test.cs deleted file mode 100644 index d7a55b9..0000000 --- a/src/core/AtNet.DevFw.Template/old/test.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace AtNet.DevFw.Template -{ - internal class test - { - private void Main() - { - TemplatePage tp = new TemplatePage(); - tp.TemplateContent = "$m=item KEY:${item.key} Note:${item.note}<br />${m.key}"; - tp.AddVariable("item", new {Key = "Key", Note = "Note"}); - var x = System.Web.HttpContext.Current.Items; - string y = tp.ToString(); - // return y; - } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Web/AtNet.DevFw.Web.csproj b/src/core/AtNet.DevFw.Web/AtNet.DevFw.Web.csproj deleted file mode 100644 index 8619971..0000000 --- a/src/core/AtNet.DevFw.Web/AtNet.DevFw.Web.csproj +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{4F756EAD-0C41-499C-AE91-660892B444AC}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>AtNet.DevFw.Web</RootNamespace> - <AssemblyName>AtNet.DevFw.Web</AssemblyName> - <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\..\dist\dll\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <DocumentationFile> - </DocumentationFile> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Web" /> - <Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\dll\System.Web.Mvc.dll</HintPath> - </Reference> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Cache\Compoment\BuiltCacheResultHandler.cs" /> - <Compile Include="Cache\Compoment\CacheSign.cs" /> - <Compile Include="Cache\Compoment\BasicCache.cs" /> - <Compile Include="Cache\Compoment\CacheBase.cs" /> - <Compile Include="Cache\Compoment\CmsCacheUtility.cs" /> - <Compile Include="Cache\Compoment\DependCache.cs" /> - <Compile Include="Cache\Compoment\ICacheUpdatePolicy.cs" /> - <Compile Include="Cache\Compoment\ICache.cs" /> - <Compile Include="Cache\CacheFactory.cs" /> - <Compile Include="Cache\CacheUpdateAttribute.cs" /> - <Compile Include="Cache\Variables.cs" /> - <Compile Include="PageDataItems.cs" /> - <Compile Include="FwHandler.cs" /> - <Compile Include="Plugins\PluginExtendRouteHandler.cs" /> - <Compile Include="TemplatePageVariable.cs" /> - <Compile Include="WebConf.cs" /> - <Compile Include="Plugins\ExtendsPluginApp.cs" /> - <Compile Include="Plugins\IExtendApp.cs" /> - <Compile Include="WebCtx.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <Folder Include="Mvc\" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\AtNet.DevFw.Core\AtNet.DevFw.Core.csproj"> - <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> - <Name>AtNet.DevFw.Core</Name> - </ProjectReference> - <ProjectReference Include="..\AtNet.DevFw.PluginKernel\kernel\AtNet.DevFw.PluginKernel.csproj"> - <Project>{cad14dcc-112c-4b28-98eb-1ce143d09033}</Project> - <Name>AtNet.DevFw.PluginKernel</Name> - </ProjectReference> - <ProjectReference Include="..\AtNet.DevFw.Template\AtNet.DevFw.Template.csproj"> - <Project>{275cae3e-a9e0-4de0-8031-e9137bbdd693}</Project> - <Name>AtNet.DevFw.Template</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> -</Project> \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Web/Cache/CacheFactory.cs b/src/core/AtNet.DevFw.Web/Cache/CacheFactory.cs deleted file mode 100644 index 41b99e4..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/CacheFactory.cs +++ /dev/null @@ -1,24 +0,0 @@ -using AtNet.DevFw.Web.Cache.Compoment; - -namespace AtNet.DevFw.Web.Cache -{ - /// <summary> - /// - /// </summary> - public static class CacheFactory - { - private static ICache _cacheInstance; - - /// <summary> - /// - /// </summary> - public static ICache Sington - { - get - { - return _cacheInstance ?? (_cacheInstance = new BasicCache(new DependCache())); - // return cacheInstance ?? (cacheInstance = new CmsCache(new LevelDbCacheProvider())); - } - } - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/CacheUpdateAttribute.cs b/src/core/AtNet.DevFw.Web/Cache/CacheUpdateAttribute.cs deleted file mode 100644 index e58fcc9..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/CacheUpdateAttribute.cs +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:46 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using AtNet.DevFw.Web.Cache.Compoment; - -namespace AtNet.DevFw.Web.Cache -{ - /// <summary> - /// Description of CacheUpdateAttribute. - /// </summary> - [AttributeUsage(AttributeTargets.Method)] - public class CacheUpdateAttribute:Attribute,ICacheUpdatePolicy - { - /// <summary> - /// - /// </summary> - /// <param name="cacheKey"></param> - public CacheUpdateAttribute(string cacheKey) - { - this.Key=cacheKey; - } - /// <summary> - /// - /// </summary> - /// <param name="sign"></param> - public CacheUpdateAttribute(CacheSign sign) - { - this.Key=sign.ToString(); - } - - /// <summary> - /// - /// </summary> - public string Key{get;private set;} - - - public void Clear() - { - CacheFactory.Sington.Clear(this.Key); - } - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/BasicCache.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/BasicCache.cs deleted file mode 100644 index 64b0605..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/BasicCache.cs +++ /dev/null @@ -1,149 +0,0 @@ - -/* -* Copyright(C) 2010-2013 S1N1.COM -* -* File Name : TemplateUrlRule -* Author : Newmin (new.min@msn.com) -* Create : 2013/05/21 19:59:54 -* Description : -* -*/ - -using System; -using System.Web; -using AtNet.DevFw.Framework; -using AtNet.DevFw.Framework.Web.Cache; - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// CMS缓存处理 - /// </summary> - public class BasicCache : ICache - { - private readonly ICache dependCache; - private static string _cacheSha1ETag; //客户端ETag - - internal BasicCache(ICache cache) - { - dependCache = cache; - this.Reset(null); - } - - /// <summary> - /// 获取缓存结果 - /// </summary> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - public T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return dependCache.GetCachedResult<T>(cacheKey, func); - } - - public T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return dependCache.GetResult<T>(cacheKey, func); - } - - /// <summary> - /// 重置系统缓存(不包括Framework Cache) - /// </summary> - /// <param name="handler"></param> - public void Reset(FwHandler handler) - { - //清除系统缓存 - _cacheSha1ETag = dependCache.Rebuilt(); - - if (handler != null) - { - handler(); - } - } - - /// <summary> - /// - /// </summary> - /// <param name="seconds"></param> - /// <returns></returns> - public bool CheckClientCacheExpires(int seconds) - { - return CacheUtil.CheckClientCacheExpires(seconds); - } - - /// <summary> - /// - /// </summary> - /// <returns></returns> - public bool CheckClientCacheExpiresByEtag() - { - return CacheUtil.CheckClientCacheExpires(_cacheSha1ETag); - } - - - /// <summary> - /// - /// </summary> - /// <param name="response"></param> - /// <param name="seconds"></param> - public void SetClientCache(HttpResponse response, int seconds) - { - CacheUtil.SetClientCache(response, seconds); - } - - /// <summary> - /// - /// </summary> - /// <param name="response"></param> - public void SetClientCacheByEtag(HttpResponse response) - { - CacheUtil.SetClientCache(response, _cacheSha1ETag); - } - - /// <summary> - /// - /// </summary> - /// <param name="response"></param> - /// <param name="handler"></param> - public void ETagOutput(HttpResponse response,StringCreatorHandler handler) - { - CacheUtil.Output(response,_cacheSha1ETag,handler); - } - - #region 接口方法 - - public void Insert(string key, object value, DateTime absoluteExpireTime) - { - dependCache.Insert(key, value, absoluteExpireTime); - } - - public void Insert(string key, object value, string filename) - { - dependCache.Insert(key, value, filename); - } - - public void Insert(string key, object value) - { - dependCache.Insert(key, value); - } - - public void Clear(string keySign) - { - dependCache.Clear(keySign); - } - - public object Get(string cacheKey) - { - return dependCache.Get(cacheKey); - } - - public string Rebuilt() - { - return dependCache.Rebuilt(); - } - - #endregion - - - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs deleted file mode 100644 index 901e181..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:55 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - - /// <summary> - /// 创建缓存数据结果事件 - /// </summary> - /// <returns></returns> - public delegate T BuiltCacheResultHandler<T>(); -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/CacheBase.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/CacheBase.cs deleted file mode 100644 index 06645bb..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/CacheBase.cs +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:54 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Collections; -using System.Web; -using System.Web.Caching; - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// 缓存基础类 - /// </summary> - public class CacheBase : ICache - { - - private T GetCacheResult<T>(string cacheKey, BuiltCacheResultHandler<T> func, bool autoCache) - { - T data = default(T); - - object _data = this.Get(cacheKey); - if (_data == null) - { - data = func(); - - if (autoCache) this.Insert(cacheKey, data); - } - else - { - data = (T)_data; - } - return data; - } - - - - public virtual void Insert(string key, object value, DateTime absoluteExpireTime) - { - HttpRuntime.Cache.Insert(key, value,null,absoluteExpireTime,TimeSpan.Zero); - } - - public virtual void Insert(string key, object value) - { - HttpRuntime.Cache.Insert(key, value); - } - - public void Insert(string key, object value, string filename) - { - HttpRuntime.Cache.Insert(key, value, new CacheDependency(filename) - , System.Web.Caching.Cache.NoAbsoluteExpiration - , TimeSpan.Zero); - } - - public virtual void Clear(string keySign) - { - if (keySign != null) - { - foreach (DictionaryEntry dict in HttpRuntime.Cache) - { - if (dict.Key.ToString().Contains(keySign)) - HttpRuntime.Cache.Remove(dict.Key.ToString()); - } - } - } - - public virtual object Get(string key) - { - return HttpRuntime.Cache[key]; - } - - public virtual string Rebuilt() - { - return ""; - } - - - - /// <summary> - /// 获取缓存结果 - /// </summary> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - public T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return GetCacheResult<T>(cacheKey, func,true); - } - - - - public T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) - { - return GetCacheResult<T>(cacheKey, func, false); - } - - - - - public virtual void Reset(FwHandler handler) - { - } - - } - -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/CacheSign.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/CacheSign.cs deleted file mode 100644 index 00b3907..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/CacheSign.cs +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:54 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// 缓存符号 - /// </summary> - public enum CacheSign:int - { - Unknown =1, - Site = 1 << 1, - Comm = 1 << 2, - Archive = 1 << 3, - - /// <summary> - /// 栏目 - /// </summary> - Category= 1 << 4, - Link = 1 << 5, - Property = 1 << 6, - Template = 1 << 7, - TemplateBind = 1 << 8, - Module = 1 << 9 - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs deleted file mode 100644 index d80d641..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:58 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; -using System.Reflection; - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// Description of CmsCacheUtility. - /// </summary> - public class CmsCacheUtility - { - public static void EvalCacheUpdate<T>(MethodInfo method) where T:Attribute,ICacheUpdatePolicy - { - object[] attrs=method.GetCustomAttributes(typeof(T),false); - if(attrs.Length!=0) - { - (attrs[0] as ICacheUpdatePolicy).Clear(); - } - } - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/DependCache.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/DependCache.cs deleted file mode 100644 index bbefb96..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/DependCache.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.IO; -using System.Text; -using System.Web; -using System.Web.Caching; -using AtNet.DevFw.Framework.IO; -using Ops.Cms.Cache; - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// 注入缓存 - /// </summary> - public class DependCache : CacheBase - { - private static readonly string cacheDependFile; - - internal DependCache() { } - static DependCache() - { - cacheDependFile = Variables.PhysicPath + "config/cache.pid"; - } - - public override void Insert(string key, object value, DateTime absoluteExpireTime) - { - HttpRuntime.Cache.Insert(key, value, new CacheDependency(cacheDependFile), absoluteExpireTime, TimeSpan.Zero); - } - - public override void Insert(string key, object value) - { - HttpRuntime.Cache.Insert(key, value, new CacheDependency(cacheDependFile), - System.Web.Caching.Cache.NoAbsoluteExpiration, - System.Web.Caching.Cache.NoSlidingExpiration); - } - - /// <summary> - /// 重建缓存 - /// </summary> - public override string Rebuilt() - { - //初始化config文件夹 - if (!Directory.Exists(String.Concat(Variables.PhysicPath, "config/"))) - { - Directory.CreateDirectory(String.Concat(Variables.PhysicPath, "config/")).Create(); - } - - using (FileStream fs = new FileStream(cacheDependFile, FileMode.OpenOrCreate, FileAccess.Write)) - { - byte[] pid = Encoding.UTF8.GetBytes(new Random().Next(1000, 5000).ToString()); - fs.Seek(0, SeekOrigin.Begin); - fs.Write(pid, 0, pid.Length); - fs.Flush(); - } - - return IoUtil.GetFileSHA1(cacheDependFile); - - //FileInfo file = new FileInfo(cacheDependFile); - //file.LastWriteTimeUtc = DateTime.UtcNow; - } - - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/ICache.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/ICache.cs deleted file mode 100644 index ab285a2..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/ICache.cs +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:53 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System; - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// - /// </summary> - public interface ICache - { - /// <summary> - /// - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <param name="absoluteExpireTime"></param> - void Insert(string key, object value, DateTime absoluteExpireTime); - - /// <summary> - /// - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - /// <param name="filename"></param> - void Insert(string key, object value, String filename); - - /// <summary> - /// - /// </summary> - /// <param name="key"></param> - /// <param name="value"></param> - void Insert(string key, object value); - - - /// <summary> - /// 清除缓存KEY带指定符号的缓存 - /// </summary> - /// <param name="keySign"></param> - void Clear(string keySign); - - /// <summary> - /// - /// </summary> - /// <param name="cacheKey"></param> - /// <returns></returns> - object Get(string cacheKey); - - /// <summary> - /// - /// </summary> - /// <param name="handler"></param> - void Reset(FwHandler handler); - - /// <summary> - /// 获取缓存过的结果,如果没有缓存则自动缓存永不失效 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func); - - /// <summary> - /// 获取缓存结果,如果未缓存则调用委托产生的缓存结果 - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="cacheKey"></param> - /// <param name="func"></param> - /// <returns></returns> - T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func); - - /// <summary> - /// - /// </summary> - /// <returns></returns> - string Rebuilt(); - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs b/src/core/AtNet.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs deleted file mode 100644 index 281022c..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/14 - * Time: 22:49 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -namespace AtNet.DevFw.Web.Cache.Compoment -{ - /// <summary> - /// Description of ICacheUpdatePolicy. - /// </summary> - public interface ICacheUpdatePolicy - { - /// <summary> - /// 清理缓存 - /// </summary> - void Clear(); - } -} diff --git a/src/core/AtNet.DevFw.Web/Cache/Variables.cs b/src/core/AtNet.DevFw.Web/Cache/Variables.cs deleted file mode 100644 index 2b35730..0000000 --- a/src/core/AtNet.DevFw.Web/Cache/Variables.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace Ops.Cms.Cache -{ - /// <summary> - /// - /// </summary> - internal class Variables - { - public static string PhysicPath = AppDomain.CurrentDomain.BaseDirectory; - } -} diff --git a/src/core/AtNet.DevFw.Web/FwHandler.cs b/src/core/AtNet.DevFw.Web/FwHandler.cs deleted file mode 100644 index 4356d7d..0000000 --- a/src/core/AtNet.DevFw.Web/FwHandler.cs +++ /dev/null @@ -1,11 +0,0 @@ - - -namespace AtNet.DevFw.Web -{ - - /// <summary> - /// 处理行为 - /// </summary> - /// <returns></returns> - public delegate void FwHandler(); -} diff --git a/src/core/AtNet.DevFw.Web/PageDataItems.cs b/src/core/AtNet.DevFw.Web/PageDataItems.cs deleted file mode 100644 index 7f6dec8..0000000 --- a/src/core/AtNet.DevFw.Web/PageDataItems.cs +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. - * Get more infromation of this software,please visit site http://cms.ops.cc - * - * name : CmsContext.cs - * author : newmin (new.min@msn.com) - * date : 2014/12/01 23:00:00 - * description : - * history : - */ - -using System.Web; - -namespace AtNet.DevFw.Web -{ - /// <summary> - /// 页面数据项 - /// </summary> - public class PageDataItems - { - public object this[object key] - { - get - { - return HttpContext.Current.Items[key]; - } - set - { - HttpContext.Current.Items[key] = value; - } - } - } - -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Web/Plugins/CmsPluginContext.cs b/src/core/AtNet.DevFw.Web/Plugins/CmsPluginContext.cs deleted file mode 100644 index c05ee4a..0000000 --- a/src/core/AtNet.DevFw.Web/Plugins/CmsPluginContext.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.IO; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.PluginKernel.Web; - -namespace AtNet.DevFw.Web.Plugins -{ - public class CmsPluginContext - { - private static ExtendsPlugin _extends; - private static PluginWebHandleProxy<System.Web.HttpContext> _webHandler; - private string _domain; - private string _fpath; - private string _pluginPath; - private string _admJs; - private string _admCss; - private bool _loaded; - - - internal CmsPluginContext() - { - if (_webHandler == null) - { - _webHandler = new PluginWebHandleProxy<System.Web.HttpContext>(); - } - } - - /// <summary> - /// 扩展(模块)插件 - /// </summary> - public IExtendApp Extends { get { return _extends ?? (_extends = new ExtendsPlugin(_webHandler)); } } - - - - /// <summary> - /// 连接插件 - /// </summary> - public static void Connect() - { - Cms.Plugins.Portal.Connect(); - Cms.Plugins.Category.Connect(); - Cms.Plugins.Archive.Connect(); - Cms.Plugins.Extends.Connect(); - Cms.Plugins.Manager.Connect(); - } - - - - /// <summary> - /// 获取模板页 - /// </summary> - /// <param name="filePath">相对于插件目录的文件路径,如插件com.demo引用模板test.html,将test.html放在/plugins/com.demo/下就可以了</param> - /// <returns></returns> - public TemplatePage GetPage<T>(string filePath) where T : IPlugin - { - this.Load(); - PluginPackAttribute attr = PluginUtil.GetPluginByType(typeof(T)).GetAttribute(); - return this.GetTemplatePage(filePath, attr); - } - - /// <summary> - /// 获取模板页 - /// </summary> - /// <param name="plugin"></param> - /// <param name="filePath">相对于插件目录的文件路径,如插件com.demo引用模板test.html,将test.html放在/plugins/com.demo/下就可以了</param> - /// <returns></returns> - public TemplatePage GetPage(IPlugin plugin, string filePath) - { - this.Load(); - - PluginPackAttribute attr = plugin.GetAttribute(); - return this.GetTemplatePage(filePath, attr); - } - - private TemplatePage GetTemplatePage(string filePath, PluginPackAttribute attr) - { - string pluginDirPath = attr.WorkSpace; - - - string cacheId = String.Concat("plugin", "_tpl_", attr.WorkIndent, filePath); - string html = Cms.Cache.Get(cacheId) as string; - - if (html == null) - { - //模板文件放在/plugins/com.spdepository/pages/下 - string tplFilePath = pluginDirPath + filePath; - - try - { - using (TextReader tr = new StreamReader(tplFilePath)) - { - html = tr.ReadToEnd(); - tr.Dispose(); - } - - Cms.Cache.Insert(cacheId, html, tplFilePath); - } - catch (Exception exc) - { - throw new Exception(exc.Message+", File:"+tplFilePath); - } - - } - - TemplatePage tpl = new TemplatePage(); - tpl.TemplateContent = html; - - string pluginPath =this._pluginPath + attr.WorkIndent; - - tpl.AddVariable("os", new - { - version = Cms.Version, - domain = this._domain, - ppath = pluginPath, - fpath = this._fpath, - mjs = this._admJs, - mcss = this._admCss - }); - - tpl.AddVariable("plugin",new{ - path = pluginPath, - indent = attr.WorkIndent, - name = attr.Name - }); - - return tpl; - } - - private void Load() - { - if (!this._loaded) - { - this._domain = Cms.Context.SiteDomain; - this._fpath = String.Format("{0}{1}", Cms.Context.StaticDomain, - CmsVariables.FRAMEWORK_ASSETS_PATH - .Substring(0, CmsVariables.FRAMEWORK_ASSETS_PATH.Length - 1) - ); - this._admJs = String.Concat(this._domain, Settings.SYS_ADMIN_TAG, "?res=c2NyaXB0&0.5.1.js&ver=", Cms.Version); - this._admCss = String.Concat(this._domain, Settings.SYS_ADMIN_TAG, "?res=c3R5bGU=&0.5.1.css&ver=", Cms.Version); - this._pluginPath =this._domain + PluginConfig.PLUGIN_DIRECTORY; - this._loaded = true; - - } - } - - - /// <summary> - /// 在获取用户失败的情况下,则调用此方法 - /// </summary> - /// <param name="context"></param> - public void LoadSession(System.Web.HttpContext context) - { - context.Response.Write("<script>location.href='/" + - Settings.SYS_ADMIN_TAG + - "?ls" + - "';</script>"); - context.Response.End(); - } - } -} diff --git a/src/core/AtNet.DevFw.Web/Plugins/ExtendsPluginApp.cs b/src/core/AtNet.DevFw.Web/Plugins/ExtendsPluginApp.cs deleted file mode 100644 index b195ee2..0000000 --- a/src/core/AtNet.DevFw.Web/Plugins/ExtendsPluginApp.cs +++ /dev/null @@ -1,282 +0,0 @@ -using System; -using System.Globalization; -using System.IO; -using System.Web; -using System.Web.Routing; -using AtNet.DevFw.Framework.Xml.AutoObject; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.PluginKernel.Web; -using AtNet.DevFw.Template; - -namespace AtNet.DevFw.Web.Plugins -{ - - - - /// <summary> - /// CMS插件 - /// </summary> - [PluginHost("扩展模块插件", "使用{module}.sh/{action}访问自定义扩展")] - internal class ExtendsPluginApp : BaseWebPluginHost,IExtendApp - { - private bool _loaded; - private string _fpath; - private string _shareJs; - private string _shareCss; - private string _pluginPath; - - - internal ExtendsPluginApp(WebPluginHandleProxy<HttpContext> webHandler) - : base(webHandler) - { - SavePluginMetadataToXml(); - } - - /// <summary> - /// 扩展模块GET请求,返回false则应立即截断请求 - /// </summary> - /// <param name="context"></param> - /// <param name="extendName"></param> - /// <param name="result"></param> - public override void ExtendModuleRequest(HttpContext context, string extendName,ref bool result) - { - extendName = extendName.ToLower(); - - //处理扩展 - this.WebHandler.HandleGetRequest(context, extendName, ref result); - } - - - /// <summary> - /// 扩展模块POST请求,返回false则应立即截断请求 - /// </summary> - /// <param name="context"></param> - /// <param name="extendName"></param> - /// <param name="result"></param> - public override void ExtendModulePost(HttpContext context, string extendName,ref bool result) - { - extendName = extendName.ToLower(); - - //处理扩展 - this.WebHandler.HandlePostRequest(context, extendName, ref result); - } - - /// <summary> - /// 保存插件数据到XML文件中 - /// </summary> - public void SavePluginMetadataToXml() - { - string fileName = String.Concat(FwCtx.PhysicalPath, FwCtx.Variables.TempPath, "plugin_meta.xml"); - - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - - AutoObjectXml xml = new AutoObjectXml(fileName); - - base.Iterate((p, a) => - { - xml.InsertObjectNode(a.WorkIndent, a.Name, a.Description, - new XmlObjectProperty("version", "版本", a.Version), - new XmlObjectProperty("state", "状态", ((int)a.State).ToString()), - new XmlObjectProperty("author", "作者", a.Author), - new XmlObjectProperty("icon", "图标", a.Icon), - new XmlObjectProperty("webpage", "官网", a.WebPage), - new XmlObjectProperty("portalUrl", "入口地址", a.PortalUrl), - new XmlObjectProperty("configUrl", "设置地址", a.ConfigUrl) - ); - - }); - xml.Flush(); - } - - /// <summary> - /// 获取插件的图标 - /// </summary> - /// <param name="workerIndent"></param> - /// <returns></returns> - public byte[] GetPluginIcon(string workerIndent, int width, int height) - { - return PluginUtil.GetPluginIcon(workerIndent, width, height, - String.Concat(FwCtx.PhysicalPath, FwCtx.Variables.PLUGIN_DEFAULT_ICON)); - } - - - #region IExtendApp - - /// <summary> - /// 获取模板页 - /// </summary> - /// <param name="filePath">相对于插件目录的文件路径,如插件com.demo引用模板test.html,将test.html放在/plugins/com.demo/下就可以了</param> - /// <returns></returns> - [Obsolete] - public TemplatePage GetPage<T>(string filePath) where T : IPlugin - { - this.Load(); - PluginPackAttribute attr = PluginUtil.GetPluginByType(typeof(T)).GetAttribute(); - return this.GetTemplatePage(filePath, attr); - } - - /// <summary> - /// 获取模板页 - /// </summary> - /// <param name="plugin"></param> - /// <param name="filePath">相对于插件目录的文件路径,如插件com.demo引用模板test.html,将test.html放在/plugins/com.demo/下就可以了</param> - /// <returns></returns> - public TemplatePage GetPage(IPlugin plugin, string filePath) - { - this.Load(); - - PluginPackAttribute attr = plugin.GetAttribute(); - return this.GetTemplatePage(filePath, attr); - } - - public TemplatePage GetTemplatePage(string filePath, PluginPackAttribute attr) - { - string pluginDirPath = attr.WorkSpace; - - - string cacheId = String.Concat("plugin", "_tpl_", attr.WorkIndent, filePath); - string html = WebCtx.Cache.Get(cacheId) as string; - - if (html == null) - { - //模板文件放在/plugins/com.spdepository/pages/下 - string tplFilePath = pluginDirPath + filePath; - - try - { - using (TextReader tr = new StreamReader(tplFilePath)) - { - html = tr.ReadToEnd(); - tr.Dispose(); - } - - WebCtx.Cache.Insert(cacheId, html, tplFilePath); - } - catch (Exception exc) - { - throw new Exception(exc.Message + ", File:" + tplFilePath); - } - - } - - TemplatePage tpl = new TemplatePage(); - tpl.TemplateContent = html; - - string pluginPath = this._pluginPath + attr.WorkIndent; - - tpl.AddVariable("os", new - { - version = FwCtx.Version.GetVersion(), - domain = WebCtx.Domain, - ppath = pluginPath, - fpath = this._fpath, - mjs = this._shareJs, - sjs = this._shareJs, - scss = this._shareCss, - mcss = this._shareCss - }); - - tpl.AddVariable("plugin", new - { - path = pluginPath, - indent = attr.WorkIndent, - name = attr.Name - }); - - return tpl; - } - - private void Load() - { - if (!this._loaded) - { - string domain = WebCtx.Domain; - this._fpath = String.Concat(domain, "/", FwCtx.Variables.AssetsPath.Substring(0, FwCtx.Variables.AssetsPath.Length - 1)); - this._shareJs = String.Concat(domain, "/",FwCtx.Variables.AssetsPath, "share.js?ver=", FwCtx.Version.GetVersion()); - this._shareCss = String.Concat(domain,"/", FwCtx.Variables.AssetsPath, "share.css?ver=", FwCtx.Version.GetVersion()); - this._pluginPath =String.Concat( domain ,"/",PluginConfig.PLUGIN_DIRECTORY); - this._loaded = true; - } - } - - - /// <summary> - /// 在获取用户失败的情况下,则调用此方法 - /// </summary> - /// <param name="context"></param> - public void LoadSession(System.Web.HttpContext context) - { - - //todo: load sesion -// context.Response.Write("<script>location.href='/" + -// Settings.SYS_ADMIN_TAG + -// "?ls" + -// "';</script>"); -// context.Response.End(); - } - - - /// <summary> - /// 注册插件路由 - /// </summary> - /// <param name="aliasName">别名</param> - /// <param name="workIndent">插件标识</param> - private static void MapExtendPluginRoute(string aliasName, string workIndent) - { - RouteValueDictionary routeValue = new RouteValueDictionary(); - routeValue.Add("extend", workIndent); - - RouteTable.Routes.Add("extend_sh_" + aliasName, - new Route(aliasName + "/{*path}", - routeValue, - new PluginExtendRouteHandler())); - - if (FwCtx.Mono()) - { - RouteTable.Routes.Add("mono_extend_sh_" + aliasName, - new Route(aliasName, - routeValue, - new PluginExtendRouteHandler())); - } - } - - /// <summary> - /// 注册插件路由 - /// </summary> - /// <param name="plugin"></param> - /// <param name="aliasName"></param> - public void MapExtendPluginRoute(IPlugin plugin, string aliasName) - { - PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); - string workIndent = attr.WorkIndent; - MapExtendPluginRoute( aliasName, workIndent); - } - - /// <summary> - /// 注册插件路由 - /// </summary> - /// <param name="plugin"></param> - public void MapExtendPluginRoute(IPlugin plugin) - { - string aliasName; - string workIndent; - - PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); - workIndent = attr.WorkIndent; - aliasName = attr.Settings["override.url.indent"]; - - //throw new Exception(extendName + "/" + aliasName); - if (aliasName == "" - || String.Compare(aliasName, - workIndent, true, - CultureInfo.InvariantCulture) == 0) - return; - MapExtendPluginRoute(aliasName, workIndent); - } - - #endregion - } -} diff --git a/src/core/AtNet.DevFw.Web/Plugins/IExtendApp.cs b/src/core/AtNet.DevFw.Web/Plugins/IExtendApp.cs deleted file mode 100644 index 27e0f14..0000000 --- a/src/core/AtNet.DevFw.Web/Plugins/IExtendApp.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Web; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.PluginKernel.Web; -using AtNet.DevFw.Template; - -namespace AtNet.DevFw.Web.Plugins -{ - /// <summary> - /// 插件应用 - /// </summary> - public interface IExtendApp : IWebPluginHost - { - TemplatePage GetPage<T>(string filePath) where T : IPlugin; - TemplatePage GetPage(IPlugin plugin, string filePath); - - TemplatePage GetTemplatePage(string filePath, PluginPackAttribute attr); - - void LoadSession(HttpContext context); - - /// <summary> - /// 注册插件路由 - /// </summary> - /// <param name="plugin"></param> - /// <param name="aliasName"></param> - void MapExtendPluginRoute(IPlugin plugin, string aliasName); - - /// <summary> - /// 注册插件路由 - /// </summary> - /// <param name="plugin"></param> - void MapExtendPluginRoute(IPlugin plugin); - } -} diff --git a/src/core/AtNet.DevFw.Web/Plugins/PluginExtendRouteHandler.cs b/src/core/AtNet.DevFw.Web/Plugins/PluginExtendRouteHandler.cs deleted file mode 100644 index fe3b51c..0000000 --- a/src/core/AtNet.DevFw.Web/Plugins/PluginExtendRouteHandler.cs +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Created by SharpDevelop. - * User: newmin - * Date: 2014/1/4 - * Time: 18:25 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ - -using System.Web; -using System.Web.Routing; -using System.Web.SessionState; - -namespace AtNet.DevFw.Web.Plugins -{ - /// <summary> - /// Description of PluginExtendRouteHandler. - /// </summary> - internal class PluginExtendRouteHandler:IRouteHandler - { - private class HttpHandler:IHttpHandler,IRequiresSessionState - { - - public HttpHandler(RequestContext context) - { - this.RequestContext=context; - } - - - private RequestContext RequestContext{get; set;} - public bool IsReusable - { - get { - return true; - } - } - - public void ProcessRequest(HttpContext context) - { - bool result=false; - string extendName=(this.RequestContext.RouteData.Values["extend"]??"").ToString(); - //string path=(this.RequestContext.RouteData.Values["path"]??"").ToString(); - string httpMethod=context.Request.HttpMethod; - - if (httpMethod == "POST") - { - WebCtx.Extend.ExtendModulePost(context, extendName, ref result); - } - else - { - WebCtx.Extend.ExtendModuleRequest(context, extendName, ref result); - } - - if(!result) - { - context.Response.Write("Access denied!"); - } - } - } - - public IHttpHandler GetHttpHandler(RequestContext requestContext) - { - return new HttpHandler(requestContext); - } - - } -} diff --git a/src/core/AtNet.DevFw.Web/Properties/AssemblyInfo.cs b/src/core/AtNet.DevFw.Web/Properties/AssemblyInfo.cs deleted file mode 100644 index dae060a..0000000 --- a/src/core/AtNet.DevFw.Web/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("AtNet.DevFw.Web")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("AtNet.DevFw.Web")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("25fb3c6a-8e42-414e-8c61-79da4af46a93")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 生成号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/core/AtNet.DevFw.Web/TemplatePageVariable.cs b/src/core/AtNet.DevFw.Web/TemplatePageVariable.cs deleted file mode 100644 index d3b92d2..0000000 --- a/src/core/AtNet.DevFw.Web/TemplatePageVariable.cs +++ /dev/null @@ -1,152 +0,0 @@ -using System; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Template; -using AtNet.DevFw.Web.Cache.Compoment; - -namespace AtNet.DevFw.Web -{ - /// <summary> - /// - /// </summary> - public class TemplatePageVariable - { - private string _domain; - private string _frameworkPath; - private string _templatePath; - private string _pluginRootPath; - private string _sitemap; - private string _resDomain; - - - [TemplateVariableField("版本")] - public string Version - { - get { return FwCtx.Version.GetVersion(); } - } - - /// <summary> - /// 域名 - /// </summary> - [TemplateVariableField("站点域名")] - public string Domain - { - get - { - if (_domain == null) - { - _domain = WebCtx.Domain; - } - return _domain; - } - } - - - /// <summary> - /// 框架路径 - /// </summary> - [TemplateVariableField("框架资源根路径")] - private string FrameworkPath - { - get - { - if (_frameworkPath == null) - { - _frameworkPath = String.Format("{0}{1}", this.Domain, - FwCtx.Variables.AssetsPath.Substring(0, FwCtx.Variables.AssetsPath.Length - 1) - ); - } - - return _frameworkPath; - } - } - -// [TemplateVariableField("模板根路径")] -// private string TemplatePath -// { -// get -// { -// if (_templatePath == null) -// { -// string cacheKey = String.Format("{0}_s{1}_template_path", -// CacheSign.Site.ToString(), -// site.SiteId.ToString() -// ); -// -// _templatePath= Ops.Cms.Cache.GetCachedResult(cacheKey, () => -// { -// return String.Format( -// "{0}/templates/{1}", -// this.ResDomain, -// site.Tpl -// ); -// }); -// -// } -// -// return _templatePath; -// } -// } -// - - - [TemplateVariableField("插件根路径")] - public string PluginPath - { - get - { - if (_pluginRootPath == null) - { - _pluginRootPath = String.Format("{0}/{1}", - this.Domain, - PluginConfig.PLUGIN_DIRECTORY); - - _pluginRootPath = _pluginRootPath.Remove(_pluginRootPath.Length - 1); - } - return _pluginRootPath; - } - } - - [TemplateVariableField("框架资源根路径")] - public string Fpath { get { return this.FrameworkPath; } } - -// [TemplateVariableField("模板根路径")] -// public string Tpath { get { return this.TemplatePath; } } -// -// [TemplateVariableField("资源域名路径")] -// public string Rdomain { get { return this.ResDomain; } } - - [TemplateVariableField("插件根路径")] - public string Ppath { get { return this.PluginPath; } } - - - /// <summary> - ///标题 - /// </summary> - [TemplateVariableField("网页(当前页)标题")] - public string Title { get; set; } - - /// <summary> - /// 子标题 - /// </summary> - [TemplateVariableField("子标题")] - public string SubTitle { get; set; } - - /// <summary> - /// 关键词 - /// </summary> - [TemplateVariableField("关键词")] - public string Keywords { get; set; } - - /// <summary> - /// 描述 - /// </summary> - [TemplateVariableField("描述")] - public string Description { get; set; } - - /// <summary> - /// 页码 - /// </summary> - [TemplateVariableField("当前页面(带分页页面)的页码")] - public int PageIndex { get; set; } - } -} diff --git a/src/core/AtNet.DevFw.Web/WebConf.cs b/src/core/AtNet.DevFw.Web/WebConf.cs deleted file mode 100644 index 2e8154e..0000000 --- a/src/core/AtNet.DevFw.Web/WebConf.cs +++ /dev/null @@ -1,42 +0,0 @@ - - -namespace AtNet.DevFw.Web -{ - /// <summary> - /// - /// </summary> - public static class WebConf - { - /// <summary> - /// 是否支持GZip压缩 - /// </summary> - public static bool Opti_SupportGZip = false; - - /// <summary> - /// 调试模式 - /// </summary> - public static bool Opti_Debug = false; - - /// <summary> - /// 客户端缓存 - /// </summary> - public static bool Opti_ClientCache { get { return Opti_ClientCacheSeconds > 0; } } - - /// <summary> - /// 客户端缓存秒数 - /// </summary> - public static int Opti_ClientCacheSeconds = 0; - - /// <summary> - /// 首页缓存秒数 - /// </summary> - public static int Opti_IndexCacheSeconds = 0; - - /// <summary> - /// GC回收间隔(默认30分钟回收一次) - /// </summary> - public static int Opti_GC_Collect_Interval = 3600000 * 30; - - - } -} diff --git a/src/core/AtNet.DevFw.Web/WebCtx.cs b/src/core/AtNet.DevFw.Web/WebCtx.cs deleted file mode 100644 index 66033a6..0000000 --- a/src/core/AtNet.DevFw.Web/WebCtx.cs +++ /dev/null @@ -1,397 +0,0 @@ -using System; -using System.IO; -using System.IO.Compression; -using System.Text; -using System.Web; -using AtNet.DevFw.Framework.Web.Cache; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.PluginKernel.Web; -using AtNet.DevFw.Web.Cache; -using AtNet.DevFw.Web.Cache.Compoment; -using AtNet.DevFw.Web.Plugins; - -namespace AtNet.DevFw.Web -{ - /// <summary> - /// Ӧó - /// </summary> - public class WebCtx - { - - /// <summary> - /// ־ļ - /// </summary> - public static string ErrorFilePath; - - private const string KeyCtxDomain = "_ctx_domain"; - - - /// <summary> - /// ǷΪĿ¼ - /// </summary> - public bool IsVirtualDirectoryRunning = false; - - public static global::System.Web.HttpContext Context - { - get { return global::System.Web.HttpContext.Current; } - } - - - /// <summary> - /// Դ - /// </summary> - public object Source { get; set; } - - public HttpResponse Response { get { return Context.Response; } } - public HttpRequest Request { get { return Context.Request; } } - - - static WebCtx() - { - ErrorFilePath = AppDomain.CurrentDomain.BaseDirectory + "tmp/logs/error.log"; - } - - /// <summary> - /// վ - /// </summary> - private string _siteDomain; - private PageDataItems _dataItems; - private string _staticDomain; - private string _resouceDomain; - private string _host; - private string _siteAppPath; - private static IExtendApp _extends; - - /// <summary> - /// ʱ - /// </summary> - public static event FwHandler OnBeginRequest; - - - /// <summary> - /// ǰHost,˿ڣ磺www.ops.cc:8080 - /// </summary> - public string Host - { - get - { - var context = Context; - if (this._host == null) - { - this._host = String.Format("{0}{1}", context.Request.Url.Host, - context.Request.Url.Port != 80 ? ":" + context.Request.Url.Port.ToString() : ""); - } - return this._host; - } - } - - /// <summary> - /// ϵͳӦóĿ¼ - /// </summary> - public string ApplicationPath - { - get { return Context.Request.ApplicationPath; } - } - - /// <summary> - /// չ - /// </summary> - public static IExtendApp Extend - { - get - { - if (_extends == null) - { - var handler = new WebPluginHandleProxy<System.Web.HttpContext>(); - _extends = new ExtendsPluginApp(handler); - } - return _extends; - } - } - - - public static ICache Cache - { - get { return CacheFactory.Sington; } - } - -// /// <summary> -// /// -// /// </summary> -// public string SiteDomain -// { -// get -// { -// if (_siteDomain == null) -// { -// string host = String.Format("{0}{1}", context.Request.Url.Host, -// context.Request.Url.Port != 80 ? ":" + context.Request.Url.Port.ToString() : ""); -// -// _siteDomain= String.Format("http://{0}{1}{2}", -// host, -// this.ApplicationPath=="/"?"":this.ApplicationPath, -// this.SiteAppPath=="/"?"/":this.SiteAppPath+"/" -// ); -// -//// this._siteDomain = this.CurrentSite.FullDomain; -//// -//// if (this._siteDomain.IndexOf("#") != -1) -//// { -//// this._siteDomain = this._siteDomain.Replace( -//// "#", host); -//// } -// } -// return _siteDomain; -// } -// } - -// /// <summary> -// /// Դ -// /// </summary> -// public string ResourceDomain -// { -// get -// { -// if (this._resouceDomain == null) -// { -// //RES DOMAIN -// if (this.IsVirtualDirectoryRunning) -// { -// this._resouceDomain = String.Empty; -// } -// } -// return this._resouceDomain ?? (this._resouceDomain = this.SiteDomain); -// } -// } -// -// /// <summary> -// /// ̬Դ -// /// </summary> -// public string StaticDomain -// { -// get -// { -// if (this._staticDomain == null) -// { -// if (Settings.SERVER_STATIC_ENABLED && Settings.SERVER_STATIC.Length != 0) -// { -// this._staticDomain = String.Concat("http://", Settings.SERVER_STATIC, "/"); -// } -// else -// { -// this._staticDomain = this.ResourceDomain == String.Empty ? "/" : this.ResourceDomain; -// } -// } -// -// return this._staticDomain; -// } -// } - /// <summary> - /// - /// </summary> - public PageDataItems Items - { - get - { - if (_dataItems == null) - { - _dataItems = new PageDataItems(); - } - return _dataItems; - } - } - public static string Domain - { - get - { - HttpContext context = Context; - String domain = context.Items[KeyCtxDomain] as String; - if (domain == null) - { - HttpRequest request = Context.Request; - String applicationPath = request.ApplicationPath; - domain = String.Format("{0}://{1}{2}{3}", - request.Url.Scheme, - request.Url.Host, - context.Request.Url.Port != 80 ? ":" + request.Url.Port.ToString() : "", - applicationPath == "/" ? "" : applicationPath - ); - context.Items[KeyCtxDomain] = domain; - } - - return domain; - } - set { Context.Items[KeyCtxDomain] = value; } - } - - - public static void SaveErrorLog(Exception exception) - { - lock (ErrorFilePath) - { - HttpRequest req = Context.Request; - - if (!File.Exists(ErrorFilePath)) - { - string dir = AppDomain.CurrentDomain.BaseDirectory + "tmp/logs"; - if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); - File.Create(ErrorFilePath).Close(); - } - Context.Response.Write((File.Exists(ErrorFilePath).ToString())); - using (FileStream fs = new FileStream(ErrorFilePath, FileMode.Append, FileAccess.Write)) - { - StreamWriter sw = new StreamWriter(fs); - StringBuilder sb = new StringBuilder(); - - sb.Append("---------------------------------------------------------------------\r\n") - .Append("[]IP:").Append(req.UserHostAddress) - .Append("\tʱ䣺").Append(DateTime.Now.ToString()) - .Append("\r\n[Ϣ]").Append(exception.Message) - .Append("\r\n[·]").Append(req.Url.PathAndQuery) - .Append(" -> Դ").Append(req.Headers["referer"] ?? "") - .Append("\r\n[ջ]").Append(exception.StackTrace) - .Append("\r\n\r\n"); - - sw.Write(sb.ToString()); - - sw.Flush(); - sw.Dispose(); - fs.Dispose(); - } - } - } - - -// public bool CheckSiteState() -// { -// if (this.CurrentSite.State == SiteState.Normal) -// { -// return true; -// } -// else if (this.CurrentSite.State == SiteState.Closed) -// { -// this.RenderNotfound(); -// } -// else if (this.CurrentSite.State == SiteState.Paused) -// { -// this.Render("<h1 style=\"color:red;text-align:center;font-size:16px;padding:20px\">վά,ͣʣ</h1>"); -// //this.RenderNotfound("<h1 style=\"color:red\">վά,ͣʣ</h1>"); -// } -// return false; -// } - - /// <summary> - /// ÿͻ˻(̨û沢ʱ>0) - /// </summary> - /// <returns></returns> - public bool CheckAndSetClientCache() - { - if (WebConf.Opti_ClientCache && WebConf.Opti_ClientCacheSeconds > 0) - { - if (CacheUtil.CheckClientCacheExpires(WebConf.Opti_ClientCacheSeconds)) - { - CacheUtil.SetClientCache(this.Response, WebConf.Opti_ClientCacheSeconds); - } - else - { - return false; - } - } - return true; - } - - - /// <summary> - /// ÿͻ˻(Զʱ,λ) - /// </summary> - /// <returns></returns> - public bool CheckAndSetClientCache(int maxAge) - { - if (maxAge > 0) - { - if (CacheUtil.CheckClientCacheExpires(maxAge)) - { - CacheUtil.SetClientCache(this.Response, maxAge); - } - else - { - return false; - } - } - return true; - } - - - /// <summary> - /// - /// </summary> - /// <param name="html"></param> - public void Render(string html) - { - HttpResponse response = this.Response; - - response.Write(html); - - //GZipѹ - if (WebConf.Opti_SupportGZip) - { - response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); - response.AddHeader("Content-Encoding", "gzip"); - } - /* - else - { - response.Filter=new DeflateStream(response.Filter,CompressionMode.Compress); - response.AddHeader("Content-Encoding", "deflate"); - }*/ - - response.AddHeader("X-AspNet-Version", String.Format("atnet.devfw - v{0}", FwCtx.Version.GetVersion())); - response.AddHeader("Support-URL", "github.com/atnet/devfw"); - } - -// -// /// <summary> -// /// ʾ400ҳ -// /// </summary> -// /// <returns></returns> -// public void RenderNotfound() -// { -// this.RenderNotfound("File not found!", null); -// } -// -// /// <summary> -// /// ʾ400ҳ -// /// </summary> -// /// <returns></returns> -// public void RenderNotfound(string message, TemplatePageHandler handler) -// { -// Response.StatusCode = 404; -// -// string html = null; -// try -// { -// TemplatePage tpl = new TemplatePage(String.Format("/{0}/not_found", this.CurrentSite.Tpl)); -// if (handler != null) -// { -// handler(tpl); -// } -// tpl.Render(); -// return; -// } -// catch -// { -// html = "File not found!"; -// } -// -// Response.Write(html); -// } -// -// public string ComposeUrl(string url) -// { -// if (url.StartsWith("/")) -// throw new ArgumentException("URL\"/\"ͷ!"); -// -// return String.Concat(this.SiteDomain, url); -// } - } -} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Extensions/ILEmit.cs b/src/core/J6.DevFw.Core/Extensions/ILEmit.cs similarity index 99% rename from src/core/AtNet.DevFw.Core/Extensions/ILEmit.cs rename to src/core/J6.DevFw.Core/Extensions/ILEmit.cs index d7b1bbf..f813669 100644 --- a/src/core/AtNet.DevFw.Core/Extensions/ILEmit.cs +++ b/src/core/J6.DevFw.Core/Extensions/ILEmit.cs @@ -3,7 +3,7 @@ using System.Reflection; using System.Reflection.Emit; -namespace Ops.Extensions +namespace JR.DevFw.Extensions { /// <summary> /// Delegate handler that's used to compile the IL to. diff --git a/src/core/AtNet.DevFw.Core/Extensions/StreamExtensions.cs b/src/core/J6.DevFw.Core/Extensions/StreamExtensions.cs similarity index 95% rename from src/core/AtNet.DevFw.Core/Extensions/StreamExtensions.cs rename to src/core/J6.DevFw.Core/Extensions/StreamExtensions.cs index c3825fb..ee0fc4e 100644 --- a/src/core/AtNet.DevFw.Core/Extensions/StreamExtensions.cs +++ b/src/core/J6.DevFw.Core/Extensions/StreamExtensions.cs @@ -1,8 +1,11 @@ using System; using System.IO; -namespace Ops.Extensions +namespace JR.DevFw.Extensions { + /// <summary> + /// + /// </summary> public static class StreamExtensions { /// <summary> diff --git a/src/core/J6.DevFw.Core/Framework/AssemblyResolve.cs b/src/core/J6.DevFw.Core/Framework/AssemblyResolve.cs new file mode 100644 index 0000000..0f7eccb --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/AssemblyResolve.cs @@ -0,0 +1,68 @@ +/* + * 由SharpDevelop创建。 + * 用户: Administrator + * 日期: 2013/12/10 + * 时间: 11:24 + * + * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 + */ + +using System; +using System.IO; +using System.Reflection; + +namespace JR.DevFw.Framework +{ + /// <summary> + /// Description of MyClass. + /// </summary> + internal class AssemblyResolve + { + /// <summary> + /// 解决依赖 + /// </summary> + /// <param name="domain">AppDomain</param> + /// <param name="directory">目录</param> + /// <param name="fileExtension">文件扩展名</param> + /// <param name="aes">是否AES解密</param> + public static void Resolve(AppDomain domain, string directory, string fileExtension, bool aes) + { + // WHY NOT WORK + //http://stackoverflow.com/questions/9734657/why-assemblyresolve-not-working + // + + domain.AssemblyResolve += delegate(object sender, ResolveEventArgs args) + { + string filePath = String.Concat(directory, directory.EndsWith("/") ? "" : "/", args.Name.Split(',')[0], + fileExtension); + if (!File.Exists(filePath)) + { + return null; + } + else + { + return Assembly.Load(File.ReadAllBytes(filePath)); + } + }; + } + + /// <summary> + /// 默认解析.dll + /// </summary> + /// <param name="domain"></param> + /// <param name="directory"></param> + public static void Resolve(AppDomain domain, string directory) + { + Resolve(domain, directory, ".dll", false); + } + + /// <summary> + /// 默认从lib目录下解析.dll + /// </summary> + /// <param name="domain"></param> + public static void Resolve(AppDomain domain) + { + Resolve(domain, domain.BaseDirectory + "lib/", ".dll", false); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Automation/EntityForm.cs b/src/core/J6.DevFw.Core/Framework/Automation/EntityForm.cs new file mode 100644 index 0000000..8efee71 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Automation/EntityForm.cs @@ -0,0 +1,402 @@ +using System; +using System.Reflection; +using System.Text; +using JR.DevFw.Framework.Extensions; + +namespace JR.DevFw.Framework.Automation +{ + /// <summary> + /// 实体表单 + /// </summary> + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = true)] + public class EntityFormAttribute : Attribute + { + } + + /// <summary> + /// 表单列 + /// </summary> + [AttributeUsage(AttributeTargets.Property, Inherited = false)] + public class FormFieldAttribute : Attribute + { + /// <summary> + /// + /// </summary> + /// <param name="name"></param> + public FormFieldAttribute(string name) + { + this.Name = name; + } + + /// <summary> + /// 列分组名称 + /// </summary> + public string Group { get; set; } + + /// <summary> + /// 名称 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 中文名称 + /// </summary> + public string Text { get; set; } + + /// <summary> + /// 列描述 + /// </summary> + public string Descript { get; set; } + + /// <summary> + /// 是否可以编辑 + /// </summary> + public bool DisableEdit { get; set; } + + /// <summary> + /// 是否隐藏显示 + /// </summary> + public bool Hidden { get; set; } + + /// <summary> + /// 是否为密码输入项 + /// </summary> + public bool IsPassword { get; set; } + + /// <summary> + /// 是否必填 + /// </summary> + public bool IsRequired { get; set; } + + /// <summary> + /// 正则匹配 + /// </summary> + public string Regex { get; set; } + + /// <summary> + /// 是否为数字 + /// </summary> + public bool IsNumber { get; set; } + + /// <summary> + /// 长度限制,如5-10,0-10 + /// </summary> + public string Length { get; set; } + + /// <summary> + /// 是否多行,多行用Textbox显示 + /// </summary> + public bool MultLine { get; set; } + } + + /// <summary> + /// 选择列 + /// </summary> + [AttributeUsage(AttributeTargets.Property, Inherited = false)] + public class SelectFieldAttribute : Attribute + { + /// <summary> + /// 数据字典,多个用;或|隔开。如:是=1;否=0 + /// </summary> + public string Data { get; set; } + + /// <summary> + /// 是否使用下拉,如果为否,则用radiobox + /// </summary> + public bool UseDrop { get; set; } + } + + /// <summary> + /// + /// </summary> + public class EntityForm + { + /// <summary> + /// 创建HTML,包含表单及按钮 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + /// <param name="full"></param> + /// <param name="btnText"></param> + /// <returns></returns> + public static string Build<T>(T t, bool full, string btnText) where T : new() + { + if (t == null) throw new ArgumentNullException("实体" + typeof (T).Name + "不能为空!"); + StringBuilder sb = new StringBuilder(); + if (full) + { + sb.Append("<div class=\"entityForm\">\r\n").Append("<form action=\"\" method=\"post\">\r\n"); + } + + Type type = typeof (T); + FormFieldAttribute ffa; + SelectFieldAttribute sfa; + string value; + + EntityFormAttribute[] eta = + type.GetCustomAttributes(typeof (EntityFormAttribute), true) as EntityFormAttribute[]; + if (eta != null && eta.Length != 0) + { + //读取属性 + PropertyInfo[] prolist = type.GetProperties(); + foreach (PropertyInfo pro in prolist) + { + //枚举则获取对应的数值 + if (pro.PropertyType.IsEnum) + { + value = Convert.ToInt32(pro.GetValue(t, null)).ToString(); + } + else + { + value = (pro.GetValue(t, null) ?? String.Empty).ToString(); + } + + FormFieldAttribute[] fieldAttrs = + pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; + if (fieldAttrs == null || fieldAttrs.Length == 0) + { + continue; + } + else + { + ffa = fieldAttrs[0]; + + //设置标题 + sb.Append("<dl") + .Append(ffa.Hidden ? " style=\"display:none\"" : "") + .Append(String.IsNullOrEmpty(ffa.Group) ? ">" : " group=\"" + ffa.Group + "\">") + .Append("<dt>").Append(ffa.IsRequired ? "<span class=\"required\">*</span>" : "") + .Append(String.IsNullOrEmpty(ffa.Text) ? ffa.Name : ffa.Text).Append(":</dt>") + .Append("<dd>"); + + if (!ffa.DisableEdit) + { + //设置UI + SelectFieldAttribute[] sfAttrs = + pro.GetCustomAttributes(typeof (SelectFieldAttribute), false) as SelectFieldAttribute[]; + if (sfAttrs != null && sfAttrs.Length != 0) + { + sfa = sfAttrs[0]; + //输出SELECT或RADIO + if (sfa.UseDrop) + { + sb.Append("<select class=\"ui-validate ui-box tb_") + .Append(ffa.Name).Append("\" field=\"") + .Append(ffa.Name) + .Append("\" name=\"field_") + .Append(ffa.Name) + .Append("\""); + + if (ffa.IsRequired) + { + sb.Append(" required=\"true\""); + } + + sb.Append(">"); + + //输出选项 + string[] data = sfa.Data.Split(';', '|'); + string[] opt; + foreach (string dstr in data) + { + opt = dstr.Split('='); + if (opt.Length == 2) + { + sb.Append("<option value=\"").Append(opt[1]).Append("\"") + .Append(value == opt[1] ? " selected=\"selected\"" : "") + .Append(">").Append(opt[0]).Append("</option>"); + } + } + sb.Append("</select>"); + } + else + { + // + //UNDONE:.... + // + } + } + else + { + if (ffa.MultLine) + { + //输出Textbox + sb.Append("<textarea class=\"ui-validate ui-box tb_") + .Append(ffa.Name).Append("\" field=\"") + .Append(ffa.Name) + .Append("\" rows=\"3\" name=\"field_") + .Append(ffa.Name) + .Append("\""); + } + else + { + //输出INPUT + sb.Append("<input class=\"ui-validate ui-box tb_") + .Append(ffa.Name).Append("\" type=\"") + .Append(ffa.IsPassword ? "password" : "text") + .Append("\" field=\"") + .Append(ffa.Name) + .Append("\" name=\"field_") + .Append(ffa.Name) + .Append("\"").Append(" value=\"").Append(value).Append("\""); + } + + if (ffa.IsRequired) + { + sb.Append(" required=\"true\""); + } + + if (ffa.IsNumber) + { + sb.Append(" isnumber=\"true\""); + } + + if (!String.IsNullOrEmpty(ffa.Length)) + { + sb.Append(" length=\"").Append(ffa.Length).Append("\""); + } + + if (!String.IsNullOrEmpty(ffa.Regex)) + { + sb.Append(" regex=\"").Append(ffa.Regex).Append("\""); + } + + if (ffa.MultLine) + { + //关闭Textarea + sb.Append(">").Append(value).Append("</textarea>"); + } + else + { + //关闭INPUT + sb.Append(" />"); + } + } + } + else + { + sb.Append(value) + .Append("<input type=\"hidden\" field=\"") + .Append(ffa.Name) + .Append("\" name=\"field_") + .Append(ffa.Name) + .Append("\" value=\"").Append(value).Append("\"/>"); + } + + //列描述 + if (!String.IsNullOrEmpty(ffa.Descript)) + { + sb.Append("<span class=\"descript\">").Append(ffa.Descript).Append("</span>"); + } + + //关闭列 + sb.Append("</dd></dl>\r\n"); + } + } + } + else + { + sb.Append("<strong style=\"color:red;font-size:14px;\">该实体不支持EntityForm!</strong>"); + } + + + if (full) + { + sb.Append("<dl><dt> </dt><dd><a id=\"btn\" class=\"btn\" href=\"javascript:;\">") + .Append(btnText).Append("</a></dd></dl>") + .Append("</form></div>"); + } + + return sb.ToString(); + } + + /// <summary> + /// 创建HTML,仅包含字段 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + /// <returns></returns> + public static string Build<T>(T t) where T : new() + { + return Build<T>(t, false, ""); + } + + /// <summary> + /// + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + /// <exception cref="FormatException"></exception> + public static T GetEntity<T>() where T : new() + { + const bool allowError = false; + global::System.Collections.Specialized.NameValueCollection form = + global::System.Web.HttpContext.Current.Request.Form; + + Type type = typeof (T); + object t = Activator.CreateInstance(type); + PropertyInfo[] pros = type.GetProperties(); + FormFieldAttribute[] fieldAttrs; + FormFieldAttribute attr; + string value; + int tmpInt; + + + Type strType = typeof (String); //字符串类型 + Type bitType = typeof (Boolean); //布尔值类型 + Type proType = null; //属性类型 + + + foreach (PropertyInfo pro in pros) + { + if (!pro.CanWrite) continue; + fieldAttrs = pro.GetCustomAttributes(typeof (FormFieldAttribute), false) as FormFieldAttribute[]; + if (fieldAttrs != null && fieldAttrs.Length != 0) + { + attr = fieldAttrs[0]; + value = form[pro.Name] ?? (form["field_" + pro.Name] ?? ""); + + proType = pro.PropertyType; + object obj; + + try + { + obj = CollectionExtensions.GetPropertyValue<T>(pro, strType, bitType, proType, value); + if (obj != null) + { + pro.SetValue(t, obj, null); + } + } + + catch (FormatException exc) + { + if (allowError) + { + throw new FormatException("转换错误,属性名:" + pro.Name); + } + } + + + //if (pro.PropertyType.IsEnum) + //{ + // int.TryParse(value, out tmpInt); + // pro.SetValue(t, tmpInt, null); + //} + //else + //{ + // try + // { + // pro.SetValue(t, Convert.ChangeType(value, pro.PropertyType), null); + // } + // catch (FormatException exc) + // { + // throw new FormatException("转换错误,属性名:" + pro.Name); + // } + //} + } + } + + return (T) t; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Extensions/CollectionExtensions.cs b/src/core/J6.DevFw.Core/Framework/Extensions/CollectionExtensions.cs new file mode 100644 index 0000000..fd4646d --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Extensions/CollectionExtensions.cs @@ -0,0 +1,200 @@ +/* + * Copyright 2010 OPS,All rights reseved ! + * name : 集合扩展 + * author : newmin + * date : 2010/11/26 07:31 + */ + +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Reflection; + +namespace JR.DevFw.Framework.Extensions +{ + /// <summary> + /// 集合扩展 + /// </summary> + public static class CollectionExtensions + { + /// <summary> + /// 返回符合条件的集合 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="collection"></param> + /// <param name="condition"></param> + /// <returns></returns> + public static IEnumerable<T> WhereBy<T>(this IEnumerable<T> collection, Func<T, bool> condition) + { + foreach (T t in collection) + { + if (condition(t)) yield return t; + } + } + + /// <summary> + /// + /// </summary> + /// <param name="form"></param> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + public static T ConvertToEntity<T>(this NameValueCollection form) + { + return BindToEntity<T>(form, default(T), false); + } + + /// <summary> + /// + /// </summary> + /// <param name="form"></param> + /// <param name="t"></param> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + public static T BindToEntity<T>(this NameValueCollection form, T t) + { + return BindToEntity<T>(form, t, false); + } + + /// <summary> + /// + /// </summary> + /// <param name="form"></param> + /// <param name="entity"></param> + /// <param name="allowError"></param> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + /// <exception cref="FormatException"></exception> + public static T BindToEntity<T>(this NameValueCollection form, T entity, bool allowError) + { + Type type = typeof (T); //实体类型 + Type strType = typeof (String); //字符串类型 + Type bitType = typeof (Boolean); + Type proType = null; //属性类型 + + object t = entity; + if (t == null) + { + t = Activator.CreateInstance(type); + } + + PropertyInfo[] pros = type.GetProperties(); + string value; + + foreach (PropertyInfo pro in pros) + { + if (!pro.CanWrite) continue; + value = form[pro.Name]; + + //获取值 + if (value == null) + { + value = form["field_" + pro.Name]; + if (String.IsNullOrEmpty(value)) continue; + } + + + proType = pro.PropertyType; + object obj; + + try + { + obj = GetPropertyValue<T>(pro, strType, bitType, proType, value); + if (obj != null) + { + pro.SetValue(t, obj, null); + } + + //if (pro.PropertyType.IsValueType) + //{ + // } + // else + // { + // pro.SetValue(t, + // Convert.ChangeType(value, pro.PropertyType), + // null); + // } + + // } + + + //if (pro.PropertyType.IsValueType) + //{ + // } + // else + // { + // pro.SetValue(t, + // Convert.ChangeType(value, pro.PropertyType), + // null); + // } + + // } + + //else if (pro.PropertyType == typeof(String)) + //{ + // pro.SetValue(t, + // Convert.ChangeType(value, pro.PropertyType), + // null); + //} + } + + catch (FormatException exc) + { + if (!allowError) + { + throw new FormatException("转换错误,属性名:" + pro.Name); + } + } + } + + return (T) t; + } + + public static object GetPropertyValue<T>(PropertyInfo pro, Type strType, Type bitType, Type proType, + string value) + { + if (proType == strType) + { + return value; + } + else if (proType == bitType) + { + return value == "True" || value == "1" || value == "true"; + } + else if (proType.IsEnum) //枚举类型 + { + return Enum.Parse(proType, value); + } + else if (proType.GetInterface("IConvertible") != null) + { + //支持转换的类型 + return Convert.ChangeType(value, proType); + } + else if (pro.PropertyType.IsGenericType) + { + //泛型(可空类型) + //获取类型定义判断是否为可空类型 + Type genericTypeDefinition = proType.GetGenericTypeDefinition(); + if (genericTypeDefinition == typeof (Nullable<>)) + { + Type baseType = Nullable.GetUnderlyingType(proType); + if (baseType.GetInterface("IConvertible") != null) + { + if (baseType == bitType) + { + return value == "True" || value == "1" || value == "true"; + } + else if (baseType.IsEnum) //枚举类型 + { + return Enum.Parse(baseType, value); + } + else + { + return Convert.ChangeType(value, baseType); + } + } + } + } + return null; + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Extensions/DataExtensions.cs b/src/core/J6.DevFw.Core/Framework/Extensions/DataExtensions.cs similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Extensions/DataExtensions.cs rename to src/core/J6.DevFw.Core/Framework/Extensions/DataExtensions.cs diff --git a/src/core/J6.DevFw.Core/Framework/Extensions/HttpExtensions.cs b/src/core/J6.DevFw.Core/Framework/Extensions/HttpExtensions.cs new file mode 100644 index 0000000..178e5c5 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Extensions/HttpExtensions.cs @@ -0,0 +1,61 @@ +// +// Copryright (C) OPS.CC 2008-2011 ,All right reseved. +// Name:HttpExtensions.cs +// Author: Newmin +// +// + +using System; +using System.Text.RegularExpressions; +using System.Web; + +namespace JR.DevFw.Framework.Extensions +{ + public static class HttpExtensions + { + /// <summary> + /// 是否为蜘蛛请求 + /// </summary> + /// <param name="request"></param> + /// <returns></returns> + public static bool IsSplider(this HttpRequest request) + { + string[] botNames = new string[] + { + "Googlebot", //谷歌蜘蛛 + "Baiduspider", //百度蜘蛛 + "Yahoo!+Slurp", //雅虎蜘蛛 + "bingbot", //必应蜘蛛 + "msnbot", //LIVE蜘蛛 + "Sosospider", //搜搜蜘蛛 + "YodaoBot", //有道蜘蛛 + "YoudaoBot", //有道蜘蛛 + "Sogou Web Sprider" //搜狗蜘蛛 + }; + + string agent = request.UserAgent; + bool isSplider = false; + Array.ForEach(botNames, a => { if (agent.IndexOf(a) != -1) isSplider = true; }); + return isSplider; + } + + /// <summary> + /// 是否移动设备 + /// </summary> + /// <param name="request"></param> + /// <returns></returns> + public static bool IscMobileDevice(this HttpRequest request) + { + string u = request.ServerVariables["HTTP_USER_AGENT"]; + Regex b = + new Regex( + @"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", + RegexOptions.IgnoreCase | RegexOptions.Multiline); + Regex v = + new Regex( + @"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", + RegexOptions.IgnoreCase | RegexOptions.Multiline); + return b.IsMatch(u) || v.IsMatch(u.Substring(0, 4)); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Extensions/StringExtensions.cs b/src/core/J6.DevFw.Core/Framework/Extensions/StringExtensions.cs new file mode 100644 index 0000000..70f836b --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Extensions/StringExtensions.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using System.Web; +using JR.DevFw.Framework.Security; + +namespace JR.DevFw.Framework.Extensions +{ + public static class StringExtensions + { + /// <summary> + /// 为字符串追加指定长度的随机字符并返回该字符串 + /// </summary> + /// <param name="str">字符串</param> + /// <param name="length">长度</param> + /// <returns></returns> + public static string RandomLetters(this String str, int length) + { + length = length < 1 ? 1 : length; + char[] cs = + { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' + , 'u', 'v', 'w', 'x', 'y', 'z' + }; + Random rd = new Random(); + for (int i = 0; i < length; i++) + { + str += cs[rd.Next(24)]; //24为cs.Length + } + return str; + } + + /// <summary> + /// 为字符串追加指定长度的随机字符并返回该字符串 + /// </summary> + /// <param name="str">字符串</param> + /// <param name="length">长度</param> + /// <returns></returns> + public static string RandomUpperLetters(this String str, int length) + { + length = length < 1 ? 1 : length; + char[] cs = + { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' + , 'u', 'v', 'w', 'x', 'y', 'z' + }; + Random rd = new Random(); + int randomNum = 0; + for (int i = 0; i < length; i++) + { + randomNum = rd.Next(24); //24为cs.Length + str += randomNum > 12 ? cs[rd.Next(randomNum)].ToString().ToUpper() : cs[rd.Next(randomNum)].ToString(); + } + return str; + } + + /// <summary> + /// 用md5加密 + /// </summary> + /// <param name="word"></param> + /// <returns></returns> + public static string EncodeMD5(this String str) + { + return Md5CryptoImpl.EncodeMD5(str); + } + + /// <summary> + /// 16位MD5加密 + /// </summary> + /// <param name="str"></param> + /// <returns></returns> + public static string Encode16MD5(this String str) + { + return Md5CryptoImpl.Encode16MD5(str); + } + + + /// <summary> + /// HTML编码 + /// </summary> + /// <param name="str"></param> + /// <returns></returns> + public static string HtmlEncode(this String str) + { + return HttpContext.Current.Server.HtmlEncode(str); + } + + /// <summary> + /// HTML解码 + /// </summary> + /// <param name="str"></param> + /// <returns></returns> + public static string HtmlDecode(this String str) + { + return HttpContext.Current.Server.HtmlDecode(str); + } + + /// <summary> + /// 替换类似%tag%的标签 + /// </summary> + /// <param name="str"></param> + /// <returns></returns> + public static string Template(this string str, Func<string, string> func) + { + Regex regex = new Regex("%([^%]+)%"); + + return regex.Replace(str, a => { return func(a.Groups[1].Value); }); + } + + + /// <summary> + /// 替换类似%tag%的标签 + /// </summary> + /// <param name="str"></param> + /// <param name="data">传递标签值的数组</param> + /// <returns></returns> + public static string Template(this string str, params string[] data) + { + Regex regex = new Regex("%([^%]+)%"); + MatchCollection mcs = regex.Matches(str); + if (mcs.Count != data.Length) + { + throw new ArgumentOutOfRangeException(); + } + else + { + for (int i = 0; i < mcs.Count; i++) + { + str = Regex.Replace(str, mcs[i].Groups[0].Value, data[i]); + } + } + return str; + } + + public static string Template(this string str, Hashtable hash) + { + if (hash == null || hash.Count == 0) return str; + Regex regex = new Regex("{([^{]+)}"); + MatchCollection mcs = regex.Matches(str); + string key; + for (int i = 0; i < mcs.Count; i++) + { + key = mcs[i].Groups[1].Value; + if (hash.ContainsKey(key) && hash[key] != null) + { + str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key].ToString()); + } + } + return str; + } + + public static string Template(this string str, IDictionary<string, string> hash) + { + if (hash == null || hash.Count == 0) return str; + Regex regex = new Regex("{([^{]+)}"); + MatchCollection mcs = regex.Matches(str); + string key; + for (int i = 0; i < mcs.Count; i++) + { + key = mcs[i].Groups[1].Value; + if (hash.ContainsKey(key) && hash[key] != null) + { + str = Regex.Replace(str, mcs[i].Groups[0].Value, hash[key]); + } + } + return str; + } + + /// <summary> + /// 是否匹配文本 + /// </summary> + /// <param name="str"></param> + /// <param name="pattern"></param> + /// <param name="option"></param> + /// <returns></returns> + public static bool IsMatch(this string str, string pattern, RegexOptions option = RegexOptions.None) + { + return Regex.IsMatch(str, pattern, option); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Extensions/TExtensions.cs b/src/core/J6.DevFw.Core/Framework/Extensions/TExtensions.cs new file mode 100644 index 0000000..ec56f39 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Extensions/TExtensions.cs @@ -0,0 +1,127 @@ +/* + * Copyright 2010 OPS,All rights reseved ! + * name : 泛型扩展 + * author : newmin + * date : 2010/11/08 07:31 + * + */ + +using System; +using System.Globalization; +using System.Reflection; + +namespace JR.DevFw.Framework.Extensions +{ + public static class TExtensions + { + /// <summary> + ///从SourceType拷贝对象的数据,将相同名称属性赋值 + /// </summary> + /// <param name="s">包含数据的对象</param> + /// <param name="c">要拷贝数据的对象</param> + /// <param name="ignoreNullValue">是否忽略空值</param> + public static ToType CloneData<SourceType, ToType>(this ToType t, SourceType s, bool ignoreNullValue) + { + Type sourceType = typeof (SourceType); + Type type = typeof (ToType); + Type propertyType; + Type fieldType; + + if (t is String || s is String) return t; + + + PropertyInfo[] cp = type.GetProperties(); + FieldInfo[] fields = type.GetFields(); + + object _v; + + + FieldInfo _f; + + foreach (FieldInfo f in sourceType.GetFields()) + { + if (f.IsStatic || f.IsInitOnly) continue; + + _f = Array.Find(fields, a => string.Compare(a.Name, f.Name, true, + CultureInfo.InvariantCulture) == 0); + + if (_f == null || _f.IsStatic || f.IsInitOnly) continue; + + _v = f.GetValue(s); + if (!ignoreNullValue && _v == null) continue; + + fieldType = _f.FieldType; + if (fieldType.IsEnum) + { + _f.SetValue(t, Enum.Parse(fieldType, _v.ToString())); + } + else + { + if (_v is IConvertible) + { + _f.SetValue(t, Convert.ChangeType(_v, fieldType)); + } + else + { + try + { + _f.SetValue(t, _v); + } + catch + { + } + } + } + } + + PropertyInfo _p; + foreach (PropertyInfo p in sourceType.GetProperties()) + { + if (!p.CanRead) continue; + + _p = Array.Find(cp, a => string.Compare(a.Name, p.Name, true, + CultureInfo.InvariantCulture) == 0); + + if (_p == null || !_p.CanWrite) continue; + + + _v = p.GetValue(s, null); + if (!ignoreNullValue && _v == null) continue; + propertyType = _p.PropertyType; + + if (propertyType.IsEnum) + { + _p.SetValue(t, Enum.Parse(propertyType, _v.ToString()), null); + } + else + { + if (_v is IConvertible) + { + _p.SetValue(t, Convert.ChangeType(_v, propertyType), null); + } + else + { + try + { + _p.SetValue(t, _v, null); + } + catch + { + } + } + } + } + + + return t; + } + + /// <summary> + /// 拷贝对象的数据 + /// </summary> + public static ToType CloneData<SourceType, ToType>(this ToType t, SourceType s) + { + return CloneData(t, s, true); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Graphic/GraphicsHelper.cs b/src/core/J6.DevFw.Core/Framework/Graphic/GraphicsHelper.cs new file mode 100644 index 0000000..258e79c --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Graphic/GraphicsHelper.cs @@ -0,0 +1,824 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.IO; + +/******************************************* +* 文 件 名:ImageGraphicsUtility.cs +* 文件说明: +* 创 建 人:刘成文 +* 创建日期:2012-9-29 11:53:40 +********************************************/ + +namespace JR.DevFw.Framework.Graphic +{ + /// <summary> + /// 绘图工具类 + /// </summary> + public class GraphicsHelper + { + private static IDictionary<string, ImageCodecInfo> imageCoders; + + static GraphicsHelper() + { + imageCoders = new Dictionary<string, ImageCodecInfo>(); + ImageCodecInfo imgCode = null; + ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); + string key = null; + foreach (ImageCodecInfo code in imgCodes) + { + switch (code.MimeType) + { + case "image/jpeg": + key = "Jpeg"; + break; + case "image/png": + key = "Png"; + break; + case "image/bmp": + key = "Bmp"; + break; + default: + key = null; + break; + } + + if (key != null) + { + imageCoders.Add(key, code); + } + } + } + + /// <summary> + /// + /// </summary> + /// <param name="size"></param> + /// <param name="resize"></param> + /// <param name="mode"></param> + /// <returns></returns> + public static Size GetSize(Size size, Size resize, ImageSizeMode mode) + { + // int toWidth = resize.Width; + // int toHeight = resize.Height; + + // int x = 0; + // int y = 0; + // int ow = size.Width; + // int oh = size.Height; + + Size newSize = new Size(); + newSize.Width = resize.Width; + newSize.Height = resize.Height; + + + switch (mode) + { + case ImageSizeMode.SuitWidth: + newSize.Height = size.Height*resize.Width/size.Width; + break; + + case ImageSizeMode.SuitHeight: + newSize.Width = size.Width*resize.Height/size.Height; + break; + + case ImageSizeMode.AutoSuit: + //根据宽度适配 + if (size.Width > size.Height) + { + newSize.Height = size.Height*resize.Width/size.Width; + } + else //根据高度适配 + { + newSize.Width = size.Width*resize.Height/size.Height; + } + break; + + //填充适应 + case ImageSizeMode.FillFit: + if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) + { + newSize.Height = size.Height*resize.Width/size.Width; + } + else + { + newSize.Width = resize.Width*resize.Height/size.Height; + } + + break; + + //裁剪 + case ImageSizeMode.Cut: + //裁剪宽 + if ((double) size.Width/(double) size.Height > (double) resize.Width/(double) resize.Height) + { + newSize.Height = size.Height; + newSize.Width = size.Height*resize.Width/resize.Height; + } + else + { + newSize.Width = size.Width; + newSize.Height = size.Width*resize.Height/resize.Width; + } + break; + + default: + case ImageSizeMode.CustomSize: + break; + } + + return newSize; + } + + /// <summary> + /// 重新绘制指定尺寸的图片 + /// </summary> + /// <param name="original">原图</param> + /// <param name="width">缩略图宽度</param> + /// <param name="height">缩略图高度</param> + /// <param name="mode">缩略图模式</param> + /// <param name="format">图像格式</param> + /// <param name="compression"></param> + /// <param name="graphicsHandler">对缩略图处理</param> + /// <param name="imageQuality"></param> + public static byte[] DrawBySize( + Image original, + ImageSizeMode mode, + int width, int height, + ImageFormat format, + long imageQuality, + long compression, + ImageGraphicsHandler graphicsHandler) + { + int toWidth = width; + int toHeight = height; + + int x = 0; + int y = 0; + int ow = original.Width; //原始宽度 + int oh = original.Height; //原始高度 + + Size toSize = new Size(width, height); //要转换的图片尺寸 + Size imageSize = GetSize(original.Size, toSize, mode); //转换的实际尺寸 + + + //裁剪 + if (mode == ImageSizeMode.Cut) + { + if ((double) original.Width/(double) original.Height > (double) toSize.Width/(double) toSize.Height) + { + oh = original.Height; + ow = original.Height*toWidth/toHeight; + y = 0; + x = (original.Width - ow)/2; + } + else + { + ow = original.Width; + oh = original.Width*height/toWidth; + x = 0; + y = (original.Height - oh)/2; + } + } + else + { + x = (toSize.Width - imageSize.Width)/2; + y = (toSize.Height - imageSize.Height)/2; + } + + //新建一个bmp图片 + Image bitmap; + if (mode == ImageSizeMode.FillFit) + { + bitmap = new Bitmap(width, height); + } + else + { + bitmap = new Bitmap(toWidth, toHeight); + } + + //新建一个画板 + Graphics g = Graphics.FromImage(bitmap); + + //设置高质量插值法 + g.InterpolationMode = InterpolationMode.HighQualityBicubic; + + //设置高质量,低速度呈现平滑程度 + g.SmoothingMode = SmoothingMode.HighQuality; + + //清空画布并以透明背景色填充 + g.Clear(Color.Transparent); + if (mode == ImageSizeMode.FillFit) + { + g.Clear(Color.White); + } + + //在指定位置并且按指定大小绘制原图片的指定部分 + + g.DrawImage(original, + new Rectangle(x, y, imageSize.Width, imageSize.Height), + new Rectangle(x, y, ow, oh), + GraphicsUnit.Pixel); + + + //对图片进行处理 + if (graphicsHandler != null) + { + graphicsHandler(bitmap); + if (bitmap == null) + { + throw new ArgumentException("不允许释放图片资源!"); + } + } + + //保存到内存留 + MemoryStream ms = new MemoryStream(); + + + ImageCodecInfo imgCode = null; + + if (format != null) + { + string formatStr = format.ToString(); + imgCode = imageCoders.ContainsKey(formatStr) ? imageCoders[formatStr] : null; + } + + if (imgCode != null) + { + EncoderParameters ep = new EncoderParameters(2); + ep.Param[0] = new EncoderParameter(Encoder.Quality, + imageQuality > 100 || imageQuality <= 0 ? 100L : imageQuality); + ep.Param[1] = new EncoderParameter(Encoder.Compression, compression < 1L ? 100L : compression); + bitmap.Save(ms, imgCode, ep); + } + else + { + bitmap.Save(ms, ImageFormat.Jpeg); + } + + //释放资源 + g.Dispose(); + byte[] bytes = ms.ToArray(); + ms.Dispose(); + bitmap.Dispose(); + return bytes; + } + + /// <summary> + /// 重新绘制指定尺寸的图片 + /// </summary> + /// <param name="original">原图</param> + /// <param name="width">缩略图宽度</param> + /// <param name="height">缩略图高度</param> + /// <param name="mode">缩略图模式</param> + /// <param name="graphicsHandler">对缩略图处理</param> + public static byte[] DrawBySize( + Image original, + ImageSizeMode mode, + int width, int height, + ImageGraphicsHandler graphicsHandler) + { + return DrawBySize(original, mode, width, height, ImageFormat.Jpeg, 100L, 60L, graphicsHandler); + } + + #region 生成缩略图 + + /// <summary> + /// 生成缩略图 + /// </summary> + /// <param name="original">原图</param> + /// <param name="width">缩略图宽度</param> + /// <param name="height">缩略图高度</param> + /// <param name="mode">缩略图模式</param> + /// <param name="thumbHandler">对缩略图处理</param> + public static MemoryStream MakeThumbnail(Image original, ImageSizeMode mode, int width, int height, + ImageGraphicsHandler thumbHandler) + { + int toWidth = width; + int toHeight = height; + + int x = 0; + int y = 0; + int ow = original.Width; + int oh = original.Height; + + switch (mode) + { + case ImageSizeMode.SuitWidth: + toHeight = original.Height*width/original.Width; + break; + + case ImageSizeMode.SuitHeight: + toWidth = original.Width*height/original.Height; + break; + + case ImageSizeMode.AutoSuit: + //根据宽度适配 + if (original.Width > original.Height) + { + toHeight = original.Height*width/original.Width; + } + else //根据高度适配 + { + toWidth = original.Width*height/original.Height; + } + break; + + //填充适应 + case ImageSizeMode.FillFit: + if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) + { + toWidth = width; + toHeight = original.Height*width/original.Width; + } + else + { + toHeight = height; + toWidth = original.Width*height/original.Height; + } + + break; + + //裁剪 + case ImageSizeMode.Cut: + if ((double) original.Width/(double) original.Height > (double) toWidth/(double) toHeight) + { + oh = original.Height; + ow = original.Height*toWidth/toHeight; + y = 0; + x = (original.Width - ow)/2; + } + else + { + ow = original.Width; + oh = original.Width*height/toWidth; + x = 0; + y = (original.Height - oh)/2; + } + break; + + default: + case ImageSizeMode.CustomSize: + break; + } + + //新建一个bmp图片 + Image bitmap; + if (mode == ImageSizeMode.FillFit) + { + bitmap = new Bitmap(width, height); + } + else + { + bitmap = new Bitmap(toWidth, toHeight); + } + + //新建一个画板 + Graphics g = Graphics.FromImage(bitmap); + + //设置高质量插值法 + g.InterpolationMode = InterpolationMode.High; + + //设置高质量,低速度呈现平滑程度 + g.SmoothingMode = SmoothingMode.HighQuality; + + //清空画布并以透明背景色填充 + g.Clear(Color.Transparent); + if (mode == ImageSizeMode.FillFit) + { + g.Clear(Color.White); + } + + //在指定位置并且按指定大小绘制原图片的指定部分 + g.DrawImage(original, + new Rectangle((width - toWidth)/2, (height - toHeight)/2, toWidth, toHeight), + new Rectangle(x, y, ow, oh), + GraphicsUnit.Pixel); + + + //对图片进行处理 + if (thumbHandler != null) + { + thumbHandler(bitmap); + if (bitmap == null) + { + throw new ArgumentException("不允许释放图片资源!"); + } + } + + //保存到内存留 + MemoryStream ms = new MemoryStream(); + + //图片质量参数 + EncoderParameters ep = new EncoderParameters(2); + ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); + ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 60L); + + ImageCodecInfo imgCode = null; + ImageCodecInfo[] imgCodes = ImageCodecInfo.GetImageEncoders(); + foreach (ImageCodecInfo code in imgCodes) + { + if (code.MimeType == "image/jpeg") + { + imgCode = code; + break; + } + } + if (imgCode != null) + { + bitmap.Save(ms, imgCode, ep); + } + else + { + bitmap.Save(ms, ImageFormat.Jpeg); + } + + //释放资源 + g.Dispose(); + bitmap.Dispose(); + + return ms; + } + + + /// <summary> + /// 生成缩略图 + /// </summary> + /// <param name="originalImagePath">源图路径(物理路径)</param> + /// <param name="thumbnailPath">缩略图路径(物理路径)</param> + /// <param name="width">缩略图宽度</param> + /// <param name="height">缩略图高度</param> + public static void SaveThumbnail(string originalImagePath, string thumbnailPath, int width, int height) + { + Image originalImage = Image.FromFile(originalImagePath); + + //生成缩略图 + MakeThumbnail(originalImage, ImageSizeMode.Cut, width, height, (img) => + { + //以jpg格式保存缩略图 + img.Save(thumbnailPath, ImageFormat.Jpeg); + }).Dispose(); + + //释放资源 + originalImage.Dispose(); + } + + + /// <summary> + /// 生成缩略图 + /// </summary> + /// <param name="originalImagePath">源图路径(物理路径)</param> + /// <param name="thumbnailPath">缩略图路径(物理路径)</param> + /// <param name="width">缩略图宽度</param> + /// <param name="height">缩略图高度</param> + /// <param name="mode">生成缩略图的方式</param> + public static void SaveThumbnail(string originalImagePath, string thumbnailPath, ImageSizeMode mode, int width, + int height) + { + Image originalImage = Image.FromFile(originalImagePath); + + //生成缩略图 + MakeThumbnail(originalImage, mode, width, height, (img) => + { + //以jpg格式保存缩略图 + img.Save(thumbnailPath, ImageFormat.Jpeg); + }).Dispose(); + + //释放资源 + originalImage.Dispose(); + } + + + /// <summary> + /// 生成缩略图 + /// </summary> + /// <param name="originalImage">源图</param> + /// <param name="thumbnailPath">缩略图路径(物理路径)</param> + /// <param name="width">缩略图宽度</param> + /// <param name="height">缩略图高度</param> + /// <param name="mode">生成缩略图的方式</param> + public static void SaveThumbnail(Image originalImage, string thumbnailPath, ImageSizeMode mode, int width, + int height) + { + //生成缩略图 + MakeThumbnail(originalImage, mode, width, height, (img) => + { + //以jpg格式保存缩略图 + img.Save(thumbnailPath, ImageFormat.Jpeg); + }).Dispose(); + + //释放资源 + originalImage.Dispose(); + } + + #endregion + + private void Thumbnal_Test() + { + int imgHeight = 480, imgWidth = 600; + string file = "/1.jpg"; + string waterPath = ""; + string rootPath = AppDomain.CurrentDomain.BaseDirectory; + + Bitmap img = new Bitmap(rootPath + file); + int width, height; + if (img.Width > img.Height) + { + width = imgWidth; + height = imgHeight; + } + else + { + width = imgHeight; + height = imgWidth; + } + + byte[] data = GraphicsHelper.DrawBySize(img, ImageSizeMode.CustomSize, width, height, ImageFormat.Jpeg, 90L, + 50L, null); + img.Dispose(); + + + MemoryStream ms1 = new MemoryStream(data); + img = new Bitmap(ms1); + + Image water = new Bitmap(waterPath); + + + data = GraphicsHelper.MakeWatermarkImage( + img, + water, + WatermarkPosition.Middle + ); + + + ms1.Dispose(); + img.Dispose(); + + FileStream fs = File.OpenWrite(rootPath + "/1_1.jpg"); + BinaryWriter w = new BinaryWriter(fs); + w.Write(data); + w.Flush(); + fs.Flush(); + fs.Dispose(); + } + + #region 生成水印 + + /// <summary> + /// 生成水印 + /// </summary> + /// <param name="img">图片</param> + /// <param name="water">水印</param> + /// <param name="waterPos">水印位置</param> + /// <param name="handler">处理图片</param> + /// <returns>图片内存流</returns> + public static byte[] MakeWatermarkImage( + Image img, + Image water, + Point waterPos, + ImageGraphicsHandler handler) + { + //尺寸检测 + if (water.Width > img.Width || water.Height > img.Height) + { + throw new ArgumentException("水印图片尺寸超过原图,无法生成水印!"); + } + + //绘制水印 + Graphics g = Graphics.FromImage(img); + g.DrawImage(water, waterPos.X, waterPos.Y); + + if (handler != null) + { + handler(img); + if (img == null) + { + throw new ArgumentException("不允许释放图片资源!"); + } + } + + //保存到内存流 + MemoryStream ms = new MemoryStream(); + img.Save(ms, img.RawFormat); + + //释放资源 + g.Dispose(); + + byte[] bytes = ms.ToArray(); + ms.Dispose(); + water.Dispose(); + + return bytes; + } + + + /// <summary> + /// 生成水印 + /// </summary> + /// <param name="img">图片</param> + /// <param name="water">水印</param> + /// <param name="pos">预置的水印位置</param> + /// <param name="format">图像格式</param> + /// <param name="handler">处理图片</param> + /// <returns>图片内存流</returns> + public static byte[] MakeWatermarkImage( + Image img, + Image water, + WatermarkPosition pos, + ImageGraphicsHandler handler) + { + int x; + int y; + + int xOffset = 5; //宽度偏移量 + int yOffset = 5; //高度偏移量 + switch (pos) + { + case WatermarkPosition.Bottom: + //正下方 + x = (img.Width - water.Width)/2; + y = img.Height - water.Height - yOffset; + break; + case WatermarkPosition.LeftBottom: + //左下方 + x = xOffset; + y = img.Height - water.Height - yOffset; + break; + case WatermarkPosition.Right: + //右方 + x = img.Width - water.Width - xOffset; + y = (img.Height - water.Height)/2; + break; + case WatermarkPosition.Middle: + //正中 + x = (img.Width - water.Width)/2; + y = (img.Height - water.Height)/2; + break; + case WatermarkPosition.Left: + //左边 + x = xOffset; + y = (img.Height - water.Height)/2; + break; + case WatermarkPosition.RightTop: + //右上方 + x = img.Width - water.Width - xOffset; + y = yOffset; + break; + case WatermarkPosition.Top: + //正上方 + x = (img.Width - water.Width)/2; + y = yOffset; + break; + case WatermarkPosition.LeftTop: + //左上方 + x = xOffset; + y = yOffset; + break; + + default: + case WatermarkPosition.Default: + case WatermarkPosition.RightBottom: + //右下角 + x = img.Width - water.Width - xOffset; + y = img.Height - water.Height - yOffset; + break; + } + + return MakeWatermarkImage(img, water, new Point(x, y), handler); + } + + + /// <summary> + /// 生成水印 + /// </summary> + /// <param name="img">图片</param> + /// <param name="water">水印</param> + /// <param name="pos">预置的水印位置</param> + /// <returns>图片内存流</returns> + public static byte[] MakeWatermarkImage(Image img, Image water, WatermarkPosition pos) + { + return MakeWatermarkImage(img, water, pos, null); + } + + /// <summary> + /// 生成水印并保存到文件 + /// </summary> + /// <param name="imgPath">图片路径</param> + /// <param name="waterPath">水印路径</param> + /// <param name="pos">水印位置</param> + /// <param name="handler">图片处理</param> + /// <returns></returns> + public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos, + ImageGraphicsHandler handler) + { + Image img = Image.FromFile(imgPath), + water = Image.FromFile(waterPath); + + byte[] bytes = MakeWatermarkImage(img, water, pos, handler); + img.Dispose(); + water.Dispose(); + return bytes; + } + + /// <summary> + /// 生成水印并保存到文件 + /// </summary> + /// <param name="imgPath">图片路径</param> + /// <param name="waterPath">水印路径</param> + /// <param name="pos">水印位置</param> + /// <returns></returns> + public static byte[] MakeWatermarkImage(string imgPath, string waterPath, WatermarkPosition pos) + { + return MakeWatermarkImage(imgPath, waterPath, pos, null); + } + + #endregion + + #region 生成水印并保存文件 + + /// <summary> + /// 生成水印并保存到文件 + /// </summary> + /// <param name="img">图片</param> + /// <param name="water">水印</param> + /// <param name="pos">预置的水印位置</param> + public static void SaveWatermarkImage(Image img, Image water, string savePath, WatermarkPosition pos) + { + MakeWatermarkImage(img, water, pos, thumb => { thumb.Save(savePath, img.RawFormat); }); + + img.Dispose(); + } + + /// <summary> + /// 生成水印并保存到文件 + /// </summary> + /// <param name="imgPath">图片路径</param> + /// <param name="waterPath">水印路径</param> + /// <param name="savePath">保存路径</param> + public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath) + { + MakeWatermarkImage(imgPath, waterPath, WatermarkPosition.Default, + img => { img.Save(savePath, img.RawFormat); }); + } + + /// <summary> + /// 生成水印并保存到文件 + /// </summary> + /// <param name="imgPath">图片路径</param> + /// <param name="waterPath">水印路径</param> + /// <param name="savePath">保存路径</param> + public static void SaveWatermarkImage(string imgPath, string waterPath, string savePath, WatermarkPosition pos) + { + MakeWatermarkImage(imgPath, waterPath, pos, img => { img.Save(savePath, img.RawFormat); }); + } + + #endregion + + #region 其他 + + /// <summary> + /// 自动上传文本中的图片 + /// </summary> + /// <param name="content">文本内容</param> + /// <param name="path">上传路径</param> + /// <returns>上传结果信息</returns> + //private static string AutoUpload(string content, string path) + //{ + // //自动保存远程图片 + // WebClient client = new WebClient(); + // //备用Reg:<img.*?src=([\"\'])(http:\/\/.+\.(jpg|gif|bmp|bnp))\1.*?> + // Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", RegexOptions.IgnoreCase); + // MatchCollection m = reg.Matches(content); + + // foreach (Match math in m) + // { + // string imgUrl = math.Groups[1].Value; + + // //在原图片名称前加YYMMDD重名名并上传 + + // Regex regName = new Regex(@"\w+.(?:jpg|gif|bmp|png)", RegexOptions.IgnoreCase); + + // string strNewImgName = DateTime.Now.ToShortDateString().Replace("-", "") + regName.Match(imgUrl).ToString(); + + // try + // { + // //保存图片 + // client.DownloadFile(imgUrl, (path + strNewImgName)); + // } + // catch + // { + // } + // finally + // { + + // } + // client.Dispose(); + // } + // return "远程图片保存成功,保存路径为ImgUpload/auto"; + //} + + #endregion + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs b/src/core/J6.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs new file mode 100644 index 0000000..51ae6ac --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Graphic/ImageGraphicsHandler.cs @@ -0,0 +1,10 @@ +using System.Drawing; + +namespace JR.DevFw.Framework.Graphic +{ + /// <summary> + /// 绘图处理 + /// </summary> + /// <param name="img"></param> + public delegate void ImageGraphicsHandler(Image img); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Graphic/ImageSizeMode.cs b/src/core/J6.DevFw.Core/Framework/Graphic/ImageSizeMode.cs new file mode 100644 index 0000000..2d85fe6 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Graphic/ImageSizeMode.cs @@ -0,0 +1,38 @@ +namespace JR.DevFw.Framework.Graphic +{ + /// <summary> + /// 缩略图模式 + /// </summary> + public enum ImageSizeMode + { + /// <summary> + /// 固定尺寸,可能会变形 + /// </summary> + CustomSize = 1, + + /// <summary> + /// 裁剪 + /// </summary> + Cut = 2, + + /// <summary> + /// 根据宽度缩放 + /// </summary> + SuitWidth = 3, + + /// <summary> + /// 根据高度缩放 + /// </summary> + SuitHeight = 4, + + /// <summary> + /// 自动适配 + /// </summary> + AutoSuit = 5, + + /// <summary> + /// 自动填充 + /// </summary> + FillFit = 6 + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Graphic/WatermarkPosition.cs b/src/core/J6.DevFw.Core/Framework/Graphic/WatermarkPosition.cs new file mode 100644 index 0000000..4d8da09 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Graphic/WatermarkPosition.cs @@ -0,0 +1,58 @@ +namespace JR.DevFw.Framework.Graphic +{ + /// <summary> + /// 水印位置 + /// </summary> + public enum WatermarkPosition : int + { + /// <summary> + /// 默认 + /// </summary> + Default = 0, + + /// <summary> + /// 左上方 + /// </summary> + LeftTop = 1, + + /// <summary> + /// 正上方 + /// </summary> + Top = 2, + + /// <summary> + /// 右上方 + /// </summary> + RightTop = 3, + + /// <summary> + /// 左边 + /// </summary> + Left = 4, + + /// <summary> + /// 正中 + /// </summary> + Middle = 5, + + /// <summary> + /// 右边 + /// </summary> + Right = 6, + + /// <summary> + /// 左下方 + /// </summary> + LeftBottom = 7, + + /// <summary> + /// 正下方 + /// </summary> + Bottom = 8, + + /// <summary> + /// 右下方 + /// </summary> + RightBottom = 9 + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/IO/FileEncoder.cs b/src/core/J6.DevFw.Core/Framework/IO/FileEncoder.cs new file mode 100644 index 0000000..bfaca71 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/IO/FileEncoder.cs @@ -0,0 +1,118 @@ +using System.IO; +using System.Text; +using JR.DevFw.Framework.Security; + +namespace JR.DevFw.Framework.IO +{ + /// <summary> + /// 文件加密 + /// </summary> + public static class FileEncoder + { + /// <summary> + /// 是否已经加密 + /// </summary> + /// <param name="filePath"></param> + /// <param name="header">文件头</param> + /// <returns></returns> + public static bool IsEncoded(string filePath,string header) + { + int headerSize = header.Length; + char[] buffers = new char[headerSize]; + StreamReader sr = new StreamReader(filePath); + int i = sr.Read(buffers, 0, buffers.Length); + sr.Dispose(); + return i == headerSize && new string(buffers) == header; + } + + /// <summary> + /// 加密并保存 + /// </summary> + /// <param name="filePath"></param> + /// <param name="targetFilePath"></param> + /// <param name="header"></param> + /// <param name="token"></param> + public static byte[] EncodeFile(string filePath, string targetFilePath,string header,string token) + { + byte[] sourceData; + byte[] encodedData; + + //读取原始数据 + FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + sourceData = new byte[fs.Length]; + fs.Read(sourceData, 0, (int)fs.Length); + fs.Dispose(); + + int headerStrLength = header.Length; + byte[] headerBytes = Encoding.Default.GetBytes(header); + + + byte[] tempData = AesCryptoImpl.Encrypt(sourceData, token); + encodedData = new byte[tempData.Length + headerStrLength]; + + //添加头信息 + for (var i = 0; i < headerStrLength; i++) + { + encodedData[i] = headerBytes[i]; + } + + for (int i = 0; i < tempData.Length; i++) + { + encodedData[headerStrLength + i] = tempData[i]; + } + + if (!string.IsNullOrEmpty(targetFilePath)) + { + fs = new FileStream(targetFilePath, FileMode.OpenOrCreate, FileAccess.Write); + fs.Write(encodedData, 0, encodedData.Length); + fs.Flush(); + fs.Dispose(); + } + + return encodedData; + } + + /// <summary> + /// 解密文件 + /// </summary> + /// <param name="filePath"></param> + /// <param name="targetFilePath"></param> + /// <param name="header"></param> + /// <param name="token"></param> + public static byte[] DecodeFile(string filePath, string targetFilePath,string header,string token) + { + byte[] sourceData; + byte[] decodedData; + + //读取原始数据 + FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + sourceData = new byte[fs.Length]; + fs.Read(sourceData, 0, (int)fs.Length); + fs.Dispose(); + + //移除头信息 + int headerStrLength = header.Length; + + byte[] tempData = new byte[sourceData.Length - headerStrLength]; + for (var i = 0; i < tempData.Length; i++) + { + tempData[i] = sourceData[i + headerStrLength]; + } + + //解码 + decodedData = AesCryptoImpl.Decrypt(tempData, token); + + if (!string.IsNullOrEmpty(targetFilePath)) + { + //保存文件 + fs = new FileStream(targetFilePath, FileMode.OpenOrCreate, FileAccess.Write); + fs.Write(decodedData, 0, decodedData.Length); + fs.Flush(); + fs.Dispose(); + } + + return decodedData; + } + } +} + diff --git a/src/core/J6.DevFw.Core/Framework/IndexOfHandler.cs b/src/core/J6.DevFw.Core/Framework/IndexOfHandler.cs new file mode 100644 index 0000000..698dcca --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/IndexOfHandler.cs @@ -0,0 +1,12 @@ +using System; + +namespace JR.DevFw.Framework +{ + /// <summary> + /// 获取索引位置的委托 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + /// <returns></returns> + public delegate Int32 IndexOfHandler<T>(T t); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/InnerAppDomainResolver.cs b/src/core/J6.DevFw.Core/Framework/InnerAppDomainResolver.cs new file mode 100644 index 0000000..6ddee46 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/InnerAppDomainResolver.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; +using System.Reflection; + +namespace JR.DevFw.Framework +{ + internal class InnerAppDomainResolver + { + public static void Resolve(String resolveFullDir) + { + AppDomain domain = AppDomain.CurrentDomain; + if (String.IsNullOrEmpty(resolveFullDir)) + { + resolveFullDir = domain.BaseDirectory + FwCtx.Variables.AssemblyPath; + } + // + //设为隐藏目录 + // + domain.AssemblyResolve+= delegate(object sender, ResolveEventArgs args) + { + + string filePath = String.Concat(resolveFullDir, args.Name.Split(',')[0], ".dll"); + + //File.WriteAllText(directory+DateTime.Now.Millisecond.ToString()+".txt",args.Name+"//"+filePath); + + if(!File.Exists(filePath)) + { + return null; + } + else + { + return Assembly.Load(File.ReadAllBytes(filePath)); + } + }; + } + } +} diff --git a/src/core/J6.DevFw.Core/Framework/Interface/ICallable.cs b/src/core/J6.DevFw.Core/Framework/Interface/ICallable.cs new file mode 100644 index 0000000..3105b81 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Interface/ICallable.cs @@ -0,0 +1,33 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2013/12/8 + * Time: 20:58 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; + +namespace JR.DevFw.Framework.Interface +{ + /// <summary> + /// Description of ICallable. + /// </summary> + public interface ICallable + { + /// <summary> + /// 获取可调用的对象 + /// </summary> + /// <returns></returns> + Object GetCalledObject(); + + /// <summary> + /// 调用方法 + /// </summary> + /// <param name="method"></param> + /// <param name="parameters"></param> + /// <returns></returns> + Object Call(string method, params object[] parameters); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/JsonSerializer.cs b/src/core/J6.DevFw.Core/Framework/JsonSerializer.cs new file mode 100644 index 0000000..831a960 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/JsonSerializer.cs @@ -0,0 +1,35 @@ +using System.IO; +using System.Runtime.Serialization.Json; +using System.Text; + +namespace JR.DevFw.Framework +{ + public static class JsonSerializer + { + public static Encoding Encoding = Encoding.UTF8; + + public static string SerializerObject<T>(T t) + { + using (var ms = new MemoryStream()) + { + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); + ser.WriteObject(ms, t); + string result = Encoding.GetString(ms.ToArray()); + ser = null; + return result; + } + } + + public static T DeserializerObject<T>(string json) + { + using (var ms = new MemoryStream(Encoding.GetBytes(json))) + { + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof (T)); + + T t = (T) ser.ReadObject(ms); + ser = null; + return t; + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/LogFile.cs b/src/core/J6.DevFw.Core/Framework/LogFile.cs new file mode 100644 index 0000000..c1354d0 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/LogFile.cs @@ -0,0 +1,105 @@ +// +// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. +// +// Project: OPS +// FileName : LogFile.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2011/11/1 20:23:38 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.IO; +using System.Text; + +namespace JR.DevFw.Framework +{ + public class LogFile + { + private string filePath; + private bool printPrefix; + private Encoding _encoding; + + //种子,用于判断 + public int Seed { get; set; } + + //编码 + public Encoding FileEncoding + { + get { return this._encoding ?? (this._encoding = Encoding.UTF8); } + set { this._encoding = value; } + } + + public LogFile(string filePath) : this(filePath, false) + { + } + + public LogFile(string filePath, bool printPrefix) + { + this.printPrefix = printPrefix; + this.filePath = filePath; + if (!File.Exists(filePath)) + { + File.Create(filePath).Dispose(); + } + } + + /// <summary> + /// 填充内容 + /// </summary> + /// <param name="text"></param> + /* [Obsolete] + public void Append(string text) + { + byte[] data = Encoding.UTF8.GetBytes(text); + FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); + + if (fs.CanWrite) + { + fs.Write(data, 0, data.Length); + fs.Flush(); + } + fs.Dispose(); + + } + */ + public void Print(Byte[] bytes) + { + FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.Read); + + if (fs.CanWrite) + { + if (this.printPrefix) + { + byte[] data = this.FileEncoding.GetBytes(string.Format("{0:yyyy-MM-dd HH:mm:ss ", DateTime.Now)); + fs.Write(data, 0, data.Length); + } + fs.Write(bytes, 0, bytes.Length); + } + fs.Dispose(); + } + + public void Println(string text) + { + this.Print(this.FileEncoding.GetBytes(text + System.Environment.NewLine)); + } + + public void Printf(string format, params object[] data) + { + this.Print(this.FileEncoding.GetBytes(string.Format(format, data))); + } + + /// <summary> + /// 清空内容 + /// </summary> + /// <param name="text"></param> + public void Truncate() + { + FileStream fs = new FileStream(filePath, FileMode.Truncate, FileAccess.Write); + fs.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Net/FtpClient.cs b/src/core/J6.DevFw.Core/Framework/Net/FtpClient.cs new file mode 100644 index 0000000..2ddc52a --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Net/FtpClient.cs @@ -0,0 +1,159 @@ +/* + * Copyright 2010 OPS,All right reseved . + * name : ftpclient + * author : newmin + * date : 2010/12/13 + */ + +using System; +using System.IO; +using System.Net; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Framework.Net +{ + public class FtpClient + { + private FtpWebRequest request; + private string ftp; + + /// <summary> + /// 服务器 + /// </summary> + public string Server { get; set; } + + /// <summary> + /// FTP端口 + /// </summary> + public int Port { get; set; } + + /// <summary> + /// 用户名 + /// </summary> + public string UserName { get; set; } + + /// <summary> + /// 密码 + /// </summary> + public string Password { get; set; } + + /// <summary> + /// 根目录 + /// </summary> + public string RootPath { get; set; } + + /// <summary> + /// FTP请求 + /// </summary> + public FtpWebRequest Request + { + get { return request; } + } + + public FtpClient(string server, int? port, string userName, string password, string rootPath) + { + this.Server = server; + this.Port = port ?? 21; + this.RootPath = rootPath ?? "/"; + this.UserName = userName; + this.Password = password; + ftp = "ftp://" + server + ":" + port + rootPath; + } + + public FtpClient(string server, string userName, string password) + { + this.Server = server; + this.Port = 21; + this.RootPath = "/"; + this.UserName = userName; + this.Password = password; + ftp = "ftp://" + server + ":" + Port + RootPath; + } + + /// <summary> + /// 连接FTP + /// </summary> + /// <returns>返回是否连接成功</returns> + public bool Connection() + { + try + { + request = WebRequest.Create(ftp) as FtpWebRequest; + request.KeepAlive = false; + request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + request.Credentials = new NetworkCredential(UserName, Password); + FtpWebResponse fr = request.GetResponse() as FtpWebResponse; + using (StreamReader sr = new StreamReader(fr.GetResponseStream())) + { + if (!String.IsNullOrEmpty(sr.ReadToEnd())) return true; + } + return false; + } + catch + { + throw new Exception("FTP信息不正确!请检查FTP地址,端口和用户是否正确!"); + } + } + + /// <summary> + /// 是否存在文件或目录 + /// </summary> + /// <param name="folderOrFileName"></param> + /// <returns></returns> + public bool Exists(string folderOrFileName) + { + request = WebRequest.Create(ftp) as FtpWebRequest; + request.Credentials = new NetworkCredential(UserName, Password); + request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + using (StreamReader rd = new StreamReader(request.GetResponse().GetResponseStream())) + { + /* + dir = rd.ReadToEnd(); + System.Web.HttpContext.Current.Response.Write(dir + "<br />" + count.ToString()); + */ + string line; + while ((line = rd.ReadLine()) != null) + { + GroupCollection gc = new Regex("[^\\s]*$").Match(line).Groups; + if (gc.Count != 1) return false; + if (gc[0].Value == folderOrFileName) return true; + } + return false; + } + } + + /// <summary> + /// 创建文件夹 + /// </summary> + /// <param name="floderName"></param> + public void CreateDirectory(string floderName) + { + request = WebRequest.Create(ftp + floderName) as FtpWebRequest; + request.Credentials = new NetworkCredential(UserName, Password); + request.Method = WebRequestMethods.Ftp.MakeDirectory; + request.GetResponse(); + } + + public void UploadFile(string filePath, Stream fileStream) + { + const int bufferLength = 1; + byte[] buffer = new byte[bufferLength]; + request = WebRequest.Create(ftp + filePath) as FtpWebRequest; + request.Method = WebRequestMethods.Ftp.UploadFile; + request.Credentials = new NetworkCredential(UserName, Password); + request.KeepAlive = false; + request.UseBinary = true; + Stream requestStream = request.GetRequestStream(); + int readBytes = 0; + do + { + readBytes = fileStream.Read(buffer, 0, bufferLength); + if (readBytes != 0) + requestStream.Write(buffer, 0, bufferLength); + } while (readBytes != 0); + + requestStream.Dispose(); + fileStream.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Net/HttpClient.cs b/src/core/J6.DevFw.Core/Framework/Net/HttpClient.cs new file mode 100644 index 0000000..0d8f6c3 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Net/HttpClient.cs @@ -0,0 +1,151 @@ +/* + * Copyright 2010 OPS,All right reseved . + * name : ftpclient + * author : newmin + * date : 2010/12/13 + */ + +using System; +using System.IO; +using System.Net; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace JR.DevFw.Framework.Net +{ + public class HttpClient + { + private string uri; + + private HttpClient(string uri) + { + this.uri = uri; + } + + public static string Post(string url, string postData, CookieCollection cookies) + { + HttpWebRequest request = null; + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = + new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + if (request == null) return null; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + if (request == null) return null; + } + + //request.Accept = "*/*"; + request.Method = "POST"; + //httpwebrequest控件有一个透明过程,先向服务方查询url是否存在而不发送POST的内容, + //服务器如果证实url是可访问的,才发送POST,早期的Apache就认为这是一种错误,而IIS却可以正确应答 + //加上下面这一句将查询服务后马上post数据 + //System.Net.ServicePointManager.Expect100Continue = false; + //Expect:100-continue + System.Net.ServicePointManager.Expect100Continue = false; + request.ContentType = "application/x-www-form-urlencoded"; + request.Timeout = 10000; + + //添加cookie + if (cookies != null) + { + request.CookieContainer = new CookieContainer(); + request.CookieContainer.Add(cookies); + } + + //发送请求 + byte[] data = Encoding.UTF8.GetBytes(postData); + request.ContentLength = data.Length; + Stream requestStream = request.GetRequestStream(); + requestStream.Write(data, 0, data.Length); + requestStream.Dispose(); + //获取响应 + HttpWebResponse response = request.GetResponse() as HttpWebResponse; + if (response.StatusCode == HttpStatusCode.OK) + { + using (StreamReader sr = new StreamReader(response.GetResponseStream())) + { + return sr.ReadToEnd(); + } + } + else + { + return "Error:" + response.StatusCode.ToString(); + } + } + + public string Post(string postData, CookieCollection cookies) + { + return Post(this.uri, postData, cookies); + } + + private static bool CheckValidationResult(object sender, X509Certificate certificate, + X509Chain chain, SslPolicyErrors sslPolicyErrors) + { + //总是接受 + return true; + } + + + /// <summary> + /// 下载文件(支持断点续传)并返回字节数组 + /// </summary> + /// <param name="url"></param> + /// <param name="fileBytes">上次接收的文件</param> + /// <returns></returns> + public static byte[] DownloadFile(string url, byte[] fileBytes) + { + const int buffer = 32768; //32k + byte[] data = new byte[buffer]; + int cread; + int cTotal; + + MemoryStream ms = fileBytes == null || fileBytes.Length == 0 + ? new MemoryStream() + : new MemoryStream(fileBytes); + + string remoteAddr = url; + + int fileLength = (int) ms.Length; + + HttpWebRequest wr = WebRequest.Create(remoteAddr) as HttpWebRequest; + if (fileLength != 0) + { + wr.AddRange(fileLength); + } + + try + { + WebResponse rsp = wr.GetResponse(); + + Stream st = rsp.GetResponseStream(); + + cTotal = (int) rsp.ContentLength; + + while ((cread = st.Read(data, 0, buffer)) != 0) + { + ms.Write(data, 0, cread); + } + + byte[] streamArray = ms.ToArray(); + ms.Dispose(); + + return streamArray; + } + catch + { + } + return null; + } + + // + //TODO:做一个支持断电下载的方法 + // + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Security/AESCryptoImpl.cs b/src/core/J6.DevFw.Core/Framework/Security/AESCryptoImpl.cs new file mode 100644 index 0000000..868f51f --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Security/AESCryptoImpl.cs @@ -0,0 +1,153 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace JR.DevFw.Framework.Security +{ + + /// <summary> + /// AESԳƼ㷨 + /// </summary> + public class AesCryptoImpl + { + /// <summary> + /// ĬTOKEN,16λ + /// </summary> + private const string DEFAULT_TOKEN = "aescodefork3fnet"; + + //ĬԿ + private static byte[] ivKeys = { 0x12,0x34, 0x56, 0x78, 0x90, 0xAB, + 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, + 0x90, 0xAB, 0xCD, 0xEF }; + + #region ܺͽ߼ + + + /// <summary> + /// AES + /// </summary> + /// <param name="data">Ҫܵ</param> + /// <param name="token">Կ(Ĭ128λ,16ĸ)</param> + /// <param name="encoding"></param> + /// <returns>ؼֽܺ</returns> + public static byte[] Encrypt(byte[] data, string token) + { + //㷨 + SymmetricAlgorithm des = Rijndael.Create(); + + byte[] _keys = Encoding.UTF8.GetBytes(token); + + //ԿԿ + des.Key = _keys; + des.IV = ivKeys; + MemoryStream ms = new MemoryStream(); + CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); + cs.Write(data, 0, data.Length); + cs.FlushFinalBlock(); + byte[] cipherBytes = ms.ToArray();//õֽܺ + cs.Dispose(); + ms.Dispose(); + return cipherBytes; + } + + /// <summary> + /// AES + /// </summary> + /// <param name="decData">ֽ</param> + /// <param name="token">Կ</param> + /// <returns>ؽַܺ</returns> + public static byte[] Decrypt(byte[] decData, string token) + { + // if (decData.Length != ivKeys.Length) + //{ + // throw new CryptographicException("keys length is not valid!"); + //} + + SymmetricAlgorithm des = Rijndael.Create(); + des.Key = Encoding.UTF8.GetBytes(token); + des.IV = ivKeys; + byte[] decryptBytes = new byte[decData.Length]; + MemoryStream ms = new MemoryStream(decData); + CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read); + cs.Read(decryptBytes, 0, decryptBytes.Length); + cs.Dispose(); + ms.Dispose(); + return decryptBytes; + } + + /// <summary> + /// ܵBase64ַ + /// </summary> + /// <param name="data"></param> + /// <param name="token"></param> + /// <returns></returns> + public static string EncryptToBase64(byte[] data, string token) + { + byte[] encData = Encrypt(data, token); + return Convert.ToBase64String(encData); + } + + /// <summary> + /// Base64ַн + /// </summary> + /// <param name="encyptStr"></param> + /// <param name="token"></param> + /// <returns></returns> + public static byte[] DecryptFromBase64(string encyptStr, string token) + { + byte[] data = Convert.FromBase64String(encyptStr); + return Decrypt(data, token); + } + + + public static string EncryptToBase64(string str, string token) + { + return EncryptToBase64(Encoding.UTF8.GetBytes(str), token); + } + + #endregion + + + + + #region Token + + + public static string Decrypt(string encyptBase64Str, string token) + { + return Encoding.UTF8.GetString(DecryptFromBase64(encyptBase64Str, token)); + } + + public static byte[] Encrypt(byte[] data) + { + return Encrypt(data, DEFAULT_TOKEN); + } + + public static byte[] Decrypt(byte[] decData) + { + return Decrypt(decData, DEFAULT_TOKEN); + } + + public static string EncryptToBase64(byte[] data) + { + return EncryptToBase64(data, DEFAULT_TOKEN); + } + + public static byte[] DecryptFromBase64(string encyptStr) + { + return DecryptFromBase64(encyptStr, DEFAULT_TOKEN); + } + + public static string EncryptToBase64(string str) + { + return EncryptToBase64(str, DEFAULT_TOKEN); + } + + public static string Decrypt(string encyptBase64Str) + { + return Decrypt(encyptBase64Str, DEFAULT_TOKEN); + } + #endregion + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Security/Md5CryptoImpl.cs b/src/core/J6.DevFw.Core/Framework/Security/Md5CryptoImpl.cs new file mode 100644 index 0000000..2cc730a --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Security/Md5CryptoImpl.cs @@ -0,0 +1,55 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2013/12/12 + * Time: 7:35 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using System.Text; + +namespace JR.DevFw.Framework.Security +{ + /// <summary> + /// Description of Md5Crypto. + /// </summary> + public class Md5CryptoImpl + { + /// <summary> + /// 用md5加密 + /// </summary> + /// <param name="str"></param> + /// <returns></returns> + public static string EncodeMD5(String str) + { + StringBuilder sb = new StringBuilder(); + var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 + // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  + byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); + foreach (byte b in s) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString(); + } + + /// <summary> + /// 16位MD5加密 + /// </summary> + /// <param name="str"></param> + /// <returns></returns> + public static string Encode16MD5(String str) + { + //取32位的中间部分 + var md5 = System.Security.Cryptography.MD5.Create(); + return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(str)), 4, 8).Replace("-", String.Empty); + } + + + + + + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Service/IService.cs b/src/core/J6.DevFw.Core/Framework/Service/IService.cs new file mode 100644 index 0000000..38bbdba --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Service/IService.cs @@ -0,0 +1,24 @@ +/* * + * name : 服务接口 + * author : OPS newmin + * date : 09/29 2010 + * */ + +using System; + +namespace JR.DevFw.Framework.Service +{ + /// <summary> + /// 服务接口 + /// </summary> + /// <typeparam name="T"></typeparam> + internal interface IService<T> where T : MarshalByRefObject + { + /// <summary> + /// 获取服务的实例 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + T GetInstance(); + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Service/Service.config b/src/core/J6.DevFw.Core/Framework/Service/Service.config similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Service/Service.config rename to src/core/J6.DevFw.Core/Framework/Service/Service.config diff --git a/src/core/J6.DevFw.Core/Framework/Service/ServiceManager.cs b/src/core/J6.DevFw.Core/Framework/Service/ServiceManager.cs new file mode 100644 index 0000000..80710d0 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Service/ServiceManager.cs @@ -0,0 +1,68 @@ +/* * + * name :服务管理类 + * author :OPS newmin + * date :09/20 2010 + * note :继承此类需在子类的静态构造函数中添加代码,如下: + * serviceDict.Add(typeof(IP), ConfigurationManager.AppSettings["srv_ip"]); + * */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Xml; + +namespace JR.DevFw.Framework.Service +{ + /// <summary> + /// 服务管理 + /// </summary> + /// <typeparam name="T">类型</typeparam> + public abstract class ServiceManager<T> : IService<T> where T : MarshalByRefObject + { + /// <summary> + /// 服务配置字典 + /// </summary> + protected static IDictionary<Type, string> serviceDict = new Dictionary<Type, string>(); + + /// <summary> + /// 服务配置链接 + /// </summary> + protected static IDictionary<string, string> serviceUriDict = new Dictionary<string, string>(); + + /// <summary> + /// 根据配置文件初始化服务 + /// </summary> + /// <param name="configFile"></param> + protected static void Init(string configFile) + { + XmlDocument doc = new XmlDocument(); + doc.Load(configFile); + XmlNodeList xs = doc.SelectNodes("/serviceConfig/service"); + //服务的类型 + string[] ta; //TypeArr + Assembly a; + foreach (XmlNode xn in xs) + { + ta = xn.Attributes["type"].Value.Split(','); + a = Assembly.Load(ta[1]); + serviceDict.Add(a.GetType(ta[0], true, true), xn.Attributes["objectUri"].Value); + } + //获取Uri + xs = doc.SelectNodes("/serviceConfig/serviceUri/add"); + foreach (XmlNode xn in xs) + { + serviceUriDict.Add(xn.Attributes["name"].Value, xn.Attributes["uri"].Value); + } + } + + #region IService<T> 成员 + + public T GetInstance() + { + Type type = typeof (T); + return (T) Activator.GetObject(typeof (T), serviceDict[typeof (T)]); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/SettingFile.cs b/src/core/J6.DevFw.Core/Framework/SettingFile.cs new file mode 100644 index 0000000..dfffdba --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/SettingFile.cs @@ -0,0 +1,245 @@ +// +// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. +// +// Project: OPS.Web.JSON +// FileName : JsonDictionaryFile.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2011/11/26 20:01:29 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Xml; + +namespace JR.DevFw.Framework +{ + /// <summary> + /// 设置数据文件 + /// </summary> + public class SettingFile + { + private readonly string _filePath; + private readonly XmlDocument _xdoc; + private readonly XmlNode _rootNode; + + /// <summary> + /// + /// </summary> + /// <param name="filePath"></param> + public SettingFile(string filePath) + { + this._xdoc = new XmlDocument(); + this._filePath = filePath; + + //不存在,则创建 + if (!File.Exists(this._filePath)) + { + File.Create(filePath).Dispose(); + const string initData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<settings>\r\n</settings>"; + + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + + //读取文档 + using (TextReader tr = new StreamReader(this._filePath)) + { + _xdoc.LoadXml(tr.ReadToEnd()); + tr.Dispose(); + this._rootNode = _xdoc.SelectSingleNode("/settings"); + } + } + + + /// <summary> + /// 是否包含某个键值 + /// </summary> + /// <param name="key"></param> + /// <returns></returns> + public bool Contains(string key) + { + return this._rootNode.SelectSingleNode(String.Format("/settings/add[@key='{0}']", key)) != null; + } + + /// <summary> + /// 获取或设置指定键值的数据 + /// </summary> + /// <param name="key"></param> + /// <returns></returns> + public string this[string key] + { + get { return this.Get(key); } + set + { + this.Set(key, value); + } + } + + /// <summary> + /// Get the field value by key + /// </summary> + /// <param name="key"></param> + + public string Get(String key) + { + XmlNode node = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (node == null) + { + throw new ArgumentOutOfRangeException("key", "no such key named \"" + key + "\""); + } + return node.InnerText; + } + + /// <summary> + /// Set field value, if not exits will add new one. + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <returns></returns> + /// <exception cref="ArgumentOutOfRangeException"></exception> + public void Set(String key, String value) + { + XmlNode node = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (node == null) + { + this.Add(key,value??"",false); + return; + //throw new ArgumentOutOfRangeException("key", "no such key named \"" + key + "\""); + } + + + //如果不是文本注释,删除第一个节点并重新保存值 + if (node.FirstChild != null) + { + + if (node.FirstChild.Name == "#cdata-section") + { + XmlCDataSection xmlCDataSection = node.FirstChild as XmlCDataSection; + if (xmlCDataSection != null) xmlCDataSection.InnerText = value ?? ""; + } + else + { + node.RemoveChild(node.FirstChild); + node.InsertBefore(_xdoc.CreateCDataSection(value ?? ""), node.FirstChild); + } + } + else + { + node.AppendChild(_xdoc.CreateCDataSection(value ?? "")); + } + } + + /// <summary> + /// 添加新的设置 + /// </summary> + [Obsolete] + public void Add(string key, string value) + { + this.Add(key, value, false); + } + + /// <summary> + /// 添加配置 + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="ignoreExist">是否忽略已经存在的配置</param> + private void Add(string key, string value, bool ignoreExist) + { + //检查是否已经存在 + XmlNode _xn; + _xn = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (_xn != null) + { + if (ignoreExist) + { + return; + } + else + { + throw new ArgumentException(String.Format("已经存在一个名为{0}的节点!", key)); + } + } + + XmlNode root = this._rootNode; + + + XmlNode xn = _xdoc.CreateElement("add"); + + //添加key属性 + XmlAttribute xa = _xdoc.CreateAttribute("key"); + xa.Value = key; + if (xn.Attributes != null) xn.Attributes.Append(xa); + + //添加JSON内容 + xn.AppendChild(_xdoc.CreateCDataSection(value)); + + //将新元素添加到DOM + root.AppendChild(xn); + } + + /// <summary> + /// 移除指定的设置 + /// </summary> + /// <param name="key"></param> + public void Remove(string key) + { + XmlNode _xn = this._rootNode.SelectSingleNode(String.Format("add[@key='{0}']", key)); + if (_xn != null) + { + this._rootNode.RemoveChild(_xn); + } + } + + + /// <summary> + /// 搜索键值并以字典的形式返回 + /// </summary> + /// <param name="keyword"></param> + /// <returns></returns> + public IDictionary<string, string> SearchKey(string keyword) + { + IDictionary<string, string> dict = new Dictionary<string, string>(); + + XmlNodeList node = this._rootNode.SelectNodes(String.Format("add[contains(@key,'{0}')]", keyword)); + + if (node != null && node.Count != 0) + { + foreach (XmlNode xn in node) + { + if (xn.Attributes != null) + { + dict.Add(xn.Attributes["key"].Value, xn.InnerText); + } + } + } + + return dict; + } + + /// <summary> + /// 保存到文件中 + /// </summary> + public void Flush() + { + /* + using (TextWriter tr = new StreamWriter(this.filePath)) + { + tr.Write(xmlContent); + tr.Flush(); + tr.Dispose(); + }*/ + + _xdoc.Save(this._filePath); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/StringCreatorHandler.cs b/src/core/J6.DevFw.Core/Framework/StringCreatorHandler.cs new file mode 100644 index 0000000..49a699d --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/StringCreatorHandler.cs @@ -0,0 +1,18 @@ +/* + * 由SharpDevelop创建。 + * 用户: newmin + * 日期: 2013/11/24 + * 时间: 17:48 + * + * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 + */ + +using System; + +namespace JR.DevFw.Framework +{ + /// <summary> + /// Description of StringCreatorHandler. + /// </summary> + public delegate String StringCreatorHandler(); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs new file mode 100644 index 0000000..cf1f1d4 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpSimpleRequest.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections; +using System.IO; +using System.Net; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace JR.DevFw.Framework.TaskBox.HttpSync +{ + /// <summary> + /// HTTP + /// </summary> + public class HttpSimpleRequest + { + private static readonly string DefaultUserAgent = + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; + + /// <summary> + /// GETʽHTTP + /// </summary> + /// <param name="url">URL</param> + /// <param name="timeout">ijʱʱ</param> + /// <param name="userAgent">ĿͻϢΪ</param> + /// <param name="cookies">ͬHTTP͵CookieϢҪ֤Ϊ</param> + /// <returns></returns> + public static HttpWebResponse CreateGetHttpResponse( + string url, + string userAgent, + CookieCollection cookies) + { + if (string.IsNullOrEmpty(url)) + { + throw new ArgumentNullException("url"); + } + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "GET"; + request.UserAgent = DefaultUserAgent; + if (!string.IsNullOrEmpty(userAgent)) + { + request.UserAgent = userAgent; + } + + //if (timeout.HasValue) + //{ + // request.Timeout = timeout.Value; + //} + + + if (cookies != null) + { + request.CookieContainer = new CookieContainer(); + request.CookieContainer.Add(cookies); + } + return request.GetResponse() as HttpWebResponse; + } + + + /// <summary> + /// POSTʽHTTP + /// </summary> + /// <param name="url">URL</param> + /// <param name="parameters">ͬPOSTIJƼֵֵ</param> + /// <param name="timeout">ijʱʱ</param> + /// <param name="userAgent">ĿͻϢΪ</param> + /// <param name="requestEncoding">HTTPʱõı</param> + /// <param name="cookies">ͬHTTP͵CookieϢҪ֤Ϊ</param> + /// <returns></returns> + public static HttpWebResponse CreatePostHttpResponse( + string url, + Hashtable parameters, + string userAgent, + Encoding requestEncoding, + CookieCollection cookies) + { + if (string.IsNullOrEmpty(url)) + { + throw new ArgumentNullException("url"); + } + if (requestEncoding == null) + { + throw new ArgumentNullException("requestEncoding"); + } + HttpWebRequest request = null; + //ǷHTTPS + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = + new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + request.Method = "POST"; + request.ContentType = "application/x-www-form-urlencoded"; + + if (!string.IsNullOrEmpty(userAgent)) + { + request.UserAgent = userAgent; + } + else + { + request.UserAgent = DefaultUserAgent; + } + + //if (timeout.HasValue) + //{ + // request.Timeout = timeout.Value; + //} + + if (cookies != null) + { + request.CookieContainer = new CookieContainer(); + request.CookieContainer.Add(cookies); + } + //ҪPOST + if (!(parameters == null || parameters.Count == 0)) + { + StringBuilder buffer = new StringBuilder(); + int i = 0; + foreach (string key in parameters.Keys) + { + if (i > 0) + { + buffer.AppendFormat("&{0}={1}", key, parameters[key]); + } + else + { + buffer.AppendFormat("{0}={1}", key, parameters[key]); + } + i++; + } + byte[] data = requestEncoding.GetBytes(buffer.ToString()); + using (Stream stream = request.GetRequestStream()) + { + stream.Write(data, 0, data.Length); + } + } + return request.GetResponse() as HttpWebResponse; + } + + private static bool CheckValidationResult(object sender, + X509Certificate certificate, + X509Chain chain, + SslPolicyErrors errors) + { + //ǽ + return true; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs new file mode 100644 index 0000000..1628e92 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/HttpSync/HttpTaskClient.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.IO; +using System.Net; +using System.Text; + +namespace JR.DevFw.Framework.TaskBox.HttpSync +{ + /// <summary> + /// Httpͻ + /// </summary> + public class HttpTaskClient : ITaskExecuteClient + { + private string server; + private object token; + + public HttpTaskClient(string serverUrl, string token) + { + this.server = serverUrl; + this.token = token; + } + + public string ClientName + { + get { return "HttpTaskClient"; } + } + + public void Execute(ITask task) + { + foreach (Hashtable data in task.Datas) + { + this.Post(task, data); + } + } + + private void Post(ITask task, Hashtable data) + { + if (data.ContainsKey("auth_token")) + data.Add("auth_token", this.token); + + string url = this.server + + "?auth_token=" + this.token + + "&action=" + task.TaskName; + + try + { + HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( + url, + data, + null, + Encoding.UTF8, + null + ); + + StreamReader sr = new StreamReader(rsp.GetResponseStream()); + string result = sr.ReadToEnd(); + + sr.BaseStream.Dispose(); + sr.Dispose(); + + task.SetState(this, TaskState.Ok, TaskMessageParser.ConvertToSyncMessage(result)); + } + catch (Exception exc) + { + task.SetState(this, TaskState.Error, new TaskMessage + { + Result = false, + Message = exc.Message + }); + } + } + + public bool TestConnect() + { + try + { + string url = this.server + + "?auth_token=" + this.token + + "&action=connect"; + + HttpWebResponse rsp = HttpSimpleRequest.CreatePostHttpResponse( + url, + new Hashtable(), + null, + Encoding.UTF8, + null + ); + return true; + } + catch (Exception exc) + { + return false; + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/ITask.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/ITask.cs new file mode 100644 index 0000000..df1e444 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/ITask.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// + /// </summary> + public interface ITask + { + /// <summary> + /// ״̬ıʱ,֪ͨ + /// </summary> + event TaskStateChangedHandler StateChanged; + + /// <summary> + /// (ʶĿʶ) + /// </summary> + String TaskName { get; set; } + + /// <summary> + /// + /// </summary> + IList<Hashtable> Datas { get; } + + /// <summary> + /// ״̬ + /// </summary> + TaskState State { get; } + + /// <summary> + /// ״̬ + /// </summary> + /// <param name="state"></param> + /// <param name="source">¼Դ</param> + /// <param name="msg"></param> + void SetState(ITaskExecuteClient source, TaskState state, TaskMessage msg); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs new file mode 100644 index 0000000..fe14eaf --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskBoxStorage.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; + +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// 洢(ڴ洢񣬴洢״̬) + /// </summary> + public interface ITaskBoxStorage + { + /// <summary> + /// ӹ + /// </summary> + /// <param name="task"></param> + void AppendSuppendTask(ITask task); + + /// <summary> + /// ״̬ıʱ״̬ + /// </summary> + /// <param name="task"></param> + /// <param name="message"></param> + void SaveTaskChangedState(ITask task, TaskMessage message); + + /// <summary> + /// ȡе + /// </summary> + /// <returns></returns> + IList<ITask> GetSyncTaskQueue(); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskClient.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskClient.cs new file mode 100644 index 0000000..397c3ae --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskClient.cs @@ -0,0 +1,8 @@ +namespace JR.DevFw.Framework.TaskBox +{ + public interface ITaskExecuteClient + { + void Execute(ITask task); + string ClientName { get; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs new file mode 100644 index 0000000..0b0819d --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/ITaskLogProvider.cs @@ -0,0 +1,20 @@ +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// ־¼ṩ + /// </summary> + public interface ITaskLogProvider + { + /// <summary> + /// 洢 + /// </summary> + ITaskBoxStorage Storage { get; } + + /// <summary> + /// ¼״̬ + /// </summary> + /// <param name="task"></param> + /// <param name="message"></param> + void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/Task.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/Task.cs new file mode 100644 index 0000000..302eafd --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/Task.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// + /// </summary> + public class Task : ITask + { + public event TaskStateChangedHandler StateChanged; + private readonly IList<Hashtable> _dataList; + private TaskState _state = TaskState.Default; + + public Task() + { + this._dataList = new List<Hashtable>(); + } + + public Task(string taskName, params Hashtable[] datas) + : this() + { + this.TaskName = taskName; + if (datas != null) + { + foreach (Hashtable data in datas) + { + if (data != null) + { + this._dataList.Add(data); + } + } + } + } + + /// <summary> + /// + /// </summary> + public String TaskName { get; set; } + + /// <summary> + /// + /// </summary> + public IList<Hashtable> Datas + { + get { return this._dataList; } + } + + + /// <summary> + /// ״̬ + /// </summary> + public TaskState State + { + get { return this._state; } + } + + + public void SetState(ITaskExecuteClient source, TaskState state, TaskMessage message) + { + this._state = state; + + if (this.StateChanged != null) + { + this.StateChanged(source, this, message); + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/TaskBox.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskBox.cs new file mode 100644 index 0000000..8215b15 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskBox.cs @@ -0,0 +1,163 @@ +using System; +using System.Threading; + +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// + /// </summary> + public class TaskBox + { + /// <summary> + /// ߳ + /// </summary> + private int _threadNum = 5; + + private readonly TaskQueue _taskManager; + private Thread _serviceThread; + + /// <summary> + /// ύĴ + /// </summary> + public event TaskPostingHandler OnTaskExecuting; + + /// <summary> + /// 񷵻Ϣ + /// </summary> + public event TaskMessageHandler OnNotifing; + + /// <summary> + /// ĬϹ + /// </summary> + private int _suppend_minseconds = 10000; + + public TaskBox(ITaskBoxStorage storage, + ITaskLogProvider logProvider, + int threadNum) + { + this.Storage = storage; + this.Log = logProvider; + this._threadNum = threadNum; + this._taskManager = new TaskQueue(this); + + //¼־ + //this.TaskStateChanged += this.Log.LogTaskState; + } + + public TaskBox(ITaskBoxStorage storage) + : this(storage, null, 5) + { + } + + public TaskBox(ITaskBoxStorage storage, int threadNum) + : this(storage, null, threadNum) + { + } + + + /// <summary> + /// ݴ洢 + /// </summary> + public ITaskBoxStorage Storage { get; private set; } + + /// <summary> + /// ־ṩ + /// </summary> + public ITaskLogProvider Log { get; private set; } + + /// <summary> + /// ֪ͨs + /// </summary> + /// <param name="source"></param> + /// <param name="message"></param> + public void Notifing(object source, string message) + { + if (this.OnNotifing != null) + { + this.OnNotifing(source, message); + } + } + + public void StartWork() + { + //box + _serviceThread = new Thread(() => + { + try + { + _work(); + } + catch (Exception exc) + { + this.OnNotifing(this, "[Crash]:" + exc.Message); + } + }); + _serviceThread.Start(); + + this.Notifing(_serviceThread, "[Start]:Task service is running!"); + } + + /// <summary> + /// ֹͣ + /// </summary> + public void StopWork() + { + //ȴִ߳ + //serviceThread.Join(); + if (_serviceThread != null) + { + _serviceThread.Abort(); + } + this.Notifing(_serviceThread, "[Stop]:Task service is stoped!"); + } + + private void _work() + { + do + { + ITask task = this._taskManager.GetNextTask(); + if (task == null) + { + // + if (Thread.CurrentThread.ThreadState == ThreadState.Running) + { + //Thread.Sleep(this._suppend_minseconds); + continue; + } + break; + } + + if (this.OnTaskExecuting != null) + { + new Thread(() => { this.OnTaskExecuting(task); }).Start(); + } + } while (true); + } + + public int TaskCount + { + get { return _taskManager.TaskCount; } + } + + /// <summary> + /// 뵽 + /// </summary> + /// <param name="task"></param> + /// <param name="handler"></param> + public virtual void RegistTask( + ITask task, + TaskStateChangedHandler handler) + { + this._taskManager.RegistTask(task, handler); + } + + + public virtual void RegistContinuTasks( + TaskBuildHandler taskBuilder, + TaskStateChangedHandler handler, + int seconds) + { + this._taskManager.RegistContinuTasks(taskBuilder, handler, seconds); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessage.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessage.cs new file mode 100644 index 0000000..f471ca7 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessage.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections; + +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// Ϣ + /// </summary> + [Serializable] + public class TaskMessage + { + /// <summary> + /// ʧܽ + /// </summary> + public static TaskMessage Fault = new TaskMessage {Result = false, Data = null, Message = null}; + + + /// <summary> + /// ɹ + /// </summary> + public static TaskMessage Ok = new TaskMessage {Result = true, Data = null, Message = null}; + + /// <summary> + /// + /// </summary> + public bool Result { get; set; } + + /// <summary> + /// Ϣ + /// </summary> + public String Message { get; set; } + + /// <summary> + /// + /// </summary> + public Hashtable Data { get; set; } + + public override string ToString() + { + return TaskMessageParser.ConvertSyncMessageToString(this); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs new file mode 100644 index 0000000..6abff49 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskMessageParser.cs @@ -0,0 +1,26 @@ +using System; + +namespace JR.DevFw.Framework.TaskBox +{ + public class TaskMessageParser + { + public static string ConvertSyncMessageToString(TaskMessage message) + { + return JsonSerializer.SerializerObject<TaskMessage>(message); + } + + /// <summary> + /// JsonַתΪSyncMessage + /// </summary> + /// <param name="message"></param> + /// <returns></returns> + public static TaskMessage ConvertToSyncMessage(string message) + { + if (!String.IsNullOrEmpty(message)) + { + return JsonSerializer.DeserializerObject<TaskMessage>(message); + } + return default(TaskMessage); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/TaskQueue.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskQueue.cs new file mode 100644 index 0000000..593e377 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskQueue.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Threading; + +namespace JR.DevFw.Framework.TaskBox +{ + internal class TaskQueue + { + private TaskBox _syncBox; + private Queue<ITask> tasks = new Queue<ITask>(); + + public TaskQueue(TaskBox box) + { + this._syncBox = box; + + //ӵһδݿ + this.upgradeStackFromStorage(); + } + + /// <summary> + /// + /// </summary> + public int TaskCount + { + get { return this.tasks.Count; } + } + + public ITask GetNextTask() + { + if (tasks.Count == 0) + return null; + + while (tasks.Count != 0) + { + ITask task = tasks.Dequeue(); + if (task != null) return task; + } + return null; + } + + /// <summary> + /// Ӵ洢и¶ + /// </summary> + private void upgradeStackFromStorage() + { + IList<ITask> taskList = null; + + try + { + taskList = this._syncBox.Storage.GetSyncTaskQueue(); + } + catch (Exception exc) + { + this._syncBox.Notifing(this._syncBox.Storage, "[Error]:Ӵ洢лȡв" + exc.Message); + return; + } + + if (taskList != null) + { + foreach (ITask task in taskList) + { + this.tasks.Enqueue(task); + } + } + } + + internal void RegistTask(ITask task, + TaskStateChangedHandler behavior) + { + task.StateChanged += behavior; + task.StateChanged += this._syncBox.Log.LogTaskState; + this.tasks.Enqueue(task); + + task.SetState(null, TaskState.Created, new TaskMessage + { + Result = true, + Message = "Ѿ..." + }); + } + + + internal void RegistContinuTasks( + TaskBuildHandler taskBuilder, + TaskStateChangedHandler handler, + int minseconds) + { + new Thread(() => + { + while (true) + { + try + { + this.RegistTask(taskBuilder(), handler); + } + catch (Exception exc) + { + this._syncBox.Notifing(taskBuilder, "񴴽ʧ!"); + } + + Thread.Sleep(minseconds); + } + }).Start(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/TaskState.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskState.cs new file mode 100644 index 0000000..08c3d5a --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskState.cs @@ -0,0 +1,29 @@ +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// ״̬ + /// </summary> + public enum TaskState + { + /// <summary> + /// մ + /// </summary> + Created, + + /// <summary> + /// ɹ + /// </summary> + Ok, + + /// <summary> + /// ڲԭɵʧ + /// </summary> + Error, + + /// <summary> + /// жϻԭ + /// </summary> + Suppend, + Default + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs new file mode 100644 index 0000000..e247b94 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/TaskStateChangedBehavior.cs @@ -0,0 +1,26 @@ +namespace JR.DevFw.Framework.TaskBox +{ + /// <summary> + /// ״̬ıʱ + /// </summary> + /// <param name="source">ı״̬Դ</param> + /// <param name="state"></param> + public delegate void TaskStateChangedHandler(ITaskExecuteClient source, ITask task, TaskMessage result); + + /// <summary> + /// + /// </summary> + /// <returns></returns> + public delegate ITask TaskBuildHandler(); + + public delegate void TaskPostingHandler(ITask task); + + /// <summary> + /// Ϣ + /// </summary> + /// <param name="data"></param> + /// <param name="message"></param> + public delegate void TaskMessageHandler(object data, string message); + + public delegate void TaskBoxHandler(TaskBox taskBox); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs new file mode 100644 index 0000000..4d505b8 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskBoxDbStorage.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +namespace JR.DevFw.Framework.TaskBox.Toolkit +{ + public class TaskBoxDbStorage : ITaskBoxStorage + { + public void AppendSuppendTask(ITask task) + { + throw new NotImplementedException(); + } + + + public void SaveTaskChangedState(ITask task, TaskMessage message) + { + //״̬ıʱ״̬ + //Ѿִгɹˣʧˡ + } + + + public IList<ITask> GetSyncTaskQueue() + { + // + //TODO:ݿлȡ񣬲ʶ¼,HttpPost,eventжpost + // + + return new List<ITask>(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs new file mode 100644 index 0000000..6ccae03 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskLogProvider.cs @@ -0,0 +1,20 @@ +namespace JR.DevFw.Framework.TaskBox.Toolkit +{ + public class TaskLogProvider : ITaskLogProvider + { + public TaskLogProvider(ITaskBoxStorage storage) + { + this.Storage = storage; + } + + public void LogTaskState(ITaskExecuteClient client, ITask task, TaskMessage message) + { + //Լ¼־ + + if (this.Storage != null) + this.Storage.SaveTaskChangedState(task, message); + } + + public ITaskBoxStorage Storage { get; private set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs b/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs new file mode 100644 index 0000000..5750a21 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/TaskBox/Toolkit/TaskService.cs @@ -0,0 +1,96 @@ +using System; + +namespace JR.DevFw.Framework.TaskBox.Toolkit +{ + /// <summary> + /// + /// </summary> + public class TaskService + { + private TaskBox _box; + //private static string _server; + //private static string _token; + private bool _isBooted; + + //public static void RegistServer(string server, string token) + //{ + // _server = server; + // _token = token; + //} + + public TaskBox Sington + { + get + { + if (_box == null) + { + throw new Exception("δ!"); + } + + return _box; + } + } + + /// <summary> + /// + /// </summary> + public void Start(TaskBoxHandler handler, ITaskBoxStorage storage, ITaskLogProvider logProvider) + { + if (_isBooted == true) + throw new Exception("Ѿ!"); + + if (_box == null) + { + if (storage == null) + { + storage = new TaskBoxDbStorage(); + } + + if (logProvider == null) + { + logProvider = new TaskLogProvider(storage); + } + + + _box = new TaskBox(storage, logProvider, 3); + + if (handler != null) + { + handler(_box); + } + + //if (String.IsNullOrEmpty(_server) + // || String.IsNullOrEmpty(_token)) + // throw new ArgumentNullException("ʹRegistServerעϢ!"); + //HttpSyncClient client = new HttpSyncClient(_server, _token); + + //if (client.TestConnect()) + //{ + // //ע¼ + // _box.OnTaskPosting += client.Post; + //} + //else + //{ + // throw new Exception("ʧ"); + //} + } + + _isBooted = true; + _box.StartWork(); + } + + /// <summary> + /// ,ʹõĴ洢־¼ + /// </summary> + public void Start(TaskBoxHandler handler) + { + Start(handler, null, null); + } + + + public void Stop() + { + _box.StopWork(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Text/ChineseSpell.cs b/src/core/J6.DevFw.Core/Framework/Text/ChineseSpell.cs new file mode 100644 index 0000000..b77dec4 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Text/ChineseSpell.cs @@ -0,0 +1,1680 @@ +// +// ChineseSpell - A Chinese pinyin library +// Copyright (C) 2011 S1N1.COM,All rights reseved. +// +// Principle:http://tonyqus.cnblogs.com/archive/2005/10/22/260000.html +// + +using System; +using System.Text; + +namespace JR.DevFw.Framework.Text +{ + /// <summary> + /// 提供用于设置转换选项的枚举值。 + /// </summary> + [Flags] + public enum SpellOptions + { + /// <summary> + /// 只转换拼音首字母,默认转换全部 + /// </summary> + FirstLetterOnly = 1, //只转换拼音首字母,默认转换全部 + + /// <summary> + /// 转换未知汉字为问号,默认不转换 + /// </summary> + TranslateUnknowWordToInterrogation = 1 << 1, //转换未知汉字为问号,默认不转换 + + /// <summary> + /// 保留非字母、非数字字符,默认不保留 + /// </summary> + EnableUnicodeLetter = 1 << 2, //保留非字母、非数字字符,默认不保留 + + /// <summary> + /// 转换未知汉字为连接符号 + /// </summary> + TranslateSpecialWordToConnect = 1 << 3 + } + + /// <summary> + /// 中文拼写 + /// </summary> + public class ChineseSpell + { + #region 字段和属性 + + //拼音代码表 + private static readonly string[] _spellMusicCode = new string[] + { + "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", + "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", + "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", + "chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", + "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong", "cou", "cu", + "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", + "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", + "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", + "fei", "fen", "feng", "fu", "fou", "ga", "gai", "gan", "gang", "gao", + "ge", "ji", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", + "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", + "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", + "hui", "hun", "huo", "jia", "jian", "jiang", "qiao", "jiao", "jie", "jin", + "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", + "kang", "kao", "ke", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", + "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", + "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", + "ling", "liu", "long", "lou", "lu", "luan", "lue", "lun", "luo", "ma", + "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", + "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", + "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", + "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nuan", "nue", "yao", + "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", + "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", + "qi", "qia", "qian", "qiang", "qie", "qin", "qing", "qiong", "qiu", "qu", + "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", + "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", + "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", + "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", + "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", + "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", + "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", + "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", + "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", + "xuan", "xue", "xun", "ya", "yan", "yang", "ye", "yi", "yin", "ying", + "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", + "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", + "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", + "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", + "zui", "zun", "zuo", "", "ei", "m", "n", "dia", "cen", "nou", + "jv", "qv", "xv", "lv", "nv" + }; + + //拼音索引表 + private static readonly int[,] _spellCodeIndex = new int[,] + { + { + 354, 279, 331, 0, 190, 39, 284, 67, 249, 167, 353, 19, 133, 92, 129, 152, 31, 385, 105, 131, 84, 348, + 348, + 329, 133, 0, 376, 116, 283, 349, 344, 87, 133, 0, 0, 0, 284, 202, 0, 0, 0, 0, 0, 0, 342, 345, 0, 276, + 199, 243, 0, 0, 52, 0, 375, 102, 88, 176, 170, 348, 136, 180, 375, 0, 354, 294, 299, 94, 344, 368, 344, + 55, 347, 333, 131, 347, 353, 369, 166, 74, 325, 92, 0, 329, 6, 19, 0, 306, 0, 332, 372, 114, 107, 20, 33, + 370, 279, 258, 79, 191, 243, 328, 220, 83, 43, 324, 62, 376, 229, 354, 64, 73, 329, 348, 336, 92, 2, 349, + 232, 282, 84, 305, 389, 357, 134, 332, 343, 336, 363, 332, 217, 208, 335, 340, 377, 389, 13, 232, 348, + 294, 348, 374, 107, 181, 378, 21, 250, 14, 371, 47, 346, 369, 14, 332, 250, 284, 10, 121, 110, 333, 91, + 78, 194, 19, 113, 123, 102, 251, 47, 337, 282, 320, 106, 157, 348, 101, 349, 189, 340, 3, 175, 77, 178, + 29, 37, 343, 377, 263, 125, 294, 56 + }, + { + 302, 214, 130, 132, 313, 373, 393, 39, 404, 134, 286, 313, 282, 320, 20, 201, 334, 318, 354, 330, 340, + 101, + 148, 329, 348, 84, 167, 122, 350, 332, 270, 229, 330, 190, 331, 339, 62, 134, 375, 157, 294, 123, 334, + 125, 16, 309, 81, 344, 11, 354, 336, 116, 374, 375, 19, 133, 220, 389, 167, 323, 169, 43, 387, 0, 91, + 310, 286, 187, 304, 383, 337, 237, 241, 88, 167, 299, 245, 80, 375, 387, 178, 295, 171, 122, 68, 386, 12, + 329, 134, 200, 23, 125, 347, 276, 245, 350, 36, 243, 264, 376, 45, 325, 354, 19, 309, 345, 83, 305, 328, + 75, 34, 283, 140, 62, 29, 11, 367, 120, 220, 369, 388, 345, 353, 340, 367, 47, 84, 84, 375, 190, 92, 348, + 335, 343, 294, 71, 368, 373, 315, 11, 360, 245, 325, 296, 375, 297, 331, 355, 261, 217, 357, 126, 180, + 63, 305, 109, 129, 330, 278, 243, 252, 35, 40, 270, 11, 334, 352, 220, 304, 301, 346, 78, 19, 333, 359, + 97, 270, 162, 352, 362, 387, 231, 295, 381, 354, 368, 389, 279, 43, 131, 107 + }, + { + 370, 247, 349, 62, 335, 174, 11, 234, 130, 166, 175, 182, 243, 332, 304, 350, 68, 392, 278, 127, 132, + 318, + 392, 240, 160, 32, 101, 241, 308, 381, 325, 92, 20, 121, 45, 312, 278, 220, 82, 332, 354, 75, 170, 20, + 97, 332, 332, 193, 347, 130, 242, 127, 83, 377, 2, 269, 348, 137, 216, 304, 348, 58, 150, 0, 125, 40, + 128, 276, 359, 24, 18, 3, 303, 59, 30, 158, 348, 130, 243, 188, 329, 214, 248, 208, 32, 169, 404, 152, + 10, 354, 16, 360, 375, 294, 353, 109, 247, 246, 164, 308, 325, 173, 40, 31, 333, 311, 335, 164, 179, 360, + 221, 305, 345, 179, 202, 360, 338, 265, 265, 316, 32, 208, 208, 130, 345, 284, 0, 0, 0, 0, 282, 69, 0, 0, + 120, 329, 265, 167, 354, 107, 310, 0, 92, 348, 184, 254, 345, 184, 367, 132, 98, 132, 184, 377, 96, 340, + 353, 140, 348, 189, 284, 188, 134, 147, 193, 84, 335, 189, 303, 89, 116, 226, 84, 193, 242, 125, 296, + 186, 316, 97, 131, 247, 68, 88, 349, 2, 164, 25, 194, 384, 52 + }, + { + 294, 74, 130, 170, 330, 70, 79, 79, 134, 40, 374, 83, 198, 375, 83, 83, 139, 88, 237, 150, 107, 258, 43, + 92, + 243, 53, 92, 57, 323, 136, 164, 84, 250, 64, 193, 171, 376, 17, 129, 129, 278, 31, 94, 43, 153, 74, 77, + 129, 47, 131, 69, 179, 363, 355, 54, 0, 276, 43, 54, 164, 81, 31, 241, 0, 43, 386, 89, 240, 74, 247, 385, + 125, 92, 345, 123, 74, 375, 329, 98, 283, 125, 367, 139, 244, 42, 31, 381, 175, 164, 231, 278, 147, 98, + 117, 367, 385, 166, 134, 172, 102, 128, 102, 125, 125, 314, 92, 125, 125, 375, 31, 390, 196, 164, 378, + 344, 131, 145, 335, 375, 348, 378, 196, 160, 135, 147, 346, 321, 334, 197, 152, 129, 169, 0, 131, 90, + 193, 37, 159, 352, 0, 135, 247, 175, 21, 157, 139, 190, 68, 340, 329, 348, 343, 346, 283, 168, 175, 234, + 284, 92, 244, 128, 251, 333, 348, 342, 79, 135, 314, 134, 57, 181, 343, 343, 404, 164, 34, 333, 251, 357, + 133, 10, 0, 14, 87, 87, 348, 231, 134, 220, 91, 75 + }, + { + 95, 55, 133, 95, 203, 133, 348, 126, 141, 116, 250, 79, 245, 361, 152, 116, 354, 102, 121, 57, 153, 166, + 166, 298, 70, 133, 250, 330, 143, 345, 250, 343, 209, 389, 284, 330, 323, 323, 335, 278, 92, 288, 152, + 330, 335, 254, 346, 248, 280, 37, 340, 330, 153, 92, 75, 330, 270, 345, 372, 107, 344, 62, 368, 0, 227, + 0, 245, 344, 375, 183, 309, 281, 313, 391, 81, 363, 355, 164, 63, 246, 5, 102, 345, 164, 32, 243, 164, + 345, 345, 355, 114, 190, 262, 250, 0, 162, 70, 381, 282, 282, 282, 348, 56, 285, 136, 6, 267, 284, 385, + 331, 334, 92, 357, 265, 48, 98, 249, 37, 0, 114, 192, 183, 341, 386, 74, 347, 223, 123, 348, 39, 246, + 335, 239, 117, 114, 354, 221, 342, 263, 223, 90, 137, 404, 91, 326, 241, 329, 128, 357, 37, 283, 319, + 326, 75, 284, 135, 230, 326, 197, 254, 62, 284, 377, 312, 330, 348, 241, 237, 386, 340, 348, 334, 344, + 250, 332, 320, 239, 17, 84, 346, 123, 303, 55, 321, 393, 21, 302, 332, 123, 241, 77 + }, + { + 75, 375, 378, 343, 334, 149, 284, 311, 397, 341, 322, 160, 314, 338, 353, 189, 209, 337, 0, 109, 357, + 173, + 239, 183, 389, 110, 332, 160, 238, 167, 6, 192, 404, 299, 84, 107, 356, 353, 97, 97, 11, 107, 348, 243, + 316, 345, 323, 164, 249, 34, 362, 344, 69, 241, 62, 246, 0, 114, 0, 0, 167, 159, 276, 0, 0, 328, 349, + 241, 321, 244, 3, 363, 209, 354, 310, 157, 330, 2, 400, 385, 368, 358, 334, 333, 384, 329, 326, 309, 97, + 241, 241, 57, 347, 386, 316, 52, 110, 344, 241, 372, 167, 332, 350, 98, 363, 104, 179, 0, 62, 251, 320, + 0, 305, 3, 57, 354, 372, 377, 30, 322, 0, 360, 220, 190, 116, 357, 119, 355, 92, 376, 325, 276, 340, 120, + 367, 345, 167, 354, 271, 139, 127, 345, 278, 230, 300, 351, 325, 350, 0, 11, 0, 362, 123, 309, 220, 334, + 244, 273, 352, 114, 335, 180, 29, 106, 263, 321, 92, 227, 329, 332, 386, 175, 321, 0, 301, 0, 269, 0, + 199, 244, 14, 5, 166, 391, 378, 196, 304, 128, 38, 128, 139 + }, + { + 304, 282, 2, 334, 174, 334, 116, 121, 104, 340, 332, 363, 32, 238, 60, 180, 116, 86, 305, 347, 269, 128, + 334, 117, 181, 254, 334, 334, 92, 153, 334, 109, 396, 127, 340, 320, 304, 343, 329, 392, 79, 139, 121, + 24, 43, 358, 57, 354, 319, 330, 241, 109, 166, 340, 121, 349, 343, 220, 294, 345, 350, 55, 369, 0, 385, + 216, 356, 335, 127, 355, 2, 352, 325, 354, 230, 59, 336, 73, 58, 336, 232, 349, 391, 214, 62, 158, 302, + 328, 331, 347, 74, 339, 377, 368, 130, 32, 343, 185, 375, 175, 121, 228, 353, 220, 349, 351, 186, 114, + 372, 164, 172, 106, 202, 196, 345, 164, 175, 173, 196, 57, 35, 236, 232, 333, 185, 330, 74, 148, 345, 31, + 350, 0, 156, 302, 334, 46, 119, 123, 381, 372, 334, 367, 164, 31, 30, 164, 348, 179, 360, 297, 0, 365, + 125, 358, 378, 158, 212, 0, 0, 121, 349, 213, 317, 141, 355, 132, 233, 357, 48, 121, 75, 104, 314, 316, + 104, 253, 260, 104, 303, 104, 349, 122, 107, 178, 104, 44, 325, 355, 251, 148, 240 + }, + { + 355, 355, 344, 317, 316, 316, 317, 177, 121, 348, 176, 176, 344, 316, 313, 240, 175, 150, 344, 384, 297, + 297, 385, 58, 242, 331, 278, 212, 196, 124, 375, 343, 348, 246, 186, 261, 319, 82, 14, 337, 158, 131, 92, + 62, 337, 226, 305, 250, 385, 98, 303, 132, 346, 0, 175, 249, 96, 342, 6, 171, 378, 84, 116, 0, 375, 5, 0, + 228, 193, 92, 110, 404, 47, 37, 349, 115, 72, 371, 84, 101, 220, 74, 102, 29, 346, 335, 285, 19, 114, 55, + 138, 58, 108, 3, 337, 332, 9, 239, 11, 348, 349, 107, 340, 383, 246, 83, 80, 252, 352, 137, 331, 62, 159, + 135, 246, 372, 169, 117, 21, 132, 347, 62, 344, 251, 299, 374, 323, 134, 178, 374, 146, 279, 68, 304, 23, + 315, 13, 332, 74, 348, 375, 384, 241, 134, 208, 143, 154, 208, 125, 89, 354, 344, 97, 163, 80, 344, 154, + 3, 282, 203, 316, 36, 119, 14, 166, 328, 381, 10, 354, 329, 129, 264, 347, 94, 387, 354, 120, 75, 220, + 84, 92, 186, 279, 320, 349, 83, 376, 129, 130, 113, 89 + }, + { + 45, 332, 237, 162, 337, 120, 71, 323, 341, 330, 92, 150, 350, 352, 139, 297, 284, 189, 327, 36, 316, 252, + 376, 164, 231, 9, 361, 72, 373, 329, 374, 343, 373, 2, 95, 345, 140, 326, 335, 172, 106, 159, 279, 231, + 13, 35, 175, 175, 223, 243, 186, 196, 381, 290, 174, 16, 27, 375, 370, 140, 63, 35, 385, 0, 92, 104, 244, + 246, 62, 52, 345, 302, 366, 243, 325, 383, 127, 278, 278, 81, 240, 318, 317, 79, 252, 73, 392, 62, 283, + 121, 74, 304, 61, 329, 82, 120, 304, 55, 347, 378, 125, 354, 244, 127, 144, 348, 232, 63, 126, 347, 342, + 304, 158, 134, 118, 58, 255, 243, 343, 332, 330, 2, 344, 59, 264, 130, 404, 152, 175, 345, 304, 325, 121, + 173, 173, 265, 164, 170, 31, 343, 345, 162, 6, 323, 270, 382, 348, 181, 378, 382, 116, 154, 116, 340, + 154, 285, 183, 73, 285, 348, 350, 126, 227, 368, 15, 299, 253, 171, 54, 341, 335, 203, 331, 355, 323, + 375, 247, 0, 96, 241, 188, 188, 35, 363, 136, 90, 306, 303, 345, 14, 0 + }, + { + 357, 335, 6, 76, 309, 228, 135, 335, 63, 346, 119, 139, 367, 12, 120, 81, 64, 343, 145, 5, 327, 303, 329, + 5, + 126, 166, 74, 357, 126, 284, 82, 123, 14, 176, 74, 313, 243, 133, 218, 29, 332, 79, 92, 114, 57, 353, + 131, 129, 326, 376, 224, 145, 376, 357, 232, 37, 356, 382, 345, 201, 336, 82, 83, 0, 355, 70, 20, 385, + 371, 208, 355, 315, 341, 375, 75, 196, 14, 282, 75, 110, 340, 78, 374, 193, 8, 84, 171, 386, 254, 332, + 346, 182, 386, 134, 258, 68, 92, 87, 333, 123, 135, 96, 125, 125, 209, 375, 373, 332, 113, 101, 343, 149, + 345, 194, 169, 229, 344, 353, 345, 332, 309, 321, 251, 295, 114, 332, 280, 283, 335, 183, 84, 329, 143, + 157, 50, 313, 337, 201, 354, 238, 299, 375, 107, 382, 237, 318, 332, 354, 345, 329, 330, 345, 354, 294, + 164, 134, 383, 241, 332, 385, 68, 175, 75, 75, 404, 190, 48, 239, 134, 23, 171, 334, 286, 241, 121, 84, + 328, 328, 304, 81, 81, 310, 208, 251, 131, 131, 243, 63, 337, 116, 323 + }, + { + 157, 349, 377, 203, 84, 178, 0, 154, 349, 344, 134, 164, 63, 332, 117, 117, 346, 220, 201, 267, 124, 354, + 354, 325, 309, 262, 186, 57, 264, 247, 121, 328, 243, 45, 191, 84, 129, 71, 348, 376, 120, 190, 345, 350, + 341, 129, 325, 374, 249, 375, 335, 320, 166, 184, 254, 294, 233, 325, 321, 50, 116, 245, 10, 0, 340, 354, + 102, 388, 220, 355, 261, 263, 172, 186, 226, 357, 180, 153, 282, 373, 355, 301, 261, 194, 350, 297, 211, + 306, 227, 159, 203, 10, 232, 348, 354, 341, 355, 348, 141, 352, 208, 391, 130, 381, 363, 201, 160, 372, + 116, 116, 5, 264, 180, 235, 97, 329, 127, 320, 369, 191, 332, 332, 196, 168, 166, 117, 102, 61, 375, 340, + 348, 117, 330, 153, 220, 345, 31, 128, 186, 84, 79, 345, 348, 111, 128, 84, 284, 299, 244, 166, 341, 336, + 211, 68, 348, 24, 2, 210, 214, 180, 311, 39, 130, 47, 354, 236, 261, 263, 208, 345, 303, 350, 243, 356, + 190, 14, 282, 337, 208, 70, 172, 355, 158, 345, 171, 128, 255, 158, 332, 350, 290 + }, + { + 335, 251, 189, 164, 176, 345, 378, 158, 136, 386, 336, 294, 303, 353, 381, 343, 192, 48, 323, 344, 348, + 386, + 164, 342, 20, 200, 212, 350, 176, 261, 248, 316, 262, 220, 348, 131, 384, 378, 114, 284, 348, 311, 330, + 36, 253, 95, 334, 367, 284, 282, 120, 189, 147, 23, 360, 355, 249, 110, 373, 125, 214, 19, 119, 0, 246, + 284, 214, 130, 214, 375, 354, 10, 151, 214, 404, 246, 116, 375, 214, 282, 325, 335, 151, 121, 137, 348, + 348, 10, 246, 173, 10, 83, 404, 72, 238, 381, 238, 0, 346, 381, 343, 378, 72, 59, 129, 189, 189, 286, + 279, 196, 168, 332, 332, 154, 353, 211, 227, 324, 324, 324, 220, 74, 153, 376, 88, 97, 380, 88, 88, 330, + 14, 129, 310, 64, 284, 373, 335, 208, 330, 0, 182, 174, 237, 335, 81, 335, 404, 28, 335, 134, 136, 168, + 136, 378, 335, 238, 321, 332, 164, 345, 59, 121, 173, 258, 329, 107, 282, 40, 0, 356, 8, 220, 4, 329, + 129, 92, 82, 323, 243, 241, 129, 393, 393, 346, 134, 89, 342, 238, 164, 311, 389 + }, + { + 84, 320, 232, 5, 152, 250, 238, 311, 171, 37, 237, 0, 9, 314, 342, 15, 110, 143, 179, 75, 212, 65, 175, + 76, + 77, 87, 251, 348, 198, 284, 3, 325, 119, 189, 164, 92, 314, 325, 353, 97, 169, 220, 128, 75, 347, 21, + 253, 83, 203, 164, 353, 332, 261, 59, 282, 36, 316, 94, 90, 331, 349, 354, 202, 0, 140, 345, 252, 38, + 302, 170, 117, 134, 157, 193, 154, 154, 389, 97, 344, 89, 178, 178, 171, 74, 374, 349, 68, 107, 374, 325, + 232, 129, 389, 148, 68, 349, 386, 363, 120, 354, 346, 83, 249, 346, 309, 348, 375, 284, 75, 378, 369, + 404, 345, 186, 107, 92, 119, 313, 329, 354, 387, 158, 143, 345, 345, 325, 387, 29, 301, 143, 246, 309, + 316, 72, 330, 327, 25, 305, 350, 129, 139, 172, 329, 127, 13, 63, 243, 352, 212, 54, 284, 267, 295, 387, + 126, 168, 141, 31, 65, 399, 66, 316, 174, 369, 369, 5, 26, 250, 244, 391, 391, 59, 59, 330, 354, 232, + 173, 333, 374, 20, 246, 128, 345, 160, 369, 168, 168, 246, 74, 392, 127 + }, + { + 136, 220, 128, 220, 136, 369, 348, 342, 203, 347, 347, 348, 212, 345, 92, 335, 143, 330, 62, 5, 391, 325, + 261, 59, 171, 129, 354, 356, 349, 263, 129, 169, 330, 173, 173, 350, 330, 134, 31, 350, 325, 345, 203, + 251, 33, 51, 176, 63, 63, 212, 345, 345, 345, 203, 345, 150, 120, 337, 33, 169, 0, 240, 240, 0, 249, 375, + 371, 348, 130, 300, 251, 0, 238, 358, 66, 212, 82, 224, 375, 116, 57, 56, 321, 84, 196, 348, 348, 237, + 242, 135, 263, 288, 291, 127, 373, 284, 253, 56, 102, 237, 370, 270, 323, 56, 276, 241, 70, 115, 374, + 340, 325, 348, 9, 237, 65, 95, 226, 306, 189, 124, 308, 121, 376, 282, 16, 104, 363, 198, 9, 131, 31, + 375, 329, 14, 14, 370, 189, 127, 31, 82, 188, 9, 59, 192, 40, 129, 332, 158, 125, 19, 88, 92, 313, 363, + 101, 185, 246, 319, 344, 336, 129, 382, 344, 47, 314, 348, 375, 311, 375, 334, 316, 102, 148, 188, 353, + 21, 19, 36, 157, 92, 295, 286, 247, 354, 191, 296, 363, 333, 81, 133, 75 + }, + { + 325, 172, 331, 296, 375, 21, 247, 133, 133, 174, 349, 330, 175, 348, 40, 316, 294, 336, 191, 32, 329, 81, + 152, 0, 150, 14, 273, 170, 168, 404, 92, 350, 332, 313, 352, 164, 313, 345, 62, 238, 121, 200, 121, 82, + 250, 345, 361, 348, 77, 270, 77, 284, 64, 116, 329, 318, 126, 6, 282, 370, 306, 84, 62, 0, 33, 373, 348, + 251, 280, 355, 131, 64, 370, 126, 244, 231, 14, 281, 304, 125, 91, 78, 14, 147, 125, 17, 334, 304, 104, + 244, 114, 208, 104, 323, 136, 92, 175, 121, 121, 348, 348, 348, 356, 356, 326, 345, 354, 37, 64, 352, + 234, 37, 385, 348, 92, 376, 324, 62, 171, 84, 324, 330, 324, 374, 375, 131, 48, 375, 48, 0, 92, 375, 387, + 377, 157, 335, 129, 125, 309, 331, 233, 84, 325, 227, 330, 374, 234, 309, 60, 375, 17, 376, 34, 220, 121, + 186, 173, 333, 10, 250, 161, 258, 313, 87, 258, 107, 348, 303, 330, 79, 350, 326, 326, 329, 92, 330, 129, + 323, 48, 354, 284, 52, 303, 384, 246, 122, 338, 324, 332, 141, 134 + }, + { + 348, 10, 193, 229, 147, 8, 215, 369, 116, 389, 353, 62, 318, 353, 84, 330, 14, 353, 341, 48, 19, 120, + 342, + 232, 286, 330, 304, 352, 196, 0, 284, 330, 160, 113, 152, 197, 375, 335, 220, 65, 109, 325, 340, 334, + 294, 149, 249, 121, 37, 348, 338, 99, 170, 37, 279, 381, 356, 231, 60, 121, 334, 183, 352, 0, 355, 232, + 356, 354, 354, 143, 372, 170, 128, 245, 309, 21, 243, 330, 187, 348, 113, 36, 329, 164, 167, 48, 348, + 164, 203, 75, 329, 48, 60, 32, 187, 164, 100, 100, 241, 146, 310, 178, 330, 140, 103, 208, 73, 104, 369, + 355, 130, 92, 170, 354, 110, 251, 304, 309, 212, 46, 187, 336, 329, 301, 387, 125, 352, 60, 203, 357, + 312, 45, 248, 27, 15, 122, 387, 309, 11, 341, 325, 91, 325, 14, 341, 119, 190, 352, 241, 305, 349, 336, + 184, 242, 143, 2, 245, 345, 264, 387, 294, 350, 252, 114, 357, 297, 241, 220, 295, 120, 92, 97, 134, 43, + 208, 335, 139, 374, 352, 26, 343, 282, 20, 330, 335, 122, 352, 346, 164, 272, 306 + }, + { + 349, 340, 303, 357, 194, 95, 48, 234, 198, 104, 37, 24, 24, 24, 52, 193, 370, 314, 5, 290, 100, 252, 362, + 133, 166, 223, 295, 246, 349, 404, 279, 317, 182, 332, 281, 247, 62, 375, 404, 135, 241, 241, 354, 237, + 168, 295, 353, 38, 375, 314, 36, 241, 250, 231, 11, 248, 128, 37, 166, 237, 153, 121, 374, 0, 349, 349, + 330, 330, 57, 304, 74, 319, 297, 136, 27, 334, 79, 82, 160, 160, 332, 193, 168, 329, 24, 136, 50, 332, + 304, 283, 232, 348, 332, 216, 57, 304, 131, 295, 128, 325, 341, 246, 246, 134, 272, 144, 350, 348, 170, + 273, 137, 118, 2, 347, 155, 331, 37, 354, 349, 56, 188, 208, 188, 72, 241, 196, 332, 187, 39, 375, 221, + 40, 346, 20, 375, 152, 152, 353, 84, 172, 192, 36, 121, 31, 158, 118, 341, 255, 31, 92, 134, 119, 281, + 166, 201, 196, 305, 136, 382, 382, 356, 91, 125, 68, 65, 23, 124, 375, 153, 369, 244, 91, 125, 354, 353, + 330, 369, 330, 330, 250, 116, 116, 75, 348, 309, 184, 63, 279, 348, 348, 345 + }, + { + 249, 164, 79, 263, 359, 370, 356, 354, 329, 107, 282, 367, 348, 241, 329, 0, 258, 330, 246, 124, 354, 5, + 372, 375, 375, 0, 345, 324, 15, 134, 326, 116, 356, 246, 282, 374, 357, 323, 265, 239, 239, 6, 215, 363, + 357, 19, 375, 201, 240, 220, 373, 367, 346, 242, 208, 347, 37, 232, 124, 186, 250, 40, 344, 0, 369, 228, + 199, 243, 320, 7, 375, 134, 155, 242, 243, 112, 213, 95, 392, 348, 335, 273, 121, 7, 375, 155, 74, 74, + 216, 373, 110, 128, 68, 263, 169, 367, 175, 281, 136, 169, 134, 344, 332, 354, 345, 20, 94, 309, 36, 301, + 243, 186, 216, 134, 231, 125, 345, 299, 335, 367, 83, 148, 249, 123, 316, 239, 363, 296, 354, 385, 323, + 375, 392, 380, 368, 175, 296, 345, 9, 325, 323, 246, 281, 193, 187, 84, 59, 328, 251, 356, 387, 310, 316, + 12, 328, 393, 331, 241, 36, 272, 178, 247, 89, 62, 122, 241, 286, 323, 171, 344, 374, 167, 98, 348, 340, + 345, 374, 23, 19, 309, 388, 144, 285, 129, 194, 94, 188, 272, 231, 221, 125 + }, + { + 374, 353, 243, 345, 201, 341, 232, 325, 269, 212, 284, 387, 373, 343, 352, 15, 346, 119, 345, 390, 340, + 242, + 92, 309, 156, 156, 35, 133, 316, 122, 93, 68, 334, 335, 243, 367, 11, 220, 325, 0, 329, 387, 93, 96, 246, + 261, 252, 388, 300, 300, 261, 231, 143, 220, 59, 375, 221, 335, 249, 332, 130, 192, 348, 0, 72, 278, 302, + 367, 238, 164, 306, 148, 375, 321, 331, 326, 244, 310, 373, 75, 221, 251, 367, 329, 372, 141, 261, 277, + 300, 301, 168, 38, 43, 104, 231, 375, 241, 296, 166, 36, 37, 100, 175, 174, 387, 330, 116, 379, 244, 305, + 117, 375, 244, 102, 350, 127, 375, 212, 182, 31, 223, 40, 297, 381, 128, 278, 243, 234, 126, 220, 96, + 243, 92, 235, 160, 73, 332, 267, 102, 365, 348, 343, 36, 334, 114, 101, 302, 209, 170, 374, 325, 142, 92, + 26, 336, 304, 78, 34, 136, 334, 12, 196, 385, 325, 240, 246, 73, 117, 128, 302, 220, 379, 166, 352, 202, + 175, 385, 368, 240, 46, 330, 58, 273, 247, 129, 150, 278, 335, 367, 5, 134 + }, + { + 347, 75, 188, 189, 92, 303, 59, 158, 134, 347, 263, 347, 347, 208, 328, 129, 18, 214, 91, 375, 375, 305, + 196, 125, 335, 169, 304, 7, 296, 175, 356, 256, 375, 346, 162, 268, 286, 51, 209, 332, 229, 164, 157, + 119, 350, 179, 173, 243, 243, 243, 158, 332, 350, 186, 278, 350, 51, 335, 372, 179, 186, 196, 37, 0, 390, + 176, 304, 277, 63, 321, 305, 128, 158, 179, 102, 102, 241, 343, 142, 348, 107, 8, 238, 63, 147, 193, 329, + 110, 27, 285, 104, 340, 128, 35, 373, 74, 354, 7, 340, 74, 212, 63, 252, 348, 143, 345, 241, 315, 334, + 74, 346, 331, 193, 378, 2, 62, 373, 286, 168, 250, 338, 348, 128, 278, 128, 385, 348, 166, 14, 303, 334, + 334, 342, 241, 241, 136, 368, 0, 8, 354, 158, 325, 283, 124, 124, 354, 128, 315, 69, 375, 244, 250, 369, + 385, 385, 385, 246, 170, 385, 40, 71, 378, 129, 108, 229, 353, 0, 241, 232, 172, 84, 80, 131, 371, 348, + 280, 125, 0, 375, 79, 234, 79, 369, 150, 299, 354, 92, 92, 123, 335, 311 + }, + { + 350, 62, 340, 31, 346, 284, 193, 193, 384, 45, 329, 11, 8, 129, 283, 116, 80, 132, 341, 82, 246, 116, + 345, + 363, 80, 282, 134, 346, 80, 341, 238, 373, 171, 109, 196, 15, 340, 122, 387, 331, 81, 348, 326, 68, 2, + 19, 4, 173, 152, 311, 284, 120, 341, 153, 340, 128, 130, 375, 314, 114, 87, 333, 107, 0, 137, 332, 154, + 377, 330, 283, 372, 372, 107, 109, 323, 310, 385, 391, 377, 278, 208, 330, 241, 374, 348, 345, 323, 170, + 32, 324, 334, 81, 341, 348, 357, 121, 340, 193, 347, 350, 286, 325, 247, 184, 201, 158, 346, 45, 220, + 301, 240, 128, 139, 109, 327, 32, 241, 109, 345, 164, 92, 187, 360, 335, 109, 196, 48, 208, 370, 121, + 107, 341, 42, 168, 304, 131, 235, 170, 330, 348, 129, 120, 56, 347, 347, 164, 304, 314, 334, 81, 282, + 371, 109, 348, 333, 337, 278, 128, 10, 131, 345, 2, 347, 263, 188, 164, 35, 152, 65, 0, 220, 123, 404, + 261, 173, 179, 176, 277, 305, 345, 378, 0, 348, 116, 286, 26, 283, 366, 243, 340, 155 + }, + { + 349, 245, 82, 232, 82, 171, 148, 0, 405, 311, 159, 391, 194, 324, 319, 241, 350, 387, 324, 314, 159, 160, + 173, 0, 286, 0, 258, 6, 74, 311, 164, 249, 133, 14, 373, 47, 263, 243, 354, 329, 343, 79, 386, 258, 372, + 74, 183, 37, 348, 91, 95, 375, 126, 278, 323, 133, 183, 375, 355, 81, 68, 332, 45, 0, 286, 117, 336, 215, + 39, 295, 356, 130, 92, 184, 232, 4, 82, 348, 84, 201, 116, 347, 378, 336, 220, 75, 371, 357, 391, 283, + 74, 175, 295, 201, 373, 303, 330, 99, 84, 196, 348, 347, 347, 284, 212, 14, 348, 208, 156, 110, 226, 79, + 376, 56, 47, 350, 84, 286, 280, 295, 282, 254, 352, 375, 389, 57, 97, 240, 5, 84, 84, 393, 17, 367, 294, + 378, 229, 284, 99, 29, 220, 133, 172, 186, 164, 261, 362, 0, 352, 343, 241, 373, 348, 333, 373, 164, 273, + 140, 19, 258, 7, 258, 19, 386, 39, 348, 47, 392, 391, 77, 77, 354, 78, 95, 369, 164, 349, 375, 284, 84, + 263, 348, 148, 248, 271, 342, 74, 44, 354, 360, 0 + }, + { + 350, 129, 172, 369, 343, 268, 373, 11, 350, 155, 131, 238, 12, 265, 330, 159, 172, 83, 241, 326, 137, + 107, + 349, 249, 353, 173, 231, 382, 62, 342, 316, 362, 353, 14, 62, 107, 375, 258, 11, 332, 119, 323, 221, 124, + 311, 92, 334, 404, 151, 399, 82, 295, 294, 69, 246, 350, 134, 154, 385, 31, 325, 131, 164, 0, 19, 331, 0, + 306, 375, 157, 166, 385, 164, 241, 19, 178, 295, 243, 241, 23, 31, 372, 81, 229, 239, 122, 36, 362, 169, + 354, 354, 97, 103, 68, 89, 324, 54, 79, 36, 369, 241, 355, 345, 354, 251, 348, 282, 330, 385, 297, 157, + 388, 388, 82, 35, 247, 212, 323, 175, 109, 245, 377, 134, 134, 36, 393, 244, 344, 232, 385, 386, 18, 231, + 66, 40, 32, 187, 117, 125, 102, 330, 59, 102, 63, 375, 251, 0, 84, 94, 231, 278, 348, 282, 74, 84, 325, + 325, 124, 387, 125, 348, 330, 345, 345, 369, 354, 110, 328, 233, 14, 220, 149, 340, 267, 346, 156, 345, + 12, 121, 153, 129, 153, 294, 83, 320, 375, 198, 184, 148, 116, 313 + }, + { + 354, 353, 295, 355, 346, 373, 233, 347, 242, 347, 292, 354, 325, 186, 309, 92, 129, 262, 120, 161, 251, + 333, + 284, 304, 357, 282, 40, 232, 124, 348, 373, 84, 221, 189, 97, 130, 302, 220, 335, 355, 386, 194, 297, + 124, 220, 129, 120, 107, 243, 180, 355, 261, 284, 375, 326, 313, 261, 305, 368, 294, 283, 143, 330, 0, + 97, 241, 142, 300, 226, 306, 91, 45, 373, 400, 92, 129, 244, 332, 186, 340, 89, 385, 320, 127, 346, 63, + 124, 375, 59, 173, 271, 330, 92, 166, 121, 352, 243, 104, 87, 87, 317, 117, 282, 391, 231, 353, 126, 116, + 119, 102, 348, 348, 90, 141, 102, 102, 323, 375, 382, 357, 159, 35, 387, 164, 339, 247, 290, 314, 100, + 363, 297, 162, 175, 167, 189, 404, 128, 297, 143, 16, 175, 168, 372, 367, 286, 182, 211, 346, 311, 231, + 378, 276, 251, 125, 48, 92, 345, 342, 375, 343, 375, 391, 48, 240, 286, 117, 153, 373, 278, 330, 45, 63, + 81, 196, 329, 256, 170, 172, 127, 332, 266, 79, 369, 160, 357, 292, 318, 36, 305, 188, 334 + }, + { + 136, 336, 121, 92, 221, 320, 214, 265, 314, 366, 82, 248, 345, 113, 246, 97, 172, 160, 90, 330, 283, 386, + 270, 92, 69, 131, 125, 40, 55, 286, 126, 170, 203, 349, 121, 278, 391, 341, 36, 88, 134, 391, 348, 240, + 83, 121, 58, 92, 299, 237, 36, 40, 379, 121, 92, 129, 124, 368, 125, 244, 59, 348, 16, 0, 295, 281, 164, + 349, 306, 303, 190, 241, 317, 19, 123, 92, 243, 208, 214, 348, 90, 140, 349, 264, 247, 345, 241, 189, + 371, 102, 45, 92, 153, 238, 61, 40, 91, 190, 353, 375, 120, 243, 162, 169, 268, 175, 164, 51, 404, 192, + 121, 223, 404, 375, 90, 70, 355, 356, 81, 385, 296, 166, 126, 40, 247, 378, 404, 345, 164, 378, 246, 129, + 75, 297, 118, 212, 354, 173, 157, 128, 332, 0, 134, 339, 171, 350, 278, 349, 353, 350, 333, 216, 20, 369, + 166, 134, 290, 281, 391, 48, 251, 250, 25, 0, 354, 179, 164, 390, 176, 305, 136, 345, 158, 158, 378, 179, + 164, 6, 202, 354, 171, 101, 348, 332, 340, 33, 330, 241, 143, 349, 136 + }, + { + 330, 340, 331, 153, 159, 336, 296, 335, 340, 41, 349, 243, 336, 243, 42, 98, 349, 354, 334, 347, 346, + 304, + 253, 223, 116, 334, 119, 340, 230, 348, 334, 340, 0, 166, 40, 348, 75, 354, 46, 119, 21, 21, 134, 243, + 375, 273, 37, 273, 376, 301, 299, 164, 363, 354, 164, 153, 75, 372, 326, 196, 220, 283, 340, 0, 136, 242, + 249, 297, 247, 348, 347, 347, 24, 187, 65, 373, 357, 326, 39, 309, 130, 279, 349, 64, 133, 153, 51, 57, + 70, 126, 166, 18, 70, 125, 125, 378, 283, 348, 335, 252, 127, 220, 343, 121, 252, 241, 250, 121, 71, 348, + 334, 100, 186, 2, 129, 232, 31, 0, 0, 232, 169, 124, 269, 198, 320, 343, 77, 261, 332, 134, 249, 221, 0, + 229, 134, 74, 14, 270, 184, 299, 286, 320, 143, 302, 270, 286, 198, 184, 314, 261, 369, 272, 369, 188, + 175, 65, 136, 241, 346, 205, 18, 282, 330, 330, 247, 344, 68, 346, 357, 374, 19, 58, 291, 161, 208, 79, + 249, 224, 363, 190, 64, 385, 42, 323, 79, 56, 320, 183, 353, 236, 243 + }, + { + 354, 354, 316, 133, 375, 375, 243, 131, 131, 319, 137, 114, 251, 15, 107, 376, 227, 342, 120, 353, 340, + 340, + 357, 345, 57, 353, 116, 123, 405, 196, 329, 38, 227, 14, 375, 226, 386, 358, 172, 363, 83, 186, 358, 320, + 373, 373, 348, 78, 310, 294, 152, 350, 134, 348, 124, 376, 121, 12, 363, 378, 353, 97, 116, 0, 237, 386, + 375, 297, 36, 294, 134, 342, 283, 342, 84, 92, 100, 57, 349, 377, 347, 121, 359, 36, 325, 115, 125, 294, + 77, 337, 84, 386, 375, 349, 329, 142, 0, 345, 309, 197, 162, 348, 189, 251, 238, 334, 348, 297, 152, 245, + 134, 237, 338, 375, 120, 194, 329, 250, 348, 131, 284, 0, 31, 130, 169, 249, 325, 107, 183, 353, 20, 69, + 114, 348, 374, 158, 107, 164, 94, 166, 45, 114, 348, 314, 160, 331, 38, 132, 299, 36, 229, 332, 282, 154, + 237, 107, 247, 258, 316, 334, 313, 75, 357, 164, 291, 294, 162, 291, 70, 357, 113, 337, 306, 46, 370, + 202, 355, 320, 68, 328, 134, 281, 167, 122, 302, 245, 60, 135, 116, 104, 345 + }, + { + 377, 231, 109, 32, 243, 80, 37, 175, 134, 164, 372, 237, 310, 354, 208, 175, 189, 131, 171, 178, 250, + 354, + 282, 116, 116, 355, 157, 247, 243, 375, 349, 238, 12, 355, 326, 267, 81, 355, 143, 241, 281, 273, 241, + 232, 330, 355, 262, 119, 125, 218, 329, 313, 83, 328, 309, 325, 264, 27, 110, 345, 114, 189, 184, 0, 350, + 345, 247, 283, 186, 359, 122, 200, 102, 37, 75, 166, 241, 241, 186, 310, 49, 325, 24, 193, 238, 340, 92, + 125, 83, 348, 349, 284, 335, 374, 304, 354, 14, 193, 284, 316, 283, 352, 134, 314, 317, 249, 249, 346, + 173, 123, 355, 201, 226, 353, 251, 382, 167, 31, 345, 384, 110, 386, 187, 350, 156, 83, 174, 325, 331, + 350, 238, 130, 345, 301, 355, 332, 220, 188, 385, 36, 303, 302, 321, 147, 272, 367, 284, 178, 180, 325, + 359, 329, 326, 244, 363, 284, 2, 357, 349, 297, 301, 284, 2, 226, 340, 327, 25, 192, 91, 342, 120, 335, + 62, 375, 350, 129, 91, 299, 128, 121, 349, 363, 290, 45, 334, 354, 339, 116, 14, 16, 375 + }, + { + 126, 147, 282, 279, 189, 5, 175, 340, 353, 31, 79, 352, 103, 187, 247, 354, 92, 344, 33, 330, 92, 175, + 173, + 130, 104, 295, 375, 87, 244, 128, 48, 45, 381, 223, 308, 347, 330, 189, 305, 305, 304, 166, 321, 303, 88, + 231, 386, 141, 231, 370, 382, 340, 155, 243, 345, 290, 334, 52, 309, 126, 387, 350, 114, 0, 336, 286, + 119, 387, 154, 340, 375, 235, 286, 127, 238, 346, 121, 129, 329, 224, 92, 325, 334, 243, 344, 330, 300, + 73, 193, 266, 297, 373, 387, 348, 375, 323, 304, 349, 335, 347, 367, 270, 111, 14, 31, 286, 240, 170, + 325, 273, 273, 36, 132, 117, 203, 160, 53, 114, 107, 357, 172, 114, 84, 109, 110, 332, 125, 278, 330, + 354, 175, 214, 354, 170, 283, 58, 119, 363, 335, 354, 284, 342, 171, 323, 386, 352, 150, 24, 166, 63, + 347, 341, 373, 182, 57, 348, 299, 232, 134, 302, 246, 385, 216, 328, 246, 230, 273, 276, 325, 40, 302, + 295, 313, 273, 378, 166, 208, 330, 286, 189, 214, 350, 350, 188, 130, 241, 241, 391, 328, 306, 349 + }, + { + 349, 72, 47, 123, 247, 158, 343, 143, 325, 18, 97, 243, 350, 18, 155, 81, 25, 185, 360, 325, 238, 360, + 175, + 164, 353, 346, 175, 294, 375, 350, 70, 324, 121, 335, 226, 282, 16, 31, 196, 172, 125, 273, 36, 97, 18, + 123, 332, 175, 246, 261, 164, 131, 334, 350, 299, 325, 322, 342, 378, 290, 157, 72, 79, 0, 116, 157, 286, + 171, 350, 208, 92, 166, 392, 350, 170, 348, 125, 31, 56, 255, 125, 158, 79, 290, 355, 385, 83, 281, 162, + 158, 48, 250, 352, 243, 78, 136, 345, 350, 332, 360, 176, 345, 164, 189, 278, 304, 58, 128, 31, 350, 109, + 378, 158, 158, 202, 323, 176, 343, 332, 345, 88, 345, 354, 101, 334, 334, 121, 114, 381, 367, 335, 37, + 359, 241, 376, 82, 215, 326, 240, 348, 232, 139, 226, 345, 227, 198, 168, 101, 336, 101, 101, 15, 55, + 331, 374, 378, 143, 371, 84, 6, 335, 335, 171, 385, 228, 303, 346, 314, 278, 325, 120, 377, 220, 340, + 113, 251, 119, 339, 339, 332, 349, 344, 377, 220, 284, 325, 314, 342, 359, 139, 331 + }, + { + 341, 374, 238, 121, 101, 34, 121, 35, 0, 169, 84, 132, 335, 240, 313, 385, 313, 106, 159, 345, 340, 37, + 261, + 116, 330, 286, 123, 343, 148, 356, 334, 330, 382, 250, 62, 335, 241, 0, 404, 345, 134, 170, 154, 122, + 319, 330, 52, 329, 114, 134, 84, 328, 48, 83, 237, 248, 267, 348, 248, 336, 348, 127, 354, 0, 89, 232, + 350, 324, 283, 98, 280, 0, 0, 94, 325, 35, 110, 153, 376, 331, 357, 83, 166, 337, 128, 14, 350, 378, 325, + 317, 278, 330, 341, 218, 31, 345, 132, 132, 186, 325, 367, 130, 248, 262, 119, 79, 249, 299, 346, 169, + 129, 362, 98, 357, 201, 284, 167, 96, 305, 33, 357, 20, 347, 335, 330, 329, 357, 110, 334, 348, 357, 200, + 278, 248, 220, 189, 243, 350, 329, 95, 345, 244, 14, 16, 387, 175, 125, 174, 231, 299, 348, 314, 136, + 387, 116, 348, 375, 325, 172, 254, 223, 257, 132, 154, 51, 366, 125, 330, 330, 348, 334, 37, 120, 57, + 347, 343, 345, 343, 334, 137, 61, 319, 282, 127, 82, 330, 354, 170, 314, 280, 82 + }, + { + 343, 158, 186, 305, 348, 132, 187, 131, 0, 350, 348, 342, 158, 303, 24, 330, 252, 387, 243, 121, 378, + 171, + 354, 348, 335, 371, 121, 55, 0, 19, 264, 334, 343, 130, 39, 306, 220, 110, 158, 16, 261, 169, 196, 267, + 404, 169, 5, 343, 152, 356, 168, 164, 175, 136, 168, 345, 330, 335, 173, 347, 24, 255, 356, 0, 158, 48, + 314, 100, 134, 34, 189, 305, 158, 378, 158, 171, 354, 371, 374, 228, 36, 325, 107, 136, 347, 389, 189, + 43, 143, 361, 65, 244, 352, 244, 226, 33, 125, 43, 354, 367, 190, 226, 20, 43, 353, 70, 36, 215, 161, + 320, 258, 183, 80, 89, 345, 361, 11, 294, 353, 91, 198, 368, 251, 251, 386, 183, 145, 243, 164, 239, 89, + 375, 12, 251, 45, 124, 83, 143, 134, 40, 330, 11, 179, 129, 180, 270, 325, 184, 73, 314, 127, 330, 164, + 70, 169, 225, 234, 20, 330, 39, 325, 256, 39, 6, 92, 30, 385, 110, 141, 229, 115, 344, 349, 119, 382, + 152, 376, 198, 232, 134, 348, 337, 348, 171, 232, 208, 220, 353, 342, 57, 20 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 148, 332, 341, 196, 371, 129, 343, 278, 302, 314, 160, 385, 330, 331, 11, 375, 345, 276, 107, 131, 225, + 81, + 334, 232, 241, 16, 349, 157, 125, 244, 154, 345, 387, 375, 374, 344, 169, 0, 387, 0, 83, 328, 355, 278, + 317, 344, 335, 124, 233, 353, 220, 300, 238, 194, 296, 180, 355, 56, 354, 284, 109, 244, 348, 0, 373, 25, + 109, 182, 126, 198, 31, 5, 90, 52, 82, 14, 14, 120, 240, 170, 354, 382, 220, 330, 334, 285, 0, 128, 91, + 341, 70, 121, 150, 332, 332, 214, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 + }, + { + 123, 263, 188, 169, 353, 131, 285, 175, 302, 332, 189, 255, 203, 179, 332, 241, 136, 220, 386, 175, 297, + 249, 86, 161, 6, 114, 62, 42, 88, 354, 241, 354, 32, 114, 329, 84, 129, 344, 187, 9, 356, 136, 357, 136, + 349, 57, 236, 244, 348, 88, 237, 84, 341, 49, 96, 124, 280, 47, 254, 283, 282, 348, 389, 0, 172, 14, 373, + 130, 128, 125, 164, 101, 332, 377, 345, 339, 346, 340, 297, 246, 349, 343, 10, 333, 331, 102, 38, 340, + 229, 160, 58, 350, 326, 75, 313, 309, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { + 329, 36, 137, 186, 11, 313, 332, 40, 107, 341, 345, 341, 339, 84, 330, 171, 164, 130, 301, 83, 323, 63, + 236, + 369, 273, 193, 354, 157, 193, 324, 354, 310, 40, 229, 36, 75, 32, 13, 175, 251, 64, 229, 244, 385, 246, + 78, 130, 70, 129, 122, 354, 186, 45, 341, 309, 337, 56, 262, 193, 125, 325, 264, 119, 0, 335, 42, 125, + 381, 346, 166, 251, 71, 344, 120, 172, 284, 261, 301, 220, 326, 329, 373, 130, 350, 180, 306, 172, 164, + 159, 310, 244, 54, 136, 371, 18, 316, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { + 154, 381, 48, 348, 241, 131, 362, 249, 5, 166, 187, 349, 117, 325, 329, 61, 339, 366, 343, 250, 58, 170, + 168, 248, 297, 102, 131, 79, 130, 172, 92, 121, 131, 2, 362, 58, 128, 103, 304, 150, 119, 273, 299, 310, + 40, 354, 130, 175, 233, 286, 391, 158, 330, 386, 341, 264, 328, 87, 162, 70, 164, 375, 262, 0, 164, 360, + 341, 309, 102, 299, 156, 173, 175, 164, 158, 350, 330, 333, 325, 100, 59, 360, 347, 20, 228, 375, 164, 0, + 333, 0, 8, 230, 80, 57, 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { + 116, 348, 0, 135, 32, 37, 0, 58, 188, 383, 237, 15, 377, 0, 47, 350, 241, 332, 174, 62, 223, 381, 170, + 329, + 57, 327, 350, 345, 310, 107, 32, 247, 282, 31, 31, 265, 297, 282, 175, 83, 367, 84, 237, 66, 384, 188, + 14, 172, 300, 172, 198, 357, 84, 94, 129, 84, 310, 198, 0, 126, 321, 84, 201, 0, 198, 198, 92, 310, 87, + 14, 55, 375, 177, 226, 348, 117, 354, 354, 198, 137, 348, 172, 65, 117, 58, 383, 126, 36, 32, 319, 162, + 29, 172, 65, 170, 126, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 232, 65, 65, 245, 57, 286, 375, 200, 14, 89, 377, 331, 340, 35, 342, 241, 344, 52, 14, 387, 342, 375, 78, + 375, 81, 134, 278, 212, 308, 314, 129, 354, 121, 304, 37, 186, 131, 334, 316, 183, 334, 298, 240, 74, + 285, 348, 231, 370, 100, 180, 170, 92, 310, 347, 37, 232, 193, 72, 143, 344, 50, 282, 376, 0, 375, 354, + 83, 346, 35, 316, 104, 326, 119, 148, 349, 136, 330, 100, 348, 43, 162, 0, 63, 370, 282, 50, 348, 387, + 296, 273, 64, 174, 404, 246, 84, 293, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + }, + { + 172, 160, 332, 81, 304, 349, 110, 332, 100, 325, 216, 354, 325, 352, 162, 164, 286, 57, 170, 170, 17, 92, + 37, 346, 129, 374, 185, 164, 123, 157, 92, 341, 350, 349, 352, 304, 63, 179, 176, 176, 20, 0, 6, 78, 78, + 245, 92, 362, 184, 224, 47, 171, 196, 92, 231, 90, 75, 107, 14, 39, 243, 2, 334, 0, 109, 120, 109, 363, + 52, 109, 334, 347, 109, 128, 2, 337, 120, 179, 234, 110, 128, 88, 228, 249, 252, 367, 97, 137, 137, 377, + 367, 0, 371, 70, 241, 350, 11, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 224, 6, 6, 6, 6, 7, 7, 7, 7, 7, + 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, + 10 + }, + { + 371, 110, 110, 20, 323, 354, 79, 84, 249, 59, 175, 369, 164, 130, 340, 140, 341, 3, 404, 340, 377, 58, 3, + 97, 164, 88, 324, 241, 355, 332, 336, 330, 83, 193, 194, 284, 357, 226, 80, 186, 332, 284, 350, 374, 220, + 282, 123, 55, 373, 152, 340, 282, 186, 196, 378, 373, 284, 65, 208, 386, 33, 80, 226, 0, 173, 314, 375, + 62, 204, 194, 343, 373, 346, 196, 376, 196, 186, 334, 107, 119, 36, 380, 135, 75, 182, 332, 330, 154, + 278, 310, 178, 323, 163, 284, 248, 169, 374, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 232, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, + 19 + }, + { + 164, 157, 391, 135, 232, 122, 175, 363, 377, 354, 122, 180, 331, 337, 121, 103, 359, 45, 125, 186, 115, + 341, + 310, 340, 78, 328, 102, 189, 327, 147, 58, 310, 248, 196, 82, 363, 370, 348, 69, 147, 196, 292, 48, 404, + 37, 187, 102, 119, 292, 330, 240, 282, 168, 34, 332, 347, 342, 329, 325, 125, 347, 2, 121, 0, 125, 371, + 186, 39, 272, 214, 343, 220, 356, 188, 190, 236, 190, 162, 152, 341, 190, 123, 175, 188, 173, 251, 182, + 330, 305, 140, 378, 246, 354, 293, 385, 136, 282, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 21, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, + 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 32, 32 + }, + { + 115, 350, 377, 128, 366, 356, 6, 66, 241, 386, 329, 372, 242, 244, 57, 136, 164, 84, 326, 75, 141, 375, + 129, + 236, 75, 372, 299, 321, 130, 196, 389, 354, 179, 320, 75, 198, 378, 217, 237, 171, 240, 161, 75, 238, + 352, 152, 145, 251, 378, 152, 75, 242, 175, 325, 2, 349, 345, 237, 160, 114, 247, 325, 127, 0, 0, 247, + 252, 31, 159, 114, 354, 334, 331, 183, 179, 352, 34, 34, 345, 276, 154, 97, 0, 117, 175, 35, 219, 295, + 385, 145, 345, 383, 146, 36, 241, 387, 247, 32, 32, 32, 370, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 284, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40 + }, + { + 170, 137, 226, 193, 369, 110, 330, 163, 349, 329, 241, 178, 203, 264, 345, 66, 320, 350, 143, 325, 293, + 373, + 71, 331, 58, 309, 203, 310, 241, 73, 83, 252, 252, 180, 95, 335, 75, 172, 309, 305, 143, 232, 325, 310, + 344, 241, 166, 325, 357, 383, 156, 0, 220, 381, 31, 241, 127, 231, 172, 175, 140, 43, 35, 0, 349, 162, + 234, 241, 378, 52, 387, 46, 178, 92, 278, 160, 366, 125, 330, 66, 63, 226, 358, 127, 62, 164, 125, 330, + 370, 127, 332, 354, 383, 127, 143, 363, 162, 40, 40, 40, 40, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 43, + 43, 382, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 33, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 50, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, + 52, 53, 53, 53, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56 + }, + { + 129, 40, 347, 252, 58, 348, 232, 232, 354, 236, 241, 348, 143, 125, 354, 264, 228, 47, 20, 346, 180, 336, + 152, 162, 162, 375, 164, 179, 79, 252, 228, 350, 164, 173, 173, 196, 290, 100, 158, 22, 345, 259, 356, + 302, 180, 335, 220, 375, 80, 72, 376, 0, 348, 284, 353, 375, 311, 84, 189, 298, 186, 30, 404, 0, 354, + 329, 378, 102, 331, 375, 90, 90, 291, 130, 282, 87, 154, 62, 306, 97, 100, 391, 171, 175, 59, 375, 14, + 40, 121, 353, 349, 386, 123, 373, 355, 329, 332, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 61, + 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 368, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 311, 65, 65, 65, 65, 65, + 65, 65 + }, + { + 346, 375, 348, 186, 294, 62, 11, 373, 352, 92, 90, 305, 294, 180, 302, 84, 341, 241, 354, 241, 294, 304, + 57, + 102, 299, 164, 216, 332, 59, 164, 356, 375, 360, 162, 262, 335, 316, 258, 386, 199, 375, 332, 209, 249, + 82, 184, 357, 375, 131, 375, 354, 148, 8, 232, 208, 164, 353, 232, 20, 171, 209, 393, 375, 0, 134, 123, + 314, 375, 155, 110, 349, 386, 375, 258, 70, 378, 216, 240, 90, 363, 320, 154, 88, 131, 309, 316, 344, + 178, 175, 97, 393, 384, 9, 241, 375, 154, 163, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 319, 73, 73, 73, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, + 77, 77 + }, + { + 231, 170, 391, 354, 297, 0, 348, 330, 15, 92, 84, 232, 221, 129, 376, 387, 340, 36, 59, 332, 386, 354, + 340, + 375, 142, 97, 261, 299, 261, 92, 141, 278, 189, 375, 92, 175, 297, 92, 350, 326, 249, 0, 348, 120, 245, + 92, 334, 240, 128, 385, 376, 391, 404, 299, 216, 273, 121, 255, 221, 354, 236, 386, 318, 0, 326, 36, 123, + 152, 404, 228, 273, 385, 164, 360, 344, 354, 282, 131, 220, 160, 220, 10, 19, 321, 378, 228, 64, 329, + 321, 43, 220, 334, 36, 147, 57, 385, 340, 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 85, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84 + }, + { + 297, 100, 385, 328, 321, 347, 248, 220, 220, 311, 33, 310, 64, 174, 168, 330, 329, 153, 43, 371, 151, + 151, + 36, 52, 168, 362, 51, 127, 248, 70, 362, 173, 245, 40, 284, 84, 243, 40, 114, 241, 109, 283, 82, 191, + 250, 378, 171, 207, 19, 7, 294, 114, 373, 64, 348, 286, 131, 250, 237, 164, 381, 28, 61, 0, 53, 322, 131, + 140, 131, 161, 231, 37, 183, 378, 323, 128, 298, 246, 344, 383, 355, 108, 130, 232, 348, 68, 278, 331, + 378, 199, 97, 245, 193, 10, 278, 229, 171, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 240, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 86, 87, 87, 87, 87, 87, 87, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 105, 91, 91, 91, 91, 91, 0, 93, 93, 94, 94, 94, + 94 + }, + { + 217, 84, 79, 88, 79, 284, 184, 334, 248, 193, 179, 102, 250, 37, 349, 220, 14, 155, 128, 357, 263, 92, + 108, + 376, 157, 58, 27, 84, 316, 164, 159, 134, 100, 332, 107, 352, 331, 375, 36, 298, 378, 393, 313, 124, 90, + 88, 152, 357, 222, 334, 240, 157, 388, 225, 232, 91, 303, 99, 354, 125, 371, 116, 374, 0, 367, 377, 175, + 170, 253, 84, 367, 97, 243, 137, 383, 27, 389, 20, 341, 15, 300, 332, 237, 337, 116, 348, 356, 45, 404, + 329, 68, 334, 92, 129, 337, 186, 79, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, + 101, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, + 104, 104, 104, 104, 104, 104, 105 + }, + { + 71, 83, 378, 114, 245, 249, 191, 243, 97, 284, 357, 110, 305, 356, 39, 267, 374, 212, 243, 334, 173, 231, + 70, 385, 40, 284, 378, 244, 173, 125, 21, 121, 14, 378, 48, 345, 360, 390, 232, 234, 354, 381, 368, 277, + 104, 348, 116, 31, 147, 237, 362, 92, 404, 92, 209, 301, 51, 64, 301, 161, 167, 334, 20, 0, 189, 294, + 305, 168, 57, 84, 125, 193, 153, 56, 128, 381, 160, 334, 175, 284, 360, 241, 225, 241, 232, 88, 134, 175, + 175, 345, 58, 269, 379, 96, 243, 166, 284, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 12, 108, 108, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 196, 110, 110, 110, 110, 110, + 110, 110, 111, 111, 112, 112, 112, 112, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116 + }, + { + 158, 153, 354, 356, 109, 373, 303, 309, 212, 306, 348, 241, 308, 381, 377, 226, 296, 377, 243, 385, 308, + 175, 175, 125, 320, 350, 354, 157, 173, 245, 166, 158, 243, 356, 376, 250, 166, 15, 71, 390, 164, 284, + 179, 350, 356, 385, 354, 79, 282, 372, 282, 405, 110, 208, 53, 370, 243, 368, 232, 8, 329, 276, 141, 0, + 262, 14, 299, 349, 372, 189, 303, 116, 88, 134, 196, 377, 164, 297, 114, 314, 273, 170, 382, 7, 160, 77, + 250, 110, 332, 84, 164, 356, 175, 134, 241, 7, 370, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, + 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 92, 92, 92, 92, 92, 92, 92, 92 + }, + { + 117, 117, 270, 305, 15, 190, 387, 125, 164, 335, 84, 221, 11, 97, 339, 124, 382, 305, 270, 82, 126, 196, + 270, 270, 221, 330, 167, 150, 20, 119, 286, 92, 332, 317, 212, 164, 393, 62, 212, 311, 158, 294, 133, 95, + 374, 133, 353, 92, 29, 377, 343, 356, 126, 354, 129, 323, 258, 326, 249, 199, 386, 315, 215, 0, 85, 129, + 286, 384, 232, 373, 276, 114, 375, 92, 82, 357, 258, 57, 130, 80, 389, 133, 367, 6, 84, 375, 241, 377, + 114, 367, 330, 84, 348, 282, 20, 378, 250, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 140, 125, 125, 125, 125, 125, 125, 125 + }, + { + 171, 378, 280, 88, 346, 84, 320, 373, 56, 40, 284, 376, 341, 389, 132, 8, 250, 196, 286, 391, 152, 131, + 258, + 108, 348, 129, 378, 39, 149, 196, 136, 152, 116, 47, 119, 94, 306, 335, 148, 334, 251, 87, 179, 343, 231, + 332, 84, 331, 314, 261, 311, 349, 162, 335, 135, 106, 65, 314, 294, 126, 333, 121, 136, 0, 125, 341, 375, + 326, 373, 404, 36, 249, 286, 9, 314, 334, 323, 332, 94, 339, 309, 339, 335, 114, 330, 84, 313, 299, 72, + 154, 84, 131, 116, 375, 345, 132, 83, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 220, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 134, 129, 129, 129, 129, 129, 129, 129, 129, 129, 92, 129, 129, 129, 129, 129, 129, 129, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130 + }, + { + 92, 340, 258, 387, 282, 74, 169, 404, 167, 306, 251, 280, 241, 384, 241, 323, 374, 332, 285, 348, 306, + 323, + 89, 324, 13, 383, 23, 104, 389, 178, 172, 348, 369, 14, 46, 171, 190, 241, 245, 310, 387, 122, 388, 330, + 386, 337, 167, 130, 81, 265, 193, 354, 387, 79, 404, 340, 350, 279, 241, 340, 333, 125, 143, 0, 332, 264, + 190, 241, 71, 376, 62, 193, 191, 355, 347, 10, 294, 249, 15, 119, 94, 387, 190, 325, 84, 325, 340, 96, + 191, 335, 166, 387, 233, 357, 349, 309, 98, 130, 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, 132, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, + 135, 135, 135, 136, 136, 136, 136, 136, 136, 128, 136, 136, 136, 137, 137, 137, 137, 137, 137 + }, + { + 375, 357, 36, 31, 56, 331, 355, 387, 340, 350, 325, 94, 0, 350, 130, 348, 383, 208, 9, 116, 226, 377, + 125, + 301, 251, 290, 357, 331, 299, 330, 261, 306, 84, 357, 373, 90, 263, 116, 366, 308, 341, 297, 373, 387, + 306, 120, 23, 14, 83, 50, 164, 301, 349, 330, 387, 162, 381, 243, 182, 375, 404, 198, 234, 0, 166, 341, + 387, 92, 334, 299, 404, 13, 348, 362, 198, 244, 122, 332, 92, 276, 339, 254, 341, 299, 127, 366, 393, + 375, 278, 270, 170, 354, 79, 256, 46, 392, 125, 137, 137, 137, 137, 137, 138, 138, 138, 91, 139, 139, + 139, 139, 139, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 145, 145, 146, + 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 150, 150, + 150, 150, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, 153 + }, + { + 256, 31, 265, 339, 121, 117, 390, 330, 244, 357, 55, 350, 121, 330, 273, 125, 126, 119, 362, 48, 335, + 385, + 14, 304, 348, 216, 299, 348, 277, 340, 92, 18, 243, 158, 240, 343, 241, 231, 220, 196, 162, 335, 390, + 152, 353, 340, 162, 332, 31, 128, 175, 31, 350, 278, 333, 332, 391, 390, 179, 330, 158, 162, 166, 0, 114, + 258, 378, 373, 65, 330, 350, 306, 357, 332, 299, 335, 85, 85, 241, 20, 237, 333, 371, 89, 350, 100, 392, + 304, 25, 241, 327, 350, 162, 304, 175, 294, 89, 153, 153, 153, 154, 154, 154, 154, 155, 155, 155, 155, + 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, + 161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164 + }, + { + 0, 282, 97, 378, 134, 188, 193, 98, 309, 135, 84, 282, 99, 385, 354, 3, 78, 294, 180, 172, 232, 78, 33, + 325, + 14, 92, 38, 172, 135, 189, 371, 179, 232, 92, 92, 176, 189, 55, 346, 353, 353, 82, 6, 346, 97, 353, 361, + 186, 348, 378, 348, 261, 253, 244, 119, 348, 348, 346, 244, 332, 354, 159, 355, 0, 79, 278, 82, 278, 166, + 400, 244, 114, 38, 82, 114, 37, 52, 84, 331, 230, 156, 238, 175, 375, 354, 330, 335, 330, 143, 121, 121, + 334, 276, 114, 126, 377, 276, 164, 164, 164, 164, 164, 164, 164, 164, 167, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, + 168, 168, 168, 168, 168, 168, 161, 168, 168, 168, 168, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, 173, 173 + }, + { + 37, 341, 37, 387, 323, 121, 115, 110, 234, 166, 250, 5, 170, 230, 127, 5, 121, 341, 59, 0, 96, 96, 96, + 65, + 264, 200, 381, 313, 232, 348, 250, 124, 134, 40, 178, 129, 367, 174, 92, 160, 123, 353, 118, 348, 246, + 357, 57, 114, 375, 0, 373, 34, 374, 353, 385, 311, 405, 344, 372, 0, 109, 283, 169, 0, 131, 14, 62, 104, + 326, 340, 237, 48, 66, 0, 313, 134, 48, 153, 166, 166, 327, 153, 166, 166, 48, 283, 295, 313, 153, 372, + 375, 57, 214, 245, 208, 313, 313, 173, 173, 173, 173, 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 176, 176, 176, 176, 176, 176, 177, 177, 178, 178, 178, 178, + 178, 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182 + }, + { + 173, 371, 294, 297, 371, 348, 249, 144, 26, 241, 62, 119, 37, 258, 263, 355, 29, 246, 82, 229, 227, 353, + 254, 326, 241, 232, 330, 330, 144, 65, 81, 6, 20, 340, 310, 386, 148, 375, 208, 237, 386, 377, 332, 198, + 250, 143, 37, 346, 227, 375, 338, 77, 113, 386, 153, 374, 311, 52, 186, 335, 335, 181, 335, 0, 213, 326, + 326, 339, 145, 353, 113, 228, 278, 313, 186, 45, 282, 250, 307, 391, 92, 353, 336, 320, 36, 318, 69, 203, + 232, 97, 164, 370, 299, 129, 167, 291, 16, 182, 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, 184, + 184, 184, 184, 184, 184, 184, 184, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 191, 191, + 191, 191, 191, 192, 192, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 195, 196 + }, + { + 178, 233, 162, 251, 115, 57, 205, 200, 258, 282, 383, 134, 68, 232, 123, 328, 186, 264, 381, 37, 179, + 223, + 62, 3, 203, 289, 357, 376, 262, 316, 325, 136, 124, 71, 14, 32, 345, 321, 285, 305, 297, 383, 348, 168, + 92, 232, 335, 404, 223, 32, 175, 123, 227, 41, 126, 175, 381, 175, 128, 350, 404, 342, 399, 0, 314, 208, + 168, 52, 153, 334, 319, 226, 375, 128, 329, 52, 0, 333, 0, 82, 379, 57, 150, 216, 136, 40, 135, 156, 166, + 319, 241, 52, 18, 343, 263, 356, 361, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 201, 201, 201, 202, 203, 203, 203, 203, 203, + 204, 205, 205, 206, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, + 209, 209, 210, 210, 211, 211, 212, 212, 212, 212, 212, 212, 212, 213, 214, 214, 214, 214 + }, + { + 332, 16, 337, 154, 169, 345, 175, 123, 358, 179, 250, 361, 176, 208, 360, 332, 328, 132, 170, 132, 128, + 92, + 109, 339, 190, 212, 91, 125, 375, 375, 339, 303, 332, 29, 330, 354, 337, 134, 133, 336, 281, 133, 310, + 284, 304, 240, 240, 100, 241, 310, 331, 59, 79, 224, 303, 79, 79, 175, 171, 331, 248, 227, 149, 0, 84, + 362, 83, 164, 354, 159, 0, 20, 243, 0, 120, 387, 15, 198, 65, 69, 9, 29, 348, 25, 174, 56, 342, 220, 61, + 58, 244, 175, 348, 92, 125, 328, 241, 214, 214, 215, 215, 215, 215, 216, 216, 216, 216, 217, 217, 217, + 405, 218, 219, 219, 221, 221, 221, 221, 222, 223, 223, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, + 224, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, + 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232 + }, + { + 175, 175, 31, 290, 125, 237, 345, 345, 26, 161, 313, 311, 128, 231, 348, 29, 190, 88, 354, 331, 386, 121, + 299, 375, 319, 325, 241, 326, 258, 84, 378, 117, 136, 92, 5, 388, 184, 259, 108, 349, 353, 348, 245, 232, + 309, 62, 164, 352, 11, 348, 378, 208, 224, 19, 339, 220, 332, 114, 393, 68, 65, 212, 116, 0, 186, 283, + 98, 189, 325, 84, 386, 375, 92, 48, 0, 342, 179, 164, 261, 375, 35, 354, 339, 386, 169, 329, 92, 102, 47, + 96, 101, 211, 354, 386, 229, 198, 376, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, 233, + 234, 234, 234, 234, 235, 235, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, + 238, 238, 238, 238, 238, 238, 238, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 10, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242 + }, + { + 243, 378, 119, 84, 87, 302, 42, 131, 77, 3, 127, 37, 237, 243, 160, 286, 382, 55, 27, 354, 70, 325, 164, + 69, + 84, 258, 349, 240, 357, 299, 36, 216, 329, 17, 330, 94, 378, 196, 382, 393, 320, 249, 301, 35, 231, 330, + 337, 350, 34, 137, 345, 54, 107, 54, 124, 324, 353, 262, 334, 332, 326, 129, 201, 0, 198, 316, 0, 183, + 47, 62, 250, 68, 388, 156, 175, 325, 258, 154, 240, 386, 90, 104, 178, 39, 44, 369, 187, 164, 10, 246, + 135, 246, 62, 276, 130, 371, 375, 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 245, 245, 245, 245, 245, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, + 248, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, 250 + }, + { + 94, 149, 246, 345, 324, 13, 377, 125, 170, 304, 310, 59, 116, 110, 45, 32, 119, 84, 157, 276, 345, 348, + 311, + 241, 323, 27, 373, 363, 133, 14, 348, 188, 0, 228, 66, 249, 143, 333, 323, 354, 354, 84, 166, 341, 201, + 27, 328, 45, 334, 233, 198, 3, 350, 155, 155, 126, 190, 393, 393, 389, 262, 330, 347, 0, 345, 250, 125, + 84, 404, 125, 230, 114, 114, 115, 345, 316, 386, 247, 189, 120, 282, 87, 377, 243, 325, 20, 325, 92, 71, + 220, 301, 251, 373, 343, 284, 158, 387, 250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 252, 252, 252, 252, 252, 252, 252, 252, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, + 255, 256, 256, 256, 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 259, 260, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 262, 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, + 264, 264, 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 269, 269, 269, 269, 270, 270 + }, + { + 220, 355, 186, 357, 286, 381, 100, 254, 342, 0, 325, 353, 296, 349, 284, 45, 284, 357, 373, 263, 164, + 252, + 355, 164, 134, 330, 40, 340, 316, 172, 328, 63, 243, 389, 238, 54, 355, 40, 354, 226, 240, 199, 330, 82, + 357, 267, 25, 189, 300, 194, 296, 172, 330, 97, 159, 91, 54, 305, 179, 341, 385, 102, 387, 0, 103, 393, + 311, 27, 229, 0, 282, 159, 171, 311, 339, 184, 314, 378, 3, 166, 387, 237, 340, 130, 317, 129, 325, 318, + 26, 354, 348, 386, 14, 175, 21, 370, 162, 270, 270, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, + 274, 275, 276, 276, 276, 29, 276, 276, 276, 276, 276, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, 283, 283 + }, + { + 244, 182, 345, 171, 330, 234, 103, 107, 62, 175, 281, 279, 62, 343, 20, 62, 367, 282, 341, 116, 5, 189, + 404, + 376, 238, 126, 189, 48, 211, 121, 137, 349, 278, 349, 104, 35, 116, 276, 147, 243, 180, 361, 363, 164, + 325, 92, 343, 283, 188, 223, 31, 63, 265, 162, 354, 127, 378, 149, 125, 181, 357, 10, 353, 0, 175, 220, + 75, 309, 81, 136, 81, 263, 82, 153, 292, 344, 340, 84, 305, 329, 68, 294, 334, 330, 268, 357, 280, 125, + 300, 171, 354, 331, 294, 216, 341, 357, 354, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 282, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286 + }, + { + 334, 109, 2, 121, 121, 92, 386, 333, 323, 192, 163, 126, 24, 282, 273, 166, 143, 355, 55, 375, 305, 369, + 300, 345, 79, 66, 335, 97, 378, 125, 142, 268, 343, 220, 7, 72, 236, 355, 214, 377, 328, 234, 241, 362, + 35, 373, 77, 208, 350, 48, 334, 241, 78, 125, 354, 153, 15, 385, 189, 158, 130, 248, 245, 0, 0, 332, 297, + 404, 348, 340, 335, 348, 156, 162, 128, 62, 375, 11, 220, 196, 119, 228, 296, 304, 318, 248, 127, 325, + 172, 121, 223, 142, 357, 10, 164, 378, 378, 286, 287, 287, 288, 288, 288, 288, 289, 289, 290, 290, 290, + 291, 291, 291, 291, 292, 292, 292, 292, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 284, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 339, 297, 297, 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, 302, 302, 302, 302, 302 + }, + { + 2, 170, 341, 246, 157, 363, 329, 265, 265, 246, 175, 297, 318, 183, 357, 237, 354, 343, 92, 132, 341, + 249, + 297, 132, 83, 20, 333, 348, 332, 354, 134, 332, 332, 349, 244, 350, 173, 315, 117, 356, 171, 220, 186, + 158, 153, 158, 92, 305, 182, 162, 162, 121, 295, 375, 325, 153, 118, 164, 92, 162, 118, 179, 92, 0, 153, + 175, 125, 0, 308, 162, 251, 334, 348, 176, 187, 17, 375, 334, 134, 116, 340, 54, 84, 340, 175, 116, 109, + 128, 134, 10, 345, 369, 369, 153, 18, 330, 286, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, + 303, 303, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 307, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, 311, 311, 312, 312, 312, 313, 313, 313 + }, + { + 64, 249, 66, 0, 136, 372, 347, 354, 107, 386, 333, 80, 75, 6, 37, 243, 326, 356, 356, 137, 241, 314, 375, + 355, 252, 353, 246, 241, 376, 198, 324, 82, 82, 108, 84, 254, 228, 208, 307, 237, 62, 134, 164, 84, 367, + 340, 232, 232, 332, 64, 17, 19, 369, 312, 97, 350, 179, 47, 121, 183, 84, 169, 348, 0, 332, 164, 348, + 237, 245, 281, 348, 324, 196, 245, 102, 248, 160, 337, 129, 249, 124, 356, 34, 11, 107, 341, 373, 240, + 332, 167, 14, 355, 353, 129, 57, 63, 121, 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 317, 317, 318, 318, 318, 318, 318, 318, 319, 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 325 + }, + { + 295, 134, 241, 354, 137, 330, 178, 164, 65, 306, 154, 107, 107, 9, 81, 325, 319, 357, 301, 243, 325, 208, + 325, 167, 68, 75, 8, 385, 324, 24, 189, 0, 156, 129, 313, 184, 340, 190, 129, 284, 341, 345, 262, 325, + 84, 355, 186, 325, 264, 335, 331, 350, 284, 376, 305, 378, 387, 309, 355, 188, 156, 70, 249, 0, 330, 328, + 357, 354, 350, 126, 8, 294, 47, 330, 327, 166, 226, 261, 92, 329, 339, 107, 348, 232, 117, 348, 70, 207, + 331, 116, 121, 180, 348, 326, 350, 308, 376, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330 + }, + { + 25, 0, 241, 311, 279, 62, 175, 325, 375, 35, 250, 232, 354, 125, 174, 246, 349, 126, 326, 334, 182, 372, + 372, 180, 354, 172, 48, 164, 182, 334, 32, 196, 391, 294, 249, 307, 375, 231, 127, 250, 17, 168, 102, + 330, 241, 381, 81, 168, 136, 136, 349, 309, 128, 256, 334, 329, 376, 343, 294, 40, 36, 58, 164, 0, 320, + 348, 131, 55, 241, 92, 333, 281, 246, 350, 30, 164, 364, 341, 378, 363, 335, 183, 335, 241, 261, 125, + 109, 385, 129, 18, 110, 79, 162, 129, 156, 193, 164, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 332, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 276, 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, 334, 342, 334, 334, 334, 334, 334, 334, 334 + }, + { + 249, 212, 175, 70, 334, 378, 173, 164, 173, 227, 347, 232, 279, 347, 350, 286, 330, 24, 250, 251, 24, + 182, + 129, 378, 385, 120, 405, 229, 376, 181, 77, 143, 192, 330, 140, 355, 250, 171, 341, 286, 314, 333, 354, + 116, 325, 59, 38, 325, 59, 384, 88, 354, 348, 84, 230, 129, 376, 57, 348, 376, 129, 375, 335, 0, 254, + 375, 137, 30, 348, 254, 320, 171, 228, 220, 393, 14, 280, 134, 149, 342, 373, 348, 224, 84, 62, 84, 103, + 375, 375, 254, 348, 320, 199, 96, 341, 372, 250, 334, 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, + 335, 335, 124, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 108, 337, 337, 337, 337, 337, + 338, 338, 338, 338, 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 40, 340, 340, 340, 340, 340, 341, 341, 341, 341, 341, 341 + }, + { + 354, 208, 20, 0, 221, 241, 148, 258, 126, 392, 196, 129, 77, 263, 378, 102, 349, 138, 337, 0, 154, 211, + 286, + 335, 154, 164, 135, 282, 129, 373, 172, 92, 348, 21, 382, 291, 253, 164, 339, 304, 154, 306, 355, 171, + 37, 32, 59, 167, 229, 81, 355, 345, 70, 375, 348, 241, 104, 144, 241, 309, 309, 84, 376, 0, 335, 65, 154, + 317, 353, 353, 355, 84, 354, 317, 345, 348, 228, 57, 357, 302, 96, 118, 261, 355, 200, 132, 301, 226, + 271, 211, 350, 129, 118, 148, 166, 164, 284, 341, 341, 341, 341, 342, 342, 342, 342, 342, 342, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 220, 220, 220, 220 + }, + { + 404, 348, 65, 335, 332, 325, 16, 26, 92, 278, 239, 14, 240, 125, 381, 125, 54, 92, 57, 358, 79, 81, 333, + 343, 17, 256, 182, 158, 5, 363, 121, 26, 299, 216, 57, 166, 58, 286, 369, 14, 158, 240, 375, 0, 286, 321, + 284, 11, 335, 20, 35, 157, 173, 330, 332, 158, 372, 56, 134, 360, 284, 125, 348, 0, 158, 344, 330, 83, + 84, 0, 6, 110, 92, 92, 332, 100, 15, 345, 340, 136, 233, 184, 189, 189, 235, 284, 294, 92, 373, 136, 189, + 311, 166, 220, 375, 137, 330, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349 + }, + { + 278, 325, 330, 310, 354, 158, 75, 70, 246, 227, 92, 194, 350, 96, 250, 369, 130, 100, 61, 125, 179, 250, + 125, 325, 136, 250, 179, 158, 282, 92, 100, 345, 310, 249, 130, 50, 375, 33, 92, 57, 375, 335, 251, 91, + 284, 102, 335, 122, 249, 337, 208, 241, 175, 367, 14, 337, 279, 95, 375, 342, 40, 330, 348, 0, 175, 136, + 330, 345, 330, 345, 66, 84, 249, 249, 128, 92, 79, 343, 64, 114, 30, 306, 340, 129, 348, 258, 343, 349, + 278, 241, 320, 92, 343, 349, 75, 82, 344, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 340, 354, 354, 354, 354, 354, 354, 354, 354, 354 + }, + { + 220, 295, 282, 349, 349, 136, 334, 204, 35, 353, 375, 338, 80, 336, 191, 281, 345, 268, 384, 340, 348, + 348, + 297, 37, 110, 282, 110, 340, 373, 378, 374, 96, 386, 369, 97, 84, 125, 65, 171, 309, 346, 217, 226, 377, + 88, 348, 134, 220, 367, 348, 348, 250, 371, 237, 14, 338, 250, 20, 55, 389, 306, 378, 47, 0, 372, 352, + 340, 343, 348, 120, 110, 284, 245, 334, 284, 112, 70, 115, 102, 251, 121, 129, 117, 87, 346, 325, 282, + 377, 314, 189, 194, 179, 121, 345, 338, 98, 77, 354, 354, 354, 354, 354, 354, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, 356, 356, 220, 356, + 356, 356, 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 359, 359, + 359, 359, 359, 359, 359, 360, 360, 360, 360, 361, 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 362, 363, 363, 363, 363, 364, 365, 366, 366, 28, 366, 367, 367, 367, 367, 367 + }, + { + 19, 311, 348, 162, 378, 152, 250, 329, 92, 375, 258, 50, 159, 75, 152, 348, 313, 57, 11, 31, 353, 145, + 127, + 246, 287, 3, 354, 334, 36, 129, 332, 329, 329, 90, 295, 21, 121, 131, 356, 373, 356, 70, 117, 32, 291, + 129, 143, 250, 48, 334, 299, 324, 332, 81, 157, 302, 348, 208, 349, 377, 232, 385, 31, 0, 35, 384, 92, + 241, 304, 383, 325, 134, 247, 68, 374, 393, 388, 243, 385, 167, 125, 92, 331, 178, 282, 16, 117, 233, + 354, 335, 340, 233, 284, 341, 284, 122, 117, 367, 367, 367, 278, 367, 358, 367, 367, 367, 368, 368, 368, + 368, 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374 + }, + { + 75, 376, 309, 335, 84, 240, 313, 158, 241, 354, 386, 381, 330, 121, 349, 315, 332, 201, 35, 83, 378, 346, + 345, 120, 341, 91, 221, 340, 197, 347, 325, 337, 308, 377, 278, 238, 318, 120, 123, 91, 350, 189, 334, + 189, 331, 244, 373, 342, 309, 297, 9, 37, 369, 348, 126, 355, 335, 334, 306, 220, 220, 375, 354, 0, 234, + 48, 164, 196, 196, 279, 372, 195, 125, 363, 389, 166, 404, 362, 340, 103, 330, 385, 5, 5, 130, 372, 348, + 334, 126, 182, 371, 332, 321, 57, 340, 366, 273, 373, 374, 374, 374, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, + 376, 376, 376, 376, 376, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, + 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378 + }, + { + 330, 367, 72, 374, 334, 158, 75, 350, 136, 92, 392, 127, 20, 121, 381, 329, 365, 367, 375, 127, 304, 365, + 240, 283, 341, 362, 304, 58, 299, 332, 92, 128, 369, 400, 348, 2, 369, 121, 335, 348, 348, 278, 255, 400, + 243, 72, 302, 116, 377, 109, 348, 350, 140, 354, 125, 121, 70, 372, 341, 360, 162, 282, 325, 0, 31, 164, + 348, 15, 372, 345, 75, 39, 325, 39, 220, 31, 255, 349, 158, 35, 335, 212, 119, 360, 348, 58, 369, 345, + 70, 320, 258, 338, 338, 14, 377, 282, 340, 378, 378, 378, 378, 379, 371, 380, 381, 381, 381, 381, 390, + 381, 382, 382, 382, 382, 382, 382, 382, 383, 383, 383, 383, 383, 383, 384, 384, 385, 385, 385, 385, 385, + 385, 385, 385, 372, 385, 385, 386, 386, 386, 386, 386, 386, 386, 386, 359, 386, 386, 386, 386, 386, 386, + 387, 387, 387, 387, 387, 387, 387, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 389, 389, 390, 390, + 391, 391, 391, 391, 392, 392, 393, 393, 393, 367, 393, 393, 393, 393, 0, 0, 0, 0, 0 + }, + { + 243, 114, 331, 92, 114, 107, 173, 330, 330, 168, 107, 70, 173, 241, 164, 61, 15, 286, 332, 83, 375, 375, + 345, 345, 40, 121, 319, 348, 348, 345, 6, 115, 75, 40, 345, 154, 87, 134, 240, 330, 119, 378, 124, 82, + 330, 123, 326, 119, 62, 387, 82, 348, 3, 232, 199, 232, 96, 199, 353, 196, 294, 119, 184, 0, 196, 3, 354, + 208, 14, 354, 124, 317, 184, 330, 348, 354, 40, 304, 119, 136, 11, 373, 357, 84, 23, 95, 307, 348, 108, + 323, 236, 123, 79, 304, 323, 368, 375, 40, 92, 329, 87, 209, 268, 232, 93, 36, 91, 203, 75, 286, 354, + 235, 14, 320, 220, 220, 375, 62, 336, 349, 153, 354, 90, 306, 63, 92, 200, 212, 92, 241, 189, 11, 273, + 97, 363, 281, 54, 345, 136, 294, 347, 345, 250, 238, 102, 153, 15, 363, 98, 353, 27, 348, 326, 131, 148, + 102, 139, 156, 92, 345, 323, 150, 234, 136, 127, 123, 348, 314, 324, 57, 66, 370, 161, 268, 348, 198, + 258, 354, 232, 344, 321, 329, 32, 25, 141, 378, 214, 138, 353, 348, 96 + }, + { + 77, 378, 284, 14, 386, 77, 102, 233, 78, 181, 307, 283, 152, 84, 312, 348, 37, 184, 110, 82, 175, 170, + 121, + 87, 233, 386, 124, 340, 364, 128, 87, 361, 125, 350, 343, 373, 281, 18, 18, 249, 281, 42, 361, 377, 157, + 360, 47, 35, 279, 310, 229, 94, 332, 181, 125, 299, 84, 304, 48, 48, 375, 92, 370, 0, 70, 130, 338, 45, + 357, 10, 359, 157, 83, 25, 92, 283, 348, 390, 84, 96, 269, 363, 168, 348, 7, 35, 323, 375, 383, 16, 357, + 366, 57, 360, 345, 240, 278, 314, 320, 208, 86, 92, 77, 353, 149, 140, 378, 348, 311, 30, 128, 216, 197, + 39, 345, 164, 249, 164, 354, 237, 352, 294, 83, 243, 267, 225, 385, 286, 179, 328, 14, 309, 100, 146, + 134, 82, 345, 335, 92, 325, 387, 404, 305, 18, 221, 37, 330, 131, 125, 128, 133, 314, 341, 57, 314, 319, + 281, 243, 389, 356, 51, 62, 330, 343, 114, 104, 31, 153, 10, 240, 114, 84, 84, 297, 294, 326, 345, 20, + 103, 184, 335, 176, 239, 19, 350, 179, 162, 167, 116, 169, 332 + }, + { + 323, 350, 130, 382, 332, 361, 14, 70, 286, 345, 0, 341, 173, 382, 361, 357, 14, 377, 83, 357, 330, 338, + 330, + 36, 36, 331, 305, 388, 164, 278, 248, 349, 332, 386, 136, 246, 62, 47, 373, 316, 62, 330, 369, 136, 129, + 250, 40, 123, 342, 311, 74, 88, 301, 50, 330, 371, 297, 349, 250, 125, 252, 385, 325, 0, 175, 58, 249, + 386, 309, 250, 37, 120, 127, 127, 128, 362, 356, 77, 389, 329, 143, 136, 35, 227, 356, 224, 241, 320, + 348, 209, 171, 186, 148, 386, 242, 378, 250, 295, 237, 376, 194, 345, 129, 114, 278, 223, 134, 204, 97, + 110, 62, 371, 250, 348, 152, 162, 98, 129, 121, 282, 96, 251, 374, 122, 340, 127, 90, 152, 395, 388, 385, + 325, 354, 282, 31, 299, 35, 125, 342, 347, 75, 354, 341, 3, 62, 386, 233, 196, 58, 297, 284, 189, 372, + 125, 365, 127, 136, 345, 369, 35, 57, 130, 393, 329, 243, 131, 8, 63, 393, 11, 337, 87, 375, 212, 388, + 44, 232, 325, 120, 325, 330, 107, 248, 152, 183, 329, 80, 19, 232, 11, 347 + }, + { + 369, 226, 378, 208, 348, 92, 74, 74, 378, 392, 380, 333, 65, 233, 375, 129, 23, 55, 250, 286, 316, 50, + 145, + 212, 334, 21, 392, 198, 286, 128, 127, 0, 125, 241, 328, 325, 129, 252, 212, 134, 212, 178, 175, 163, + 328, 251, 389, 245, 348, 62, 387, 231, 374, 354, 73, 45, 352, 375, 367, 35, 320, 305, 84, 0, 389, 257, + 367, 318, 244, 369, 63, 309, 92, 172, 360, 14, 38, 175, 168, 305, 375, 297, 330, 153, 92, 385, 244, 375, + 226, 387, 166, 362, 254, 318, 134, 332, 376, 62, 303, 124, 375, 378, 150, 245, 343, 357, 164, 350, 90, + 330, 84, 232, 304, 345, 135, 345, 349, 370, 238, 278, 388, 171, 83, 40, 119, 181, 250, 280, 110, 91, 188, + 340, 335, 296, 335, 136, 125, 278, 58, 32, 294, 15, 12, 249, 12, 75, 78, 286, 92, 352, 110, 340, 329, 91, + 373, 152, 232, 348, 164, 241, 8, 88, 173, 63, 175, 34, 62, 320, 208, 198, 5, 344, 65, 68, 139, 278, 279, + 203, 87, 349, 36, 284, 104, 343, 169, 355, 375, 3, 348, 232, 209 + }, + { + 20, 50, 136, 170, 302, 127, 127, 168, 73, 100, 55, 14, 14, 134, 127, 73, 39, 92, 329, 356, 209, 375, 356, + 375, 40, 71, 325, 173, 170, 332, 325, 158, 255, 335, 212, 302, 250, 252, 51, 390, 330, 153, 241, 170, 57, + 82, 309, 74, 95, 159, 258, 179, 2, 92, 134, 146, 0, 345, 186, 141, 250, 404, 160, 0, 320, 375, 345, 309, + 59, 350, 354, 34, 367, 102, 137, 356, 336, 56, 341, 79, 258, 278, 152, 286, 319, 241, 303, 75, 199, 241, + 184, 264, 152, 243, 381, 114, 116, 231, 316, 272, 56, 148, 65, 349, 163, 115, 91, 355, 182, 352, 167, 37, + 336, 232, 348, 26, 128, 200, 70, 243, 92, 323, 338, 241, 333, 84, 355, 357, 81, 92, 164, 75, 134, 232, + 375, 265, 332, 32, 48, 246, 329, 243, 241, 278, 15, 378, 147, 348, 196, 88, 235, 173, 6, 198, 134, 254, + 247, 37, 84, 171, 211, 349, 184, 350, 248, 193, 311, 243, 348, 256, 14, 47, 134, 314, 121, 378, 313, 127, + 84, 258, 337, 251, 121, 343, 194, 241, 128, 38, 126, 179, 350 + }, + { + 250, 152, 62, 171, 56, 5, 373, 79, 152, 346, 231, 11, 97, 97, 228, 378, 261, 75, 6, 377, 375, 220, 143, + 372, + 375, 284, 237, 77, 95, 134, 334, 101, 344, 139, 251, 377, 386, 375, 281, 167, 354, 280, 353, 355, 349, + 372, 323, 84, 247, 377, 348, 171, 372, 369, 167, 386, 121, 324, 46, 121, 140, 348, 231, 0, 243, 103, 209, + 237, 100, 11, 178, 225, 167, 264, 262, 92, 346, 332, 42, 49, 292, 344, 353, 114, 286, 84, 386, 84, 357, + 12, 369, 354, 357, 306, 97, 373, 331, 343, 93, 130, 181, 300, 114, 377, 140, 14, 284, 328, 353, 75, 186, + 353, 164, 316, 332, 84, 299, 353, 62, 282, 100, 167, 350, 45, 131, 241, 330, 295, 130, 200, 241, 6, 286, + 32, 312, 354, 119, 14, 84, 316, 57, 52, 345, 389, 58, 125, 323, 350, 97, 107, 242, 83, 282, 333, 325, 31, + 139, 241, 153, 330, 75, 10, 224, 313, 174, 225, 341, 124, 373, 284, 263, 196, 76, 11, 327, 109, 92, 164, + 9, 125, 293, 159, 350, 354, 297, 188, 69, 330, 166, 50, 170 + }, + { + 355, 175, 334, 33, 381, 325, 341, 342, 372, 128, 369, 21, 168, 82, 79, 170, 91, 273, 140, 119, 348, 92, + 383, + 77, 354, 125, 114, 162, 229, 164, 164, 175, 170, 56, 377, 167, 357, 47, 391, 15, 156, 47, 348, 15, 15, 0, + 8, 47, 15, 233, 216, 216, 373, 46, 348, 259, 79, 284, 263, 31, 88, 354, 348, 0, 241, 367, 324, 316, 384, + 309, 333, 309, 75, 376, 34, 208, 375, 373, 378, 306, 348, 250, 121, 68, 353, 200, 348, 129, 169, 343, 73, + 132, 353, 249, 62, 131, 348, 250, 147, 340, 168, 121, 343, 136, 265, 391, 92, 188, 79, 241, 114, 335, + 114, 325, 348, 327, 296, 14, 109, 303, 263, 343, 332, 90, 164, 123, 250, 113, 79, 212, 189, 216, 348, + 152, 166, 55, 348, 330, 361, 228, 353, 168, 86, 88, 309, 187, 317, 35, 84, 236, 215, 129, 128, 358, 348, + 404, 137, 310, 347, 2, 199, 92, 104, 7, 134, 239, 169, 243, 100, 65, 367, 344, 246, 354, 3, 341, 19, 153, + 355, 286, 76, 41, 125, 293, 369, 221, 271, 179, 350, 375, 107 + }, + { + 0, 329, 166, 301, 121, 97, 157, 12, 54, 378, 231, 353, 377, 130, 354, 46, 309, 302, 355, 221, 305, 299, + 345, + 37, 309, 284, 373, 353, 357, 75, 123, 302, 325, 201, 220, 39, 343, 302, 284, 375, 355, 297, 180, 100, + 370, 372, 22, 37, 297, 73, 284, 174, 375, 54, 256, 243, 341, 354, 348, 75, 168, 284, 181, 0, 341, 369, + 308, 77, 15, 15, 164, 355, 353, 179, 164, 313, 241, 278, 354, 263, 323, 84, 141, 18, 336, 282, 355, 53, + 123, 9, 134, 15, 321, 152, 102, 284, 148, 372, 335, 175, 392, 51, 88, 119, 232, 337, 385, 123, 390, 202, + 348, 318, 56, 284, 21, 37, 92, 147, 59, 161, 367, 1, 220, 84, 198, 348, 303, 164, 75, 14, 11, 104, 246, + 349, 358, 138, 86, 98, 171, 68, 214, 74, 203, 353, 294, 152, 92, 282, 121, 55, 169, 348, 334, 14, 47, + 101, 121, 339, 348, 225, 150, 74, 92, 192, 189, 367, 216, 93, 197, 181, 37, 160, 94, 76, 367, 301, 362, + 330, 393, 92, 83, 363, 221, 191, 170, 381, 377, 306, 116, 52, 276 + }, + { + 106, 331, 92, 115, 337, 330, 102, 221, 159, 345, 36, 69, 404, 84, 354, 159, 124, 94, 20, 330, 250, 334, + 241, + 247, 377, 388, 237, 162, 208, 353, 239, 333, 134, 352, 127, 348, 186, 267, 11, 286, 354, 357, 115, 153, + 333, 333, 296, 305, 194, 330, 263, 40, 386, 388, 347, 329, 333, 357, 127, 352, 184, 33, 175, 0, 168, 381, + 116, 127, 323, 127, 340, 61, 14, 343, 14, 366, 325, 374, 184, 170, 74, 188, 347, 272, 150, 83, 188, 155, + 166, 360, 31, 353, 241, 345, 31, 360, 251, 351, 57, 20, 66, 159, 164, 287, 46, 367, 55, 201, 164, 153, + 129, 352, 153, 133, 296, 349, 37, 129, 174, 148, 328, 121, 246, 5, 297, 70, 143, 212, 110, 35, 301, 91, + 1, 76, 109, 398, 2, 2, 301, 111, 314, 37, 229, 162, 26, 234, 241, 350, 13, 296, 62, 189, 231, 136, 168, + 240, 41, 128, 222, 246, 175, 28, 61, 109, 130, 342, 348, 269, 232, 263, 29, 123, 202, 325, 125, 201, 178, + 116, 171, 353, 354, 247, 354, 119, 325, 375, 229, 305, 39, 363, 104 + }, + { + 330, 360, 375, 354, 349, 391, 184, 373, 69, 373, 355, 84, 310, 242, 238, 39, 391, 46, 353, 349, 240, 391, + 106, 383, 175, 158, 345, 306, 369, 304, 383, 332, 70, 304, 249, 45, 357, 78, 143, 296, 39, 54, 357, 352, + 4, 367, 126, 234, 35, 354, 164, 362, 348, 126, 304, 238, 216, 348, 345, 348, 210, 263, 285, 0, 345, 171, + 189, 189, 210, 336, 128, 284, 189, 345, 15, 284, 348, 330, 130, 249, 348, 168, 59, 371, 171, 238, 249, 6, + 373, 375, 6, 176, 84, 200, 64, 332, 127, 325, 328, 182, 370, 84, 79, 92, 241, 243, 241, 250, 344, 332, 5, + 399, 158, 6, 116, 143, 68, 124, 339, 56, 96, 184, 193, 348, 68, 127, 343, 374, 160, 157, 295, 345, 97, + 334, 104, 146, 136, 261, 220, 322, 359, 325, 354, 54, 174, 386, 186, 283, 295, 92, 370, 170, 61, 18, 348, + 63, 37, 227, 50, 343, 346, 115, 157, 330, 32, 120, 220, 375, 128, 250, 270, 79, 249, 3, 101, 180, 215, + 357, 331, 228, 81, 261, 150, 285, 300, 14, 135, 164, 354, 332, 349 + }, + { + 147, 42, 386, 79, 354, 329, 107, 89, 241, 183, 260, 62, 294, 330, 348, 30, 348, 316, 330, 405, 243, 249, + 125, 371, 347, 349, 224, 80, 373, 337, 69, 356, 376, 84, 232, 265, 336, 75, 136, 73, 96, 349, 243, 8, + 330, 258, 33, 215, 82, 357, 348, 246, 232, 104, 114, 349, 137, 64, 348, 376, 330, 87, 260, 0, 123, 303, + 141, 355, 175, 0, 326, 74, 386, 208, 316, 284, 193, 232, 143, 171, 19, 303, 116, 20, 232, 354, 294, 393, + 21, 377, 310, 124, 373, 284, 389, 375, 134, 298, 348, 104, 179, 208, 281, 50, 189, 116, 29, 325, 325, + 186, 203, 370, 131, 136, 168, 335, 343, 119, 42, 123, 300, 349, 68, 284, 305, 319, 330, 258, 354, 37, + 348, 333, 20, 354, 122, 29, 296, 196, 339, 130, 270, 381, 202, 232, 329, 102, 228, 339, 333, 320, 3, 354, + 14, 94, 5, 130, 31, 335, 170, 350, 286, 59, 53, 31, 329, 375, 223, 38, 329, 139, 32, 43, 295, 15, 215, + 116, 40, 231, 55, 346, 393, 208, 84, 33, 348, 348, 314, 345, 27, 139, 343 + }, + { + 312, 348, 348, 341, 371, 228, 110, 273, 283, 389, 389, 20, 378, 37, 358, 238, 314, 243, 84, 368, 184, + 345, + 84, 164, 356, 232, 346, 8, 20, 129, 250, 340, 374, 198, 330, 330, 62, 124, 198, 304, 282, 348, 294, 152, + 138, 11, 385, 337, 114, 128, 37, 145, 179, 237, 284, 197, 143, 349, 137, 377, 38, 333, 314, 0, 196, 162, + 92, 354, 340, 258, 392, 375, 293, 164, 332, 337, 251, 232, 348, 378, 333, 194, 149, 220, 332, 332, 339, + 137, 29, 160, 92, 232, 263, 189, 348, 349, 101, 143, 357, 11, 295, 243, 153, 154, 348, 309, 251, 245, + 337, 81, 32, 324, 39, 116, 52, 357, 153, 75, 163, 383, 127, 14, 297, 243, 352, 131, 127, 38, 40, 170, + 188, 310, 121, 289, 345, 325, 114, 193, 141, 302, 404, 154, 133, 159, 354, 32, 330, 326, 122, 75, 250, + 252, 110, 310, 252, 140, 382, 226, 244, 270, 241, 294, 29, 83, 355, 198, 190, 73, 189, 97, 15, 326, 108, + 325, 161, 88, 286, 173, 175, 346, 294, 74, 171, 184, 179, 341, 226, 320, 114, 193, 131 + }, + { + 3, 67, 353, 273, 142, 243, 294, 0, 64, 107, 356, 375, 145, 249, 334, 372, 353, 361, 309, 54, 98, 114, + 376, + 316, 404, 188, 159, 323, 386, 357, 11, 297, 354, 31, 313, 20, 107, 124, 114, 135, 83, 31, 323, 375, 320, + 341, 329, 354, 311, 152, 385, 177, 337, 246, 282, 107, 177, 347, 134, 366, 134, 332, 312, 0, 183, 240, + 164, 226, 356, 36, 90, 164, 307, 19, 378, 373, 316, 172, 391, 134, 32, 355, 125, 89, 64, 306, 32, 178, + 149, 171, 232, 175, 164, 244, 239, 135, 193, 119, 325, 169, 124, 373, 349, 121, 378, 92, 340, 121, 306, + 343, 126, 172, 116, 343, 263, 297, 329, 157, 325, 385, 135, 399, 9, 330, 186, 119, 378, 241, 330, 295, + 70, 385, 232, 190, 88, 81, 48, 282, 100, 175, 289, 335, 345, 190, 249, 296, 120, 340, 230, 125, 341, 328, + 186, 345, 246, 143, 281, 183, 350, 240, 164, 263, 302, 122, 14, 339, 84, 305, 227, 194, 120, 350, 334, + 158, 26, 116, 179, 119, 166, 378, 348, 175, 341, 88, 286, 294, 278, 280, 314, 31, 157 + }, + { + 391, 231, 3, 232, 332, 344, 383, 164, 143, 146, 302, 154, 70, 383, 44, 386, 374, 12, 212, 387, 74, 345, + 66, + 348, 243, 383, 92, 354, 130, 100, 184, 32, 319, 330, 166, 306, 97, 330, 286, 373, 404, 188, 175, 117, 16, + 86, 157, 144, 80, 329, 200, 323, 116, 60, 332, 0, 123, 167, 78, 187, 139, 346, 284, 0, 166, 104, 332, 70, + 316, 325, 323, 84, 262, 92, 75, 137, 373, 309, 367, 116, 346, 71, 331, 354, 145, 283, 120, 325, 84, 371, + 29, 245, 284, 114, 153, 310, 127, 299, 164, 57, 31, 166, 263, 240, 14, 109, 385, 107, 335, 350, 356, 82, + 109, 6, 10, 102, 58, 189, 353, 35, 214, 243, 243, 329, 168, 243, 119, 125, 125, 388, 344, 329, 132, 363, + 348, 77, 124, 131, 56, 115, 227, 21, 164, 249, 334, 309, 253, 153, 325, 119, 175, 42, 120, 249, 331, 5, + 96, 302, 172, 332, 170, 134, 335, 191, 299, 156, 343, 121, 317, 375, 142, 375, 92, 75, 31, 330, 134, 31, + 131, 217, 189, 84, 14, 354, 40, 293, 81, 345, 329, 354, 14 + }, + { + 127, 115, 315, 387, 119, 347, 193, 125, 71, 125, 295, 153, 116, 341, 372, 129, 373, 15, 376, 386, 339, + 347, + 186, 225, 2, 87, 243, 186, 301, 302, 227, 331, 166, 301, 139, 389, 347, 400, 327, 261, 305, 301, 244, + 164, 293, 383, 20, 226, 268, 232, 271, 89, 386, 329, 350, 120, 311, 172, 139, 300, 284, 296, 323, 0, 109, + 373, 373, 179, 348, 355, 305, 212, 330, 124, 91, 180, 135, 295, 389, 301, 0, 83, 326, 199, 175, 301, 223, + 389, 317, 339, 100, 341, 166, 296, 182, 196, 179, 130, 386, 102, 215, 354, 294, 55, 377, 278, 245, 344, + 256, 286, 176, 128, 236, 29, 164, 237, 321, 332, 301, 62, 325, 75, 131, 16, 129, 32, 14, 31, 217, 5, 355, + 313, 329, 96, 196, 232, 2, 236, 37, 164, 345, 244, 234, 32, 162, 370, 330, 278, 14, 211, 196, 290, 86, + 86, 84, 217, 386, 129, 136, 10, 361, 294, 84, 388, 348, 217, 303, 334, 117, 233, 164, 241, 143, 383, 24, + 375, 329, 5, 172, 278, 16, 48, 31, 92, 333, 128, 354, 377, 91, 323, 152 + }, + { + 14, 325, 172, 62, 270, 387, 348, 175, 145, 244, 52, 241, 32, 305, 182, 352, 31, 83, 131, 16, 286, 404, + 339, + 48, 173, 360, 360, 26, 164, 331, 330, 141, 290, 13, 370, 243, 36, 175, 117, 92, 240, 299, 244, 238, 170, + 273, 339, 332, 36, 153, 294, 172, 203, 120, 235, 299, 79, 127, 251, 346, 305, 333, 354, 0, 128, 392, 168, + 245, 160, 73, 336, 360, 241, 125, 376, 61, 344, 350, 73, 136, 400, 360, 240, 312, 0, 370, 66, 278, 139, + 125, 81, 299, 175, 135, 121, 354, 166, 357, 232, 286, 88, 335, 84, 377, 84, 40, 56, 148, 108, 126, 94, + 334, 309, 171, 241, 81, 279, 103, 74, 285, 172, 251, 323, 386, 143, 333, 309, 191, 121, 294, 15, 96, 383, + 193, 130, 373, 263, 90, 164, 348, 125, 18, 234, 182, 162, 195, 272, 335, 168, 366, 126, 243, 127, 119, + 390, 220, 92, 42, 359, 352, 66, 92, 325, 18, 193, 136, 143, 173, 63, 56, 238, 193, 124, 77, 95, 340, 344, + 113, 220, 179, 330, 121, 166, 241, 350, 241, 116, 154, 345, 48, 323 + }, + { + 385, 272, 243, 385, 162, 14, 312, 341, 347, 74, 104, 305, 250, 82, 55, 348, 2, 387, 343, 64, 378, 113, + 383, + 92, 212, 110, 123, 247, 18, 350, 153, 214, 340, 125, 125, 243, 29, 375, 192, 164, 162, 92, 390, 152, 279, + 231, 156, 70, 356, 46, 404, 16, 10, 175, 332, 151, 173, 75, 175, 125, 158, 20, 243, 0, 220, 31, 333, 125, + 330, 100, 25, 212, 162, 51, 250, 226, 179, 390, 176, 393, 348, 136, 305, 378, 158, 330, 346, 337, 228, + 337, 183, 344, 375, 332, 354, 348, 32, 35, 134, 184, 354, 355, 331, 203, 2, 305, 130, 120, 350, 52, 48, + 341, 370, 240, 24, 250, 175, 14, 360, 326, 325, 357, 306, 329, 280, 241, 29, 180, 164, 232, 191, 220, + 265, 125, 40, 36, 48, 334, 80, 224, 378, 200, 375, 372, 173, 133, 237, 175, 331, 334, 353, 375, 320, 375, + 171, 96, 62, 164, 320, 36, 142, 160, 344, 256, 375, 373, 101, 241, 313, 155, 133, 117, 113, 102, 129, + 176, 135, 3, 340, 79, 97, 84, 136, 386, 301, 171, 40, 82, 70, 243, 371 + }, + { + 375, 350, 120, 386, 20, 305, 261, 13, 172, 341, 156, 31, 370, 370, 133, 5, 65, 136, 168, 208, 187, 180, + 289, + 278, 278, 187, 345, 14, 107, 14, 278, 243, 141, 13, 114, 266, 270, 332, 332, 125, 193, 331, 291, 69, 367, + 203, 369, 231, 331, 171, 100, 14, 266, 110, 323, 91, 91, 78, 40, 333, 102, 193, 0, 0, 154, 167, 404, 313, + 276, 134, 356, 356, 31, 250, 170, 305, 277, 154, 345, 326, 345, 354, 122, 354, 326, 333, 10, 333, 250, + 220, 326, 226, 349, 325, 349, 155, 252, 179, 44, 167, 104, 125, 62, 134, 49, 282, 201, 367, 166, 158, 92, + 236, 134, 249, 71, 44, 35, 404, 29, 134, 341, 186, 350, 373, 81, 302, 300, 335, 90, 52, 90, 293, 18, 261, + 378, 335, 130, 244, 241, 40, 305, 378, 116, 88, 356, 247, 320, 136, 127, 246, 175, 392, 330, 134, 355, + 162, 345, 170, 20, 29, 353, 5, 196, 50, 279, 310, 357, 166, 234, 57, 92, 18, 348, 258, 75, 97, 143, 175, + 375, 348, 373, 116, 164, 220, 284, 375, 251, 175, 372, 209, 324 + }, + { + 158, 281, 251, 0, 310, 212, 302, 139, 110, 252, 43, 323, 69, 241, 153, 305, 323, 234, 332, 330, 121, 31, + 232, 305, 119, 302, 326, 0, 107, 139, 281, 121, 302, 119, 161, 336, 348, 375, 349, 346, 69, 75, 283, 229, + 145, 357, 375, 232, 36, 75, 250, 62, 171, 375, 19, 74, 286, 299, 77, 102, 354, 137, 127, 0, 337, 45, 329, + 331, 278, 283, 240, 373, 332, 59, 229, 348, 72, 178, 349, 134, 373, 175, 283, 332, 349, 378, 346, 259, + 331, 38, 345, 349, 354, 62, 325, 212, 383, 46, 386, 49, 175, 170, 325, 125, 244, 124, 92, 92, 140, 61, + 87, 125, 361, 223, 171, 21, 13, 366, 232, 238, 86, 156, 88, 109, 304, 90, 363, 336, 357, 102, 110, 360, + 184, 354, 32, 208, 241, 283, 347, 33, 345, 121, 21, 107, 102, 341, 153, 2, 194, 319, 343, 220, 330, 202, + 12, 284, 152, 348, 375, 386, 87, 130, 373, 157, 249, 92, 57, 84, 31, 92, 330, 62, 354, 96, 130, 250, 125, + 126, 236, 184, 97, 329, 97, 92, 134, 125, 233, 142, 245, 301, 7 + }, + { + 3, 129, 241, 345, 121, 357, 329, 305, 92, 59, 5, 330, 349, 268, 256, 170, 318, 61, 232, 299, 354, 345, + 82, + 208, 77, 92, 59, 349, 375, 173, 330, 164, 164, 252, 375, 348, 246, 243, 119, 96, 391, 116, 358, 354, 39, + 299, 107, 328, 290, 119, 134, 358, 352, 92, 330, 172, 164, 221, 342, 358, 92, 92, 199, 0, 85, 330, 198, + 82, 227, 357, 37, 346, 3, 329, 63, 58, 116, 64, 198, 35, 367, 171, 241, 377, 114, 369, 349, 378, 319, + 171, 68, 350, 329, 171, 171, 114, 349, 91, 20, 184, 198, 52, 125, 270, 286, 32, 175, 240, 250, 235, 59, + 332, 42, 68, 344, 349, 143, 357, 79, 37, 128, 70, 65, 353, 355, 104, 356, 328, 261, 120, 131, 264, 303, + 95, 384, 199, 220, 243, 173, 68, 138, 175, 124, 282, 377, 393, 98, 373, 250, 375, 131, 101, 68, 345, 150, + 268, 106, 233, 373, 189, 319, 179, 54, 228, 323, 211, 131, 345, 81, 354, 387, 66, 125, 49, 201, 190, 321, + 75, 286, 36, 350, 91, 404, 18, 308, 375, 41, 97, 188, 272, 278 + }, + { + 181, 181, 357, 172, 188, 18, 329, 325, 155, 330, 348, 57, 308, 354, 173, 56, 92, 227, 346, 325, 0, 330, + 92, + 329, 188, 162, 164, 301, 2, 81, 56, 173, 171, 348, 83, 164, 10, 110, 110, 110, 19, 247, 310, 373, 36, + 247, 167, 131, 310, 81, 190, 10, 310, 121, 347, 66, 29, 243, 258, 62, 70, 329, 258, 0, 246, 215, 349, + 268, 199, 321, 389, 8, 348, 220, 306, 14, 129, 114, 228, 19, 349, 302, 306, 129, 3, 112, 95, 242, 313, + 350, 299, 311, 341, 146, 13, 302, 370, 166, 170, 354, 330, 348, 276, 336, 330, 16, 268, 134, 296, 16, 16, + 286, 96, 97, 116, 81, 92, 158, 354, 229, 184, 369, 131, 208, 172, 348, 346, 325, 73, 244, 284, 116, 378, + 341, 303, 347, 346, 329, 107, 187, 33, 345, 116, 354, 325, 71, 10, 341, 15, 318, 172, 182, 279, 357, 348, + 354, 79, 299, 332, 136, 51, 294, 306, 340, 330, 164, 116, 132, 116, 81, 284, 294, 332, 375, 250, 116, 84, + 393, 189, 375, 47, 373, 311, 241, 31, 330, 385, 330, 255, 307, 304 + }, + { + 232, 155, 156, 367, 9, 0, 249, 249, 281, 280, 198, 125, 62, 0, 306, 302, 335, 226, 91, 19, 155, 305, 174, + 121, 127, 342, 92, 125, 126, 31, 302, 116, 332, 243, 70, 321, 125, 158, 325, 258, 84, 321, 251, 91, 325, + 280, 107, 32, 155, 262, 357, 281, 325, 91, 84, 306, 96, 357, 90, 14, 342, 299, 70, 0, 321, 70, 84, 133, + 332, 335, 332, 92, 358, 161, 231, 350, 350, 357, 231, 3, 349, 333, 116, 347, 66, 247, 153, 333, 292, 107, + 340, 348, 340, 97, 295, 153, 241, 72, 124, 121, 405, 213, 346, 386, 252, 243, 193, 307, 241, 72, 184, + 187, 89, 354, 354, 302, 342, 191, 92, 88, 58, 117, 34, 73, 344, 385, 15, 83, 78, 2, 164, 173, 367, 314, + 62, 156, 320, 84, 337, 183, 331, 127, 368, 68, 203, 91, 328, 241, 72, 11, 66, 35, 377, 129, 62, 341, 15, + 372, 103, 271, 247, 250, 73, 61, 126, 22, 188, 20, 140, 375, 84, 84, 340, 190, 147, 73, 191, 57, 283, + 355, 348, 299, 386, 37, 197, 157, 125, 62, 301, 344, 208 + }, + { + 108, 354, 323, 82, 73, 62, 63, 226, 238, 171, 34, 131, 162, 246, 127, 75, 75, 325, 335, 155, 282, 348, + 348, + 143, 72, 354, 237, 162, 311, 124, 315, 121, 153, 124, 179, 313, 36, 350, 357, 116, 107, 131, 318, 318, + 236, 157, 318, 386, 386, 44, 66, 157, 304, 107, 243, 151, 389, 332, 246, 348, 269, 309, 75, 0, 75, 345, + 326, 345, 354, 381, 345, 332, 336, 348, 355, 271, 310, 310, 126, 153, 162, 160, 234, 380, 182, 50, 220, + 109, 127, 97, 343, 345, 121, 278, 263, 188, 18, 299, 232, 265, 296, 153, 184, 143, 194, 234, 36, 140, + 170, 97, 66, 14, 251, 310, 79, 373, 281, 323, 317, 84, 89, 97, 164, 345, 232, 158, 164, 92, 366, 110, + 100, 135, 130, 86, 348, 238, 371, 168, 316, 42, 278, 187, 30, 405, 21, 303, 134, 8, 243, 80, 141, 315, + 123, 224, 354, 374, 97, 143, 238, 21, 20, 356, 198, 304, 63, 293, 284, 341, 302, 14, 208, 232, 74, 142, + 160, 77, 353, 36, 124, 203, 347, 36, 64, 349, 139, 378, 66, 67, 117, 251, 105 + }, + { + 332, 236, 175, 170, 212, 251, 313, 132, 239, 350, 354, 162, 83, 67, 98, 84, 331, 369, 228, 268, 84, 303, + 169, 92, 341, 334, 134, 16, 294, 325, 346, 220, 296, 139, 296, 79, 172, 330, 172, 234, 234, 172, 16, 16, + 16, 168, 16, 273, 83, 339, 346, 369, 294, 220, 172, 81, 79, 81, 284, 24, 92, 66, 294, 0, 320, 369, 384, + 258, 354, 346, 284, 349, 79, 79, 300, 349, 378, 348, 393, 14, 129, 306, 10, 47, 312, 294, 10, 284, 74, + 106, 258, 310, 128, 124, 19, 220, 314, 276, 64, 374, 273, 38, 305, 3, 263, 160, 157, 307, 145, 366, 164, + 90, 75, 54, 177, 172, 139, 125, 159, 246, 134, 1, 244, 221, 12, 60, 143, 154, 97, 123, 229, 135, 304, + 386, 245, 139, 294, 75, 29, 296, 119, 2, 174, 244, 81, 186, 196, 91, 135, 199, 172, 348, 124, 18, 16, + 305, 182, 179, 352, 389, 341, 62, 31, 136, 240, 175, 73, 158, 240, 51, 244, 61, 123, 385, 348, 29, 16, + 376, 282, 54, 375, 14, 386, 196, 286, 404, 92, 84, 159, 143, 258 + }, + { + 47, 333, 346, 135, 77, 161, 330, 20, 205, 75, 21, 137, 69, 297, 354, 330, 220, 154, 104, 284, 125, 383, + 19, + 332, 21, 347, 304, 81, 370, 325, 100, 75, 218, 357, 116, 120, 121, 369, 115, 110, 337, 82, 325, 97, 29, + 295, 305, 20, 90, 330, 153, 172, 296, 332, 347, 326, 196, 305, 182, 14, 354, 339, 130, 0, 270, 318, 381, + 278, 37, 57, 348, 241, 256, 36, 325, 333, 369, 82, 106, 188, 345, 196, 31, 333, 179, 360, 202, 66, 320, + 74, 124, 161, 330, 69, 137, 104, 97, 373, 92, 273, 209, 84, 255, 102, 128, 109, 330, 238, 65, 116, 352, + 133, 355, 10, 373, 97, 68, 175, 250, 37, 294, 77, 375, 98, 339, 176, 20, 164, 116, 354, 332, 309, 329, + 191, 3, 11, 45, 116, 75, 47, 186, 329, 220, 125, 350, 372, 172, 168, 128, 133, 354, 116, 175, 100, 19, + 66, 129, 164, 278, 164, 353, 88, 143, 57, 367, 228, 378, 341, 124, 344, 348, 375, 160, 329, 54, 332, 276, + 378, 81, 97, 325, 354, 354, 57, 156, 348, 115, 54, 174, 124, 272 + }, + { + 347, 20, 82, 20, 208, 14, 238, 316, 107, 81, 125, 3, 2, 332, 357, 82, 236, 336, 180, 354, 237, 243, 62, + 320, + 372, 37, 343, 378, 375, 229, 336, 260, 268, 357, 326, 375, 57, 404, 353, 20, 10, 150, 320, 348, 250, 240, + 250, 132, 238, 371, 355, 231, 377, 134, 378, 217, 134, 232, 389, 124, 171, 373, 368, 0, 84, 346, 284, 14, + 320, 320, 294, 172, 180, 233, 306, 375, 261, 308, 68, 343, 251, 282, 132, 77, 106, 20, 378, 349, 179, + 377, 57, 106, 172, 134, 295, 246, 183, 37, 196, 8, 92, 120, 16, 179, 350, 368, 173, 349, 39, 8, 157, 348, + 63, 232, 63, 250, 348, 295, 330, 248, 384, 15, 220, 311, 69, 143, 354, 343, 134, 354, 348, 29, 199, 258, + 130, 186, 226, 58, 242, 91, 144, 166, 36, 166, 125, 16, 40, 309, 14, 134, 74, 55, 11, 10, 404, 15, 158, + 37, 372, 244, 263, 226, 286, 340, 137, 53, 130, 162, 386, 33, 294, 123, 160, 305, 223, 174, 126, 400, + 196, 65, 66, 57, 171, 214, 104, 153, 5, 304, 107, 241, 108 + }, + { + 167, 107, 316, 341, 318, 137, 75, 36, 337, 294, 175, 383, 377, 281, 233, 154, 306, 157, 387, 143, 241, + 241, + 345, 81, 272, 345, 91, 220, 329, 233, 48, 233, 243, 81, 120, 243, 123, 354, 309, 251, 331, 387, 153, 262, + 294, 98, 320, 318, 296, 243, 36, 375, 172, 231, 308, 330, 26, 70, 345, 355, 388, 334, 278, 0, 241, 375, + 290, 175, 330, 179, 370, 196, 220, 24, 234, 48, 250, 14, 375, 354, 340, 117, 20, 297, 334, 170, 369, 73, + 172, 320, 28, 63, 334, 312, 345, 179, 369, 129, 110, 350, 143, 107, 75, 381, 212, 182, 271, 109, 263, + 236, 116, 243, 249, 92, 30, 121, 91, 188, 84, 232, 265, 332, 109, 129, 95, 69, 349, 37, 107, 97, 143, + 164, 353, 254, 367, 249, 171, 36, 353, 248, 124, 203, 375, 294, 250, 313, 155, 241, 128, 346, 197, 282, + 372, 280, 329, 164, 40, 84, 244, 247, 241, 330, 354, 81, 104, 104, 348, 232, 311, 251, 323, 159, 188, 45, + 261, 201, 84, 153, 143, 84, 296, 354, 353, 174, 249, 15, 197, 246, 5, 182, 183 + }, + { + 131, 348, 347, 372, 236, 377, 345, 361, 404, 308, 333, 92, 290, 134, 330, 119, 164, 234, 260, 349, 234, + 337, + 246, 387, 297, 153, 290, 325, 325, 325, 354, 88, 348, 141, 10, 11, 368, 309, 334, 149, 318, 94, 233, 354, + 299, 238, 334, 227, 136, 54, 196, 168, 174, 334, 361, 309, 18, 151, 175, 90, 127, 142, 127, 0, 160, 272, + 154, 309, 80, 339, 254, 57, 154, 18, 78, 232, 78, 309, 10, 14, 262, 84, 77, 261, 250, 95, 356, 231, 379, + 280, 301, 309, 164, 18, 309, 231, 295, 180, 355, 330, 37, 305, 227, 284, 120, 26, 234, 305, 330, 333, + 376, 370, 288, 184, 231, 121, 226, 278, 123, 188, 31, 166, 192, 164, 70, 250, 85, 350, 247, 331, 284, + 378, 354, 92, 70, 92, 125, 371, 386, 116, 248, 238, 55, 283, 363, 96, 164, 294, 311, 124, 15, 37, 147, + 14, 332, 345, 251, 374, 137, 284, 89, 224, 280, 334, 247, 363, 245, 378, 267, 243, 320, 14, 57, 146, 355, + 334, 373, 153, 120, 115, 96, 81, 164, 14, 37, 297, 192, 69, 175, 71, 102 + }, + { + 374, 387, 292, 125, 74, 116, 156, 241, 166, 373, 231, 180, 270, 182, 182, 275, 340, 169, 243, 243, 202, + 155, + 214, 18, 255, 69, 69, 203, 333, 330, 69, 107, 69, 69, 133, 354, 354, 345, 164, 336, 102, 387, 172, 335, + 279, 186, 241, 241, 86, 340, 354, 318, 241, 167, 88, 234, 14, 241, 340, 39, 345, 369, 354, 0, 59, 258, + 129, 6, 114, 320, 64, 92, 354, 117, 245, 301, 108, 319, 196, 129, 282, 8, 355, 232, 404, 326, 116, 175, + 358, 80, 82, 199, 353, 233, 196, 110, 331, 63, 360, 61, 20, 157, 377, 354, 354, 38, 330, 212, 405, 42, + 278, 348, 14, 376, 8, 80, 91, 175, 378, 363, 330, 280, 325, 188, 285, 26, 38, 188, 246, 211, 124, 249, + 276, 14, 62, 244, 301, 129, 305, 330, 332, 189, 6, 164, 311, 330, 47, 24, 170, 387, 270, 115, 360, 47, + 340, 262, 249, 126, 93, 92, 348, 171, 330, 378, 81, 125, 233, 110, 348, 189, 375, 241, 241, 220, 59, 84, + 250, 133, 245, 169, 386, 360, 201, 372, 126, 37, 66, 88, 377, 348, 97 + }, + { + 335, 107, 232, 171, 320, 20, 249, 237, 84, 14, 92, 325, 250, 64, 20, 353, 103, 232, 209, 374, 303, 228, + 84, + 367, 134, 97, 284, 68, 56, 302, 242, 286, 115, 373, 77, 3, 325, 371, 378, 349, 169, 179, 314, 348, 348, + 19, 325, 128, 148, 335, 332, 91, 121, 160, 84, 142, 339, 74, 137, 309, 190, 280, 367, 0, 301, 246, 354, + 205, 372, 103, 94, 297, 329, 249, 282, 240, 119, 311, 164, 276, 276, 142, 188, 36, 164, 388, 330, 352, + 282, 386, 241, 374, 333, 205, 45, 92, 64, 393, 320, 332, 194, 375, 345, 277, 36, 316, 162, 154, 229, 116, + 309, 340, 106, 305, 160, 21, 128, 330, 134, 164, 343, 284, 54, 73, 248, 342, 50, 17, 10, 302, 125, 84, + 244, 375, 84, 278, 164, 320, 124, 20, 303, 153, 127, 14, 332, 332, 92, 128, 167, 92, 46, 118, 37, 375, + 63, 20, 375, 125, 65, 41, 376, 134, 74, 54, 233, 262, 212, 226, 241, 40, 136, 240, 79, 50, 378, 170, 31, + 169, 390, 335, 375, 64, 196, 339, 196, 232, 116, 136, 279, 97, 391 + }, + { + 245, 97, 377, 68, 157, 81, 208, 348, 154, 175, 133, 32, 131, 178, 171, 388, 164, 188, 387, 375, 209, 116, + 354, 62, 284, 282, 119, 309, 115, 374, 378, 156, 387, 364, 15, 15, 119, 251, 364, 325, 325, 354, 45, 262, + 367, 120, 166, 345, 249, 249, 125, 14, 75, 346, 84, 330, 332, 331, 325, 116, 284, 267, 341, 0, 326, 243, + 109, 329, 227, 272, 172, 180, 284, 284, 154, 386, 308, 302, 220, 91, 352, 243, 241, 326, 267, 282, 166, + 5, 161, 121, 193, 92, 311, 250, 125, 282, 182, 95, 297, 375, 386, 247, 167, 354, 164, 326, 313, 92, 229, + 81, 276, 349, 2, 332, 181, 35, 134, 10, 311, 386, 349, 354, 46, 328, 193, 355, 320, 383, 300, 137, 134, + 179, 250, 39, 248, 176, 329, 360, 197, 5, 172, 11, 336, 353, 80, 6, 237, 209, 175, 297, 84, 115, 303, + 102, 129, 325, 77, 92, 128, 333, 343, 94, 164, 166, 125, 284, 311, 103, 276, 119, 92, 247, 171, 388, 81, + 154, 32, 97, 208, 209, 64, 284, 386, 82, 65, 75, 249, 84, 120, 15, 272 + }, + { + 330, 249, 16, 92, 92, 378, 126, 339, 381, 352, 370, 141, 342, 17, 354, 250, 333, 20, 128, 343, 297, 120, + 392, 320, 278, 79, 136, 170, 343, 191, 330, 366, 333, 82, 100, 115, 150, 364, 272, 369, 88, 102, 350, + 164, 32, 162, 286, 2, 263, 92, 354, 116, 286, 164, 169, 179, 192, 373, 333, 75, 175, 100, 164, 0, 332, + 59, 92, 319, 6, 110, 353, 367, 20, 232, 142, 314, 364, 115, 150, 367, 137, 352, 241, 282, 14, 32, 309, + 326, 325, 251, 126, 227, 243, 325, 330, 116, 88, 5, 241, 302, 100, 220, 161, 16, 342, 182, 193, 352, 102, + 278, 392, 164, 55, 346, 55, 127, 182, 125, 134, 262, 96, 11, 129, 315, 148, 97, 62, 115, 91, 143, 14, + 174, 242, 151, 18, 70, 186, 6, 345, 167, 334, 324, 37, 333, 345, 312, 306, 352, 0, 154, 184, 254, 311, + 92, 386, 339, 251, 133, 18, 119, 169, 185, 121, 189, 92, 137, 378, 189, 241, 5, 281, 170, 56, 40, 353, + 331, 348, 250, 70, 164, 247, 24, 3, 82, 353, 329, 345, 330, 249, 107, 367 + }, + { + 369, 100, 252, 348, 84, 164, 375, 21, 345, 84, 371, 92, 83, 263, 345, 284, 83, 194, 10, 355, 375, 116, + 246, + 102, 82, 326, 369, 284, 354, 85, 220, 136, 136, 232, 119, 373, 10, 345, 344, 374, 80, 83, 326, 223, 56, + 91, 263, 171, 192, 84, 320, 326, 164, 15, 375, 91, 355, 47, 250, 334, 37, 57, 134, 0, 220, 97, 376, 354, + 346, 354, 344, 312, 354, 310, 350, 72, 329, 77, 98, 2, 375, 345, 113, 334, 124, 169, 378, 346, 348, 114, + 175, 263, 197, 91, 258, 334, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { + 377, 37, 179, 113, 209, 75, 176, 124, 92, 316, 135, 320, 240, 329, 135, 354, 20, 137, 137, 14, 330, 137, + 134, 316, 131, 309, 75, 75, 152, 116, 329, 282, 157, 128, 226, 175, 232, 286, 84, 344, 385, 231, 249, + 243, 11, 64, 175, 252, 125, 134, 316, 344, 355, 241, 164, 347, 383, 146, 74, 154, 283, 241, 131, 0, 348, + 348, 247, 386, 157, 68, 241, 317, 94, 134, 250, 348, 392, 92, 286, 0, 37, 191, 262, 344, 249, 309, 116, + 309, 75, 129, 184, 84, 45, 316, 345, 110, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + }, + { + 233, 154, 186, 116, 350, 375, 329, 134, 68, 244, 80, 116, 350, 355, 332, 327, 284, 110, 40, 305, 331, + 267, + 172, 92, 116, 243, 343, 107, 47, 47, 348, 220, 345, 92, 164, 310, 147, 309, 309, 348, 316, 180, 334, 90, + 310, 35, 92, 317, 372, 5, 220, 348, 223, 37, 375, 172, 352, 404, 14, 290, 385, 354, 329, 0, 136, 349, + 309, 294, 128, 348, 117, 14, 350, 297, 120, 79, 128, 168, 345, 90, 133, 332, 332, 316, 181, 392, 354, + 350, 175, 317, 332, 342, 348, 232, 378, 179, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + }, + { + 348, 92, 363, 354, 369, 347, 346, 232, 214, 116, 189, 350, 188, 62, 356, 354, 162, 21, 175, 110, 173, + 290, + 356, 350, 251, 250, 164, 176, 284, 244, 334, 171, 342, 113, 377, 329, 154, 243, 94, 355, 297, 110, 249, + 348, 327, 172, 92, 348, 348, 119, 369, 188, 290, 175, 130, 171, 125, 332, 54, 125, 125, 345, 353, 0, 50, + 228, 50, 228, 378, 125, 189, 354, 172, 35, 253, 170, 208, 133, 253, 131, 294, 333, 345, 124, 189, 164, + 370, 131, 241, 171, 345, 50, 181, 110, 33, 84, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 + }, + { + 190, 84, 228, 250, 250, 197, 84, 345, 157, 190, 37, 83, 250, 190, 196, 196, 388, 0, 82, 120, 130, 101, + 310, + 315, 117, 152, 114, 37, 111, 348, 57, 330, 319, 196, 243, 369, 345, 186, 345, 356, 305, 345, 345, 345, + 373, 373, 384, 24, 348, 186, 369, 345, 70, 175, 82, 193, 355, 50, 250, 371, 321, 378, 375, 0, 188, 5, 17, + 320, 14, 371, 189, 373, 386, 97, 68, 82, 355, 32, 90, 241, 355, 305, 308, 286, 81, 326, 81, 64, 320, 376, + 250, 283, 284, 284, 313, 330, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { + 122, 330, 345, 316, 294, 332, 162, 220, 329, 329, 148, 335, 110, 339, 327, 367, 216, 202, 386, 368, 92, + 386, + 92, 92, 37, 35, 35, 110, 344, 349, 335, 10, 363, 335, 386, 37, 345, 367, 311, 171, 171, 40, 251, 335, + 349, 212, 133, 220, 46, 357, 354, 40, 348, 208, 367, 388, 250, 357, 345, 354, 75, 328, 348, 0, 54, 388, + 63, 40, 130, 344, 110, 349, 183, 227, 328, 227, 345, 183, 173, 95, 143, 55, 171, 55, 249, 249, 17, 44, + 110, 136, 335, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } + }; + + //罗马字母 + private static readonly string[] _charIndex = new string[] + { + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", "", "", "", "", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", + "20", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", + "20", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "", "", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "", "" + }; + + //希腊字母 + private static readonly string[] _charIndex2 = new string[] + { + "a", "b", "g", "d", "e", "z", "e", "th", "i", "k", "l", "m", "n", "x", "o", "p", "r", + "s", "t", "u", "ph", "kh", "ps", "o" + }; + + #endregion + + public ChineseSpell() + { + } + + /// <summary> + /// 获取汉字的汉语拼音 + /// </summary> + /// <param name="chineseStr">欲转换的字符串</param> + /// <param name="options">SpellOptions枚举值的按位 OR 组合</param> + /// <returns></returns> + public static string GetSpellWord(string chineseStr, SpellOptions options) + { + Encoding encoding = Encoding.GetEncoding("GB2312"); + + byte[] local = encoding.GetBytes(chineseStr); + + int i = 0; + int index; + StringBuilder result = new StringBuilder(); + string tmp = ""; + + while (i < local.Length) + { + // 是否为GBK 字符 + if ((local[i] >= 129) + && (local[i + 1] >= 64)) + { + switch ((int) local[i]) + { + case 163: // 全角 ASCII + { + tmp = ((char) (local[i + 1] - 128)).ToString(); + + if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) + && !( + ((tmp[0] >= 97) && (tmp[0] <= 122)) + || ((tmp[0] >= 65) && (tmp[0] <= 90)) + || ((tmp[0] >= 48) && (tmp[0] <= 57)) + ) + ) + { + // 控制不能输出非数字, 字母的字符 + tmp = ""; + } + + break; + } + + case 162: // 罗马数字 + { + if (local[i + 1] > 160) + { + tmp = _charIndex[(int) local[i + 1] - 160]; + } + else if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == + SpellOptions.TranslateUnknowWordToInterrogation) + { + // 在罗马数字区, 不能翻译的字符非罗马数字 + tmp = "?"; + } + else + { + tmp = ""; + } + + break; + } + + case 166: // 希腊字母 + { + // + // TODO:未实现 + // + break; + } + + default: + { + index = _spellCodeIndex[(int) local[i] - 129, local[i + 1] - 64] - 1; + + if (index == 0) // 无此汉字, 不能翻译的字符, GBK 保留 + { + //是否翻译为问号 + if ((options & SpellOptions.TranslateUnknowWordToInterrogation) == + SpellOptions.TranslateUnknowWordToInterrogation) + { + tmp = "?"; + } + else + { + tmp = ""; + } + } + else if ((options & SpellOptions.FirstLetterOnly) == SpellOptions.FirstLetterOnly) //是单拼音 + { + tmp = _spellMusicCode[index].ToUpper().Substring(0, 1); + } + else + { + tmp = _spellMusicCode[index].ToUpper(); + } + + break; + } + } //end of swicth() + + result.Append(tmp); + i += 2; + } + else // 在 GBK 字符集外, 即半角字符 + { + if (((options & SpellOptions.EnableUnicodeLetter) == SpellOptions.EnableUnicodeLetter) + || ( + ((local[i] >= 97) && (local[i] <= 122)) + || ((local[i] >= 65) && (local[i] <= 90)) + || ((local[i] >= 48) && (local[i] <= 57)) + ) + ) + { + result.Append(((char) local[i]).ToString().ToUpper()); + } + //note:下行修改过的 + else if ((options & SpellOptions.TranslateSpecialWordToConnect) == + SpellOptions.TranslateSpecialWordToConnect) + { + result.Append("-"); + } + + i ++; + } + } + + return result.ToString(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/Cache/CacheUtil.cs b/src/core/J6.DevFw.Core/Framework/Web/Cache/CacheUtil.cs new file mode 100644 index 0000000..0521d43 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/Cache/CacheUtil.cs @@ -0,0 +1,203 @@ +/* + * 由SharpDevelop创建。 + * 用户: newmin + * 日期: 2013/11/24 + * 时间: 17:42 + * + * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 + */ + +using System; +using System.Web; + +namespace JR.DevFw.Framework.Web.Cache +{ + /// <summary> + /// Description of CacheUtil. + /// </summary> + public sealed class CacheUtil + { + /// <summary> + /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 + /// </summary> + /// <param name="maxAge"></param> + /// <returns></returns> + public static bool CheckClientCacheExpires(int maxAge) + { + /* + Public 指示响应可被任何缓存区缓存。 + Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 + 部分响应消息,此响应消息对于其他用户的请求无效。 + no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) + 根据什么能被缓存 + no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 + 根据缓存超时 + max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 + min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 + max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 + 接收超出超时期指定值之内的响应消息。 + Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 + 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 + 格式: + */ + + + if (maxAge > 0) + { + HttpResponse response = HttpContext.Current.Response; + HttpRequest request = HttpContext.Current.Request; + + string sinceModified = request.Headers.Get("If-Modified-Since"); + + if (!String.IsNullOrEmpty(sinceModified)) + { + //现在时间 + DateTime nowTime = DateTime.Now.ToUniversalTime(); + + //最后修改时间 + DateTime sinceTime; + DateTime.TryParse(sinceModified, out sinceTime); + sinceTime = sinceTime.ToUniversalTime(); + + if ((nowTime - sinceTime).TotalSeconds < maxAge) + { + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return false; + } + } + } + + return true; + } + + /// <summary> + /// 检查客户端缓存是否过期,如果未过期,则直接输出http 304 + /// </summary> + /// <param name="etag"></param> + /// <returns></returns> + public static bool CheckClientCacheExpires(string etag) + { + string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); + if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) + { + HttpResponse response = HttpContext.Current.Response; + + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return false; + } + return true; + } + + /// <summary> + /// 设置客户端保存缓存 + /// </summary> + /// <param name="response"></param> + /// <param name="maxAge"></param> + public static void SetClientCache(HttpResponse response, int maxAge) + { + DateTime nowTime = DateTime.Now.ToUniversalTime(); + response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); + response.AddHeader("Last-Modified", nowTime.ToString("r")); + } + + /// <summary> + /// 设置客户端保存缓存 + /// </summary> + /// <param name="response"></param> + /// <param name="etag"></param> + public static void SetClientCache(HttpResponse response, string etag) + { + response.AddHeader("ETag", "\"" + etag + "\""); + } + + /// <summary> + /// 输出缓存内容 + /// </summary> + /// <param name="response"></param> + /// <param name="maxage"></param> + /// <param name="handler"></param> + /// <returns>是否缓存在客户端</returns> + public static bool Output(HttpResponse response, int maxage, StringCreatorHandler handler) + { + /* + Public 指示响应可被任何缓存区缓存。 + Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的 + 部分响应消息,此响应消息对于其他用户的请求无效。 + no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换) + 根据什么能被缓存 + no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 + 根据缓存超时 + max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 + min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 + max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以 + 接收超出超时期指定值之内的响应消息。 + Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的 + 效果。但是如果同时存在,则被Cache-Control的max-age覆盖。 + 格式: + */ + + #region 获取缓存状态 + + HttpRequest request = HttpContext.Current.Request; + + //现在时间 + DateTime nowTime = DateTime.Now.ToUniversalTime(); + + + string sinceModified = request.Headers.Get("If-Modified-Since"); + + if (!String.IsNullOrEmpty(sinceModified)) + { + //最后修改时间 + DateTime sinceTime; + DateTime.TryParse(sinceModified, out sinceTime); + sinceTime = sinceTime.ToUniversalTime(); + + if ((nowTime - sinceTime).TotalSeconds < maxage) + { + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return true; + } + } + + #endregion + + #region 输出内容并缓存 + + response.Write(handler()); + + response.AddHeader("Cache-Control", "max-age=" + maxage.ToString()); + response.AddHeader("Last-Modified", nowTime.ToString("r")); + + #endregion + + return false; + } + + /// <summary> + /// 输出缓存内容 + /// </summary> + /// <param name="response"></param> + /// <param name="etag"></param> + /// <param name="handler"></param> + /// <returns>是否缓存在客户端</returns> + public static bool Output(HttpResponse response, string etag, StringCreatorHandler handler) + { + string clientEtag = HttpContext.Current.Request.Headers.Get("If-None-Match"); + if (String.Compare(clientEtag, String.Concat("\"", etag, "\""), false) == 0) + { + response.StatusCode = 304; + response.Status = "304 Not Modified"; + return true; + } + + response.AddHeader("ETag", "\"" + etag + "\""); + response.Write(handler()); + + return false; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload.cs b/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload.cs new file mode 100644 index 0000000..927ba2d --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload.cs @@ -0,0 +1,102 @@ +/* + * 文件上传 + * Copyright 2012 OPS,All right reseved! + * Newmin(ops.cc) @ 2012-09-29 07:09 + * + */ + +using System; +using System.IO; +using System.Web; + +namespace JR.DevFw.Framework.Web.UI +{ + /// <summary> + /// 文件上传工具 + /// </summary> + public class FileUpload + { + /// <summary> + /// 保存文件夹 + /// </summary> + private readonly string _saveAbsoluteDir; + + /// <summary> + /// 文件名 + /// </summary> + private readonly string _fileName; + + private UploadFileInfo _fileInfo; + + public FileUpload(string saveAbsoluteDir, string fileName) + { + this._saveAbsoluteDir = saveAbsoluteDir; + this._fileName = fileName; + } + + /// <summary> + /// 上传 + /// </summary> + /// <returns>异步则返回进程ID,同步返回上传文件的路径</returns> + public string Upload() + { + HttpRequest request = HttpContext.Current.Request; + String baseDir = AppDomain.CurrentDomain.BaseDirectory; + string[] process = request.Form["upload_process"].Split('|'); + string processID = process[1], + field = process[0]; + + var postedFile = request.Files[field]; + if (postedFile == null) + { + return null; + } + string fileExt = postedFile.FileName.Substring(postedFile. + FileName.LastIndexOf('.') + 1); //扩展名 + + _fileInfo = new UploadFileInfo + { + Id = processID, + ContentLength = postedFile.ContentLength, + FilePath = String.Format("{0}{1}.{2}", this._saveAbsoluteDir, _fileName, fileExt) + }; + + InitUplDirectory(baseDir, this._saveAbsoluteDir); + saveStream(postedFile, baseDir + _fileInfo.FilePath); + + return _fileInfo.FilePath; + } + + private static void InitUplDirectory(String baseDir, String absDir) + { + //如果文件夹不存在,则创建文件夹 + String dir = baseDir + absDir; + if (!Directory.Exists(dir)) + { + Directory.CreateDirectory(dir).Create(); + } + } + + private void saveStream(HttpPostedFile postedFile, string path) + { + const int bufferSize = 100; //缓冲区大小 + byte[] buffer = new byte[bufferSize]; //缓冲区 + + int bytes; //从流中读取的值 + using (FileStream fs = new FileStream(path, FileMode.Create)) + { + while (true) + { + bytes = postedFile.InputStream.Read(buffer, 0, bufferSize); + if (bytes == 0) + { + break; + } + fs.Write(buffer, 0, bytes); + } + fs.Flush(); + fs.Close(); + } + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload/demo/1.htm b/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/demo/1.htm similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload/demo/1.htm rename to src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/demo/1.htm diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload/fileupload.js b/src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/fileupload.js similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Web/UI/FileUpload/fileupload.js rename to src/core/J6.DevFw.Core/Framework/Web/UI/FileUpload/fileupload.js diff --git a/src/core/J6.DevFw.Core/Framework/Web/UI/Page.cs b/src/core/J6.DevFw.Core/Framework/Web/UI/Page.cs new file mode 100644 index 0000000..cd43f7f --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/UI/Page.cs @@ -0,0 +1,42 @@ +/* + * Name : UI.Page + * Author : newmin + * Date : 2010/10/22 + */ + +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Web.UI; +using JR.DevFw.Framework.Web.unused; +using JR.DevFw.Framework.Web.unused.Interface; + +namespace JR.DevFw.Framework.Web.UI +{ + public class Page : System.Web.UI.Page, ICompressionable + { + protected override void Render(HtmlTextWriter writer) + { + /* 注:base.Render(writer)应在所有假设性条件后 */ + if (ConfigurationDictionary.EnableCompression) Compression(writer); //是否启用html压缩的话 + else base.Render(writer); + } + + #region ICompressionable 成员 + + public void Compression(System.Web.UI.HtmlTextWriter writer) + { + StringWriter sr = new StringWriter(); + HtmlTextWriter tw = new HtmlTextWriter(sr); + base.Render(tw); + tw.Flush(); + tw.Dispose(); + StringBuilder sb = new StringBuilder(sr.ToString()); + string outhtml = Regex.Replace(sb.ToString(), "\\r+\\n+\\s+", string.Empty); + writer.Write(outhtml); + sr.Dispose(); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/PagedLinkBuilder.cs b/src/core/J6.DevFw.Core/Framework/Web/UI/PagedLinkBuilder.cs similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Web/UI/PagedLinkBuilder.cs rename to src/core/J6.DevFw.Core/Framework/Web/UI/PagedLinkBuilder.cs diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/Pager.zip b/src/core/J6.DevFw.Core/Framework/Web/UI/Pager.zip similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Web/UI/Pager.zip rename to src/core/J6.DevFw.Core/Framework/Web/UI/Pager.zip diff --git a/src/core/AtNet.DevFw.Core/Framework/Web/UI/Pager/pager.go b/src/core/J6.DevFw.Core/Framework/Web/UI/Pager/pager.go similarity index 100% rename from src/core/AtNet.DevFw.Core/Framework/Web/UI/Pager/pager.go rename to src/core/J6.DevFw.Core/Framework/Web/UI/Pager/pager.go diff --git a/src/core/J6.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs b/src/core/J6.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs new file mode 100644 index 0000000..69c7cf3 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/UI/UploadFileInfo.cs @@ -0,0 +1,28 @@ +namespace JR.DevFw.Framework.Web.UI +{ + /// <summary> + /// 上传文件信息 + /// </summary> + public struct UploadFileInfo + { + /// <summary> + /// 文件编号 + /// </summary> + public string Id { get; set; } + + /// <summary> + /// 保存路径 + /// </summary> + public string FilePath { get; set; } + + /// <summary> + /// 文件长度 + /// </summary> + public int ContentLength { get; set; } + + /// <summary> + /// 已上传长度 + /// </summary> + public int UploadedLength { get; set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/UI/UrlPager.cs b/src/core/J6.DevFw.Core/Framework/Web/UI/UrlPager.cs new file mode 100644 index 0000000..29a0884 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/UI/UrlPager.cs @@ -0,0 +1,430 @@ +/* +* Copyright(C) 2010-2012 S1N1.COM +* +* File Name : UrlPager +* Author : Administrator +* Create : 2012/10/9 21:49:44 +* Description : +* +*/ + +using System; +using System.Text; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Framework.Web.UI +{ + public enum PagingFlag + { + Control = 1, + Previous = 1 << 1, + Next = 1 << 2 + } + + + public interface IPagingGetter + { + string Get(int page, int total, int nowPage, PagingFlag flag, out string text); + } + + internal class DefaultPageingGetter : IPagingGetter + { + private static readonly CustomPagingGetter getter; + + static DefaultPageingGetter() + { + getter = new CustomPagingGetter( + "", + "?page=%d", + "第一页", + "最末页", + "上一页", + "下一页" + ); + } + + public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) + { + return getter.Get(page, total, nowPage, flag, out text); + } + } + + public class CustomPagingGetter : IPagingGetter + { + private int pagerLinkCount; + private string firstPageText; + private string lastPageText; + private string nextPageText; + private string previousPageText; + private string pagerLinkFormat; + private string firstLinkFormat; + + public CustomPagingGetter( + string firstLinkFormat, + string pagerLinkFormat, + string firstPageText, + string lastPageText, + string previousPageText, + string nextPageText + ) + { + this.firstLinkFormat = firstLinkFormat; + this.pagerLinkFormat = pagerLinkFormat; + this.firstPageText = firstPageText; + this.lastPageText = lastPageText; + this.nextPageText = nextPageText; + this.previousPageText = previousPageText; + } + + public string Get(int page, int total, int nowPage, PagingFlag flag, out string text) + { + if ((flag & PagingFlag.Control) != 0) + { + if ((flag & PagingFlag.Previous) != 0) + { + text = this.previousPageText; + if (page == 1) + { + return "javascript:;"; + } + else + { + if (nowPage == 1) + { + return this.firstLinkFormat; + } + return String.Format(this.pagerLinkFormat, nowPage); + } + } + else if ((flag & PagingFlag.Next) != 0) + { + text = this.nextPageText; + if (page == total) + { + return "javascript:;"; + } + else + { + return String.Format(this.pagerLinkFormat, nowPage); + } + } + } + + text = nowPage.ToString(); + if (nowPage == 1 && this.firstLinkFormat.Length != 0) + { + return this.firstLinkFormat; + } + return String.Format(this.pagerLinkFormat, nowPage); + } + } + + + public class UrlPager + { + private int _linkCount; + + + internal UrlPager() + { + } + + internal UrlPager(int currentPageIndex, int pageCount) + { + CurrentPageIndex = currentPageIndex; + PageCount = pageCount; + } + + /// <summary> + /// 当前页面索引(从1开始) + /// </summary> + public int CurrentPageIndex { get; set; } + + /// <summary> + /// 页面总数 + /// </summary> + public int PageCount { get; set; } + + //获取分页数据 + public IPagingGetter Getter { get; set; } + + /// <summary> + /// 链接长度,创建多少个跳页链接 + /// </summary> + public int LinkCount + { + get + { + if (this._linkCount == 0) + { + this._linkCount = 10; + } + return this._linkCount; + } + set { this._linkCount = value; } + } + + /// <summary> + /// 记录条数 + /// </summary> + public int RecordCount { get; set; } + + + /// <summary> + /// 下一栏链接文字 + /// </summary> + public string NextPagerLinkText { get; set; } + + /// <summary> + /// 选页框文本 + /// </summary> + public string SelectPageText { get; set; } + + /// <summary> + /// 是否允许输入页码调页 + /// </summary> + public bool EnableInput { get; set; } + + /// <summary> + /// 使用选页 + /// </summary> + public bool EnableSelect { get; set; } + + /// <summary> + /// 分页详细记录,如果为空字符则用默认,为空则不显示 + /// </summary> + public String PagerTotal { get; set; } + + + /// <summary> + /// 输入分页链接HTML代码 + /// </summary> + /// <param name="format">例如:?domain=ops.cc&page={0},{0}将会被解析成页码</param> + /// <param name="formatProvider"></param> + /// <returns></returns> + public string Pager() + { + string cls; + string linkText = String.Empty; + string linkUrl; + + StringBuilder sb = new StringBuilder(); + + string _pageCount = (this.PageCount == 0 ? 1 : this.PageCount).ToString(); + + //Div Wrap + sb.Append("<div class=\"pager\">"); + + //输出上一页 + if (this.CurrentPageIndex > 1) + { + cls = "previous"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex - 1, PagingFlag.Control | PagingFlag.Previous, out linkText); + } + else + { + cls = "disabled"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Previous, out linkText); + } + sb.Append(String.Format(@"<span class=""{0}""><a href=""{1}"">{2}</a></span>" + , cls, linkUrl, linkText)); + + + //起始页:CurrentPageIndex / 10 * 10+1 + //结束页:(CurrentPageIndex%10==0?CurrentPageIndex-1: CurrentPageIndex) / 10 * 10 + //当前页数能整除10的时候需要减去10页,否则不能选中 + + + //链接页码数量(默认10) + int c = this.LinkCount; + int startPage = (CurrentPageIndex - 1)/c*c + 1; + + bool _gotoPrevious = false; //是否上一栏分页 + + for (int i = 1, j = startPage; + i <= c && j <= PageCount; + i++, j = (CurrentPageIndex%c == 0 ? CurrentPageIndex - 1 : CurrentPageIndex)/c*c + i) + { + //输出页面 + if (j == CurrentPageIndex) + { + _gotoPrevious = j != 1 && j%c == 1; + + if (_gotoPrevious) + { + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + j - 1, 0, out linkText); + sb.Append(String.Format(@"<a class=""page"" href=""{1}"">{2}</a>", + cls, linkUrl, "...")); + } + + //如果为页码为当前页 + + sb.Append("<span class=\"current\">").Append(j.ToString()).Append("</span>"); + + + //如果为最后一个页码,则显示下一栏 + if (!_gotoPrevious && j%c == 0 && j != PageCount) + { + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + j + 1, 0, out linkText); + + sb.Append(String.Format(@"<a class=""page"" href=""{1}"">{2}</a>", + cls, linkUrl, "...")); + } + } + else + { + //页码不为当前页,则输出页码 + //如果为第一页,用第一页格式 + + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + j, 0, out linkText); + sb.Append(String.Format("<a class=\"page\" href=\"{0}\">{1}</a>", + linkUrl, linkText)); + } + } + + + //显示输入页码框 + //if (EnableInput) sb.Append("<input type=\"text\" size=\"2\"/><a href=\"#\" class=\"go\" onclick=\"gotoPage(this)\">").Append(InputButtonText ?? "跳页").Append("</a>"); + + + //输出下一页链接 + if (this.CurrentPageIndex < this.PageCount) + { + cls = "next"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex + 1, PagingFlag.Control | PagingFlag.Next, out linkText); + } + else + { + cls = "disabled"; + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + this.CurrentPageIndex, PagingFlag.Control | PagingFlag.Next, out linkText); + } + sb.Append(String.Format(@"<span class=""{0}""><a href=""{1}"">{2}</a></span>" + , cls, linkUrl, linkText)); + + + //显示下拉选页框 + if (EnableSelect) + { + linkUrl = this.Getter.Get(this.CurrentPageIndex, this.PageCount, + 1, 0, out linkText); + + //选页框 + StringBuilder selectSb = new StringBuilder(); + selectSb.Append("<select onchange=\"").Append("location.href='") + .Append(linkUrl.Replace("1", "#")).Append("'.replace('#',this.value);").Append("\">"); + + if (this.PageCount == 0) + { + selectSb.Append("<option value=\"1\" selected=\"selected\">1</option>"); + } + else + { + for (int i = 1; i <= this.PageCount; i++) + { + selectSb.Append("<option value=\"").Append(i.ToString()); + if (i == this.CurrentPageIndex) + { + selectSb.Append("\" selected=\"selected"); + } + selectSb.Append("\">").Append(i.ToString()) + .Append("</option>"); + } + } + selectSb.Append("</select>"); + + //设置下拉框HTML格式 + if (String.IsNullOrEmpty(this.SelectPageText)) this.SelectPageText = "{0}"; + else if (this.SelectPageText.IndexOf("{0}") == -1) this.SelectPageText += "{0}"; + + //将选页框添加到内容中 + sb.Append(String.Format(String.Concat("<span class=\"select\">", this.SelectPageText, "</span>"), + selectSb.ToString())); + } + + + //显示信息 + if (this.PagerTotal != null) + { + const string _pagerTotalFormat = @" <span class=""pageinfo"">第{0}/{1}页,共{2}条。</span>"; + string _pagerTotal = this.PagerTotal; + if (_pagerTotal == String.Empty) + { + _pagerTotal = _pagerTotalFormat; + } + sb.Append(String.Format(_pagerTotal, + CurrentPageIndex.ToString(), + _pageCount.ToString(), + this.RecordCount.ToString() + )); + } + + //Wrap Close + sb.Append("</div>"); + + return Regex.Replace(sb.ToString(), "\\s\\s|\\r|\\t", String.Empty); + } + } + + public static class UrlPaging + { + public static IPagingGetter DefaultGetter = new DefaultPageingGetter(); + + public static UrlPager NewPager(int page, int pageCount, IPagingGetter pg) + { + if (pageCount == 0) pageCount = 1; + if (page == 0) page = 1; + + UrlPager p = new UrlPager(page, pageCount); + if (pg == null) + { + pg = DefaultGetter; + } + else + { + p.Getter = pg; + } + + return p; + } + + /// <summary> + /// 创建分页信息 + /// </summary> + /// <param name="pageSize"></param> + /// <param name="currentPageIndex"></param> + /// <param name="recordCount"></param> + /// <param name="pageCount"></param> + /// <returns></returns> + public static string PagerHtml(string firstFormat, string format, int currentPageIndex, int recordCount, + int pageCount) + { + IPagingGetter pg = new CustomPagingGetter( + firstFormat, + format, + "第一页", + "最末页", + "<<上一页", + ">>下一页" + ); + + + UrlPager p = NewPager(currentPageIndex, pageCount, pg); + + // p.PreviousPageText = "<<"; + // p.NextPageText = ">>"; + p.EnableInput = true; + p.SelectPageText = "跳页"; + p.PagerTotal = String.Empty; + p.RecordCount = recordCount; + p.PagerTotal = String.Empty; + return p.Pager(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/UI/VerifyCode.cs b/src/core/J6.DevFw.Core/Framework/Web/UI/VerifyCode.cs new file mode 100644 index 0000000..ec54ea6 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/UI/VerifyCode.cs @@ -0,0 +1,399 @@ +/* + * VerifyCode 验证码 + * Copyright 2010 OPSoft ,All right reseved! + * Newmin(ops.cc) @ 2010/11/18 + */ + +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Text; +using System.Web; + +namespace JR.DevFw.Framework.Web.UI +{ + /// <summary> + /// 验证码组成字符选项 + /// </summary> + public enum VerifyWordOptions + { + /// <summary> + /// 全数字 + /// </summary> + Number, + + /// <summary> + /// 全字母 + /// </summary> + Letter, + + /// <summary> + /// 字母和数字 + /// </summary> + LetterAndNumber + + /// <summary> + /// 中文字符 + /// </summary> + //Chinese + } + + /// <summary> + /// 验证码 + /// </summary> + public class VerifyCode + { + private delegate bool TestCondition(int number, int[] array); + + private const int _n_s = 48; //数字开始 + private const int _n_e = 57; //数字结束 + private const int _ul_s = 65; //大写字母开始 + private const int _ul_e = 90; //大写字母结束 + private const int _ll_s = 97; //小写字母开始 + private const int _ll_e = 122; //小写字母结束 + private const int wordLength = 62; + + private static int[] wordArray = new int[62]; + + private bool allowRepeat = true; + + static VerifyCode() + { + //初始化,将0-9,A-Z,a-z添加到数组中去 + for (int i = 0; i < 10; i++) + { + wordArray[i] = _n_s + i; + } + for (int i = 0; i < 26; i++) + { + wordArray[36 + i] = _ul_s + i; + wordArray[10 + i] = _ll_s + i; + } + } + + /// <summary> + /// 是否允许重复出现 + /// </summary> + public bool AllowRepeat + { + get { return allowRepeat; } + set { allowRepeat = value; } + } + + + /* + /// <summary> + /// 验证是否与当前验证码输入一致(区分大小写) + /// </summary> + /// <param name="verifyString"></param> + /// <returns></returns> + public static bool Verify(string verifyString) + { + return Verify(verifyString, false); + } + + + /// <summary> + /// 验证是否与当前验证码输入一致 + /// </summary> + /// <param name="verifyString"></param> + /// <param name="ignoreCase"></param> + /// <returns></returns> + public static bool Verify(string verifyString, bool ignoreCase) + { + string verifyCode = HttpContext.Current.Session["current_verifycode"] as string; + if (String.IsNullOrEmpty(verifyString)) return false; + return String.Compare(verifyString, verifyCode, ignoreCase) == 0; + } + */ + + /// <summary> + /// 获取默认字体 + /// </summary> + /// <returns></returns> + public Font GetDefaultFont() + { + FontFamily fontFamily; + try + { + fontFamily = FontFamily.GenericSansSerif; + } + catch + { + if (FontFamily.Families.Length != 0) + { + fontFamily = FontFamily.Families[0]; + } + else + { + throw new Exception("计算机上找不到字体!"); + } + } + return new Font(fontFamily, 14, FontStyle.Bold, GraphicsUnit.Pixel); + } + + /// <summary> + /// 显示验证码图片 + /// </summary> + public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, out string words) + { + return GraphicDrawImage(number, opt, simpleMode, GetDefaultFont(), 22, out words); + } + + /// <summary> + /// 显示验证码图片 + /// </summary> + public void RenderGraphicImage(int number, VerifyWordOptions opt, bool simpleMode, out string words, + string contentType) + { + HttpContext context = HttpContext.Current; + byte[] data = GraphicDrawImage(number, opt, simpleMode, out words); + + context.Response.BinaryWrite(data); + context.Response.ContentType = contentType ?? "Image/Jpeg"; + } + + /// <summary> + /// 显示验证码图片 + /// </summary> + public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, Font font, int imageHeight, + out string words) + { + HttpContext context = HttpContext.Current; + + int[] verifyWords = new int[number]; + Random rd = new Random(); + + TestCondition test; + int _tempInt; + + + switch (opt) + { + //纯数字 + case VerifyWordOptions.Number: + + test = (i, array) => + { + if (i == 0) return false; + else if (i < _n_s || i > _n_e) return false; + else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; + return true; + }; + + for (int i = 0; i < number; i++) + { + while (verifyWords[i] == 0) + { + _tempInt = wordArray[rd.Next(wordLength)]; + if (test(_tempInt, verifyWords)) + { + verifyWords[i] = _tempInt; + } + } + } + + break; + + + //纯字母 + case VerifyWordOptions.Letter: + + test = (i, array) => + { + if (i == 0) return false; + else if (i < _ul_s || i > _ll_e || (i > _ul_e && i < _ll_s)) return false; + else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; + return true; + }; + + for (int i = 0; i < number; i++) + { + while (verifyWords[i] == 0) + { + _tempInt = wordArray[rd.Next(wordLength)]; + if (test(_tempInt, verifyWords)) + { + verifyWords[i] = _tempInt; + } + } + } + + break; + + + //字母和数字 + case VerifyWordOptions.LetterAndNumber: + + test = (i, array) => + { + if (i == 0) return false; + else if (!Array.Exists(wordArray, a => a == i)) return false; + else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; + return true; + }; + + for (int i = 0; i < number; i++) + { + while (verifyWords[i] == 0) + { + _tempInt = wordArray[rd.Next(wordLength)]; + if (test(_tempInt, verifyWords)) + { + verifyWords[i] = _tempInt; + } + } + } + + break; + } + + //转换成字母 + StringBuilder sb = new StringBuilder(); + foreach (int i in verifyWords) + { + sb.Append((char) i); + } + + //context.Session["current_verifycode"] = sb.ToString(); + words = sb.ToString(); + + //绘图 + return DrawingImage(verifyWords, simpleMode, font, imageHeight); + } + + /// <summary> + /// 绘图 + /// </summary> + /// <param name="charNumberArray"></param> + private byte[] DrawingImage(int[] charNumberArray, bool simpleMode, Font font, int imageHeight) + { + float _fontSize = font.Size; + int _height = imageHeight; + const int _offset = 5; + + Bitmap img = new Bitmap(charNumberArray.Length*(int) _fontSize + _offset, _height); + Graphics g = Graphics.FromImage(img); + g.Clear(Color.White); + + //生成随机生成器 + Random rd = new Random(); + + //画图片的干扰线 + for (int i = 0; i < 25; i++) + { + int x1 = rd.Next(img.Width); + int x2 = rd.Next(img.Width); + int y1 = rd.Next(img.Height); + int y2 = rd.Next(img.Height); + g.DrawLine(new Pen(Color.FromArgb(200, 200, 200)), x1, y1, x2, y2); + } + + FontFamily ffamily = font.FontFamily; + //try + //{ + // ffamily = FontFamily.GenericSerif; + //} + //catch + //{ + // FontFamily[] ffs = FontFamily.Families; + // if (ffs.Length > 1) ffamily = ffs[0]; + // else + // { + // throw new Exception("系统中未找到任何字体!"); + // } + //} + + Brush[] brushs = new SolidBrush[] + { + new SolidBrush(Color.Green), + new SolidBrush(Color.Blue), + new SolidBrush(Color.Red), + new SolidBrush(Color.Black) + //new SolidBrush(Color.Orange) + }; + + + for (int i = 0; i < charNumberArray.Length; i++) + { + g.DrawString(((char) charNumberArray[i]).ToString(), font, brushs[rd.Next(brushs.Length)], + new PointF(_offset + i*(_fontSize - 1), (_height - _fontSize)/2)); + } + + if (!simpleMode) + { + //弯曲图片 + img = TwistImage(img, true, 2, 1); + + //画图片的前景干扰点 + for (int i = 0; i < 100; i++) + { + int x = rd.Next(img.Width); + int y = rd.Next(img.Height); + img.SetPixel(x, y, Color.FromArgb(235, 235, 235)); + } + } + + + MemoryStream stream = new MemoryStream(); + img.Save(stream, ImageFormat.Jpeg); + font.Dispose(); + g.Dispose(); + img.Dispose(); + + byte[] data = stream.ToArray(); + stream.Dispose(); + + return data; + } + + /// <summary> + /// 正弦曲线Wave扭曲图片(http://www.51aspx.com/CV/VerifyColorTwistCode/) + /// </summary> + /// <param name="srcBmp">图片路径</param> + /// <param name="bXDir">如果扭曲则选择为True</param> + /// <param name="nMultValue">波形的幅度倍数,越大扭曲的程度越高,一般为3</param> + /// <param name="dPhase">波形的起始相位,取值区间[0-2*PI)</param> + /// <returns></returns> + private Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) + { + // const double PI = 3.1415926535897932384626433832795; + + const double PI2 = 6.283185307179586476925286766559; + + Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); + + // 将位图背景填充为白色 + System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); + graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); + graph.Dispose(); + + double dBaseAxisLen = bXDir ? (double) destBmp.Height : (double) destBmp.Width; + + for (int i = 0; i < destBmp.Width; i++) + { + for (int j = 0; j < destBmp.Height; j++) + { + double dx = 0; + dx = bXDir ? (PI2*(double) j)/dBaseAxisLen : (PI2*(double) i)/dBaseAxisLen; + dx += dPhase; + double dy = Math.Sin(dx); + + // 取得当前点的颜色 + int nOldX = 0, nOldY = 0; + nOldX = bXDir ? i + (int) (dy*dMultValue) : i; + nOldY = bXDir ? j : j + (int) (dy*dMultValue); + + System.Drawing.Color color = srcBmp.GetPixel(i, j); + if (nOldX >= 0 && nOldX < destBmp.Width + && nOldY >= 0 && nOldY < destBmp.Height) + { + destBmp.SetPixel(nOldX, nOldY, color); + } + } + } + return destBmp; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs new file mode 100644 index 0000000..712866d --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/ConfigurationDictionary.cs @@ -0,0 +1,23 @@ +using System.Configuration; + +namespace JR.DevFw.Framework.Web.unused +{ + public static class ConfigurationDictionary + { + /// <summary> + /// 是否记录错误 + /// </summary> + internal static bool RecordError = ConfigurationManager.AppSettings["recordError"] == "true"; + + /// <summary> + /// 报告错误的地址 + /// </summary> + internal static string ReportErrorUri = System.Configuration.ConfigurationManager.AppSettings["errorReportUri"]; + + /// <summary> + /// 是否启用压缩 + /// </summary> + internal static bool EnableCompression = + System.Configuration.ConfigurationManager.AppSettings["enableCompression"] == "True"; + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs new file mode 100644 index 0000000..2b768a3 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/ExceptionProcess.cs @@ -0,0 +1,107 @@ +/* + * file : exceptionProcess + * author: OPS newmin + * Date : 2010/09/20 + */ + +using System; +using System.IO; +using System.Net; +using System.Text; +using System.Web; + +namespace JR.DevFw.Framework.Web.unused +{ + public static class ExceptionProcess + { + /// <summary> + /// 记录错误,记录的文件路径为~/Logs/error.log + /// </summary> + /// <param name="func"></param> + /// <param name="context">当前请求上下文</param> + /// <param name="e">触发的异常</param> + public static void TraceError(HttpContext context, Exception e) + { + StringBuilder sb = new StringBuilder(3000); + sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) + .Append("\tip:").Append(context.Request.UserHostAddress).Append(" \tpath:") + .Append(context.Request.Url.PathAndQuery).Append("\r\n").Append('-', 100).Append("\r\n") + .Append("[message]:").Append(e.Message).Append(" [type]:").Append(e.GetType().ToString()) + .Append("\r\n").Append("[stack]:").Append(e.StackTrace).Append("\r\n"); + using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) + { + sw.WriteLine(sb.ToString()); + sw.Flush(); + sw.Close(); + } + } + + /// <summary> + /// 处理远程提交的错误 + /// </summary> + /// <param name="func"></param> + /// <param name="context">当前请求上下文</param> + /// <param name="e">触发的异常</param> + /// <param name="errorUri">错误地址</param> + /// <param name="ip">ip地址</param> + public static void PostError(HttpContext context, string errorUri, string ip, string type, string msg, + string trace) + { + StringBuilder sb = new StringBuilder(3000); + sb.Append("[Error] Hapend at ").Append(String.Format("{0:yyyy:MM:dd HH:mm:ss}", DateTime.Now)) + .Append("\tip:").Append(ip).Append(" \tpath:") + .Append(errorUri).Append("\r\n").Append('-', 100).Append("\r\n") + .Append("[message]:").Append(msg).Append(" [type]:").Append(type) + .Append("\r\n").Append("[stack]:").Append(trace).Append("\r\n"); + + using (StreamWriter sw = new StreamWriter(context.Server.MapPath("~/") + "/logs/error.log", true)) + { + sw.WriteLine(sb.ToString()); + sw.Flush(); + sw.Close(); + } + } + + /// <summary> + /// 提交错误到远程地址 + /// </summary> + /// <param name="context">当前请求上下文</param> + /// <param name="remoteUri">接收错误的远程uri</param> + /// <param name="errorUri">错误地址</param> + /// <param name="ip">用户IP</param> + /// <param name="type">错误异常类型</param> + /// <param name="msg">错误异常消息</param> + /// <param name="trace">错误异常堆栈</param> + public static void PostRemoteError(HttpContext context, string remoteUri, Exception e) + { + string reportUri = remoteUri, param = null; + if (string.IsNullOrEmpty(reportUri)) return; + if (reportUri.IndexOf("?") != -1) + { + param = reportUri.Substring(reportUri.IndexOf("?") + 1) + "&"; + reportUri = reportUri.Substring(0, reportUri.IndexOf("?")); + } + StringBuilder sb = new StringBuilder(); + sb.Append(context.Request.Url.ToString().Replace(",", "__")) + .Append(",").Append(context.Request.UserHostAddress).Append(",").Append(e.GetType().ToString()) + .Append(",").Append(e.Message).Append(",").Append(e.StackTrace.Replace(",", "__")); + + param += "error=" + HttpUtility.HtmlEncode(sb.ToString()); + + // context.Response.Write("提交前的参数<br />" + param); + + WebRequest wr = WebRequest.Create(reportUri); + wr.Method = "POST"; + wr.ContentType = "application/x-www-form-urlencoded"; + wr.ContentLength = param.Length; + using (Stream stream = wr.GetRequestStream()) + { + stream.Write(Encoding.UTF8.GetBytes(param), 0, param.Length); + wr.GetResponse(); + //StreamReader sr = new StreamReader(wr.GetResponse().GetResponseStream()); + //context.Response.Write("接收到的参数:"+sr.ReadToEnd()); + //context.Response.End(); + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs new file mode 100644 index 0000000..d2e506b --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/ExecuteHandler.cs @@ -0,0 +1,121 @@ +/* * + * name : ExecuteHandler.cs + * author : OPS newmin + * date : 09/29 2010 + * note : 用来处理请求,请求的URI参数如:Exc.ashx?cmd=IP,GetIP,127.0.0.1 + * + * 要执行操作的类必需要程序集名称命名空间下: + * 如要执行OPS.Security下的User类,则User类的命名空间为:OPS.Security.User + * 调用方式**.ashx?cmd=User,GetScore,newmin + * + * 2010/10/18 [+] newmin:新增Uri参数task + * 2010/10/18 [!] newmin:修正returnObj为空返回ToString()的Bug + * 2010/11/05 [!] newmin:修正不能接收Session的Bug + * 2010/12/03 [!] nwemin:修正_type为静态类不能创建多个ExecuteHandler的Bug + * 2010/12/06 [+] newmin:添加query支持,可采用*.ashx?class,method,parameters调用 + * [+] newmin:添加无参数时候提示信息 + * [!] newmin:修正不传参数无法返回结果的BUG + * [!] newmin:修正query为?xxxx时候xxxx参数不合法的验证 + * [+] newmin:将cmd参数该为do + * */ + +using System; +using System.Reflection; +using System.Web; + +namespace JR.DevFw.Framework.Web.unused.Handler +{ + public abstract class ExecuteHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState + { + /// <summary> + /// 绑定类型用于获取程序集及类型的命名空间 + /// </summary> + protected Type handlerType; + + private static char[] chars = {',', ':'}; + + #region IHttpHandler 成员 + + public bool IsReusable { get; set; } + + public void ProcessRequest(HttpContext context) + { + //包含参数task或query包含,号,如?task=class,method或?class,method + + string task = context.Request["do"] ?? ( + context.Request.Url.Query.IndexOfAny(chars) != -1 + ? context.Request.Url.Query.Replace("?", "") + : context.Request["task"]); + + if (String.IsNullOrEmpty(task)) + { + context.Response.Write("<b>ExecuteHandler组件</b> Power by <a href=\"http://www.ops.cc\">OPSoft</a>"); + return; + } + else task = task.Replace("+", " "); //将空格做为+号替换 + string[] args = task.Split(chars); + if (args.Length >= 2) + { + //获取执行当前代码的程序集并创建实例 + Assembly ass = Assembly.GetAssembly(handlerType); + object obj = ass.CreateInstance(handlerType.Namespace + "." + args[0], true); + + //获取实例类型 + Type type; + try + { + type = obj.GetType(); + } + catch + { + throw new Exception("无法在命名空间:" + handlerType.Namespace + "下找到类型:" + args[0]); + } + + //未添加WebExecuteAttribute特性的类将不被执行 + object[] attrs = type.GetCustomAttributes(true); + + bool canExecute = false; + IWebExecute iw; + foreach (object o in attrs) + { + //如果添加IWebExecuteableAttribute特性 + //则调用其PreExecuting方法 + iw = o as IWebExecute; + if (iw != null) iw.PreExecuting(); + else + { + //如果添加了WebExecuteableAttribute特性,则允许执行 + if (o as WebExecuteableAttribute != null) canExecute = true; + } + } + if (!canExecute) + { + context.Response.Write("此模块不允许被执行!请在需要执行的类名上添加WebExecuteable特性!"); + return; + } + + //获取方法,及方法上的IWebExecuteableAttribute特性, + //并调用起PreExecuting方法 + MethodInfo method = type.GetMethod(args[1], + BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); + IWebExecute[] execAttr = Array.ConvertAll(method.GetCustomAttributes(false), a => a as IWebExecute); + foreach (IWebExecute a in execAttr) a.PreExecuting(); + //执行方法 + + object returnObj; + + returnObj = method.GetParameters().Length != 0 && args.Length > 2 + ? method.Invoke(obj, task.Substring(args[0].Length + args[1].Length + 2).Split(',')) + : method.Invoke(obj, null); + + + //如国返回String类型或值类型则输出到页面 + bool isValueType = returnObj is ValueType; + if (isValueType || method.ReturnType == typeof (string)) + context.Response.Write((isValueType ? returnObj : returnObj ?? "").ToString()); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs new file mode 100644 index 0000000..66f6eb1 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/HttpMethodAttribute.cs @@ -0,0 +1,68 @@ +/* + * Name : HttpMethodAttribute + * Author : OPS newmin + * Date : 2010/10/26 10:05 + */ + +using System; +using System.Web; + +namespace JR.DevFw.Framework.Web.unused.Handler +{ + /// <summary> + /// Post请求特性 + /// </summary> + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class GetAttribute : Attribute, IWebExecute + { + /// <summary> + /// 允许刷新的时间戳,在时间内将停止请求 + /// </summary> + public int AllowRefreshMillliSecond { get; set; } + + /// <summary> + /// 刷新错误提示信息 + /// </summary> + public string RefreshErrorMessage { get; set; } + + public void PreExecuting() + { + if (AllowRefreshMillliSecond > 0) + { + TimeSpan t = new TimeSpan(0, 0, 0, 0, AllowRefreshMillliSecond); + object lastAccessDate = HttpContext.Current.Session["_lastaccessdatetime"]; + if (lastAccessDate == null) HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 + else + { + bool isTimeout = DateTime.Now - (DateTime) lastAccessDate < t; //是否超过指定的再次请求时间 + HttpContext.Current.Session["_lastaccessdatetime"] = DateTime.Now; //保存时间 + if (isTimeout) + { + HttpContext.Current.Response.Write(String.IsNullOrEmpty(RefreshErrorMessage) + ? "Service unavailable!" + : RefreshErrorMessage); + HttpContext.Current.Response.End(); + } + } + } + } + } + + /// <summary> + /// Post请求特性 + /// </summary> + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] + public sealed class PostAttribute : GetAttribute, IWebExecute + { + void IWebExecute.PreExecuting() + { + //POST请求 + if (HttpContext.Current.Request.HttpMethod != "POST") + { + HttpContext.Current.Response.Write("请求非法"); + HttpContext.Current.Response.End(); + } + base.PreExecuting(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs new file mode 100644 index 0000000..b6bd624 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/IWebExecute.cs @@ -0,0 +1,19 @@ +/* + * name : IWebExecuteableAttribute + * author : Newmin + * date : 2010/11/05 + */ + +namespace JR.DevFw.Framework.Web.unused.Handler +{ + /// <summary> + /// 能被WebHandler(.ashx文件)执行的特性接口 + /// </summary> + public interface IWebExecute + { + /// <summary> + /// 在执行前触发此方法 + /// </summary> + void PreExecuting(); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs new file mode 100644 index 0000000..e535272 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/Handler/WebExecuteableAttribute.cs @@ -0,0 +1,19 @@ +/* + * name : WebExecuteAttribute + * author : OPS newmin + * Data : 09/20 2010 + * note : 添加此特性才能被ExecuteHandler用反射的方式调用 + */ + +using System; + +namespace JR.DevFw.Framework.Web.unused.Handler +{ + /// <summary> + /// 可通过页面请求执行类的操作 + /// </summary> + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public sealed class WebExecuteableAttribute : Attribute + { + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs new file mode 100644 index 0000000..85162a3 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpModuleBase.cs @@ -0,0 +1,51 @@ +/* + * file : HttpModuleBase + * author:OPS newmin + * createdate:2010/09/20 + */ + +using System; +using System.Web; + +namespace JR.DevFw.Framework.Web.unused.HttpModule +{ + public abstract class HttpModuleBase : IHttpModule + { + public void Dispose() + { + } + + public void Init(HttpApplication context) + { + //Bind Events + context.BeginRequest += BeginRequest; + context.Error += ProcessError; + context.EndRequest += EndRequest; + } + + /// <summary> + /// 开始处理请求时发生 + /// </summary> + /// <param name="sender">HttpApplication</param> + /// <param name="e"></param> + public abstract void BeginRequest(object sender, EventArgs e); + + /// <summary> + /// 当发生错误的时候处理 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + public virtual void ProcessError(object sender, EventArgs e) + { + } + + /// <summary> + /// 当请求结束时候发生 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + public virtual void EndRequest(object sender, EventArgs e) + { + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs new file mode 100644 index 0000000..d6eca04 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/HttpModule/HttpReportModule.cs @@ -0,0 +1,42 @@ +/* + * file : HttpReportModule + * author:OPS newmin + * createdate:2010/09/20 + */ + +using System; +using System.Web; + +namespace JR.DevFw.Framework.Web.unused.HttpModule +{ + public class HttpReportModule : HttpModuleBase + { + public override void ProcessError(object sender, EventArgs e) + { + HttpContext context = (sender as HttpApplication).Context; + // 记录错误:文件保存在/Logs/error.log + // 以下情况会将错误日志保存在当前应用程序目录下 + // 1.errorReportUri为空 + // 2.web.config中未配置errorReportUri节点 + // 3.errorReportUri键值的domain与当前域一致且当前域不为虚拟目录 + // 其他情况将提交到errorReportUri + + if (ConfigurationDictionary.RecordError) + { + Exception ex = context.Server.GetLastError().InnerException; + string remoteuri = ConfigurationDictionary.ReportErrorUri ?? ""; + string domain = context.Request.Url.Host; + + if (String.IsNullOrEmpty(remoteuri) || + (remoteuri.IndexOf(domain) != -1 && HttpContext.Current.Request.ApplicationPath == "/")) + ExceptionProcess.TraceError(HttpContext.Current, ex); //当前程序域处理错误 + else + ExceptionProcess.PostRemoteError(HttpContext.Current, remoteuri, ex); //不同域或当前域的虚拟目录处理错误 + } + } + + public override void BeginRequest(object sender, EventArgs e) + { + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs b/src/core/J6.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs new file mode 100644 index 0000000..690e9d4 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Web/unused/Interface/ICompressionable.cs @@ -0,0 +1,12 @@ +using System.Web.UI; + +namespace JR.DevFw.Framework.Web.unused.Interface +{ + /// <summary> + /// 压缩网页接口 + /// </summary> + public interface ICompressionable + { + void Compression(HtmlTextWriter writer); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs b/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs new file mode 100644 index 0000000..f261236 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoObjectXml.cs @@ -0,0 +1,512 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Xml; + +namespace JR.DevFw.Framework.Xml.AutoObject +{ + /// <summary> + /// 对象属性 + /// </summary> + public struct XmlObjectProperty + { + private string key; + private string name; + private string descript; + + /// <summary> + /// 属性键 + /// </summary> + public string Key + { + get { return key; } + } + + /// <summary> + /// 属性对应的名称 + /// </summary> + public string Name + { + get { return name; } + } + + public string Descript + { + get { return descript; } + } + + public XmlObjectProperty(string key, string name) + { + this.key = key; + this.name = name; + this.descript = ""; + } + + public XmlObjectProperty(string key, string name, string descript) + { + this.key = key; + this.name = name; + this.descript = descript; + } + } + + /// <summary> + /// XmlObject特性 + /// </summary> + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] + public class XmlObjectAttribute : Attribute + { + public string Name { get; set; } + public string Descript { get; set; } + + public XmlObjectAttribute(string name, string description) + { + this.Name = name; + this.Descript = description; + } + } + + + /// <summary> + /// XmlObject + /// </summary> + public class XmlObject + { + private string key; + private string name; + private string descript; + + /// <summary> + /// 属性键 + /// </summary> + public string Key + { + get { return key; } + } + + /// <summary> + /// 属性对应的名称 + /// </summary> + public string Name + { + get { return name; } + } + + /// <summary> + /// 描述/值 + /// </summary> + public string Descript + { + get { return descript; } + } + + public XmlObject(string key, string name, string descript) + { + this.key = key; + this.name = name; + this.descript = descript; + } + + public XmlObjectProperty[] Properties { get; set; } + + /// <summary> + /// 转换为Json + /// </summary> + /// <returns></returns> + public string ToJson() + { + StringBuilder sb = new StringBuilder(); + sb.Append("{'key':'") + .Append(this.key.Replace("'", "\\'")) + .Append("','name':'") + .Append((this.name ?? "").Replace("'", "\\'")) + .Append("','descript':'") + .Append((this.descript ?? "").Replace("'", "\\'")) + .Append("','properties':"); + + //添加属性 + if (this.Properties == null || this.Properties.Length == 0) + { + sb.Append("[]"); + } + else + { + int i = 0; + + sb.Append("["); + + foreach (XmlObjectProperty pro in this.Properties) + { + if (i++ != 0) + { + sb.Append(","); + } + sb.Append("{'key':'") + .Append(pro.Key.Replace("'", "\\'")) + .Append("','name':'") + .Append((pro.Name ?? "").Replace("'", "\\'")) + .Append("','descript':'") + .Append((pro.Descript ?? "").Replace("'", "\\'")) + .Append("'}"); + } + + sb.Append("]"); + } + + sb.Append("}"); + + return sb.ToString(); + } + + /// <summary> + /// 将对象列表转换为json + /// </summary> + /// <param name="objects"></param> + /// <returns></returns> + public static string ToJson(IEnumerable<XmlObject> objects) + { + StringBuilder sb = new StringBuilder(); + int i = 0; + + sb.Append("["); + + foreach (XmlObject obj in objects) + { + if (i++ != 0) + { + sb.Append(","); + } + sb.Append(obj.ToJson()); + } + + sb.Append("]"); + + return sb.ToString(); + } + } + + + /// <summary> + /// XmlObject特性 + /// </summary> + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = false)] + public class XmlObjectPropertyAttribute : Attribute + { + public string Name { get; set; } + public string Descript { get; set; } + + public XmlObjectPropertyAttribute(string name) + { + this.Name = name; + } + + public XmlObjectPropertyAttribute(string name, string descript) + { + this.Name = name; + this.Descript = descript; + } + } + + public class AutoObjectXml + { + private string filePath; + private XmlDocument xd; + private XmlNode rootNode; + + public AutoObjectXml(string filePath) + { + this.filePath = filePath; + + if (!File.Exists(this.filePath)) + { + File.Create(filePath).Dispose(); + const string initData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<objects>\r\n</objects>"; + + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(this.filePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + + using (TextReader tr = new StreamReader(this.filePath)) + { + xd = new XmlDocument(); + //this.xmlContent = tr.ReadToEnd(); + xd.LoadXml(tr.ReadToEnd()); + + XmlNode xnode = xd.SelectSingleNode("//objects"); + if (xnode == null) + { + throw new NotSupportedException("XML文件中不包含objects节点"); + } + + this.rootNode = xnode; + tr.Dispose(); + } + } + + + /// <summary> + /// 获取Objects根节点 + /// </summary> + /// <returns></returns> + private XmlNode __GetObjectsNode() + { + XmlNode xnode = xd.SelectSingleNode("//objects"); + if (xnode == null) + { + throw new NotSupportedException("XML文件中不包含objects节点"); + } + return xnode; + } + + /// <summary> + /// 插入对象到objects节点 + /// </summary> + /// <param name="key"></param> + /// <param name="name"></param> + /// <param name="descript"></param> + /// <param name="properties"></param> + /// <returns></returns> + public bool InsertObjectNode(string key, string name, string descript, params XmlObjectProperty[] properties) + { + if (rootNode.SelectSingleNode(String.Format("object[@key='{0}']", key)) != null) return false; //已经存在属性 + XmlNode tempNode; + XmlNode node = xd.CreateElement("object"); + XmlAttribute attr = xd.CreateAttribute("key"); + + //add Key + attr.Value = key; + node.Attributes.Append(attr); + + //add Name + attr = xd.CreateAttribute("name"); + attr.Value = name; + node.Attributes.Append(attr); + + //add Descript + tempNode = xd.CreateElement("descript"); + XmlCDataSection cdd = xd.CreateCDataSection(descript); + tempNode.AppendChild(cdd); + node.AppendChild(tempNode); + + XmlNode attrNode = xd.CreateElement("properties"); + + foreach (XmlObjectProperty obj in properties) + { + //add Property + tempNode = xd.CreateElement("property"); + attr = xd.CreateAttribute("key"); + attr.Value = obj.Key; + tempNode.Attributes.Append(attr); + + attr = xd.CreateAttribute("name"); + attr.Value = obj.Name; + tempNode.Attributes.Append(attr); + + if (!String.IsNullOrEmpty(obj.Descript)) + { + cdd = xd.CreateCDataSection(obj.Descript); + tempNode.AppendChild(cdd); + } + + attrNode.AppendChild(tempNode); + } + node.AppendChild(attrNode); + + //add object + rootNode.AppendChild(node); + + + return true; + } + + /// <summary> + /// 从dll读取并插入,对象需指定XmlObject特性,属性可选XmlObjectProperty特性 + /// </summary> + /// <param name="dllPath"></param> + /// <param name="checkNameSpace"></param> + public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute, string checkNameSpace) + { + if (!File.Exists(dllPath)) throw new FileNotFoundException(); + Assembly ass = Assembly.LoadFile(dllPath); + bool ckNs = checkNameSpace != null; //是否从指定的命名空间加载 + Type[] types = ass.GetTypes(); + foreach (Type t in types) + { + if (ckNs && !t.Namespace.StartsWith(checkNameSpace)) + { + continue; + } + + this.InsertFromType(t, includeNoProperyAttribute); + } + } + + /// <summary> + /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 + /// </summary> + /// <param name="dllPath"></param> + /// <param name="checkNameSpace"></param> + public void InsertFromDLL(string dllPath, string checkNameSpace) + { + this.InsertFromDLL(dllPath, false, checkNameSpace); + } + + /// <summary> + /// 从dll读取并插入,对象需指定XmlObject特性,属性必须XmlObjectProperty特性 + /// </summary> + /// <param name="dllPath"></param> + /// <param name="checkNameSpace"></param> + public void InsertFromDLL(string dllPath, bool includeNoProperyAttribute) + { + this.InsertFromDLL(dllPath, includeNoProperyAttribute, null); + } + + + private delegate void MemberXmlObjectHandler(MemberInfo member); + + public void InsertFromType(Type type, bool includeNoProperyAttribute) + { + Type t = type; + //加载类型 + object[] objs = t.GetCustomAttributes(typeof (XmlObjectAttribute), false); + if (objs.Length == 0) return; + + XmlObjectAttribute xa = (XmlObjectAttribute) objs[0]; + XmlObjectPropertyAttribute xpa = null; + IList<XmlObjectProperty> list = new List<XmlObjectProperty>(); + object[] objAtt; + XmlObjectProperty pro; + + MemberXmlObjectHandler handler = (p) => + { + objAtt = p.GetCustomAttributes(typeof (XmlObjectPropertyAttribute), true); + xpa = objAtt.Length == 0 ? null : (XmlObjectPropertyAttribute) objAtt[0]; + + if (xpa != null || includeNoProperyAttribute) + { + list.Add(new XmlObjectProperty( + p.Name, + xpa == null || xpa.Name == null ? p.Name : xpa.Name, + xpa == null || xpa.Name == null ? "" : xpa.Descript) + ); + } + }; + + + foreach (PropertyInfo p in t.GetProperties(BindingFlags.Public | BindingFlags.Instance)) + { + handler(p); + } + + foreach (MethodInfo p in t.GetMethods(BindingFlags.Public | BindingFlags.Instance)) + { + handler(p); + } + + this.InsertObjectNode(t.Name, xa.Name ?? t.Name, xa.Descript ?? "", list.ToArray()); + } + + /// <summary> + /// 删除指定前缀的对象 + /// </summary> + /// <param name="prefix"></param> + public void RemoveObjects(string prefix) + { + XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); + foreach (XmlNode x in list) + { + if (x.Attributes["key"].Value.StartsWith(prefix)) + { + this.rootNode.RemoveChild(x); + } + } + } + + /// <summary> + /// 删除所有对象 + /// </summary> + public void RemoveAllObjects() + { + XmlNodeList list = this.rootNode.SelectNodes("descendant::object"); + foreach (XmlNode x in list) + { + this.rootNode.RemoveChild(x); + } + } + + public XmlObject GetObject(string objectKey) + { + XmlNode node = this.rootNode.SelectSingleNode(String.Format("object[@key='{0}']", objectKey)); + if (node == null) return null; + + IList<XmlObjectProperty> prolist = new List<XmlObjectProperty>(); + XmlObject obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, + node.SelectSingleNode("descript").InnerText); + XmlNodeList proNodes = node.SelectNodes("properties/property"); + foreach (XmlNode n in proNodes) + { + prolist.Add(new XmlObjectProperty( + n.Attributes["key"].Value, + n.Attributes["name"].Value, + n.InnerText)); + } + + obj.Properties = prolist.ToArray(); + + return obj; + } + + /// <summary> + /// 获取所有对象 + /// </summary> + /// <returns></returns> + public IEnumerable<XmlObject> GetObjects() + { + IList<XmlObjectProperty> prolist = new List<XmlObjectProperty>(); + + XmlNodeList nodes = this.rootNode.SelectNodes("object"); + XmlObject obj; + XmlNodeList proNodes; + foreach (XmlNode node in nodes) + { + obj = new XmlObject(node.Attributes["key"].Value, node.Attributes["name"].Value, + node.SelectSingleNode("descript").InnerText); + proNodes = node.SelectNodes("properties/property"); + + prolist.Clear(); + foreach (XmlNode n in proNodes) + { + prolist.Add(new XmlObjectProperty( + n.Attributes["key"].Value, + n.Attributes["name"].Value, + n.InnerText)); + } + obj.Properties = prolist.ToArray(); + + yield return obj; + } + } + + /// <summary> + /// 保存到文件中 + /// </summary> + public void Flush() + { + /* + using (TextWriter tr = new StreamWriter(this.filePath)) + { + tr.Write(xmlContent); + tr.Flush(); + tr.Dispose(); + }*/ + + xd.Save(this.filePath); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs b/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs new file mode 100644 index 0000000..e9e4f55 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/AutoXmlTest.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Web; + +namespace JR.DevFw.Framework.Xml.AutoObject +{ + public class AutoXmlTest + { + public static void Test() + { + Xml.AutoObject.AutoObjectXml ax = + new Xml.AutoObject.AutoObjectXml(AppDomain.CurrentDomain.BaseDirectory + "templet/template_dict.xml"); + + ax.RemoveAllObjects(); + + //ax.RemoveObjects("Pro"); + + ax.InsertObjectNode("Temp", "客户", "", new XmlObjectProperty("ID", "客户编号", "1234\nretyt\nfdsf"), + new XmlObjectProperty("RealName", "真实姓名")); + ax.InsertFromDLL(AppDomain.CurrentDomain.BaseDirectory + "bin/spc.dll", null); + ax.Flush(); + + HttpResponse response = HttpContext.Current.Response; + + response.Write(XmlObjectDoc.DocStyleSheet); + + //显示单个对象文档 + // XmlObject obj = ax.GetObject("Temp"); + // response.Write(XmlObjectDoc.GetGrid(obj,-1)); + + + IList<XmlObject> objects = new List<XmlObject>(ax.GetObjects()); + + response.Write("<h1>Objects</h1><ul>"); + for (int i = 0; i < objects.Count; i++) + { + response.Write("<li><a href=\"#object_"); + response.Write(objects[i].Key); + response.Write("\">"); + response.Write(objects[i].Name); + response.Write("("); + response.Write(objects[i].Key); + response.Write(")"); + response.Write("</a></li>"); + } + + response.Write("</ul>"); + + for (int i = 0; i < objects.Count; i++) + { + response.Write(XmlObjectDoc.GetGrid(objects[i], i + 1)); + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs b/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs new file mode 100644 index 0000000..11e69ec --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Xml/AutoObject/XmlObjectDoc.cs @@ -0,0 +1,50 @@ +using System.Text; + +namespace JR.DevFw.Framework.Xml.AutoObject +{ + public static class XmlObjectDoc + { + public const string DocStyleSheet = @"<style type=""text/css""> + .ui-xmldoc{margin:20px;font-size:14px; } + .ui-xmdoc h2{font-size:18px;border-bottom:solid 1px #d0d0d0;padding-bottom:10px;} + .ui-xmldoc table{background:#d0d0d0;width:100%;line-height:23px;font-size:12px;} + .ui-xmldoc table th{background:#e0e0e0;padding:5px 10px;text-align:left;} + .ui-xmldoc table td{background:#f5f5f5;padding:0 10px;border:solid 1px #fff;border-top:none;} + .ui-xmldoc table td.key{width:100px;} + .ui-xmldoc table td.name{width:200px;} + </style>"; + + public static string GetGrid(XmlObject obj, int index) + { + const string tpl = @"<div class=""ui-xmldoc"" id=""object_%object.key%""> + <h2><a href=""#%object.key%"">%object.index%%object.name%<span class=""key"">(%object.key%)</span></a></h2> + <p class=""descript"">描述:%object.descript%</p> + <p class=""prop""> + <table cellspacing=""1"" cellpadding=""0""> + <tr><th class=""key"">属性键:</th><th class=""name"">属性名称:</th><th class=""descript"">备注:</th></tr> + %object.prop% + </table> + </p> + </div>"; + + + StringBuilder sb = new System.Text.StringBuilder(); + + if (obj.Properties != null) + { + foreach (XmlObjectProperty p in obj.Properties) + { + sb.Append("<tr><td class=\"key\">").Append(p.Key) + .Append("</td><td class=\"name\">").Append(p.Name).Append("</td><td class=\"descript\">") + .Append(p.Descript).Append(" </td></tr>"); + } + } + + return tpl.Replace("%object.key%", obj.Key) + .Replace("%object.index%", index < 1 ? "" : index.ToString()) + .Replace("%object.name%", obj.Name) + .Replace("%object.descript%", obj.Descript.Replace("\n", "<br />")) + .Replace("%object.prop%", sb.ToString()); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Framework/Xml/XmlDocHelper.cs b/src/core/J6.DevFw.Core/Framework/Xml/XmlDocHelper.cs new file mode 100644 index 0000000..f65b9c6 --- /dev/null +++ b/src/core/J6.DevFw.Core/Framework/Xml/XmlDocHelper.cs @@ -0,0 +1,24 @@ +/* + * XMLDocument + * + * Copyright 2010 OPS,All rights reseved! + * date : 2010/11/22 + */ + +using System; +using System.Xml; + +namespace JR.DevFw.Framework.Xml +{ + [Obsolete] + public class XmlDocHelper + { + public static object ReadAttributeValue(string xmlPath, string xpath) + { + XmlDocument x = new XmlDocument(); + x.Load(xmlPath); + XmlNode xn = x.SelectSingleNode(xpath); + return xn.Value; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/FwCtx.cs b/src/core/J6.DevFw.Core/FwCtx.cs new file mode 100644 index 0000000..1a333b7 --- /dev/null +++ b/src/core/J6.DevFw.Core/FwCtx.cs @@ -0,0 +1,75 @@ +using System; +using System.IO; +using JR.DevFw.Framework; + + +namespace JR.DevFw +{ + /// <summary> + /// 开发框架上下文对象 + /// </summary> + public static class FwCtx + { + private static string _physicalPath; + private static Variable _variables; + private static VersionSet _version; + private static int _platformId; + + /// <summary> + /// 物理路径 + /// </summary> + public static string PhysicalPath + { + get { return _physicalPath ?? (_physicalPath = AppDomain.CurrentDomain.BaseDirectory); } + } + + /// <summary> + /// 变量设置 + /// </summary> + public static Variable Variables + { + get { return _variables ?? (_variables = new Variable()); } + } + + /// <summary> + /// 版本 + /// </summary> + public static VersionSet Version + { + get { return _version ?? (_version = new VersionSet()); } + } + + /// <summary> + /// 是否运行在非Windows平台 + /// </summary> + /// <returns></returns> + public static bool Mono() + { + //获取平台编号 + if (_platformId == 0) + { + _platformId = (Int32) Environment.OSVersion.Platform; + } + + return _platformId == 4 || _platformId == 6 || _platformId == 128; + } + + /// <summary> + /// 从默认的位置加载程序集 + /// </summary> + public static void ResolveAssemblies() + { + InnerAppDomainResolver.Resolve(null); + } + + + /// <summary> + /// + /// </summary> + /// <param name="assemblyFullPath"></param> + public static void ResolveAssembliesByPath(String assemblyFullPath) + { + InnerAppDomainResolver.Resolve(assemblyFullPath); + } + } +} diff --git a/src/core/J6.DevFw.Core/JR.DevFw.Core.csproj b/src/core/J6.DevFw.Core/JR.DevFw.Core.csproj new file mode 100644 index 0000000..b5bf531 --- /dev/null +++ b/src/core/J6.DevFw.Core/JR.DevFw.Core.csproj @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{44E05D6C-5B0A-453A-913F-00124D1BF435}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>JR.DevFw</RootNamespace> + <AssemblyName>JR.DevFw.Core</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile> + </TargetFrameworkProfile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\dist\dll\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile>..\..\..\dist\dll\JR.DevFw.Core.xml</DocumentationFile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <SignAssembly>true</SignAssembly> + </PropertyGroup> + <PropertyGroup> + <AssemblyOriginatorKeyFile>j6.devfw.snk</AssemblyOriginatorKeyFile> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.configuration" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Runtime.Serialization" /> + <Reference Include="System.Web" /> + <Reference Include="System.Xml" /> + <Reference Include="WindowsBase"> + <Private>True</Private> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="Framework\InnerAppDomainResolver.cs" /> + <Compile Include="Framework\IO\FileEncoder.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Framework\Security\AESCryptoImpl.cs" /> + <Compile Include="Variable.cs" /> + <Compile Include="FwCtx.cs" /> + <Compile Include="Version.cs" /> + <Compile Include="Extensions\ILEmit.cs" /> + <Compile Include="Framework\Automation\EntityForm.cs" /> + <Compile Include="Framework\StringCreatorHandler.cs" /> + <Compile Include="Framework\IndexOfHandler.cs" /> + <Compile Include="Framework\Interface\ICallable.cs" /> + <Compile Include="Utils\IoUtil.cs" /> + <Compile Include="Framework\AssemblyResolve.cs" /> + <Compile Include="Framework\JsonSerializer.cs" /> + <Compile Include="Framework\LogFile.cs" /> + <Compile Include="Framework\Security\Md5CryptoImpl.cs" /> + <Compile Include="Framework\SettingFile.cs" /> + <Compile Include="Framework\Extensions\CollectionExtensions.cs" /> + <Compile Include="Extensions\StreamExtensions.cs" /> + <Compile Include="Framework\Extensions\StringExtensions.cs" /> + <Compile Include="Framework\Extensions\TExtensions.cs" /> + <Compile Include="Framework\Extensions\HttpExtensions.cs" /> + <Compile Include="Framework\Graphic\GraphicsHelper.cs" /> + <Compile Include="Framework\Graphic\ImageGraphicsHandler.cs" /> + <Compile Include="Framework\Graphic\ImageSizeMode.cs" /> + <Compile Include="Framework\Graphic\WatermarkPosition.cs" /> + <Compile Include="Framework\TaskBox\HttpSync\HttpSimpleRequest.cs" /> + <Compile Include="Framework\TaskBox\HttpSync\HttpTaskClient.cs" /> + <Compile Include="Framework\TaskBox\ITask.cs" /> + <Compile Include="Framework\TaskBox\ITaskBoxStorage.cs" /> + <Compile Include="Framework\TaskBox\ITaskClient.cs" /> + <Compile Include="Framework\TaskBox\ITaskLogProvider.cs" /> + <Compile Include="Framework\TaskBox\Toolkit\TaskBoxDbStorage.cs" /> + <Compile Include="Framework\TaskBox\TaskBox.cs" /> + <Compile Include="Framework\TaskBox\Task.cs" /> + <Compile Include="Framework\TaskBox\Toolkit\TaskLogProvider.cs" /> + <Compile Include="Framework\TaskBox\TaskMessage.cs" /> + <Compile Include="Framework\TaskBox\TaskMessageParser.cs" /> + <Compile Include="Framework\TaskBox\TaskQueue.cs" /> + <Compile Include="Framework\TaskBox\Toolkit\TaskService.cs" /> + <Compile Include="Framework\TaskBox\TaskState.cs" /> + <Compile Include="Framework\TaskBox\TaskStateChangedBehavior.cs" /> + <Compile Include="Utils\JsonParser.cs" /> + <Compile Include="Framework\Net\FtpClient.cs" /> + <Compile Include="Framework\Net\HttpClient.cs" /> + <Compile Include="Framework\Text\ChineseSpell.cs" /> + <Compile Include="MicroTemplateEngine.cs" /> + <Compile Include="Utils\MultiThreadProcess.cs" /> + <Compile Include="Utils\ZipUtility.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Framework\Web\Cache\CacheUtil.cs" /> + <Compile Include="Framework\Web\UI\VerifyCode.cs" /> + <Compile Include="Framework\Web\unused\HttpModule\HttpModuleBase.cs" /> + <Compile Include="Framework\Web\unused\HttpModule\HttpReportModule.cs" /> + <Compile Include="Framework\Web\unused\Interface\ICompressionable.cs" /> + <Compile Include="Framework\Web\UI\FileUpload.cs" /> + <Compile Include="Framework\Web\UI\UploadFileInfo.cs" /> + <Compile Include="Framework\Web\UI\Page.cs"> + <SubType>ASPXCodeBehind</SubType> + </Compile> + <Compile Include="Framework\Web\UI\UrlPager.cs" /> + <Compile Include="Framework\Web\unused\ConfigurationDictionary.cs" /> + <Compile Include="Framework\Web\unused\ExceptionProcess.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Framework\Service\IService.cs" /> + <Compile Include="Framework\Service\ServiceManager.cs" /> + <Compile Include="Framework\Web\unused\Handler\ExecuteHandler.cs" /> + <Compile Include="Framework\Web\unused\Handler\HttpMethodAttribute.cs" /> + <Compile Include="Framework\Web\unused\Handler\IWebExecute.cs" /> + <Compile Include="Framework\Web\unused\Handler\WebExecuteableAttribute.cs" /> + <Compile Include="Framework\Xml\XmlDocHelper.cs" /> + <Compile Include="Framework\Xml\AutoObject\AutoObjectXml.cs" /> + <Compile Include="Framework\Xml\AutoObject\AutoXmlTest.cs" /> + <Compile Include="Framework\Xml\AutoObject\XmlObjectDoc.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="Framework\Web\UI\FileUpload\demo\1.htm" /> + <Content Include="Framework\Web\UI\FileUpload\fileupload.js" /> + </ItemGroup> + <ItemGroup> + <None Include="j6.devfw.snk" /> + <None Include="Framework\Service\Service.config"> + <SubType>Designer</SubType> + </None> + <None Include="Framework\Web\UI\Pager\pager.go" /> + </ItemGroup> + <ItemGroup /> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/MicroTemplateEngine.cs b/src/core/J6.DevFw.Core/MicroTemplateEngine.cs new file mode 100644 index 0000000..7d62f50 --- /dev/null +++ b/src/core/J6.DevFw.Core/MicroTemplateEngine.cs @@ -0,0 +1,131 @@ +/* +* Copyright(C) 2010-2012 S1N1.COM +* +* File Name : SimpleTemplateEngine +* Author : Administrator +* Create : 2012/10/26 23:49:52 +* Description : +* +*/ + +using System; +using System.Reflection; +using System.Text.RegularExpressions; + +namespace JR.DevFw +{ + /// <summary> + /// 微型模板引擎 + /// </summary> + public sealed class MicroTemplateEngine + { + /// <summary> + /// 包含方法的类型实例 + /// </summary> + private readonly object _classInstance; + + public MicroTemplateEngine(object classInstance) + { + this._classInstance = classInstance; + } + + /// <summary> + /// 数据列正则 + /// </summary> + private static Regex fieldRegex = new Regex("{([A-Za-z\\[\\]0-9_\u4e00-\u9fa5]+)}"); + + /// <summary> + /// 执行解析模板内容 + /// </summary> + /// <param name="instance">包含标签方法的类的实例</param> + /// <param name="html"></param> + /// <returns></returns> + public static string Execute(object instance, string html) + { + string resultTxt = html; //返回结果 + + const string tagPattern = "\\$([A-Za-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; + const string paramPattern = "\\s*'([^']+)',*|\\s*(?!=')([^,]+),*"; + + Regex tagRegex = new Regex(tagPattern); //方法正则 + Regex paramRegex = new Regex(paramPattern); //参数正则 + + Type type = instance.GetType(); + MethodInfo method; + string tagName; + object[] parameters; + Type[] parameterTypes; //参数类型数组 + MatchCollection paramMcs; + + resultTxt = tagRegex.Replace(resultTxt, m => + { + tagName = m.Groups[1].Value; + //获得参数 + paramMcs = paramRegex.Matches(m.Groups[2].Value); + parameters = new object[paramMcs.Count]; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parameters.Length]; + for (int i = 0; i < parameterTypes.Length; i++) + { + parameterTypes[i] = typeof (String); + } + method = type.GetMethod( + tagName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + //如果方法存在则执行返回结果,否则返回原始值 + if (method == null) + { + return m.Value; + } + else + { + //数字参数 + string intParamValue; + //则给参数数组赋值 + for (int i = 0; i < paramMcs.Count; i++) + { + intParamValue = paramMcs[i].Groups[2].Value; + if (intParamValue != String.Empty) + { + parameters[i] = intParamValue; + } + else + { + parameters[i] = paramMcs[i].Groups[1].Value; + } + } + + //执行方法并返回结果 + return method.Invoke(instance, parameters).ToString(); + } + }); + return resultTxt; + } + + /// <summary> + /// 执行解析模板内容 + /// </summary> + /// <param name="html"></param> + /// <returns></returns> + public string Execute(string html) + { + return Execute(this._classInstance, html); + } + + /// <summary> + /// 替换列中的模板字符 + /// </summary> + /// <param name="format"></param> + /// <param name="func"></param> + /// <returns></returns> + public string FieldTemplate(string format, Func<string, string> func) + { + return fieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.Core/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ed85be8 --- /dev/null +++ b/src/core/J6.DevFw.Core/Properties/AssemblyInfo.cs @@ -0,0 +1,45 @@ +using System.Reflection; +using System.Runtime.InteropServices; +using System.Security; + +//公钥: 4c8227bc503db3c5 +// 4C8227BC503DB3C5 + +// 有关程序集的常规信息通过下列属性集 +// 控制。更改这些属性值可修改 +// 与程序集关联的信息。 + +[assembly:AllowPartiallyTrustedCallers] +[assembly: SecurityRules(SecurityRuleSet.Level1)] +[assembly: AssemblyTitle("JR.Devfw - .NET平台开发框架")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("To2.Net")] +[assembly: AssemblyProduct("devfw")] +[assembly: AssemblyCopyright("Copyright © to2.net 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 属性设置为 true。 + +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID + +[assembly: Guid("bfe2a768-6248-4749-90d9-6b3a754dc758")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("1.0.1")] +[assembly: AssemblyFileVersion("1.0.1")] \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Utils/IoUtil.cs b/src/core/J6.DevFw.Core/Utils/IoUtil.cs new file mode 100644 index 0000000..02a8b36 --- /dev/null +++ b/src/core/J6.DevFw.Core/Utils/IoUtil.cs @@ -0,0 +1,131 @@ +using System; +using System.IO; + +namespace JR.DevFw.Utils +{ + /// <summary> + /// + /// </summary> + public static class IoUtil + { + /// <summary> + /// 计算文件的 MD5 值 + /// </summary> + /// <param name="fileName">要计算 MD5 值的文件名和路径</param> + /// <returns>MD5 值16进制字符串</returns> + public static string GetFileMd5(string fileName) + { + return HashFile(fileName, "md5"); + } + + /// <summary> + /// 计算文件的 sha1 值 + /// </summary> + /// <param name="fileName">要计算 sha1 值的文件名和路径</param> + /// <returns>sha1 值16进制字符串</returns> + public static string GetFileSha1(string fileName) + { + return HashFile(fileName, "sha1"); + } + + /// <summary> + /// 计算文件的哈希值 + /// </summary> + /// <param name="fileName">要计算哈希值的文件名和路径</param> + /// <param name="algName">算法:sha1,md5</param> + /// <returns>哈希值16进制字符串</returns> + private static string HashFile(string fileName, string algName) + { + if (!System.IO.File.Exists(fileName)) + return string.Empty; + + System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, + System.IO.FileAccess.Read); + byte[] hashBytes = HashData(fs, algName); + fs.Close(); + return ByteArrayToHexString(hashBytes); + } + + /// <summary> + /// 计算哈希值 + /// </summary> + /// <param name="stream">要计算哈希值的 Stream</param> + /// <param name="algName">算法:sha1,md5</param> + /// <returns>哈希值字节数组</returns> + private static byte[] HashData(System.IO.Stream stream, string algName) + { + System.Security.Cryptography.HashAlgorithm algorithm; + if (algName == null) + { + throw new ArgumentNullException("algName 不能为 null"); + } + if (string.Compare(algName, "sha1", true) == 0) + { + algorithm = System.Security.Cryptography.SHA1.Create(); + } + else + { + if (string.Compare(algName, "md5", true) != 0) + { + throw new Exception("algName 只能使用 sha1 或 md5"); + } + algorithm = System.Security.Cryptography.MD5.Create(); + } + return algorithm.ComputeHash(stream); + } + + /// <summary> + /// 字节数组转换为16进制表示的字符串 + /// </summary> + private static string ByteArrayToHexString(byte[] buf) + { + return BitConverter.ToString(buf).Replace("-", ""); + } + + + + /// <summary> + /// 设置目录权限 + /// </summary> + /// <param name="dirPath"></param> + public static void SetDirCanWrite(string dirPath) + { + DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, dirPath)); + if (dir.Exists) + { + if ((dir.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) + { + dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; + } + } + else + { + Directory.CreateDirectory(dir.FullName).Create(); + } + } + + /// <summary> + /// 设置目录隐藏 + /// </summary> + /// <param name="dirPath"></param> + public static void SetDirHidden(string dirPath) + { + if (!FwCtx.Mono()) + { + DirectoryInfo dir = new DirectoryInfo(String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, dirPath)); + if (!dir.Exists) + { + Directory.CreateDirectory(dir.FullName).Create(); + dir.Attributes = dir.Attributes & FileAttributes.Hidden; + } + else + { + if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.ReadOnly) + { + dir.Attributes = dir.Attributes & FileAttributes.Hidden; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Utils/JsonParser.cs b/src/core/J6.DevFw.Core/Utils/JsonParser.cs new file mode 100644 index 0000000..ac69690 --- /dev/null +++ b/src/core/J6.DevFw.Core/Utils/JsonParser.cs @@ -0,0 +1,215 @@ +// +// Copyright (C) 2007-2008 S1N1.COM,All rights reseved. +// +// Project: OPSoft.JSON +// FileName : JsonAnalyzer.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2011/11/26 21:14:30 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Utils +{ + /// <summary> + /// JSON分析器 + /// </summary> + public class JsonAnalyzer + { + private string jsonString; + private IList<string> keys = new List<string>(); + + public JsonAnalyzer(string json) + { + if (String.IsNullOrEmpty(json)) + { + this.jsonString = "{}"; + } + else + { + this.jsonString = json; + + //将字符中的键存到列表中 + const string pattern = "[\\{,]([^:]+):"; + MatchCollection mc = Regex.Matches(this.jsonString, pattern); + + foreach (Match m in mc) + { + keys.Add(m.Groups[1].Value); + } + } + } + + /// <summary> + /// 键的集合 + /// </summary> + public string[] Keys + { + get + { + string[] arr = new string[keys.Count]; + keys.CopyTo(arr, 0); + return arr; + } + } + + + /// <summary> + /// 获取指定键的值 + /// </summary> + /// <param name="key"></param> + /// <returns></returns> + public string GetValue(string key) + { + // Regex reg = new Regex(key+String.Intern(":'*(?<value>[^'|,|\\}]+)")); + Regex reg = new Regex(key + String.Intern(":(?<value>'[^']+|(?!')[^,|}]+)")); + if (reg.IsMatch(jsonString)) + { + return reg.Match(jsonString).Groups["value"].Value.Replace("'", String.Empty); + } + return String.Empty; + } + + /// <summary> + /// 设置指定键的值并返回新的JSON字符串,如果不存在键,则返回空 + /// </summary> + public string SetValue(string key, string value) + { + string newJsonString = String.Empty; + + Regex reg = new Regex(key + String.Intern(":(?<reff>'*)(?<value>[^'|,|\\}]+)")); + if (reg.IsMatch(jsonString)) + { + if (reg.Match(jsonString).Groups["reff"].Value == "'") + { + value = "'" + value; + } + newJsonString = reg.Replace(jsonString, String.Format("{0}:{1}", key, value)); + + //更新到数据 + jsonString = newJsonString; + } + + return newJsonString; + } + + /// <summary> + /// 添加新的键值,如果存在键返回false + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <returns></returns> + public bool Append(string key, string value) + { + Regex reg = new Regex(key + String.Intern(":(?<reff>'*)(?<value>[^'|,|\\}]+)")); + if (reg.IsMatch(jsonString)) return false; + else + { + StringBuilder sb = new StringBuilder(); + sb.Append(this.jsonString.Substring(0, this.jsonString.LastIndexOf('}'))); + if (sb.Length != 1) + { + sb.Append(","); + } + + sb.Append(key).Append(":'").Append(value).Append("'") + .Append("}"); + + keys.Add(key); //添加到KEYS集合 + this.jsonString = sb.ToString(); //更新到数据 + + return true; + } + } + + public IDictionary<string, string> ConvertToDictionary() + { + return ConvertToDictionary(jsonString); + } + + /// <summary> + /// 将JSON转为字典 + /// </summary> + /// <param name="jsonString"></param> + /// <returns></returns> + public static IDictionary<string, string> ConvertToDictionary(string jsonString) + { + IDictionary<string, string> dict = new Dictionary<string, string>(); + const string pattern = "(?<key>(?!\\{|,|')[^:]+):(?<value>'[^']+|(?!')[^,|}]+)"; //非{和'以及,开头,匹配键和值 + Regex reg = new Regex(pattern); + if (reg.IsMatch(jsonString)) + { + MatchCollection mc = reg.Matches(jsonString); + foreach (Match m in mc) + { + dict.Add(m.Groups["key"].Value, m.Groups["value"].Value.Replace("'", String.Empty)); + } + } + return dict; + } + + /// <summary> + /// 将Hashtable转为Json字符串 + /// </summary> + /// <param name="hash"></param> + /// <returns></returns> + public static string ToJson(Hashtable hash) + { + StringBuilder sb = new StringBuilder(); + var fieldCount = hash.Count; + int i = 0; + sb.Append("{"); + foreach (object key in hash.Keys) + { + sb.Append("\"").Append(key).Append("\":"); + if ((hash[key] as string) != null) + { + if (hash[key].ToString().StartsWith("[")) + { + sb.Append(hash[key].ToString()); + } + else + { + sb.Append("\"").Append(hash[key].ToString()).Append("\""); + } + } + else + { + if (hash[key].ToString() == "True" || hash[key].ToString() == "False") + { + sb.Append(hash[key].ToString().ToLower()); + } + else + { + sb.Append(hash[key].ToString()); + } + } + if (++i < fieldCount) + { + sb.Append(","); + } + } + + sb.Append("}"); + + return sb.ToString(); + } + + /// <summary> + /// 返回对象的JSON表示 + /// </summary> + /// <returns></returns> + public override string ToString() + { + return jsonString; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Utils/MultiThreadProcess.cs b/src/core/J6.DevFw.Core/Utils/MultiThreadProcess.cs new file mode 100644 index 0000000..7df068f --- /dev/null +++ b/src/core/J6.DevFw.Core/Utils/MultiThreadProcess.cs @@ -0,0 +1,119 @@ +/* +* Copyright(C) 2010-2012 S1N1.COM +* +* File Name : MultiThreadProcess.cs +* Author : Administrator +* Create : 2012/11/11 20:02:29 +* Description : +* +*/ + + +using System; +using System.Collections.Generic; +using System.Threading; + +namespace JR.DevFw.Utils +{ + /// + /// 多线程处理事件 + /// + public delegate void ThreadProcessHandler<T>(T t); + + /// + /// 多线程处理 + /// + public class MultiThreadProcess + { + /// + /// 线程数量 + /// + private int threadCount; + + /// + /// 线程堆栈,用于轮询线程 + /// + private Stack<int> threadStack; + + /// + /// 线程集合 + /// + private Thread[] threads; + + private bool isAlive = true; + + /// + /// 是否活动中 + /// + public bool IsAlive + { + get { return isAlive; } + } + + public MultiThreadProcess(int threads, int processTimes) + { + this.threadCount = threads; + this.threads = new Thread[threads]; + + //初始化线程堆栈 + this.threadStack = new Stack<int>(processTimes); + for (int i = processTimes; i > 0; i--) + { + this.threadStack.Push(i); + } + } + + /// <summary> + /// 开始执行线程 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="handler"></param> + /// <param name="t"></param> + public void Start<T>(ThreadProcessHandler<T> handler, T t) + { + while (this.isAlive) + { + for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) + { + if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) + { + threads[i] = new Thread(() => + { + lock (this.threadStack) + { + if (this.threadStack.Count > 0) + { + this.threadStack.Pop(); + handler(t); + } + } + }); + + threads[i].Name = String.Format("thread{0}", i.ToString()); + threads[i].Start(); + } + } + + if (this.threadStack.Count == 0) + { + do + { + bool hasThreadRunning = false; + for (int i = 0; i < threadCount; i++) + { + if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) + hasThreadRunning = true; + } + if (!hasThreadRunning) + { + this.isAlive = false; + } + } while (this.isAlive); + + //设置线程任务完成 + this.isAlive = false; + } + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Utils/ZipUtility.cs b/src/core/J6.DevFw.Core/Utils/ZipUtility.cs new file mode 100644 index 0000000..60ed79a --- /dev/null +++ b/src/core/J6.DevFw.Core/Utils/ZipUtility.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Packaging; +using System.Web; + +//(WindowsBase.dll) + +namespace JR.DevFw.Utils +{ + public class ZipUtility + { + /// <summary> + /// Extract a container Zip. NOTE: container must be created as Open Packaging Conventions (OPC) specification + /// </summary> + /// <param name="folderName">The folder to extract the package to</param> + /// <param name="compressedFileName">The package file</param> + /// <param name="overrideExisting">override existing files</param> + /// <returns></returns> + public static bool UncompressFile(string folderName, string compressedFileName, bool overrideExisting) + { + bool result = false; + try + { + if (!File.Exists(compressedFileName)) + { + return result; + } + + DirectoryInfo directoryInfo = new DirectoryInfo(folderName); + if (!directoryInfo.Exists) + directoryInfo.Create(); + + using (Package package = Package.Open(compressedFileName, FileMode.Open, FileAccess.Read)) + { + foreach (PackagePart packagePart in package.GetParts()) + { + ExtractPart(packagePart, folderName, overrideExisting); + } + } + + result = true; + } + catch (Exception e) + { + throw new Exception("Error unzipping file " + compressedFileName, e); + } + + return result; + } + + private static void ExtractPart(PackagePart packagePart, string targetDirectory, bool overrideExisting) + { + string stringPart = targetDirectory + HttpUtility.UrlDecode(packagePart.Uri.ToString()).Replace('\\', '/'); + + if (!Directory.Exists(Path.GetDirectoryName(stringPart))) + Directory.CreateDirectory(Path.GetDirectoryName(stringPart)); + + if (!overrideExisting && File.Exists(stringPart)) + return; + using (FileStream fileStream = new FileStream(stringPart, FileMode.Create)) + { + packagePart.GetStream().CopyTo(fileStream); + } + } + + /// <summary> + /// Add a folder along with its subfolders to a Package + /// </summary> + /// <param name="folderName">The folder to add</param> + /// <param name="compressedFileName">The package to create</param> + /// <param name="overrideExisting">Override exsisitng files</param> + /// <returns></returns> + public static bool PackageFolder(string folderName, string compressedFileName, bool overrideExisting) + { + if (folderName.EndsWith(@"\")) + folderName = folderName.Remove(folderName.Length - 1); + bool result = false; + if (!Directory.Exists(folderName)) + { + return result; + } + + if (!overrideExisting && File.Exists(compressedFileName)) + { + return result; + } + try + { + using (Package package = Package.Open(compressedFileName, FileMode.Create)) + { + IEnumerable<string> fileList = null; + // Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); + + + foreach (string fileName in fileList) + { + //The path in the package is all of the subfolders after folderName + string pathInPackage; + pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, string.Empty) + "/" + + Path.GetFileName(fileName); + + Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative)); + PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", + CompressionOption.Maximum); + using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) + { + fileStream.CopyTo(packagePartDocument.GetStream()); + } + } + } + result = true; + } + catch (Exception e) + { + throw new Exception("Error zipping folder " + folderName, e); + } + + return result; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Core/Variable.cs b/src/core/J6.DevFw.Core/Variable.cs new file mode 100644 index 0000000..fc81362 --- /dev/null +++ b/src/core/J6.DevFw.Core/Variable.cs @@ -0,0 +1,30 @@ + +namespace JR.DevFw +{ + /// <summary> + /// + /// </summary> + public class Variable + { + + /// <summary> + /// 临时目录 + /// </summary> + public string TempPath = "tmp/"; + + /// <summary> + /// 资源路径 + /// </summary> + public string AssetsPath = "public/assets/"; + + /// <summary> + /// 插件默认图标 + /// </summary> + public string PLUGIN_DEFAULT_ICON = "public/assets/images/app_icon.png"; + + /// <summary> + /// 程序集路径 + /// </summary> + public string AssemblyPath = "public/lib"; + } +} diff --git a/src/core/J6.DevFw.Core/Version.cs b/src/core/J6.DevFw.Core/Version.cs new file mode 100644 index 0000000..c2499a8 --- /dev/null +++ b/src/core/J6.DevFw.Core/Version.cs @@ -0,0 +1,43 @@ + + +using System; + +namespace JR.DevFw +{ + /// <summary> + /// + /// </summary> + public class VersionSet + { + private string _versionStr; + + /// <summary> + /// 主要版本号 + /// </summary> + public string MajorVersion = "0"; + + /// <summary> + /// 次要版本号 + /// </summary> + public string MinorVersion = "0"; + + /// <summary> + /// 修订版本号 + /// </summary> + public string BuildNumber = "1"; + + + /// <summary> + /// 获取版本号 + /// </summary> + /// <returns></returns> + public string GetVersion() + { + return this._versionStr ?? + (this._versionStr = + String.Format("{0}.{1}.{2}", this.MajorVersion, this.MinorVersion, this.BuildNumber)); + + + } + } +} diff --git a/src/core/AtNet.DevFw.Core/atnet.devfw.snk b/src/core/J6.DevFw.Core/j6.devfw.snk similarity index 100% rename from src/core/AtNet.DevFw.Core/atnet.devfw.snk rename to src/core/J6.DevFw.Core/j6.devfw.snk diff --git a/src/core/AtNet.DevFw.Data/AtNet.DevFw.Data.csproj.user b/src/core/J6.DevFw.Data/AtNet.DevFw.Data.csproj.user similarity index 100% rename from src/core/AtNet.DevFw.Data/AtNet.DevFw.Data.csproj.user rename to src/core/J6.DevFw.Data/AtNet.DevFw.Data.csproj.user diff --git a/src/core/AtNet.DevFw.Data/ClassDiagram1.cd b/src/core/J6.DevFw.Data/ClassDiagram1.cd similarity index 100% rename from src/core/AtNet.DevFw.Data/ClassDiagram1.cd rename to src/core/J6.DevFw.Data/ClassDiagram1.cd diff --git a/src/core/J6.DevFw.Data/DataBaseAccess.cs b/src/core/J6.DevFw.Data/DataBaseAccess.cs new file mode 100644 index 0000000..4f39e85 --- /dev/null +++ b/src/core/J6.DevFw.Data/DataBaseAccess.cs @@ -0,0 +1,673 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : DataBaseAccess.cs +// Date : 8/19/2011 +// Author : +// +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Text.RegularExpressions; +using JR.DevFw.Data.Extensions; + +namespace JR.DevFw.Data +{ + public class DataBaseAccess + { + private readonly IDataBase dbFactory; + private static readonly Regex procedureRegex = new Regex("\\s"); + private IList<String> _totalSqls; + private bool _totalOpen; + private int _commandTimeout = 30000; + + /// <summary> + /// ʵݿʶ + /// </summary> + /// <param name="type"></param> + /// <param name="connectionString"></param> + public DataBaseAccess(DataBaseType type, string connectionString) + { + if (connectionString.IndexOf("$ROOT$") != -1) + { + connectionString = connectionString.Replace("$ROOT$", AppDomain.CurrentDomain.BaseDirectory); + } + + this.DbType = type; + + switch (type) + { + case DataBaseType.OLEDB: + dbFactory = new OleDbFactory(connectionString); + break; + case DataBaseType.SQLite: + dbFactory = new SQLiteFactory(connectionString); + break; + case DataBaseType.MonoSQLite: + dbFactory = new MonoSQLiteFactory(connectionString); + break; + case DataBaseType.SQLServer: + dbFactory = new SqlServerFactory(connectionString); + break; + case DataBaseType.MySQL: + dbFactory = new MySqlFactory(connectionString); + break; + } + } + + /// <summary> + /// ִʱʱ䣬ĬΪ30000(30) + /// </summary> + public int CommandTimeout + { + get { return this._commandTimeout; } + set + { + if (value <= 2000) + { + throw new ArgumentException("Чֵ"); + } + this._commandTimeout = value; + } + } + + private DbConnection CreateOpenedConnection() + { + DbConnection connection = dbFactory.GetConnection(); + connection.Open(); + return connection; + } + + /// <summary> + /// ͳ + /// </summary> + public void StartNewTotal() + { + if (!_totalOpen) + _totalOpen = true; + if (_totalSqls == null) + _totalSqls = new List<String>(); + else + _totalSqls.Clear(); + } + + public IList<string> GetTotalSqls() + { + if (this._totalSqls == null) + throw new Exception("ʹStartNewTotal()ʼͳ"); + return this._totalSqls; + } + + private void AddTotalSql(string sql) + { + _totalSqls.Add(sql); + } + + + /// <summary> + /// ݿ + /// </summary> + public DataBaseType DbType { get; private set; } + + /// <summary> + /// ݿ + /// </summary> + public IDataBase DataBaseAdapter + { + get { return this.dbFactory; } + } + + /// <summary> + /// һ + /// </summary> + /// <param name="name"></param> + /// <param name="value"></param> + /// <returns></returns> + public DbParameter NewParameter(string name, object value) + { + return dbFactory.CreateParameter(name, value); + } + + private DbCommand CreateCommand(string sql) + { + DbCommand cmd = this.dbFactory.CreateCommand(sql); + cmd.CommandTimeout = this._commandTimeout; + return cmd; + } + + /// <summary> + /// һ,ָΪ + /// </summary> + /// <param name="name"></param> + /// <param name="value"></param> + /// <param name="direction"></param> + /// <returns></returns> + public DbParameter NewParameter(string name, object value, ParameterDirection direction) + { + DbParameter parameter = dbFactory.CreateParameter(name, value); + parameter.Direction = direction; + return parameter; + } + + /// <summary> + /// ִвѯ + /// </summary> + /// <param name="commandText"></param> + /// <returns></returns> + public int ExecuteNonQuery(string commandText) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + return ExecuteNonQuery(commandText, parameters); + } + + /// <summary> + /// ִвѯ + /// </summary> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + /// <returns></returns> + public int ExecuteNonQuery(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + + int result = 0; + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; + + cmd.Connection = conn; + if (parameters != null) cmd.Parameters.AddRange(parameters); + + result = cmd.ExecuteNonQuery(); + } + return result; + } + + /// <summary> + /// زѯĵһеһֵ + /// </summary> + /// <param name="commandText"></param> + /// <returns></returns> + public object ExecuteScalar(string commandText) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + return ExecuteScalar(commandText, parameters); + } + + /// <summary> + /// زѯĵһеһֵ + /// </summary> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + /// <returns></returns> + public object ExecuteScalar(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + object obj; + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; + + if (parameters != null) cmd.Parameters.AddRange(parameters); + + obj = cmd.ExecuteScalar(); + } + return obj; + } + + /// <summary> + /// ȡDataReaderе + /// </summary> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + public DbDataReader ExecuteReader(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) ? CommandType.Text : CommandType.StoredProcedure; + + if (parameters != null) cmd.Parameters.AddRange(parameters); + + return cmd.ExecuteReader(); + } + } + + /// <summary> + /// ȡDataReaderе + /// </summary> + /// <param name="commandText"></param> + /// <param name="func"></param> + public void ExecuteReader(string commandText, DataReaderFunc func) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + ExecuteReader(commandText, func, parameters); + } + + /// <summary> + /// ȡDataReaderе + /// </summary> + /// <param name="commandText"></param> + /// <param name="func"></param> + /// <param name="parameters"></param> + public void ExecuteReader(string commandText, DataReaderFunc func, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(commandText); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(commandText) + ? CommandType.Text + : CommandType.StoredProcedure; + + if (parameters != null) cmd.Parameters.AddRange(parameters); + + func(cmd.ExecuteReader()); + } + } + + /// <summary> + /// ݿжȡݲڴ + /// </summary> + /// <param name="commandText"></param> + /// <returns></returns> + public DataSet GetDataSet(string commandText) + { + if (this._totalOpen) this.AddTotalSql(commandText); + DbParameter[] parameters = null; + return GetDataSet(commandText, parameters); + } + + /// <summary> + /// ݿжȡݲڴ + /// </summary> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + /// <returns></returns> + public DataSet GetDataSet(string commandText, params DbParameter[] parameters) + { + if (this._totalOpen) this.AddTotalSql(commandText); + + DataSet ds = new DataSet(); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, commandText); + + + if (parameters != null) + { + adapter.SelectCommand.Parameters.AddRange(parameters); + //ԶжT-SQLǴ洢 + adapter.SelectCommand.CommandType = procedureRegex.IsMatch(commandText) + ? CommandType.Text + : CommandType.StoredProcedure; + } + + adapter.Fill(ds); + } + return ds; + } + + public T ToEntity<T>(string commandText) where T : new() + { + return ToEntity<T>(commandText, null); + } + + + /// <summary> + /// ѯתΪʵ + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + /// <returns></returns> + public T ToEntity<T>(string commandText, params DbParameter[] parameters) where T : new() + { + if (this._totalOpen) this.AddTotalSql(commandText); + + T t = default(T); + ExecuteReader(commandText, (reader) => + { + if (reader.HasRows) + { + t = reader.ToEntity<T>(); + } + }, parameters); + return t; + } + + /// <summary> + /// DataReaderݲתʵ༯ + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="commandText"></param> + /// <returns></returns> + public IList<T> ToEntityList<T>(string commandText) where T : new() + { + return ToEntityList<T>(commandText, null); + } + + /// <summary> + /// DataReaderݲתʵ༯ + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + /// <returns></returns> + public IList<T> ToEntityList<T>(string commandText, params DbParameter[] parameters) where T : new() + { + if (this._totalOpen) this.AddTotalSql(commandText); + + IList<T> list = null; + + ExecuteReader(commandText, (reader) => + { + if (reader.HasRows) + { + list = reader.ToEntityList<T>(); + } + }, parameters); + + return list ?? new List<T>(); + } + + /// <summary> + /// ִнű(Mysql) + /// </summary> + /// <param name="sql">sqlű</param> + /// <param name="delimiter">ָɴݿ</param> + /// <returns></returns> + public int ExecuteScript(string sql, string delimiter) + { + int result = -1; + using (DbConnection conn = this.CreateOpenedConnection()) + { + result = dbFactory.ExecuteScript(conn, sql, delimiter); + } + + return result; + } + + #region µ᷽ʽ + + /// <summary> + /// ִвѯ + /// </summary> + /// <param name="sqls"></param> + /// <returns></returns> + public int ExecuteNonQuery(params SqlQuery[] sqls) + { + if (this._totalOpen) + foreach (SqlQuery sql in sqls) + this.AddTotalSql(sql.Sql); + + if (sqls.Length == 0) throw new ArgumentOutOfRangeException("sqls", "SQLEntityӦָһ!"); + + DbTransaction trans = null; + DbCommand cmd; + int result = 0; + + DbConnection conn = this.CreateOpenedConnection(); + + //Ӳ + trans = conn.BeginTransaction(); + + + SqlEntityHandler sh = s => + { + //Command, + cmd = this.CreateCommand(s.Sql); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(s.Sql) + ? CommandType.Text + : CommandType.StoredProcedure; + + //Ӳ + if (s.Parameters != null) cmd.Parameters.AddRange(s.ToParams(dbFactory)); + + //ʹ + + cmd.Transaction = trans; + + result += cmd.ExecuteNonQuery(); + }; + + try + { + foreach (SqlQuery sql in sqls) + { + sh(sql); + } + + //ύ + + trans.Commit(); + } + catch (DbException ex) + { + //ִ,ع + trans.Rollback(); + + //׳쳣 + throw ex; + } + finally + { + //ر + conn.Close(); + } + + + return result; + } + + /// <summary> + /// ȡDataReaderе + /// </summary> + /// <param name="sql"></param> + /// <param name="func"></param> + public void ExecuteReader(SqlQuery sql, DataReaderFunc func) + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(sql.Sql); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(sql.Sql) ? CommandType.Text : CommandType.StoredProcedure; + + if (sql.Parameters != null) + cmd.Parameters.AddRange(sql.ToParams(dbFactory)); + + func(cmd.ExecuteReader()); + } + } + + + /// <summary> + /// ݿжȡݲڴ + /// </summary> + /// <param name="sql"></param> + /// <returns></returns> + public DataSet GetDataSet(SqlQuery sql) + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + DataSet ds = new DataSet(); + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbDataAdapter adapter = dbFactory.CreateDataAdapter(conn, sql.Sql); + + if (sql.Parameters != null) + { + adapter.SelectCommand.Parameters.AddRange(sql.ToParams(dbFactory)); + //ԶжT-SQLǴ洢 + adapter.SelectCommand.CommandType = procedureRegex.IsMatch(sql.Sql) + ? CommandType.Text + : CommandType.StoredProcedure; + } + + adapter.Fill(ds); + } + + return ds; + } + + + /// <summary> + /// زѯĵһеһֵ + /// </summary> + /// <param name="sql"></param> + /// <returns></returns> + public object ExecuteScalar(SqlQuery sql) + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + + object obj; + using (DbConnection conn = this.CreateOpenedConnection()) + { + DbCommand cmd = this.CreateCommand(sql.Sql); + cmd.Connection = conn; + + //ԶжT-SQLǴ洢 + cmd.CommandType = procedureRegex.IsMatch(sql.Sql) + ? CommandType.Text + : CommandType.StoredProcedure; + + if (sql.Parameters != null) cmd.Parameters.AddRange(sql.ToParams(dbFactory)); + obj = cmd.ExecuteScalar(); + } + + return obj; + } + + /// <summary> + /// ѯתΪʵ + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="commandText"></param> + /// <param name="parameters"></param> + /// <returns></returns> + public T ToEntity<T>(SqlQuery sql) where T : new() + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + + T t = default(T); + this.ExecuteReader(sql, (reader) => + { + if (reader.HasRows) + { + t = reader.ToEntity<T>(); + } + }); + + + return t; + } + + /// <summary> + /// DataReaderݲתʵ༯ + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="commandText"></param> + /// <returns></returns> + public IList<T> ToEntityList<T>(SqlQuery sql) where T : new() + { + if (this._totalOpen) this.AddTotalSql(sql.Sql); + + IList<T> list = null; + + this.ExecuteReader(sql, (reader) => + { + if (reader.HasRows) + { + list = reader.ToEntityList<T>(); + } + }); + + return list ?? new List<T>(); + } + + #endregion + + #region Hashtableȡ + + public int ExecuteNonQuery(string commandText, Hashtable data) + { + var parameters = GetParametersFromHashTable(data); + return this.ExecuteNonQuery(commandText, parameters); + } + + public object ExecuteScalar(string commandText, Hashtable data) + { + return this.ExecuteScalar(commandText, this.GetParametersFromHashTable(data)); + } + + public void ExecuteReader(string commandText, Hashtable data, DataReaderFunc func) + { + this.ExecuteReader(commandText, func, this.GetParametersFromHashTable(data)); + } + + public DataSet GetDataSet(string commandText, Hashtable data) + { + return this.GetDataSet(commandText, this.GetParametersFromHashTable(data)); + } + + private DbParameter[] GetParametersFromHashTable(Hashtable data) + { + DbParameter[] parameters = new DbParameter[data.Keys.Count]; + + int i = 0; + foreach (DictionaryEntry d in data) + { + parameters[i++] = this.NewParameter("@" + d.Key, d.Value); + } + return parameters; + } + + #endregion + + /* + /// <summary> + /// ͷԴ + /// </summary> + public void Dispose() + { + if (conn!=null && conn.State != ConnectionState.Closed) + { + conn.Dispose(); + } + } + + ~DataBaseAccess() + { + this.Dispose(); + } + */ + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/DataBaseType.cs b/src/core/J6.DevFw.Data/DataBaseType.cs new file mode 100644 index 0000000..e66c0e3 --- /dev/null +++ b/src/core/J6.DevFw.Data/DataBaseType.cs @@ -0,0 +1,41 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : DataBaseType.cs +// Date : 8/19/2011 +// Author : +// +// + +namespace JR.DevFw.Data +{ + /// <summary> + /// ݿ + /// </summary> + public enum DataBaseType + { + SQLServer, + + /// <summary> + /// SQLiteݿ + /// </summary> + SQLite, + + /// <summary> + ///Mono SQLite + /// </summary> + MonoSQLite, + + /// <summary> + /// mysqlݿ + /// </summary> + MySQL, + + /// <summary> + /// Accessݿ + /// </summary> + OLEDB + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/DataDelegate.cs b/src/core/J6.DevFw.Data/DataDelegate.cs new file mode 100644 index 0000000..58d9d94 --- /dev/null +++ b/src/core/J6.DevFw.Data/DataDelegate.cs @@ -0,0 +1,29 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : ReadDataFunc.cs +// Date : 8/19/2011 +// Author : +// Modify: +// 2013-05-26 18:00 newmin [+]: SqlEntityHandler +// +// + +using System.Data.Common; + +namespace JR.DevFw.Data +{ + /// <summary> + /// ݶȡ + /// </summary> + /// <param name="reader"></param> + public delegate void DataReaderFunc(DbDataReader reader); + + /// <summary> + /// SQLʵ + /// </summary> + /// <param name="sql"></param> + public delegate void SqlEntityHandler(SqlQuery sql); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/DataUtility.cs b/src/core/J6.DevFw.Data/DataUtility.cs new file mode 100644 index 0000000..72629f7 --- /dev/null +++ b/src/core/J6.DevFw.Data/DataUtility.cs @@ -0,0 +1,72 @@ +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Data.Extensions +// FileName : ObjectExtensions.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2012/05/24 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using JR.DevFw.Data.Extensions; + +namespace JR.DevFw.Data +{ + /// <summary> + /// 数据实用辅助类 + /// </summary> + public static class DataUtility + { + /// <summary> + /// 转换DataTable为实体列表 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="table"></param> + /// <returns></returns> + public static IList<T> ConvertToEntityList<T>(DataTable table) where T : new() + { + return table.ToEntityList<T>(); + } + + /// <summary> + ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) + /// </summary> + public static IList<T> ConvertToEntityList<T>(DbDataReader reader) where T : new() + { + return reader.ToEntityList<T>(); + } + + public static T ConvertToEntity<T>(DataRow row) where T : new() + { + return row.ToEntity<T>(); + } + + /// <summary> + ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据) + /// </summary> + public static T ConvertToEntity<T>(DbDataReader reader) where T : new() + { + return reader.ToEntity<T>(); + } + + /// <summary> + /// 生成SQL语句参数对象数组 + /// </summary> + /// <typeparam name="T">实体类型</typeparam> + /// <param name="obj"></param> + /// <param name="db">数据库类型</param> + /// <param name="fields">字段,用空格隔开多个字段。参数名称需与字段名称一致!</param> + /// <returns></returns> + public static DbParameter[] GetDbParameter<T>(T obj, DataBaseType dbtype, String fields) + { + return obj.GetDbParameter(dbtype, fields); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Extensions/CLR_DataExtensions.cs b/src/core/J6.DevFw.Data/Extensions/CLR_DataExtensions.cs new file mode 100644 index 0000000..10b10fa --- /dev/null +++ b/src/core/J6.DevFw.Data/Extensions/CLR_DataExtensions.cs @@ -0,0 +1,24 @@ +using System; +using System.Data.Common; + +namespace JR.DevFw.Data.Extensions +{ + public static class CLR_DataExtensions + { + /// <summary> + /// 获取DataReader的列名 + /// </summary> + /// <param name="reader"></param> + /// <param name="lower"></param> + /// <returns></returns> + public static String[] GetColumns(this DbDataReader reader, bool lower) + { + String[] columns = new String[reader.FieldCount]; + for (int i = 0, j = columns.Length; i < j; i++) + { + columns[i] = lower ? reader.GetName(i).ToLower() : reader.GetName(i); + } + return columns; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Extensions/DataExtensions.cs b/src/core/J6.DevFw.Data/Extensions/DataExtensions.cs new file mode 100644 index 0000000..7517abb --- /dev/null +++ b/src/core/J6.DevFw.Data/Extensions/DataExtensions.cs @@ -0,0 +1,700 @@ +/* + * Copyright 2010 OPS,All rights reseved ! + * name : 泛型扩展 + * author : newmin + * date : 2010/11/08 07:31 + * + * 2010/12/13 00:30 newmin [!]:添加数据表字段为DBNull赋值给对象异常时候忽略的处理 + */ + +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Reflection; +using System.Text; + +namespace JR.DevFw.Data.Extensions +{ + public static class DataTableExtensions + { + /// <summary> + ///将当前DataTable中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) + /// </summary> + public static IList<T> ToEntityList<T>(this DataTable table) where T : new() + { + IList<T> list = new List<T>(); + T t; + object rowData; + + //获取各自的属性 + PropertyInfo[] props = GetTSetterProperties<T>(); + PropertyInfo _p; + + + int propertiesCount = -1, + //对应的属性数量 + hasFoundPropertiesCount = 0; //已经赋值的数量 + + + foreach (DataRow dr in table.Rows) + { + t = new T(); + foreach (DataColumn c in table.Columns) + { + _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); + if (_p == null) continue; + + rowData = dr[c.ColumnName]; + try + { + if (!(rowData is DBNull)) + { + if (_p.PropertyType.IsEnum) + { + if (rowData.GetType() == typeof (Int32)) + { + _p.SetValue(t, Convert.ToInt32(rowData), null); + } + else + { + _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); + } + } + else + { + _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); + } + } + } + catch + { + continue; + } + + //计算是否已经赋值完成 + if (++hasFoundPropertiesCount == propertiesCount) + { + hasFoundPropertiesCount = 0; + break; + } + } + list.Add(t); + + + //对所有属性赋值后跳出循环 + if (propertiesCount == -1) + { + propertiesCount = hasFoundPropertiesCount; + } + } + return list; + } + + /// <summary> + ///将DataReader中的行转换成实体集合(仅拷贝实体与数据表列名相同的数据) + /// </summary> + public static IList<T> ToEntityList<T>(this DbDataReader reader) where T : new() + { + IList<T> list = new List<T>(); + T t; + + //获取表结构 + DataTable schemaTable = reader.GetSchemaTable(); + + //表结构列名 + string columnName; + + //获取泛型的的所有属性 + PropertyInfo[] props = GetTSetterProperties<T>(); + PropertyInfo pro; + object rowData; + + int propertiesCount = -1, + //对应的属性数量 + hasFoundPropertiesCount = 0; //已经赋值的数量 + + while (reader.Read()) + { + t = new T(); + + foreach (DataRow dr in schemaTable.Rows) + { + columnName = dr["ColumnName"].ToString(); + pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); + if (pro == null) continue; + + //如果数据库中的值不为空,则赋值 + if (!((rowData = reader[columnName]) is DBNull)) + { + try + { + if (pro.PropertyType.IsEnum) + { + if (rowData.GetType() == typeof (Int32)) + { + pro.SetValue(t, Convert.ToInt32(rowData), null); + } + else + { + pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); + } + } + else + { + pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); + } + } + + catch + { + continue; + } + + //计算是否已经赋值完成 + if (++hasFoundPropertiesCount == propertiesCount) + { + hasFoundPropertiesCount = 0; + break; + } + } + } + list.Add(t); + + + //对所有属性赋值后跳出循环 + if (propertiesCount == -1) + { + propertiesCount = hasFoundPropertiesCount; + } + } + return list; + } + + + public static T ToEntity<T>(this DataRow row) where T : new() + { + T t = new T(); + CopyToEntity<T>(row, t); + return t; + } + + public static void CopyToEntity<T>(this DataRow row, T t) + { + //获取各自的属性 + PropertyInfo[] props = GetTSetterProperties<T>(); + PropertyInfo _p; + object rowData; + int enumValue; + + + foreach (DataColumn c in row.Table.Columns) + { + _p = Array.Find(props, a => string.Compare(a.Name, c.ColumnName, true) == 0); + rowData = row[c.ColumnName]; + + try + { + if (_p != null && !(rowData is DBNull)) + { + if (_p.PropertyType.IsEnum) + { + int.TryParse(rowData.ToString(), out enumValue); + + if (enumValue != 0) + { + _p.SetValue(t, enumValue, null); + } + else + { + _p.SetValue(t, Enum.Parse(_p.PropertyType, rowData.ToString()), null); + } + } + else + { + _p.SetValue(t, Convert.ChangeType(rowData, _p.PropertyType), null); + } + } + } + catch + { + continue; + } + } + } + + private static PropertyInfo[] GetTSetterProperties<T>() + { + return new List<PropertyInfo>(GetEnumeratorProperties<T>()).ToArray(); + } + + private static IEnumerable<PropertyInfo> GetEnumeratorProperties<T>() + { + PropertyInfo[] props = typeof (T).GetProperties(); + + foreach (PropertyInfo pro in props) + { + if (pro.CanWrite && pro.GetIndexParameters().Length == 0) + { + yield return pro; + } + } + } + + public static T ToEntity<T>(this DbDataReader reader) where T : new() + { + T t = new T(); + if (reader.Read()) + { + CopyToEntity<T>(reader, t); + } + return t; + } + + /// <summary> + ///将DataReader转换成实体(仅拷贝实体与数据表列名相同的数据,DataReader游标已经指向实体数据对应位置) + /// </summary> + public static void CopyToEntity<T>(this DbDataReader reader, T t) + { + //获取表结构 + DataTable schemaTable = reader.GetSchemaTable(); + + //表结构列名 + string columnName; + + //获取泛型的的所有属性 + PropertyInfo[] props = GetTSetterProperties<T>(); + PropertyInfo pro; + object rowData; + + + int propertiesCount = props.Length, + //属性数量 + hasFoundPropertiesCount = 0; //已经赋值的数量 + + + foreach (DataRow dr in schemaTable.Rows) + { + columnName = dr["ColumnName"].ToString(); + pro = Array.Find(props, a => string.Compare(a.Name, columnName, true) == 0); + if (pro == null) continue; + + + if (!((rowData = reader[columnName]) is DBNull)) + { + try + { + if (pro.PropertyType.IsEnum) + { + if (rowData.GetType() == typeof (Int32)) + { + pro.SetValue(t, Convert.ToInt32(rowData), null); + } + else + { + pro.SetValue(t, Enum.Parse(pro.PropertyType, rowData.ToString()), null); + } + } + else + { + pro.SetValue(t, Convert.ChangeType(rowData, pro.PropertyType), null); + } + } + catch + { + continue; + } + } + + if (++hasFoundPropertiesCount == propertiesCount) + { + hasFoundPropertiesCount = 0; + break; + } + } + } + + + /// <summary> + /// 生成SQL语句参数对象数组 + /// </summary> + /// <typeparam name="T">实体类型</typeparam> + /// <param name="obj"></param> + /// <param name="dbtype">数据库类型</param> + /// <param name="fields">字段,用空格隔开多个字段。参数名称需与字段名称一致!</param> + /// <returns></returns> + public static DbParameter[] GetDbParameter<T>(this T obj, DataBaseType dbtype, String fields) + { + DbParameter[] parameters; + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + + + type = obj.GetType(); + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + switch (dbtype) + { + case DataBaseType.MonoSQLite: + parameters = new Mono.Data.Sqlite.SqliteParameter[fieldCount]; + break; + + case DataBaseType.OLEDB: + parameters = new System.Data.OleDb.OleDbParameter[fieldCount]; + break; + case DataBaseType.SQLite: + parameters = new System.Data.SQLite.SQLiteParameter[fieldCount]; + break; + case DataBaseType.MySQL: + parameters = new MySql.Data.MySqlClient.MySqlParameter[fieldCount]; + break; + default: + case DataBaseType.SQLServer: + parameters = new System.Data.SqlClient.SqlParameter[fieldCount]; + break; + } + + + string fieldName; + + for (int i = 0; i < fieldCount; i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + + switch (dbtype) + { + case DataBaseType.MonoSQLite: + parameters[i] = new Mono.Data.Sqlite.SqliteParameter(String.Format("@{0}", fieldName), proValue); + break; + + case DataBaseType.SQLite: + parameters[i] = new System.Data.SQLite.SQLiteParameter(String.Format("@{0}", fieldName), + proValue); + break; + case DataBaseType.OLEDB: + parameters[i] = new System.Data.OleDb.OleDbParameter(String.Format("@{0}", fieldName), proValue); + break; + + case DataBaseType.MySQL: + parameters[i] = new MySql.Data.MySqlClient.MySqlParameter(String.Format("@{0}", fieldName), + proValue); + break; + + default: + case DataBaseType.SQLServer: + parameters[i] = new System.Data.SqlClient.SqlParameter(String.Format("@{0}", fieldName), + proValue); + break; + } + } + return parameters; + } + + /// <summary> + /// 生成SQL语句参数对象数组 + /// </summary> + /// <typeparam name="T">实体类型</typeparam> + /// <param name="obj"></param> + /// <param name="dbtype">数据库类型</param> + /// <param name="fields">字段,用空格隔开多个字段。参数名称需与字段名称一致!</param> + /// <returns></returns> + public static object[,] GetDbParameter<T>(this T obj, String fields) + { + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + object[,] parameters; + + type = obj.GetType(); + + bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); + + + if (autoPro) + { + PropertyInfo[] pros = + type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + parameters = new object[pros.Length, 2]; + + int i = 0; + foreach (PropertyInfo _pro in pros) + { + proValue = _pro.GetValue(obj, null); + parameters[i, 0] = String.Format("@{0}", _pro.Name); + parameters[i, 1] = proValue; + ++i; + } + } + else + { + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + + //参数数组 + parameters = new object[fieldCount, 2]; + + + string fieldName; + + for (int i = 0; i < parameters.GetLength(0); i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + + parameters[i, 0] = String.Format("@{0}", fieldName); + parameters[i, 1] = proValue; + } + } + return parameters; + } + + /// <summary> + /// 自动生成插入SQL语句 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="obj"></param> + /// <param name="fields"></param> + /// <param name="setValue"></param> + /// <returns></returns> + public static string AutoInsertSQL<T>(this T obj, string fields, bool setValue) + { + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); + + StringBuilder sb = new StringBuilder(); + + type = obj.GetType(); + + + sb.Append("INSERT INTO ").Append(type.Name).Append("("); + + + String temp1 = ""; + String temp2 = ""; + + if (autoPro) + { + PropertyInfo[] pros = + type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + int i = 0; + foreach (PropertyInfo _pro in pros) + { + if (i != 0) + { + temp1 += ","; + temp2 += ","; + } + temp1 += _pro.Name; + + if (setValue) + { + //获取对象的值 + proValue = _pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); + } + temp2 += proValue; + } + else + { + temp2 += "@" + _pro.Name; + } + ++i; + } + } + else + { + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + + + string fieldName; + + for (int i = 0; i < fieldCount; i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + + if (i != 0) + { + temp1 += ","; + temp2 += ","; + } + temp1 += fieldName; + + if (setValue) + { + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + temp2 += proValue; + } + else + { + temp2 += "@" + fieldName; + } + } + } + + + sb.Append(temp1).Append(")VALUES(").Append(temp2).Append(")"); + + return sb.ToString(); + } + + /// <summary> + /// 自动生成更新SQL语句 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="obj"></param> + /// <param name="fields"></param> + /// <param name="primaryKey"></param> + /// <param name="setValue"></param> + /// <returns></returns> + public static string AutoUpdateSQL<T>(this T obj, string fields, string primaryKey, bool setValue) + { + String[] filedArray; + Type type; + PropertyInfo pro; + object proValue; + bool autoPro = fields == "*" || String.IsNullOrEmpty(fields); + + StringBuilder sb = new StringBuilder(); + + type = obj.GetType(); + filedArray = fields.Split(' ', ','); + + //初始化参数数组 + int fieldCount = filedArray.Length; + + sb.Append("UPDATE ").Append(type.Name).Append(" SET "); + + + string fieldName; + + if (autoPro) + { + string primaryValue = String.Empty; + + PropertyInfo[] pros = + type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + int i = 0; + foreach (PropertyInfo _pro in pros) + { + //主键值 + if (String.Compare(_pro.Name, primaryKey, true) == 0) + { + proValue = _pro.GetValue(obj, null); + primaryValue = proValue.ToString(); + continue; + } + + if (i != 0) + { + sb.Append(","); + } + + sb.Append(_pro.Name).Append("="); + + if (setValue) + { + //获取对象的值 + proValue = _pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", _pro.Name)); + } + + sb.Append(proValue.ToString()); + } + else + { + sb.Append("@" + _pro.Name); + } + + ++i; + } + sb.Append(" WHERE ").Append(primaryKey).Append("=").Append(setValue ? primaryValue : "@" + primaryKey); + } + else + { + for (int i = 0; i < fieldCount; i++) + { + fieldName = filedArray[i]; + pro = type.GetProperty(fieldName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro == null) + { + throw new Exception(String.Format("对象不存在属性:{0}", fieldName)); + } + + if (i != 0) + { + sb.Append(","); + } + + sb.Append(fieldName).Append("="); + + if (setValue) + { + //获取对象的值 + proValue = pro.GetValue(obj, null); + if (proValue == null) + { + throw new Exception(String.Format("对象属性必须赋值,属性名称:{0}", fieldName)); + } + sb.Append(proValue); + } + else + { + sb.Append("@" + fieldName); + } + } + } + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/IDataBase.cs b/src/core/J6.DevFw.Data/IDataBase.cs new file mode 100644 index 0000000..76f7166 --- /dev/null +++ b/src/core/J6.DevFw.Data/IDataBase.cs @@ -0,0 +1,57 @@ +// +// +// Generated by StarUML(tm) C# Add-In +// +// @ Project : OPS.Data +// @ File Name : IDataBase.cs +// @ Date : 8/18/2011 +// @ Author : ���� +// +// + +using System.Data.Common; + +namespace JR.DevFw.Data +{ + public interface IDataBase + { + string ConnectionString { get; } + DbConnection GetConnection(); + DbParameter CreateParameter(string name, object value); + DbCommand CreateCommand(string sql); + DbDataAdapter CreateDataAdapter(DbConnection connection, string sql); + + /// <summary> + /// ִ�нű� + /// </summary> + /// <param name="sql">Sql�ű�</param> + /// <param name="delimiter">�ָ����Ĭ��Ϊ";"</param> + /// <returns></returns> + int ExecuteScript(DbConnection conn, string sql, string delimiter); + } + + public abstract class DataBaseFactory : IDataBase + { + protected string connectionString; + + public DataBaseFactory(string connectionString) + { + this.connectionString = connectionString; + } + + public string ConnectionString + { + get { return this.connectionString; } + } + + public abstract DbConnection GetConnection(); + + public abstract DbParameter CreateParameter(string name, object value); + + public abstract DbCommand CreateCommand(string commandText); + + public abstract DbDataAdapter CreateDataAdapter(DbConnection connection, string commandText); + + public abstract int ExecuteScript(DbConnection connection, string sql, string delimiter); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/ISqlFormat.cs b/src/core/J6.DevFw.Data/ISqlFormat.cs new file mode 100644 index 0000000..2206d68 --- /dev/null +++ b/src/core/J6.DevFw.Data/ISqlFormat.cs @@ -0,0 +1,32 @@ +/* + * 用户: newmin + * 日期: 2013/12/4 + * 时间: 6:26 + * + * 修改说明: + */ + +using System; + +namespace JR.DevFw.Data +{ + /// <summary> + /// 提供将字符串格式化的函数 + /// </summary> + public delegate string ISqlFormatHandler(string source); + + + public interface ISqlFormat + { + string Format(string source, params string[] objs); + } + + public class SqlFormat : ISqlFormat + { + public string Format(string source, params string[] objs) + { + if (objs.Length == 0) return source; + return String.Format(source, objs); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/JR.DevFw.Data.csproj b/src/core/J6.DevFw.Data/JR.DevFw.Data.csproj new file mode 100644 index 0000000..8e855c0 --- /dev/null +++ b/src/core/J6.DevFw.Data/JR.DevFw.Data.csproj @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{1D053644-937A-4D8E-9740-43823183A39A}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>JR.DevFw.Data</RootNamespace> + <AssemblyName>JR.DevFw.Data</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile>Client</TargetFrameworkProfile> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\dist\dll\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <PlatformTarget>AnyCPU</PlatformTarget> + <DocumentationFile>..\..\..\dist\dll\JR.DevFw.Data.xml</DocumentationFile> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <PropertyGroup> + <SignAssembly>true</SignAssembly> + </PropertyGroup> + <PropertyGroup> + <AssemblyOriginatorKeyFile>ops.data.snk</AssemblyOriginatorKeyFile> + </PropertyGroup> + <ItemGroup> + <Compile Include="DataBaseAccess.cs" /> + <Compile Include="Extensions\CLR_DataExtensions.cs" /> + <Compile Include="Extensions\DataExtensions.cs" /> + <Compile Include="DataUtility.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="IDataBase.cs" /> + <Compile Include="DataBaseType.cs" /> + <Compile Include="ISqlFormat.cs" /> + <Compile Include="OleDbFactory.cs" /> + <Compile Include="Orm\EntityHelper.cs" /> + <Compile Include="Orm\EntityManager.cs" /> + <Compile Include="Orm\FieldValueDectionary.cs" /> + <Compile Include="Orm\FieldValueException.cs" /> + <Compile Include="Orm\IEntityManager.cs" /> + <Compile Include="Orm\Mapping\DataColumnAttribute.cs" /> + <Compile Include="Orm\Mapping\DataMappingException.cs" /> + <Compile Include="Orm\Mapping\DataTableAttribute.cs" /> + <Compile Include="Orm\PriamaryKeyValueDictionary.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="DataDelegate.cs" /> + <Compile Include="SqlQuery.cs" /> + <Compile Include="SQLiteFactory.cs" /> + <Compile Include="SqlServerFactory.cs" /> + <Compile Include="MySqlFactory.cs" /> + <Compile Include="MonoSQLiteFactory.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="ClassDiagram1.cd" /> + <None Include="ops.data.snk" /> + </ItemGroup> + <ItemGroup> + <Reference Include="Mono.Data.Sqlite, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\dll\Mono.Data.Sqlite.dll</HintPath> + </Reference> + <Reference Include="mysql.data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\dll\mysql.data.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Data.SQLite"> + <HintPath>..\..\..\dll\System.Data.SQLite.dll</HintPath> + </Reference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +</Project> \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/MonoSQLiteFactory.cs b/src/core/J6.DevFw.Data/MonoSQLiteFactory.cs new file mode 100644 index 0000000..a56e8e8 --- /dev/null +++ b/src/core/J6.DevFw.Data/MonoSQLiteFactory.cs @@ -0,0 +1,49 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLiteFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +using System.Data.Common; +using Mono.Data.Sqlite; + +namespace JR.DevFw.Data +{ + public class MonoSQLiteFactory : DataBaseFactory + { + public MonoSQLiteFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new SqliteConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new SqliteParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new SqliteCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new SqliteDataAdapter(sql, (SqliteConnection) connection); + } + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/MySqlFactory.cs b/src/core/J6.DevFw.Data/MySqlFactory.cs new file mode 100644 index 0000000..92fbbae --- /dev/null +++ b/src/core/J6.DevFw.Data/MySqlFactory.cs @@ -0,0 +1,57 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLiteFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +using System.Data.Common; +using MySql.Data.MySqlClient; + +namespace JR.DevFw.Data +{ + public class MySqlFactory : DataBaseFactory + { + public MySqlFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new MySqlConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new MySqlParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new MySqlCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new MySqlDataAdapter(sql, (MySqlConnection) connection); + } + + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + MySqlScript script = new MySqlScript((MySqlConnection) conn, sql); + + if (!string.IsNullOrEmpty(delimiter)) + { + script.Delimiter = delimiter; + } + + return script.Execute(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/OleDbFactory.cs b/src/core/J6.DevFw.Data/OleDbFactory.cs new file mode 100644 index 0000000..90addae --- /dev/null +++ b/src/core/J6.DevFw.Data/OleDbFactory.cs @@ -0,0 +1,49 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : OLEDBFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +using System.Data.Common; +using System.Data.OleDb; + +namespace JR.DevFw.Data +{ + public class OleDbFactory : DataBaseFactory + { + public OleDbFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new OleDbConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new OleDbParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new OleDbCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new OleDbDataAdapter(sql, (OleDbConnection) connection); + } + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/EntityHelper.cs b/src/core/J6.DevFw.Data/Orm/EntityHelper.cs new file mode 100644 index 0000000..93a585d --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/EntityHelper.cs @@ -0,0 +1,22 @@ +using System; +using System.Reflection; +using JR.DevFw.Data.Orm.Mapping; + +namespace JR.DevFw.Data.Orm +{ + public static class EntityHelper + { + public static IEntityManager<Entity> GetManager<Entity>(DataBaseAccess db) where Entity : class + { + return new EntityManager<Entity>(db); + } + + public static PropertyInfo GetProperty<Entity>(string properName) where Entity : class + { + Type type = typeof (Entity); + PropertyInfo p = type.GetProperty(properName); + if (p == null) throw new DataMappingException("该实体:" + type.ToString() + "没有属性:" + properName); + return p; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/EntityManager.cs b/src/core/J6.DevFw.Data/Orm/EntityManager.cs new file mode 100644 index 0000000..40d6b34 --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/EntityManager.cs @@ -0,0 +1,293 @@ +/*------------------------------------------- + * Name : 实体操作管理 + * Author : Sonven + * Create : 2009-10-06 10:30 + * LastModify 2009-10-08 14:17 + * + * 1.修正Get方法如果没有返回数据行返回对象不为空 | Sonven 14:18 08/10 + * + * Note + * --------------------------------------------*/ + +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Linq; +using System.Reflection; +using System.Text; +using JR.DevFw.Data.Orm.Mapping; + +namespace JR.DevFw.Data.Orm +{ + /// <summary> + /// 实体管理器 + /// </summary> + /// <typeparam name="Entity"></typeparam> + public class EntityManager<Entity> : IEntityManager<Entity> where Entity : class + { + private string tableName; + private PropertyInfo[] properties; + private DataBaseAccess db; + + public EntityManager(DataBaseAccess db) + { + object[] attrs; //datatableAttribtue + attrs = typeof (Entity).GetCustomAttributes(typeof (DataTableAttribute), true); + if (attrs.Length == 0) throw new DataMappingException("此类未加上DataTable特性!"); + DataTableAttribute tb = attrs[0] as DataTableAttribute; + tableName = tb.Name; + + properties = typeof (Entity).GetProperties(); + + this.db = db; + } + + /// <summary> + /// 向数据库添加一个实体 + /// </summary> + /// <param name="entity"></param> + public void Insert(Entity entity) + { + ColumnAttribute col; //列 + + string filedStr = null; + string paramStr = null; + IList<DbParameter> parameters = new List<DbParameter>(); + object[] attrs; //columnAttributes + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + col = attrs[0] as ColumnAttribute; + if (col.AutoGeneried) continue; //如果为自动创建 + else + { + if (col.Name == null) col.Name = p.Name; + filedStr += col.Name + ","; + paramStr += "@" + col.Name + ","; + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); + } + } + db.ExecuteNonQuery("insert into " + tableName + " (" + filedStr.Remove(filedStr.Length - 1) + + ")values(" + paramStr.Remove(paramStr.Length - 1) + ")", + parameters.ToArray()); + } + + + public void Save(object primaryValue, Entity entity) + { + if (primaryValue == null) + { + Insert(entity); + return; + } + StringBuilder sb = new StringBuilder(300); + sb.Append("UPDATE " + tableName + " SET "); + + IList<DbParameter> parameters = new List<DbParameter>(); + string fieldName = null; + ColumnAttribute col; //列 + object[] attrs; + string primaryKey = "id"; + + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + col = attrs[0] as ColumnAttribute; + if (col.AutoGeneried) continue; //如果为自动创建 + else if (col.IsPrimaryKey) + { + primaryKey = col.Name; + continue; + } + else + { + if (col.Name == null) col.Name = p.Name; + sb.Append(col.Name).Append("=@").Append(col.Name).Append(","); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + col.Name, p.GetValue(entity, null))); + } + } + + sb.Remove(sb.Length - 1, 1); //删除最后的, + + + // fieldName = primaryField.GetFieldName(); + sb.Append(" where " + primaryKey + "=@" + primaryKey); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + primaryKey, primaryValue)); + db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); + } + + + /// <summary> + /// 根据主键删除数据库记录 + /// </summary> + /// <param name="field"></param> + public void Delete(FieldValueDictionary field) + { + string fieldName = field.GetFieldName(); + db.ExecuteNonQuery("delete from " + tableName + " where " + fieldName + + "=@" + fieldName, db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); + } + + /// <summary> + /// 更新实体 + /// </summary> + /// <param name="primaryField"></param> + /// <param name="fields"></param> + public void Update(PrimaryKeyValueDictionary primaryField, params FieldValueDictionary[] fields) + { + StringBuilder sb = new StringBuilder(300); + sb.Append("update " + tableName + " set "); + + IList<DbParameter> parameters = new List<DbParameter>(); + string fieldName = null; + foreach (FieldValueDictionary f in fields) + { + fieldName = f.GetFieldName(); + sb.Append(fieldName + "=@" + fieldName + ","); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, f.Value)); + } + sb.Remove(sb.Length - 1, 1); //删除最后的, + fieldName = primaryField.GetFieldName(); + sb.Append(" where " + fieldName + "=@" + fieldName); + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, primaryField.Value)); + + db.ExecuteNonQuery(sb.ToString(), parameters.ToArray()); + } + + + /// <summary> + /// 根据主键获取单个实体 + /// </summary> + /// <param name="primaryField"></param> + /// <returns></returns> + public Entity Get(PrimaryKeyValueDictionary primaryField) + { + string fieldName = primaryField.GetFieldName(); + string sql = "SELECT TOP 1 * FROM " + tableName + + " WHERE " + fieldName + "=@" + fieldName; + + Entity obj = null; + ColumnAttribute attr; + Type type = typeof (Entity); + Assembly ass = type.Assembly; + + + db.ExecuteReader(new SqlQuery(sql, new object[,] + { + {"@" + fieldName, primaryField.Value} + }), rd => + { + object[] attrs; //columnAttributes + while (rd.Read()) + { + obj = ass.CreateInstance(type.ToString(), true) as Entity; + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + attr = attrs[0] as ColumnAttribute; + p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], + p.PropertyType), null); + } + break; + } + }); + + return obj; + } + + public Entity Get(FieldValueDictionary field) + { + string fieldName = field.GetFieldName(); + string sql = "SELECT TOP 1 * FROM " + tableName + + " WHERE " + fieldName + "=@" + fieldName; + + Entity obj = null; + ColumnAttribute attr; + Type type = typeof (Entity); + Assembly ass = type.Assembly; + + + db.ExecuteReader(new SqlQuery(sql, new object[,] + { + {"@" + fieldName, field.Value} + }), rd => + { + object[] attrs; //columnAttributes + while (rd.Read()) + { + obj = ass.CreateInstance(type.ToString(), true) as Entity; + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + attr = attrs[0] as ColumnAttribute; + p.SetValue(obj, Convert.ChangeType(rd[attr.Name ?? p.Name], + p.PropertyType), null); + } + break; + } + }); + + return obj; + } + + public IEnumerable<Entity> GetEntityList(params FieldValueDictionary[] fields) + { + string fieldName = null; + IList<DbParameter> parameters = new List<DbParameter>(); + StringBuilder sb = new StringBuilder("select * from " + tableName, 400); + + if (fields.Count() != 0) + { + sb.Append(" WHERE "); + int i = 0; + foreach (FieldValueDictionary field in fields) + { + fieldName = field.GetFieldName(); + if (i != 0) + { + sb.Append("AND "); + } + sb.Append(fieldName + "=@" + fieldName).Append(" "); + + parameters.Add(db.DataBaseAdapter.CreateParameter("@" + fieldName, field.Value)); + ++i; + } + } + + ColumnAttribute attr; + Type type = typeof (Entity); + Assembly ass = type.Assembly; + + IList<Entity> list = new List<Entity>(); + Entity entity; //单个实体 + + object[] attrs; //特性集合 + db.ExecuteReader(sb.ToString(), + rd => + { + while (rd.Read()) + { + entity = ass.CreateInstance(type.ToString(), true) as Entity; + + foreach (PropertyInfo p in properties) + { + attrs = p.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) continue; + attr = attrs[0] as ColumnAttribute; + + p.SetValue(entity, Convert.ChangeType(rd[attr.Name ?? p.Name], p.PropertyType), null); + } + list.Add(entity); + } + }, + parameters.ToArray()); //获取数据 + + + return list; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/FieldValueDectionary.cs b/src/core/J6.DevFw.Data/Orm/FieldValueDectionary.cs new file mode 100644 index 0000000..080d47f --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/FieldValueDectionary.cs @@ -0,0 +1,60 @@ +using System.Reflection; +using JR.DevFw.Data.Orm.Mapping; + +namespace JR.DevFw.Data.Orm +{ + /// <summary> + /// 数据库字段与值字典 + /// </summary> + public class FieldValueDictionary + { + public FieldValueDictionary() + { + } + + public FieldValueDictionary(PropertyInfo proper, object value) + { + Field = proper; + Value = value; + } + + /// <summary> + /// 数据库字段对应的属性 + /// </summary> + public PropertyInfo Field { get; set; } + + /// <summary> + /// 数据库字段对应属性的值 + /// </summary> + public object Value { get; set; } + + /// <summary> + /// 是否对应数据库主键字段 + /// </summary> + public virtual bool IsPrimaryKeyField + { + get + { + object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), false); + if (attrs.Length > 0) + { + ColumnAttribute att = attrs[0] as ColumnAttribute; + return att != null && att.IsPrimaryKey; + } + return false; + } + } + + /// <summary> + /// 获取属性对应的数据库字段 + /// </summary> + /// <returns></returns> + public string GetFieldName() + { + object[] attrs = Field.GetCustomAttributes(typeof (ColumnAttribute), true); + if (attrs.Length == 0) return null; + ColumnAttribute attr = attrs[0] as ColumnAttribute; + return attr.Name == null || attr.Name == "" ? Field.Name : attr.Name; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/FieldValueException.cs b/src/core/J6.DevFw.Data/Orm/FieldValueException.cs new file mode 100644 index 0000000..12dae0c --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/FieldValueException.cs @@ -0,0 +1,20 @@ +using System; + +namespace JR.DevFw.Data.Orm +{ + public class FieldValueException : ApplicationException + { + public FieldValueException() + { + } + + public FieldValueException(string message) : base(message) + { + } + + public override string Message + { + get { return base.Message ?? "数据库字段与映射发生错误!"; } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/IEntityManager.cs b/src/core/J6.DevFw.Data/Orm/IEntityManager.cs new file mode 100644 index 0000000..08d79b6 --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/IEntityManager.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace JR.DevFw.Data.Orm +{ + public interface IEntityManager<Entity> where Entity : class + { + void Insert(Entity entity); + void Delete(FieldValueDictionary field); + void Update(PrimaryKeyValueDictionary parmaryField, params FieldValueDictionary[] filds); + Entity Get(PrimaryKeyValueDictionary parmaryField); + Entity Get(FieldValueDictionary parmaryField); + IEnumerable<Entity> GetEntityList(params FieldValueDictionary[] fileds); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs b/src/core/J6.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs new file mode 100644 index 0000000..87c829e --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/Mapping/DataColumnAttribute.cs @@ -0,0 +1,48 @@ +/*----------------------------------- + * Name : DataColumnMappingAttribute + * Author : Sonven + * Create : 2009-12-04 10:15 + * LastModify + * Note + * ---------------------------------*/ + +using System; + +namespace JR.DevFw.Data.Orm.Mapping +{ + /// <summary> + ///提供对数据表的列的映射 + /// </summary> + [AttributeUsage(AttributeTargets.Property, Inherited = true)] + public class ColumnAttribute : Attribute + { + public ColumnAttribute() + { + } + + public ColumnAttribute(string name) + { + Name = name; + } + + /// <summary> + /// 列名,如果列名与属性名称相同可省略 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 是否为主键 + /// </summary> + public bool IsPrimaryKey { get; set; } + + /// <summary> + /// 是否由数据库自动创建 + /// </summary> + public bool AutoGeneried { get; set; } + + /// <summary> + /// 匹配模式(Regex,用于验证数据是否正确) + /// </summary> + public string Parttern { get; set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/Mapping/DataMappingException.cs b/src/core/J6.DevFw.Data/Orm/Mapping/DataMappingException.cs new file mode 100644 index 0000000..d904f13 --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/Mapping/DataMappingException.cs @@ -0,0 +1,45 @@ +/*-------------------------------------- + * Name : DataMappingException + * Author : Sonven + * Create : 2009-12-04 10:18 + * LastModify + * Note + *-------------------------------------*/ + +using System; + +namespace JR.DevFw.Data.Orm.Mapping +{ + public class DataMappingException : ApplicationException + { + private string message; + private object source; + private string sourceId; + + public DataMappingException(string message) + { + this.message = message; + } + + public DataMappingException(string source, string message) : this(message) + { + this.sourceId = source; + } + + public DataMappingException(object source, string message) : this(message) + { + this.source = source; + } + + public override string Message + { + get { return message; } + } + + public override string Source + { + get { return sourceId; } + set { base.Source = value; } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/Mapping/DataTableAttribute.cs b/src/core/J6.DevFw.Data/Orm/Mapping/DataTableAttribute.cs new file mode 100644 index 0000000..bbff965 --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/Mapping/DataTableAttribute.cs @@ -0,0 +1,52 @@ +/* --------------------------------- + * Name : DataTableMapping + * Author : Sonven + * Create : 2009-12-04 10:20 + * LastModify + * Note + * ---------------------------------*/ + +using System; + +namespace JR.DevFw.Data.Orm.Mapping +{ + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)] + public class DataTableAttribute : Attribute + { + private string name; + private Type type; + private ISqlFormat format; + + public DataTableAttribute(string name) + { + this.name = name; + } + + /// <summary> + /// 数据库表的名称 + /// </summary> + public string Name + { + get + { + if (name == null) + throw new DataMappingException("数据映射的表名不能为空!"); + return this.format == null ? name : this.format.Format(name); + } + set { name = value; } + } + + /// <summary> + /// 实现了Ops.Data.ISqlFormat接口的类型 + /// </summary> + public Type Format + { + get { return type; } + set + { + type = value; + format = Activator.CreateInstance(value) as ISqlFormat; + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs b/src/core/J6.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs new file mode 100644 index 0000000..8d003fb --- /dev/null +++ b/src/core/J6.DevFw.Data/Orm/PriamaryKeyValueDictionary.cs @@ -0,0 +1,27 @@ +using System.Reflection; + +namespace JR.DevFw.Data.Orm +{ + public class PrimaryKeyValueDictionary : FieldValueDictionary + { + public PrimaryKeyValueDictionary() + { + } + + public PrimaryKeyValueDictionary(PropertyInfo proper, object value) + { + base.Field = proper; + base.Value = value; + } + + public override bool IsPrimaryKeyField + { + get + { + if (!base.IsPrimaryKeyField) + throw new FieldValueException("不是主键不能用做选取和删除操作!"); + return true; + } + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.Data/Properties/AssemblyInfo.cs similarity index 100% rename from src/core/AtNet.DevFw.Data/Properties/AssemblyInfo.cs rename to src/core/J6.DevFw.Data/Properties/AssemblyInfo.cs diff --git a/src/core/J6.DevFw.Data/SQLiteFactory.cs b/src/core/J6.DevFw.Data/SQLiteFactory.cs new file mode 100644 index 0000000..9ea1a3c --- /dev/null +++ b/src/core/J6.DevFw.Data/SQLiteFactory.cs @@ -0,0 +1,51 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLiteFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +// https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki +using System.Data.Common; +using System.Data.SQLite; + +namespace JR.DevFw.Data +{ + public class SQLiteFactory : DataBaseFactory + { + public SQLiteFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new SQLiteConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new SQLiteParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new SQLiteCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new SQLiteDataAdapter(sql, (SQLiteConnection) connection); + } + + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/SqlQuery.cs b/src/core/J6.DevFw.Data/SqlQuery.cs new file mode 100644 index 0000000..06d3245 --- /dev/null +++ b/src/core/J6.DevFw.Data/SqlQuery.cs @@ -0,0 +1,80 @@ +// +// +// Copryright 2013 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : SqlEntity.cs +// Date : 05/27/2013 +// Author : 刘铭 +// +// + +using System; +using System.Data.Common; + +namespace JR.DevFw.Data +{ + /// <summary> + /// SQL查询实体 + /// </summary> + public class SqlQuery + { + private object[,] _parameters; + + + public SqlQuery(string sql) + { + this.Sql = sql; + } + + public SqlQuery(string sql, object[,] parameters) + { + if (parameters != null) + { + if (parameters.GetLength(0) != 0 && parameters.GetLength(1) != 2) + { + throw new ArgumentOutOfRangeException("Parameters", "多纬数组的二维长度必须为2"); + } + } + this._parameters = parameters; + + this.Sql = sql; + } + + /// <summary> + /// SQL语句 + /// </summary> + public String Sql { get; set; } + + /// <summary> + /// 参数 + /// + /// this.Parameters = new object[,]{ + /// {"@age","age"}, + /// {"@name","name"} + /// }; + /// </summary> + public object[,] Parameters + { + get { return this._parameters; } + } + + + /// <summary> + /// 转换为参数 + /// </summary> + /// <param name="db"></param> + /// <returns></returns> + public DbParameter[] ToParams(IDataBase db) + { + DbParameter[] parameters = new DbParameter[this.Parameters.GetLength(0)]; + + for (int i = 0; i < parameters.Length; i++) + { + parameters[i] = db.CreateParameter(this.Parameters[i, 0].ToString(), this.Parameters[i, 1]); + } + + return parameters; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Data/SqlServerFactory.cs b/src/core/J6.DevFw.Data/SqlServerFactory.cs new file mode 100644 index 0000000..0d7d70c --- /dev/null +++ b/src/core/J6.DevFw.Data/SqlServerFactory.cs @@ -0,0 +1,49 @@ +// +// +// Copryright 2011 @ S1N1.COM.All rights reseved. +// +// Project : OPS.Data +// File Name : SQLServerFactory.cs +// Date : 8/19/2011 +// Author : +// +// + +using System.Data.Common; +using System.Data.SqlClient; + +namespace JR.DevFw.Data +{ + public class SqlServerFactory : DataBaseFactory + { + public SqlServerFactory(string connectionString) + : base(connectionString) + { + } + + public override DbConnection GetConnection() + { + return new SqlConnection(base.connectionString); + } + + public override DbParameter CreateParameter(string name, object value) + { + return new SqlParameter(name, value); + } + + public override DbCommand CreateCommand(string sql) + { + return new SqlCommand(sql); + } + + public override DbDataAdapter CreateDataAdapter(DbConnection connection, string sql) + { + return new SqlDataAdapter(sql, (SqlConnection) connection); + } + + public override int ExecuteScript(DbConnection conn, string sql, string delimiter) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Data/ops.data.snk b/src/core/J6.DevFw.Data/ops.data.snk similarity index 100% rename from src/core/AtNet.DevFw.Data/ops.data.snk rename to src/core/J6.DevFw.Data/ops.data.snk diff --git a/src/core/AtNet.DevFw.PluginKernel/demo/Plugin/Print.cs b/src/core/J6.DevFw.PluginKernel/demo/Plugin/Print.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/demo/Plugin/Print.cs rename to src/core/J6.DevFw.PluginKernel/demo/Plugin/Print.cs diff --git a/src/core/AtNet.DevFw.PluginKernel/demo/Plugin/Print2.cs b/src/core/J6.DevFw.PluginKernel/demo/Plugin/Print2.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/demo/Plugin/Print2.cs rename to src/core/J6.DevFw.PluginKernel/demo/Plugin/Print2.cs diff --git a/src/core/AtNet.DevFw.PluginKernel/demo/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.PluginKernel/demo/Properties/AssemblyInfo.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/demo/Properties/AssemblyInfo.cs rename to src/core/J6.DevFw.PluginKernel/demo/Properties/AssemblyInfo.cs diff --git a/src/core/AtNet.DevFw.PluginKernel/demo/pluginDemo.csproj b/src/core/J6.DevFw.PluginKernel/demo/pluginDemo.csproj similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/demo/pluginDemo.csproj rename to src/core/J6.DevFw.PluginKernel/demo/pluginDemo.csproj diff --git a/src/core/J6.DevFw.PluginKernel/kernel/BasePluginHost.cs b/src/core/J6.DevFw.PluginKernel/kernel/BasePluginHost.cs new file mode 100644 index 0000000..b72cb31 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/BasePluginHost.cs @@ -0,0 +1,357 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text.RegularExpressions; +using JR.DevFw.Framework; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// + /// </summary> + public abstract class BasePluginHost : IPluginHost + { + internal static IDictionary<IPlugin, PluginPackAttribute> plugins; + + protected static LogFile Log; + private PluginHostAttribute _attr = null; + + + static BasePluginHost() + { + plugins = new Dictionary<IPlugin, PluginPackAttribute>(); + + string appDirectory = AppDomain.CurrentDomain.BaseDirectory; + + string pluginDirectory = String.Concat( + appDirectory, + PluginConfig.PLUGIN_DIRECTORY); + + //清空日志 + string pluginTmpDirectory = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY); + if (!Directory.Exists(pluginTmpDirectory)) + { + Directory.CreateDirectory(pluginTmpDirectory); + } + Log = new LogFile(String.Format("{0}plugin_load.log", + pluginTmpDirectory), false); + Log.Truncate(); + + if (Directory.Exists(pluginDirectory)) + { + LoadPluginFromDirectory(pluginDirectory); + } + else + { + Directory.CreateDirectory(pluginDirectory).Create(); + } + + //加载程序集的.so文件 + loadFromAppDomain(); + } + + /// <summary> + /// 从目录中加载插件 + /// </summary> + /// <param name="pluginDirectory"></param> + private static void LoadPluginFromDirectory(string pluginDirectory) + { + bool loadResult = true; + + //多个后缀的情况下 + IList<String> files = new List<string>(10); + + string[] multExt = PluginConfig.GetFilePartterns(); + foreach (String ext in multExt) + { + String[] searchedExt = Directory.GetFiles(pluginDirectory, ext); + foreach (String sext in searchedExt) + { + files.Add(sext); + } + } + + if (Log != null) + { + Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading" + + "\r\n========================================\r\n" + + "Directory:{1} \t Total DLL:{2}\r\n", + DateTime.Now, pluginDirectory.Replace("\\", "/"), + files.Count.ToString())); + } + foreach (string file in files) + { + if (!LoadPlugin(file)) + { + loadResult = false; + } + } + + if (Log != null) + { + Log.Println(String.Format("load complete!result:{0}", loadResult ? "Ok" : "Error")); + } + } + + /// <summary> + /// 加载单个插件 + /// </summary> + /// <param name="pluginFile"></param> + public static bool LoadPlugin(string pluginFile) + { + try + { + byte[] bytes = File.ReadAllBytes(pluginFile); + Assembly ass = Assembly.Load(bytes); + loadFromAssembly(ass); + } + catch (ReflectionTypeLoadException exc) + { + if (Log != null) + { + Log.Println(String.Format("Assembly {0} happend exception:{1}\r\nExceptions:\r\n", + pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] { '/', '\\' }) + 1), + exc.Message)); + foreach (Exception e in exc.LoaderExceptions) + { + Log.Println(e.Message); + } + + } + return false; + } + catch (Exception err) + { + if (Log != null) + { + Log.Println(String.Format("\r\nAssembly {0} happend exception:{1}", + pluginFile.Substring(pluginFile.LastIndexOfAny(new char[] { '/', '\\' }) + 1), + err.Message)); + } + return false; + } + return true; + } + + /// <summary> + /// + /// </summary> + private static void loadFromAppDomain() + { + string dir = AppDomain.CurrentDomain.BaseDirectory + "bin"; + if (!Directory.Exists(dir)) return; + string[] dllFiles = Directory.GetFiles(dir, "*.so"); + + Log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} [+]Plugin Loading From Bin" + + "\r\n========================================\r\n" + + "Total .so file : {1}\r\n", + DateTime.Now, + dllFiles.Length.ToString())); + + foreach (string f in dllFiles) + { + LoadPlugin(f); + } + } + + /// <summary> + /// 从程序集中加载插件 + /// </summary> + /// <param name="assembly"></param> + /// <returns></returns> + private static bool loadFromAssembly(Assembly assembly) + { + PluginPackAttribute attribute = null; + IPlugin plugin = null; + + var attbs = assembly.GetCustomAttributes(typeof(PluginPackAttribute), false); + + if (attbs.Length != 0) + { + attribute = (PluginPackAttribute)attbs[0]; + } + else + { + // foreach (Attribute attr in assembly.GetCustomAttributes(false)) + // { + // if (attr.ToString().IndexOf("PluginPackAttribute") != -1) + // { + // attribute = (PluginPackAttribute) attr; + // + // Log.Println(attribute.Name); + // } + // else + // { + // Log.Println(attr.ToString()); + // } + // } + // + // Log.Println(assembly.GetName().Name+" not a plugin!"); + return false; + } + + var types = assembly.GetTypes(); + foreach (Type type in types) + { + if (type.IsClass) + { + foreach (Type t in type.GetInterfaces()) + { + if (t == typeof(IPlugin)) + { + plugin = Activator.CreateInstance(type) as IPlugin; + if (plugin == null) + { + continue; + } + + if (attribute != null) + { + plugins.Add(plugin, attribute); + } + } + } + } + } + + if (Log != null) + { + Log.Println(String.Format("{0}({1}) be found ; version is {2}.", + attribute.Name, + assembly.GetName().Name, + attribute.Version)); + } + return true; + } + + public bool LoadFromAssembly(Assembly assembly) + { + return loadFromAssembly(assembly); + } + + /// <summary> + /// 连接插件 + /// </summary> + /// <returns></returns> + public virtual bool Connect() + { + Iterate( + (p, a) => + { + if (a.State == PluginState.Normal) + { + p.Connect(this); + } + } + ); + return true; + } + + /// <summary> + /// 迭代插件 + /// </summary> + /// <param name="handler"></param> + public void Iterate(PluginHandler handler) + { + foreach (IPlugin p in plugins.Keys) + { + if (CanAdapter(p)) + { + handler(p, plugins[p]); + } + } + } + + public virtual void Run() + { + Iterate((p, i) => + { + if (i.State == PluginState.Normal) + { + p.Run(); + } + }); + } + + public virtual void Pause() + { + Iterate((p, i) => { i.State = PluginState.Stop; }); + } + + public bool Run(string pluginId) + { + var runed = false; + Iterate((p, i) => + { + if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) + { + p.Run(); + runed = true; + } + }); + return runed; + } + + public bool Pause(string pluginId) + { + var runed = false; + Iterate((p, i) => + { + if (!runed && i.State == PluginState.Normal && String.Compare(pluginId, i.WorkIndent, true) == 0) + { + i.State = PluginState.Stop; + runed = true; + } + }); + return runed; + } + + /// <summary> + /// 检查是否能适配插件 + /// </summary> + public bool CanAdapter(IPlugin plugin) + { + if (this.Attribute == null || String.IsNullOrEmpty(this.Attribute.TypePattern)) + { + return true; + } + return Regex.IsMatch(plugin.GetType().Name, this.Attribute.TypePattern, RegexOptions.IgnoreCase); + } + + /// <summary> + /// 附加日志 + /// </summary> + /// <param name="content"></param> + public void Logln(string content) + { + if (Log != null) + { + Log.Printf("{0:yyyy-MM-dd HH:mm:ss}\r\n========================================\r\n{1}\r\n\r\n", + DateTime.Now, content); + } + } + + private PluginHostAttribute Attribute + { + get + { + if (_attr == null) + { + var ppas = GetType().GetCustomAttributes(typeof(PluginHostAttribute), true); + if (ppas.Length != 0) + { + _attr = (PluginHostAttribute)ppas[0]; + } + } + return _attr; + } + } + + + public PluginPackAttribute GetAttribute(IPlugin plugin) + { + return PluginUtil.GetAttribute(plugin); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs b/src/core/J6.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs new file mode 100644 index 0000000..0f93d0e --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/Demo/DemoPluginApp.cs @@ -0,0 +1,30 @@ +using System; +using JR.DevFw.PluginKernel; + +namespace Com.PluginKernel.Demo +{ + public class DemoPluginApp : BasePluginHost + { + public event PluginHandler<string> OnPrinting; + + public override bool Connect() + { + Iterate((p, i) => + { + Console.WriteLine("连接插件:" + i.Name + " 作者:" + i.Author + " 版本:" + i.Version); + p.Connect(this); + }); + + return true; + } + + public void Print(string message) + { + var result = true; + if (OnPrinting != null) + { + OnPrinting(message, ref result); + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/IPlugin.cs b/src/core/J6.DevFw.PluginKernel/kernel/IPlugin.cs new file mode 100644 index 0000000..d9d7d2d --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/IPlugin.cs @@ -0,0 +1,63 @@ +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件接口 + /// </summary> + public interface IPlugin + { + /// <summary> + /// 连接插件 + /// </summary> + /// <param name="app"></param> + /// <returns></returns> + PluginConnectionResult Connect(IPluginHost app); + + + /// <summary> + /// 安装 + /// </summary> + bool Install(); + + /// <summary> + /// 卸载 + /// </summary> + /// <returns></returns> + bool Uninstall(); + + /// <summary> + /// 运行 + /// </summary> + void Run(); + + /// <summary> + /// 暂停运行 + /// </summary> + void Pause(); + + /// <summary> + /// 返回插件操作的消息 + /// </summary> + /// <returns></returns> + string GetMessage(); + + /// <summary> + /// 获取插件的属性 + /// </summary> + /// <returns></returns> + PluginPackAttribute GetAttribute(); + + /// <summary> + /// 打印日志 + /// </summary> + /// <param name="line"></param> + void Logln(string line); + + /// <summary> + /// 开放调用 + /// </summary> + /// <param name="method"></param> + /// <param name="parameters"></param> + /// <returns></returns> + object Call(string method, params object[] parameters); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs b/src/core/J6.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs new file mode 100644 index 0000000..966bb6b --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/IPluginHandleProxy.cs @@ -0,0 +1,52 @@ +namespace JR.DevFw.PluginKernel +{ + public interface IPluginHandleProxy<T> + { + /// <summary> + /// 处理请求,如在Web中可用来处理Get请求 + /// </summary> + /// <param name="context"></param> + /// <param name="pluginWorkIndent"></param> + /// <param name="handleResult"></param> + void HandleRequest(T context, + string pluginWorkIndent, + ref bool handleResult); + + /// <summary> + /// 使用指定的类型处理请求,如果action不正确则抛出异常 + /// </summary> + /// <typeparam name="HandleClass"></typeparam> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="action"></param> + /// <returns>返回请求的结果,这通常返回String</returns> + object HandleRequestUse<HandleClass>( + HandleClass t, + T context, + string action); + + /// <summary> + /// 使用指定的类型处理请求,如果action不正确则抛出异常 + /// </summary> + /// <typeparam name="HandleClass"></typeparam> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="action"></param> + /// <param name="source">请求来源</param> + /// <returns>返回请求的结果,这通常返回String</returns> + object HandleRequestUse<HandleClass>( + HandleClass t, + T context, + string action, + string source); + + /// <summary> + /// 注册处理事件 + /// </summary> + /// <param name="plugin"></param> + /// <param name="reqHandler"></param> + /// <param name="postReqHandler"></param> + /// <returns></returns> + bool Register(IPlugin plugin, PluginHandler<T> reqHandler); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/IPluginHost.cs b/src/core/J6.DevFw.PluginKernel/kernel/IPluginHost.cs new file mode 100644 index 0000000..6d02ea3 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/IPluginHost.cs @@ -0,0 +1,60 @@ +using System.Reflection; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件宿主接口 + /// </summary> + public interface IPluginHost + { + /// <summary> + /// 连接所有插件 + /// </summary> + /// <returns></returns> + bool Connect(); + + /// <summary> + /// 从程序集中加载插件 + /// </summary> + /// <param name="assembly"></param> + /// <returns></returns> + bool LoadFromAssembly(Assembly assembly); + + /// <summary> + /// 获取插件信息 + /// </summary> + /// <param name="plugin"></param> + /// <returns></returns> + PluginPackAttribute GetAttribute(IPlugin plugin); + + /// <summary> + /// 迭代插件集合 + /// </summary> + /// <param name="handler"></param> + void Iterate(PluginHandler handler); + + /// <summary> + /// 运行所有插件 + /// </summary> + void Run(); + + /// <summary> + /// 停用所有插件 + /// </summary> + void Pause(); + + /// <summary> + /// 运行指定的插件 + /// </summary> + /// <param name="pluginId"></param> + /// <returns></returns> + bool Run(string pluginId); + + /// <summary> + /// 停用指定的插件 + /// </summary> + /// <param name="pluginId"></param> + /// <returns></returns> + bool Pause(string pluginId); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/JR.DevFw.PluginKernel.csproj b/src/core/J6.DevFw.PluginKernel/kernel/JR.DevFw.PluginKernel.csproj new file mode 100644 index 0000000..9482588 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/JR.DevFw.PluginKernel.csproj @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{CAD14DCC-112C-4B28-98EB-1CE143D09033}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>JR.DevFw.PluginKernel</RootNamespace> + <AssemblyName>JR.DevFw.PluginKernel</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile> + </TargetFrameworkProfile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\..\dist\dll\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile>..\..\..\..\dist\dll\JR.DevFw.PluginKernel.xml</DocumentationFile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <SignAssembly>true</SignAssembly> + </PropertyGroup> + <PropertyGroup> + <DelaySign>false</DelaySign> + </PropertyGroup> + <PropertyGroup> + <AssemblyOriginatorKeyFile>pluginKernel.snk</AssemblyOriginatorKeyFile> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Web" /> + </ItemGroup> + <ItemGroup> + <Compile Include="PluginSettingKeys.cs" /> + <Compile Include="Demo\DemoPluginApp.cs" /> + <Compile Include="IPlugin.cs" /> + <Compile Include="IPluginHost.cs" /> + <Compile Include="IPluginHandleProxy.cs" /> + <Compile Include="Logger.cs" /> + <Compile Include="BasePluginHost.cs" /> + <Compile Include="PluginConfig.cs" /> + <Compile Include="PluginConnectionResult.cs" /> + <Compile Include="PluginException.cs" /> + <Compile Include="PluginHandleProxy.cs" /> + <Compile Include="PluginHandler.cs" /> + <Compile Include="PluginInfoAttribute.cs" /> + <Compile Include="PluginPackAttribute.cs" /> + <Compile Include="PluginState.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="PluginHostAttribute.cs" /> + <Compile Include="PluginUtil.cs" /> + <Compile Include="Web\BaseWebPluginHost.cs" /> + <Compile Include="Web\IWebPluginHost.cs" /> + <Compile Include="Web\WebPluginHandleProxy.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="pluginKernel.snk" /> + <None Include="README.md" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\J6.DevFw.Core\JR.DevFw.Core.csproj"> + <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> + <Name>JR.DevFw.Core</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/Logger.cs b/src/core/J6.DevFw.PluginKernel/kernel/Logger.cs new file mode 100644 index 0000000..0fc9941 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/Logger.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections; +using System.IO; +using System.Text; +using JR.DevFw.Framework; +using JR.DevFw.Framework.Extensions; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// + /// </summary> + public static class Logger + { + private static LogFile _logFile; + + private static LogFile GetFile() + { + DateTime dt = DateTime.Now; + int unixInt = dt.Date.DayOfYear; + + if (_logFile == null || unixInt != _logFile.Seed) + { + string logDir = AppDomain.CurrentDomain.BaseDirectory + PluginConfig.PLUGIN_TMP_DIRECTORY; + + //创建日志目录 + if (!Directory.Exists(logDir)) + { + Directory.CreateDirectory(logDir).Create(); + } + + _logFile = new LogFile(String.Format("{0}/p{1:yyyyMMdd}.log", logDir, dt), false); + _logFile.Seed = unixInt; + _logFile.FileEncoding = Encoding.UTF8; + } + return _logFile; + } + + /// <summary> + /// 记录异常 + /// </summary> + /// <param name="addr">引起异常的地址,比如网址</param> + /// <param name="except"></param> + public static void PrintException(string addr, Exception except) + { + if (!PluginConfig.PLUGIN_LOG_OPENED) return; + + LogFile log = GetFile(); + DateTime dt = DateTime.Now; + + Exception exc = except; + + if (exc.InnerException != null) + { + exc = except.InnerException; + } + + Hashtable hash = new Hashtable(); + hash.Add("addr", addr ?? "application"); + hash.Add("message", exc.Message); + hash.Add("stack", exc.StackTrace); + hash.Add("time", String.Format("{0:yyyy-MM-dd HH:mm:ss}", dt)); + hash.Add("source", exc.Source); + + //附加记录 + log.Println(PluginConfig.PLUGIN_LOG_EXCEPT_FORMAT.Template(hash)); + + throw except; //继续抛出异常 + } + + /// <summary> + /// + /// </summary> + /// <param name="line"></param> + public static void Println(string line) + { + if (!PluginConfig.PLUGIN_LOG_OPENED) return; + + LogFile log = GetFile(); + log.Println(String.Format("{0:yyyy-MM-dd HH:mm:ss} {1}", DateTime.Now, line)); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginConfig.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginConfig.cs new file mode 100644 index 0000000..4dd2e8d --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginConfig.cs @@ -0,0 +1,44 @@ +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// + /// </summary> + public class PluginConfig + { + /// <summary> + /// 插件目录名称,以"/"结尾 + /// </summary> + public static string PLUGIN_DIRECTORY = "plugins/"; + + /// <summary> + /// 插件临时文件存放目录,以"/"结尾。用于存放日志,临时文件等 + /// </summary> + public static string PLUGIN_TMP_DIRECTORY = "tmp/plugin/"; + + /// <summary> + /// 插件日志是否打开,默认为关闭 + /// </summary> + public static bool PLUGIN_LOG_OPENED = false; + + /// <summary> + /// 插件异常日志格式,默认为:<{time}>:{message}\r\nSource:{source}\r\nAddress:{addr}\r\nStack:{stack}\r\n\r\n + /// </summary> + public static string PLUGIN_LOG_EXCEPT_FORMAT = + "**{time}** [Exeption] -{message}\r\nSource:{source} - Addr:{addr}\r\nStack:{stack}\r\n\r\n"; + + /// <summary> + /// 插件文件后缀,多个后缀用","隔开 + /// 默认加载bin目录下的.so文件 + /// </summary> + public static string PLUGIN_FILE_PARTTERN = "*.so,*.dll"; + + /// <summary> + /// + /// </summary> + /// <returns></returns> + public static string[] GetFilePartterns() + { + return (PLUGIN_FILE_PARTTERN ?? "*.dll").Split(','); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginConnectionResult.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginConnectionResult.cs new file mode 100644 index 0000000..bb08c99 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginConnectionResult.cs @@ -0,0 +1,24 @@ +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 表示插件与主程序连接的结果 + /// + /// </summary> + public enum PluginConnectionResult + { + /// <summary> + /// + /// </summary> + Failed, + + /// <summary> + /// 与版本号不匹配 + /// </summary> + NotMatch, + + /// <summary> + /// + /// </summary> + Success + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginException.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginException.cs new file mode 100644 index 0000000..8e7f1a7 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginException.cs @@ -0,0 +1,29 @@ +using System; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件异常 + /// </summary> + public class PluginException : Exception + { + /// <summary> + /// + /// </summary> + /// <param name="message"></param> + public PluginException(string message) : base(message) + { + } + + public override string HelpLink + { + get { return "http://www.s1n1.com"; } + set { throw new NotImplementedException(); } + } + + public override string Message + { + get { return "[ Plugin] -" + base.Message; } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginHandleProxy.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginHandleProxy.cs new file mode 100644 index 0000000..2ce441f --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginHandleProxy.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件处理代理类 + /// </summary> + /// <typeparam name="T"></typeparam> + public abstract class PluginHandleProxy<T> : IPluginHandleProxy<T> + { + private static IDictionary<string, PluginHandler<T>> reqHandlers; + + static PluginHandleProxy() + { + reqHandlers = new Dictionary<String, PluginHandler<T>>(); + } + + /// <summary> + /// 扩展模块GET请求,返回false则应立即截断请求 + /// </summary> + /// <param name="tag"></param> + /// <param name="page"></param> + public virtual void HandleRequest(T context, + string pluginWorkIndent, + ref bool handleResult) + { + pluginWorkIndent = pluginWorkIndent.ToLower(); + + //处理扩展 + if (reqHandlers.Keys.Contains(pluginWorkIndent)) + { + reqHandlers[pluginWorkIndent](context, ref handleResult); + } + } + + + /// <summary> + /// 注册扩展处理程序 + /// </summary> + /// <param name="extendName">扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件</param> + /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <returns></returns> + public bool Register(IPlugin plugin, + PluginHandler<T> reqHandler) + { + Type type = plugin.GetType(); + PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); + string indent = attr.WorkIndent; + + if (reqHandler == null || reqHandlers.Keys.Contains(indent)) + { + return false; + } + + if (reqHandler != null) + { + reqHandlers.Add(indent, reqHandler); + } + + return true; + } + + + public object HandleRequestUse<THandleClass>(THandleClass t, T context, string action, string source) + { + Type type = t.GetType(); + MethodInfo method = type.GetMethod( + action, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); + + if (method != null) + { + return method.Invoke(t, new object[] { context }); + } + throw new PluginException("无效请求:" + action); + } + + public object HandleRequestUse<THandleClass>( + THandleClass t, + T context, + string action) + { + return HandleRequestUse(t, context, action, null); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginHandler.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginHandler.cs new file mode 100644 index 0000000..dc355c3 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginHandler.cs @@ -0,0 +1,23 @@ +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件处理事件 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + public delegate void PluginHandler<T>(T t, ref bool b); + + public delegate void PluginHandler<T, T1>(T t, T1 t1, ref bool b); + + public delegate void PluginHandler<T, T1, T2>(T t, T1 t1, T2 t2, ref bool b); + + public delegate void PluginHandler<T, T1, T2, T3>(T t, T1 t1, T2 t2, T3 t3, ref bool b); + + + /// <summary> + /// 插件处理事件 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="t"></param> + public delegate void PluginHandler(IPlugin plugin, PluginPackAttribute info); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginHostAttribute.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginHostAttribute.cs new file mode 100644 index 0000000..50530fd --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginHostAttribute.cs @@ -0,0 +1,42 @@ +using System; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件信息 + /// </summary> + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public class PluginHostAttribute : Attribute + { + public PluginHostAttribute() + { + } + + public PluginHostAttribute(string name, string descript) + { + Name = name; + Descript = descript; + } + + /// <summary> + /// 插件名称 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 插件应用描述 + /// </summary> + public string Descript { get; set; } + + /// <summary> + /// 插件类名格式(正则表达式) + /// 默认为空,不限制 + /// </summary> + public string TypePattern { get; set; } + + /// <summary> + /// 记录日志 + /// </summary> + private bool WriteLog { get; set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs new file mode 100644 index 0000000..6937a41 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginInfoAttribute.cs @@ -0,0 +1,59 @@ +using System; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// Ϣ + /// </summary> + [Obsolete] + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] + public class PluginInfoAttribute : Attribute + { + /// <summary> + /// + /// </summary> + public PluginInfoAttribute() + { + } + + /// <summary> + /// + /// </summary> + /// <param name="name"></param> + /// <param name="author"></param> + /// <param name="webpage"></param> + /// <param name="descript"></param> + [Obsolete] + public PluginInfoAttribute(string name, string author, string webpage, string descript) + { + } + + private string id; + + /// <summary> + /// + /// </summary> + public string ID + { + get + { + if (id == null) + { + id = String.Format("{0}{1}", GetType().Assembly.GetName().Name, + IndexNum == 0 ? string.Empty : "_" + IndexNum); + } + return id; + } + } + + /// <summary> + /// ,ļ + /// </summary> + public int IndexNum { get; set; } + + /// <summary> + /// Ϣ + /// </summary> + public object Tag { get; set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginPackAttribute.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginPackAttribute.cs new file mode 100644 index 0000000..20a4dc4 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginPackAttribute.cs @@ -0,0 +1,167 @@ +using System; +using System.IO; +using JR.DevFw.Framework; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件包信息 + /// </summary> + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)] + public class PluginPackAttribute : Attribute + { + private SettingFile settings { get; set; } + + /// <summary> + /// + /// </summary> + /// <param name="workerIndent"></param> + public PluginPackAttribute(string workerIndent) + { + this.WorkIndent = workerIndent; + bool isChanged = false; + var dirPath = String.Concat( + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + workerIndent, + "/"); + + if (!Directory.Exists(dirPath)) + { + Directory.CreateDirectory(dirPath).Create(); + } + + settings = new SettingFile(string.Concat(dirPath, "plugin.config")); + + if (!settings.Contains(PluginSettingKeys.State)) + { + settings.Set(PluginSettingKeys.State, "Normal"); + isChanged = true; + } + if (!settings.Contains(PluginSettingKeys.OverrideUrlIndent)) + { + settings.Set(PluginSettingKeys.OverrideUrlIndent, ""); + isChanged = true; + } + + if (isChanged) + { + settings.Flush(); + } + } + + public PluginPackAttribute(string workerIndent, string icon, string name, string author, string portalUrl) + : + this(workerIndent) + { + Icon = icon; + Name = name; + Author = author; + PortalUrl = portalUrl; + } + + private string version; + private string _workSpace; + + /// <summary> + /// 工作目录标识,较好的命名:com.myplugin 或 mycompany.myplugin + /// 将会在plugins目录下生成目录,存放需要的文件 + /// </summary> + public string WorkIndent { get; set; } + + /// <summary> + /// 插件图标 + /// </summary> + public string Icon { get; set; } + + /// <summary> + /// 插件名称 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 插件作者 + /// </summary> + public string Author { get; set; } + + /// <summary> + /// 官方主页 + /// </summary> + public string WebPage { get; set; } + + /// <summary> + /// 版本号(主版本号.次版本号.修订版本号),与程序集版本号一致 + /// </summary> + public string Version + { + get + { + if (version == null) + { + var v = GetType().Assembly.GetName().Version; + version = String.Format("{0}.{1}.{2}", v.Major, v.Minor, v.Revision); + } + return version; + } + } + + /// <summary> + /// 设置地址 + /// </summary> + public string ConfigUrl { get; set; } + + /// <summary> + /// 插件入口地址 + /// </summary> + public string PortalUrl { get; set; } + + /// <summary> + /// 插件描述信息 + /// </summary> + public string Description { get; set; } + + /// <summary> + /// 工作目录(插件根目录),如:C:/plugins/com.plugin.demo/ + /// </summary> + public string WorkSpace + { + get + { + return this._workSpace ?? (this._workSpace = + String.Concat( + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + this.WorkIndent, + "/" + )); + } + } + + /// <summary> + /// 插件状态 + /// </summary> + public PluginState State + { + get + { + return (settings["state"] == "1" || settings["state"] == "Normal") + ? PluginState.Normal + : PluginState.Stop; + } + set + { + var state = value.ToString(); + settings["state"] = state; + settings.Flush(); + } + } + + /// <summary> + /// 插件配置 + /// </summary> + public SettingFile Settings + { + get { return settings; } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginSettingKeys.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginSettingKeys.cs new file mode 100644 index 0000000..6cac48e --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginSettingKeys.cs @@ -0,0 +1,20 @@ +using System; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// + /// </summary> + public static class PluginSettingKeys + { + /// <summary> + /// 插件状态 + /// </summary> + public static String State = "state"; + + /// <summary> + /// 重写的URL标识 + /// </summary> + public static String OverrideUrlIndent = "override.url.indent"; + } +} diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginState.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginState.cs new file mode 100644 index 0000000..0cfd5b2 --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginState.cs @@ -0,0 +1,18 @@ +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件状态 + /// </summary> + public enum PluginState + { + /// <summary> + /// 正常 + /// </summary> + Normal = 1, + + /// <summary> + /// 停止 + /// </summary> + Stop = 0 + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.PluginKernel/kernel/PluginUtil.cs b/src/core/J6.DevFw.PluginKernel/kernel/PluginUtil.cs new file mode 100644 index 0000000..a3bef7e --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/PluginUtil.cs @@ -0,0 +1,361 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Reflection; +using JR.DevFw.Framework.Extensions; +using JR.DevFw.Framework.Graphic; +using JR.DevFw.Framework.Net; +using JR.DevFw.Utils; + +namespace JR.DevFw.PluginKernel +{ + /// <summary> + /// 插件工具 + /// </summary> + public static class PluginUtil + { + /// <summary> + /// 插件属性字典 + /// </summary> + private static IDictionary<int, PluginPackAttribute> attrDicts; + + /// <summary> + /// 迭代插件 + /// </summary> + /// <param name="handler"></param> + public static void Iterate(PluginHandler handler) + { + foreach (IPlugin p in BasePluginHost.plugins.Keys) + { + handler(p, BasePluginHost.plugins[p]); + } + } + + /// <summary> + /// + /// </summary> + /// <param name="plugin"></param> + /// <returns></returns> + public static PluginPackAttribute GetAttribute(IPlugin plugin) + { + return GetAttributeByType(plugin.GetType()); + } + + private static PluginPackAttribute GetAttributeByType(Type type) + { + //int key = type.Assembly.GetHashCode(); + //if (attrDicts == null) + //{ + // attrDicts = new Dictionary<int, PluginPackAttribute>(); + //} + + //if (!attrDicts.Keys.Contains(key)) + //{ + + object[] attrs = type.Assembly.GetCustomAttributes(typeof(PluginPackAttribute), false); + if (attrs.Length == 0) + throw new Exception("assembly not contain any plugin package attribute!"); + + PluginPackAttribute attr = (PluginPackAttribute)attrs[0]; + //attrDicts.Add(key, attr); + return attr; + //} + + // return attrDicts[key]; + } + + /// <summary> + /// 获取插件 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static IPlugin GetPlugin(string workerIndent, out PluginPackAttribute attr) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + attr = plugins[p]; + return p; + } + } + + attr = null; + return null; + } + + /// <summary> + /// 根据类型获取插件 + /// </summary> + /// <param name="t"></param> + /// <returns></returns> + public static IPlugin GetPluginByType(Type t) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (p.GetType() == t) + { + return p; + } + } + return null; + } + + + /// <summary> + /// 获取插件包信息 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static PluginPackAttribute GetPluginPackAttribute(string workerIndent) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + return plugins[p]; + } + } + return null; + } + + /// <summary> + /// 获取插件 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static IEnumerable<IPlugin> GetPlugins(string workerIndent) + { + var plugins = BasePluginHost.plugins; + + foreach (IPlugin p in plugins.Keys) + { + if (String.Compare(workerIndent, plugins[p].WorkIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + yield return p; + } + } + } + + + /// <summary> + /// 获取插件的图标 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static byte[] GetPluginIcon(string workerIndent, int width, int height, string defaultIconPath) + { + string icon = null; + var iconExist = false; + byte[] data; + + Iterate((p, a) => + { + if (String.Compare(a.WorkIndent, workerIndent, StringComparison.OrdinalIgnoreCase) == 0) + { + icon = String.Format("{0}{1}{2}/{3}", + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + workerIndent, a.Icon); + } + }); + + if (!String.IsNullOrEmpty(icon)) + { + iconExist = File.Exists(icon); + } + + resetIcon: + if (!iconExist) + { + icon = defaultIconPath; + } + + var bit = (Bitmap)null; + try + { + using (bit = new Bitmap(icon)) + { + var ms = GraphicsHelper.MakeThumbnail(bit, ImageSizeMode.AutoSuit, width, height, null); + data = ms.ToArray(); + ms.Dispose(); + bit.Dispose(); + } + } + catch + { + iconExist = false; + goto resetIcon; + } + finally + { + if (bit != null) + { + bit.Dispose(); + } + } + + return data; + } + + /// <summary> + /// 移除插件 + /// </summary> + /// <param name="workerIndent"></param> + /// <returns></returns> + public static bool RemovePlugin(string workerIndent) + { + PluginPackAttribute attr; + var plugin = GetPlugin(workerIndent, out attr); + + if (plugin != null) + { + try + { + plugin.Uninstall(); + } + catch + { + // ignored + } + + var dirName = String.Format("{0}{1}/{2}/", + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + attr.WorkIndent + ); + + if (Directory.Exists(dirName)) + { + Directory.Delete(dirName, true); + + var dllName = String.Format("{0}{1}/{2}", + AppDomain.CurrentDomain.BaseDirectory, + PluginConfig.PLUGIN_DIRECTORY, + plugin.GetType().Assembly.Location + ); + + File.Delete(dllName); + } + + return true; + } + + return false; + } + + /// <summary> + /// 安装/升级插件 + /// </summary> + /// <param name="url"></param> + /// <param name="handler"></param> + /// <returns></returns> + public static bool InstallPlugin(string url, PluginHandler<PluginPackAttribute> handler) + { + var installResult = false; + string appDirectory = AppDomain.CurrentDomain.BaseDirectory; + var pluginPath = String.Concat( + appDirectory, + PluginConfig.PLUGIN_DIRECTORY); + + var tempDir = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY, "plugin/"); + var fileName = tempDir + "dl_pack_" + String.Empty.RandomLetters(16) + ".zip"; + + if (Directory.Exists(tempDir)) + { + Directory.Delete(tempDir, true); + } + Directory.CreateDirectory(tempDir).Create(); + + var dir = new DirectoryInfo(tempDir); + + var data = HttpClient.DownloadFile(url, null); + using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) + { + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + + IList<PluginPackAttribute> pluginAttrs = new List<PluginPackAttribute>(GetPluginPackInfo(fileName)); + + if (pluginAttrs.Count != 0) + { + ZipUtility.UncompressFile(pluginPath, fileName, false); + + string[] multExt = PluginConfig.GetFilePartterns(); + foreach (String ext in multExt) + { + foreach (FileInfo file in dir.GetFiles(ext)) + { + File.Delete(pluginPath + file.Name); + file.MoveTo(pluginPath + file.Name); + } + } + + + if (handler != null) + { + var result = false; + foreach (PluginPackAttribute attr in pluginAttrs) + { + handler(attr, ref result); + } + } + + installResult = true; + } + + Directory.Delete(tempDir, true); + + return installResult; + } + + /// <summary> + /// 获取插件包的信息 + /// </summary> + /// <param name="fileName"></param> + /// <returns></returns> + public static IEnumerable<PluginPackAttribute> GetPluginPackInfo(string fileName) + { + var tempDir = String.Concat(AppDomain.CurrentDomain, PluginConfig.PLUGIN_TMP_DIRECTORY, "tmp/"); + + if (Directory.Exists(tempDir)) + { + Directory.Delete(tempDir, true); + } + Directory.CreateDirectory(tempDir).Create(); + + var dir = new DirectoryInfo(tempDir); + + ZipUtility.UncompressFile(tempDir, fileName, false); + + Assembly ass; + string[] multExt = PluginConfig.GetFilePartterns(); + foreach (String ext in multExt) + { + var files = dir.GetFiles(ext); + foreach (FileInfo f in files) + { + ass = Assembly.Load(File.ReadAllBytes(f.FullName)); + + var attbs = ass.GetCustomAttributes(typeof(PluginPackAttribute), false); + foreach (object attb in attbs) + { + if (attb is PluginPackAttribute) + { + yield return (PluginPackAttribute)attb; + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.PluginKernel/kernel/Properties/AssemblyInfo.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/kernel/Properties/AssemblyInfo.cs rename to src/core/J6.DevFw.PluginKernel/kernel/Properties/AssemblyInfo.cs diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/README.md b/src/core/J6.DevFw.PluginKernel/kernel/README.md similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/kernel/README.md rename to src/core/J6.DevFw.PluginKernel/kernel/README.md diff --git a/src/core/J6.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs b/src/core/J6.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs new file mode 100644 index 0000000..f7dac6d --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/Web/BaseWebPluginHost.cs @@ -0,0 +1,129 @@ +using System; +using System.Text.RegularExpressions; +using System.Web; + +namespace JR.DevFw.PluginKernel.Web +{ + /// <summary> + /// B/S插件宿主 + /// </summary> + [PluginHost("B/S插件宿主", "使用{module}.sh/{action}访问自定义扩展")] + public abstract class BaseWebPluginHost : BasePluginHost, IWebPluginHost + { + protected WebPluginHandleProxy<HttpContext> WebHandler; + + /// <summary> + /// + /// </summary> + protected BaseWebPluginHost() + { + } + + /// <summary> + /// + /// </summary> + /// <param name="_webHandler"></param> + protected BaseWebPluginHost(WebPluginHandleProxy<HttpContext> _webHandler) + { + this.WebHandler = _webHandler; + } + + /// <summary> + /// 注册扩展处理程序 + /// </summary> + /// <param name="plugin">扩展名称,而且也是访问地址的名称。如扩展名称为:ext,那么可使用/ext.sh访问该扩展插件</param> + /// <param name="getReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <param name="postReqHandler">委托PluginHandler<CmsContext,string>的实例</param> + /// <returns></returns> + public bool Register(IPlugin plugin, PluginHandler<HttpContext> getReqHandler, + PluginHandler<HttpContext> postReqHandler) + { + return this.WebHandler.Register(plugin, getReqHandler, postReqHandler); + } + + + /// <summary> + /// 扩展模块GET请求,返回false则应立即截断请求 + /// </summary> + /// <param name="tag"></param> + /// <param name="page"></param> + public virtual void HttpPluginRequest(HttpContext context, string extendName, ref bool result) + { + extendName = extendName.ToLower(); + this.WebHandler.HandleGetRequest(context, extendName, ref result); + } + + + /// <summary> + /// 扩展模块POST请求,返回false则应立即截断请求 + /// </summary> + /// <param name="tag"></param> + /// <param name="page"></param> + public virtual void HttpPluginPost(HttpContext context, string extendName, ref bool result) + { + extendName = extendName.ToLower(); + this.WebHandler.HandlePostRequest(context, extendName, ref result); + } + + /// <summary> + /// 获取请求路径 + /// </summary> + /// <param name="context"></param> + /// <returns></returns> + public string GetRequestPath(HttpContext context) + { + Match match = Regex.Match(context.Request.Path, "/(.+?)/([^\\?]+)"); + return match == Match.Empty ? "" : match.Groups[2].Value; + } + + /// <summary> + /// 扩展插件Action请求,为插件提供Action功能 + /// </summary> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="isPostRequest"></param> + public virtual bool HandleRequestUse<T>(T t, HttpContext context, bool isPostRequest) + { + string path = this.GetRequestPath(context); + return this.HandleCustomRequestUse(t, context, path, isPostRequest); + } + + + public bool HandleCustomRequestUse<T>(T t, HttpContext context, string path, bool isPostRequest) + { + string action = null; + + if (path.Length != 0) + { + action = path.IndexOf('/') == -1 ? path : path.Substring(0, path.IndexOf('/')); + } + action = String.Concat(action ?? "default", isPostRequest ? "_post" : ""); + + try + { + object obj = this.WebHandler.HandleRequestUse<T>( + t + , context + , action + , context.Request.RawUrl); + + + if (obj != null) + { + context.Response.Write(obj.ToString()); + } + return true; + } + catch (PluginException exc) + { + Logger.Println("[ Request][ Error]" + exc.Message + ";url :" + context.Request.RawUrl); + throw exc.InnerException ?? exc; + } + catch (Exception exc) + { + Logger.PrintException(context.Request.RawUrl, exc); + throw; + } + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/IPluginRequestHandler.cs b/src/core/J6.DevFw.PluginKernel/kernel/Web/IPluginRequestHandler.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/kernel/Web/IPluginRequestHandler.cs rename to src/core/J6.DevFw.PluginKernel/kernel/Web/IPluginRequestHandler.cs diff --git a/src/core/J6.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs b/src/core/J6.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs new file mode 100644 index 0000000..4a56a5f --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/Web/IWebPluginHost.cs @@ -0,0 +1,65 @@ +using System; +using System.Web; + +namespace JR.DevFw.PluginKernel.Web +{ + /// <summary> + /// B/S插件宿主 + /// </summary> + public interface IWebPluginHost : IPluginHost + { + /// <summary> + /// 注册扩展处理程序 + /// </summary> + /// <param name="plugin"></param> + /// <param name="getReqHandler">委托PluginHandler<HttpContext,string>的实例</param> + /// <param name="postReqHandler">委托PluginHandler<HttpContext,string>的实例</param> + /// <returns></returns> + bool Register(IPlugin plugin, PluginHandler<HttpContext> getReqHandler, + PluginHandler<HttpContext> postReqHandler); + + #region 调用插件 + + /// <summary> + /// 扩展模块GET请求,返回false则应立即截断请求 + /// </summary> + /// <param name="pluginName"></param> + /// <param name="result"></param> + /// <param name="context"></param> + void HttpPluginRequest(HttpContext context, string pluginName, ref bool result); + + /// <summary> + /// 扩展模块POST请求,返回false则应立即截断请求 + /// </summary> + /// <param name="context"></param> + /// <param name="pluginName"></param> + /// <param name="result"></param> + void HttpPluginPost(HttpContext context, string pluginName, ref bool result); + + #endregion + + /// <summary> + /// 获取请求路径 + /// </summary> + /// <param name="context"></param> + /// <returns></returns> + string GetRequestPath(HttpContext context); + + /// <summary> + /// 扩展插件Action请求,为插件提供Action功能 + /// </summary> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="isPostRequest"></param> + bool HandleRequestUse<T>(T t, HttpContext context, bool isPostRequest); + + + /// <summary> + /// 为自定义请求提供Action功能 + /// </summary> + /// <param name="t"></param> + /// <param name="context"></param> + /// <param name="isPostRequest"></param> + bool HandleCustomRequestUse<T>(T t, HttpContext context, String path,bool isPostRequest); + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/Web/RequestProxry.cs b/src/core/J6.DevFw.PluginKernel/kernel/Web/RequestProxry.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/kernel/Web/RequestProxry.cs rename to src/core/J6.DevFw.PluginKernel/kernel/Web/RequestProxry.cs diff --git a/src/core/J6.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs b/src/core/J6.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs new file mode 100644 index 0000000..44e96ae --- /dev/null +++ b/src/core/J6.DevFw.PluginKernel/kernel/Web/WebPluginHandleProxy.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Web; + +namespace JR.DevFw.PluginKernel.Web +{ + /// <summary> + /// + /// </summary> + /// <typeparam name="T"></typeparam> + public class WebPluginHandleProxy<T> : PluginHandleProxy<T> + { + private static readonly IDictionary<string, PluginHandler<T>> postHandlers; + + static WebPluginHandleProxy() + { + postHandlers = new Dictionary<string, PluginHandler<T>>(); + } + + public virtual void HandleGetRequest(T context, + string pluginWorkIndent, + ref bool handleResult) + { + this.HandleRequest(context, pluginWorkIndent, ref handleResult); + } + + public virtual void HandlePostRequest(T context, + string pluginWorkIndent, + ref bool handleResult) + { + pluginWorkIndent = pluginWorkIndent.ToLower(); + + //处理扩展 + if (postHandlers.Keys.Contains(pluginWorkIndent)) + { + postHandlers[pluginWorkIndent](context, ref handleResult); + } + } + + + /// <summary> + /// 注册处理事件 + /// </summary> + /// <param name="plugin"></param> + /// <param name="reqHandler"></param> + /// <param name="postReqHandler"></param> + /// <returns></returns> + public bool Register(IPlugin plugin, PluginHandler<T> getHandler, PluginHandler<T> postHandler) + { + Type type = plugin.GetType(); + PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); + string indent = attr.WorkIndent; + + if (postHandler == null || postHandlers.Keys.Contains(indent)) + { + return false; + } + postHandlers.Add(indent, postHandler); + + return base.Register(plugin, getHandler); + } + + + // + // 此段代码仅供参考 + // + private bool HandleRequestUse2<HandleClass>(HandleClass t, T context, bool isPostRequest, string requestPath) + { + string action = null; + HttpContext httpContext = HttpContext.Current; + + if (requestPath.Length != 0) + { + action = requestPath.IndexOf('/') == -1 + ? requestPath + : requestPath.Substring(0, requestPath.IndexOf('/')); + } + + if (action == null) action = "default"; + + //交由C#处理 + + Type type = t.GetType(); + MethodInfo method = type.GetMethod( + String.Concat(action, isPostRequest ? "_post" : ""), + BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); + if (method != null) + { + try + { + if (method.ReturnType == typeof (String)) + { + httpContext.Response.Write( + method.Invoke(t, new object[] {context}) as String + ); + } + else + { + method.Invoke(t, new object[] {context}); + } + } + catch (Exception exc) + { + Logger.PrintException(httpContext.Request.RawUrl, exc); + } + + return true; + } + return false; + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.PluginKernel/kernel/pluginKernel.snk b/src/core/J6.DevFw.PluginKernel/kernel/pluginKernel.snk similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/kernel/pluginKernel.snk rename to src/core/J6.DevFw.PluginKernel/kernel/pluginKernel.snk diff --git a/src/core/AtNet.DevFw.PluginKernel/test/Class1.cs b/src/core/J6.DevFw.PluginKernel/test/Class1.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/test/Class1.cs rename to src/core/J6.DevFw.PluginKernel/test/Class1.cs diff --git a/src/core/AtNet.DevFw.PluginKernel/test/PluginTest.csproj b/src/core/J6.DevFw.PluginKernel/test/PluginTest.csproj similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/test/PluginTest.csproj rename to src/core/J6.DevFw.PluginKernel/test/PluginTest.csproj diff --git a/src/core/AtNet.DevFw.PluginKernel/test/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.PluginKernel/test/Properties/AssemblyInfo.cs similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/test/Properties/AssemblyInfo.cs rename to src/core/J6.DevFw.PluginKernel/test/Properties/AssemblyInfo.cs diff --git a/src/core/AtNet.DevFw.PluginKernel/test/app.config b/src/core/J6.DevFw.PluginKernel/test/app.config similarity index 100% rename from src/core/AtNet.DevFw.PluginKernel/test/app.config rename to src/core/J6.DevFw.PluginKernel/test/app.config diff --git a/src/core/AtNet.DevFw.Template/AtNet.DevFw.Template.csproj.user b/src/core/J6.DevFw.Template/AtNet.DevFw.Template.csproj.user similarity index 100% rename from src/core/AtNet.DevFw.Template/AtNet.DevFw.Template.csproj.user rename to src/core/J6.DevFw.Template/AtNet.DevFw.Template.csproj.user diff --git a/src/core/J6.DevFw.Template/Compiler/CSharpProvider.cs b/src/core/J6.DevFw.Template/Compiler/CSharpProvider.cs new file mode 100644 index 0000000..6583499 --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/CSharpProvider.cs @@ -0,0 +1,298 @@ +using System; +using System.CodeDom.Compiler; +using System.Text; +using Microsoft.CSharp; +using JR.DevFw.Template.Compiler.Text; + +namespace JR.DevFw.Template.Compiler +{ + public class CSharpProvider : IDisposable + { + #region Private fields + + private CSharpCodeProvider _CSharpCodePrivoder; + private CompilerParameters _CompilerParameters = new CompilerParameters(); + private CompilerResults _Clr; + private string _Code; + private DateTime _LstFileTime = DateTime.Parse("1900-1-1"); + private AppDomain _AppDomain; + private string _AssemblyFileName = "DynamicTemp.dll"; + private bool _RemoveAssemblyFile; + private Encoding _SourceCodeFileEncoding = Encoding.Default; + private DotNetReferences _DotNetReferences = new DotNetReferences(); + + #endregion + + #region Public Properties + + /// <summary> + /// Manage the references + /// </summary> + public DotNetReferences References + { + get { return _DotNetReferences; } + } + + /// <summary> + /// Get or set the output assembly file name for the dynamic source code + /// </summary> + public string AssemblyFileName + { + get { return _AssemblyFileName; } + + set { _AssemblyFileName = value; } + } + + /// <summary> + /// The compilier parameters + /// </summary> + public CompilerParameters CompilerParameters + { + get { return _CompilerParameters; } + } + + /// <summary> + /// If this property set to true, + /// When the object intance from this class dispose, + /// the assembly File that is compiled will be deleted. + /// </summary> + public bool RemoveAssemblyFile + { + get { return _RemoveAssemblyFile; } + + set { _RemoveAssemblyFile = value; } + } + + /// <summary> + /// Get or set the encoding of source code file + /// </summary> + public Encoding SourceCodeFileEncoding + { + get { return _SourceCodeFileEncoding; } + + set { _SourceCodeFileEncoding = value; } + } + + #endregion + + #region Private methods + + private void LoadReference(string code) + { + foreach (string reference in References.GetReferences()) + { + if (reference != null) + { + if (_CompilerParameters.ReferencedAssemblies.IndexOf(reference) < 0) + { + _CompilerParameters.ReferencedAssemblies.Add(reference); + } + } + } + + foreach (string nameSpace in ReferenceInCode.GetNameSpacesInSourceCode(code)) + { + string referenceDll = References[nameSpace]; + if (referenceDll != null) + { + if (_CompilerParameters.ReferencedAssemblies.IndexOf(referenceDll) < 0) + { + _CompilerParameters.ReferencedAssemblies.Add(referenceDll); + } + } + } + } + + + /// <summary> + /// Create the instance named or inherited by typeFullName + /// </summary> + /// <param name="code">code string or source code file name</param> + /// <param name="typeFullName">the full name of type</param> + /// <param name="fromFile">from file or from code string</param> + /// <returns>instance object</returns> + /// <remarks>If the type named or inherited by typefullname does not exits, return null</remarks> + private object InnerCreateInstance(string code, string typeFullName, bool fromFile) + { + bool reCompile = false; + + if (fromFile) + { + reCompile = CompileFromFile(code); + } + else + { + reCompile = Compile(code); + } + + if (reCompile) + { + AppDomainSetup appDomainSetup; + + appDomainSetup = new AppDomainSetup(); + appDomainSetup.LoaderOptimization = LoaderOptimization.SingleDomain; + appDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; + appDomainSetup.ShadowCopyDirectories = appDomainSetup.ApplicationBase; + appDomainSetup.ShadowCopyFiles = "true"; + _AppDomain = AppDomain.CreateDomain(AssemblyFileName, null, appDomainSetup); + } + + RemoteLoader remoteLoader = + (RemoteLoader) _AppDomain.CreateInstance("Compiler.Dynamic", "RemoteAccess.RemoteLoader").Unwrap(); + return remoteLoader.Create(AssemblyFileName, typeFullName, null); + } + + #endregion + + #region Constructor + + public CSharpProvider() + { + } + + ~CSharpProvider() + { + try + { + Dispose(); + } + catch + { + } + } + + #endregion + + #region Public methods + + /// <summary> + /// Compiler From source code file + /// </summary> + /// <param name="sourceCodeFileName">The file name of source code</param> + /// <returns></returns> + public bool CompileFromFile(string sourceCodeFileName) + { + DateTime fileTime = System.IO.File.GetLastWriteTime(sourceCodeFileName); + + if (_LstFileTime == fileTime) + { + return false; + } + + _LstFileTime = fileTime; + + string code = File.ReadFileToString(sourceCodeFileName, SourceCodeFileEncoding); + + bool removeAssemblyFile = RemoveAssemblyFile; + RemoveAssemblyFile = true; + Dispose(); + RemoveAssemblyFile = removeAssemblyFile; + + _CSharpCodePrivoder = new CSharpCodeProvider(); + + LoadReference(code); + _Code = code; + _CompilerParameters.GenerateInMemory = false; + _CompilerParameters.OutputAssembly = AssemblyFileName; + + string[] files = new string[1]; + files[0] = sourceCodeFileName; + + _Clr = _CSharpCodePrivoder.CompileAssemblyFromFile(_CompilerParameters, files); + + if (_Clr.Errors.HasErrors) + { + throw new CompilerException(code, _Clr.Errors); + } + + return true; + } + + public bool Compile(string code) + { + if (code == _Code) + { + return false; + } + + bool removeAssemblyFile = RemoveAssemblyFile; + RemoveAssemblyFile = true; + Dispose(); + RemoveAssemblyFile = removeAssemblyFile; + + _Code = code; + _CSharpCodePrivoder = new CSharpCodeProvider(); + + LoadReference(code); + + _CompilerParameters.GenerateInMemory = false; + _CompilerParameters.OutputAssembly = AssemblyFileName; + + _Clr = _CSharpCodePrivoder.CompileAssemblyFromSource(_CompilerParameters, code); + + if (_Clr.Errors.HasErrors) + { + throw new CompilerException(code, _Clr.Errors); + } + + return true; + } + + + /// <summary> + /// Create the instance named or inherited by typeFullName + /// </summary> + /// <param name="code">source code string</param> + /// <param name="typeFullName">the full name of type</param> + /// <returns>instance object</returns> + /// <remarks>If the type named or inherited by typefullname does not exits, return null</remarks> + public object CreateInstance(string code, string typeFullName) + { + return InnerCreateInstance(code, typeFullName, false); + } + + /// <summary> + /// Create the instance named or inherited by typeFullName + /// </summary> + /// <param name="fileName">source code file</param> + /// <param name="typeFullName">the full name of type</param> + /// <returns>instance object</returns> + /// <remarks>If the type named or inherited by typefullname does not exits, return null</remarks> + public object CreateInstanceFromFile(string fileName, string typeFullName) + { + return InnerCreateInstance(fileName, typeFullName, true); + } + + #endregion + + #region IDisposable Members + + public void Dispose() + { + if (_AppDomain != null) + { + AppDomain.Unload(_AppDomain); + _AppDomain = null; + } + + _Clr = null; + + GC.Collect(); + + if (RemoveAssemblyFile) + { + if (System.IO.File.Exists(AssemblyFileName)) + { + System.IO.File.Delete(AssemblyFileName); + } + + if (System.IO.File.Exists(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb")) + { + System.IO.File.Delete(System.IO.Path.GetFileName(AssemblyFileName) + ".pdb"); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Compiler/CompilerException.cs b/src/core/J6.DevFw.Template/Compiler/CompilerException.cs new file mode 100644 index 0000000..7215c00 --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/CompilerException.cs @@ -0,0 +1,40 @@ +using System; +using System.CodeDom.Compiler; +using System.Text; + +namespace JR.DevFw.Template.Compiler +{ + public class CompilerException : Exception + { + private string _Code; + private CompilerErrorCollection _Errors; + + public string Code + { + get { return _Code; } + } + + public CompilerErrorCollection Errors + { + get { return _Errors; } + } + + public CompilerException(string code, CompilerErrorCollection errors) + { + _Code = code; + _Errors = errors; + } + + public override string ToString() + { + StringBuilder message = new StringBuilder(); + + foreach (CompilerError err in _Errors) + { + message.AppendFormat("({0}): error {1}: {2}", err.Line, err.ErrorNumber, err.ErrorText); + } + + return message.ToString(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Compiler/DotNetReferences.cs b/src/core/J6.DevFw.Template/Compiler/DotNetReferences.cs new file mode 100644 index 0000000..ce39ec4 --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/DotNetReferences.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using JR.DevFw.Template.Compiler.Text; + +namespace JR.DevFw.Template.Compiler +{ + public class DotNetReferences + { + #region Private fields + + private List<String> _References = new List<string>(); + + #endregion + + #region Private methods + + #endregion + + #region Public methods + + public void Add(string reference) + { + _References.Add(reference); + } + + public void Remove(string reference) + { + _References.Remove(reference); + } + + public IEnumerable<string> GetReferences() + { + foreach (string reference in _References) + { + yield return reference; + } + } + + public string this[string nameSpace] + { + get { return ReferenceInCode.GetDefaultReferenceDllName(nameSpace); } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Compiler/RemoteLoader.cs b/src/core/J6.DevFw.Template/Compiler/RemoteLoader.cs new file mode 100644 index 0000000..de19014 --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/RemoteLoader.cs @@ -0,0 +1,82 @@ +using System; +using System.Reflection; + +namespace JR.DevFw.Template.Compiler +{ + /// <summary> + /// Factory class to create objects exposing IRemoteInterface + /// </summary> + internal class RemoteLoader : MarshalByRefObject + { + private Type _Type; + + public RemoteLoader() + { + } + + /// <summary> Factory method to create an instance of the type whose name is specified, + /// using the named assembly file and the constructor that best matches the specified parameters. </summary> + /// <param name="assemblyFile"> The name of a file that contains an assembly where the type named typeName is sought. </param> + /// <param name="typeName"> The name of the preferred type. </param> + /// <param name="constructArgs"> An array of arguments that match in number, order, and type the parameters of the constructor to invoke, or null for default constructor. </param> + /// <returns> The return value is the created object represented as ILiveInterface. </returns> + public object Create(string assemblyFile, string typeName, object[] constructArgs) + { + if (_Type == null) + { + string asmName = System.IO.Path.GetFileNameWithoutExtension(assemblyFile); + + AppDomain.CurrentDomain.Load(asmName); + + Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies(); + Assembly asm = null; + + foreach (Assembly a in asms) + { + if (System.IO.Path.GetFileName(a.Location) + .Equals(assemblyFile, StringComparison.CurrentCultureIgnoreCase)) + { + asm = a; + } + } + + Type[] types = asm.GetTypes(); + + Type matchType = null; + + foreach (Type type in types) + { + if (type.FullName == typeName) + { + matchType = type; + break; + } + + if (type.BaseType != null) + { + if (type.BaseType.FullName == typeName) + { + matchType = type; + break; + } + } + + if (type.GetInterface(typeName) != null) + { + matchType = type; + break; + } + } + + if (matchType == null) + { + return null; + } + + _Type = matchType; + } + + return Activator.CreateInstance(_Type); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Compiler/Text/File.cs b/src/core/J6.DevFw.Template/Compiler/Text/File.cs new file mode 100644 index 0000000..c069d1d --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/Text/File.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Text; + +namespace JR.DevFw.Template.Compiler.Text +{ + internal class File + { + public static String ReadFileToString(String fileName, Encoding encoding) + { + using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) + { + StreamReader sr = new StreamReader(fs, encoding); + return sr.ReadToEnd(); + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Compiler/Text/ReferenceInCode.cs b/src/core/J6.DevFw.Template/Compiler/Text/ReferenceInCode.cs new file mode 100644 index 0000000..92004fb --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/Text/ReferenceInCode.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; + +namespace JR.DevFw.Template.Compiler.Text +{ + internal class ReferenceInCode + { + private static readonly string[] _SystemSpecRefs = + { + "System.Configuration", + "System.Configuration.Install", + "System.Data", + "System.Data.SqlClient", + "System.Data.SqlXml", + "System.Deployment", + "System.Design", + "Sysemt.DirecoryServices", + "System.DirectoryServices.Protocols", + "System.Drawing", + "System.Drawing.Design", + "System.EnterpriseServices", + "System.Management", + "System.Messaging", + "System.Runtime.Remoting", + "System.Runtime.Serialization.Formatters.Soap", + "System.Security", + "System.ServiceProcess", + "System.Transactions", + "System.Web", + "System.Web.Mobile", + "System.Web.RegularExpressions", + "System.Web.Services", + "System.Windows.Forms", + "System.Xml" + }; + + private static string GetSystemReferenceDllName(string namespaceText) + { + foreach (string sysSpecRef in _SystemSpecRefs) + { + if (namespaceText.IndexOf(sysSpecRef) == 0) + { + return sysSpecRef + ".dll"; + } + } + + return "System.dll"; + } + + public static List<string> GetNameSpacesInSourceCode(string code) + { + return Regx.GetMatchStrings(code, @"using\s+(.+?)\s*;", false); + } + + public static string GetDefaultReferenceDllName(string namespaceText) + { + namespaceText = namespaceText.Trim(); + + if (namespaceText.IndexOf("System") == 0) + { + return GetSystemReferenceDllName(namespaceText); + } + else + { + return namespaceText + ".dll"; + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Compiler/Text/Regx.cs b/src/core/J6.DevFw.Template/Compiler/Text/Regx.cs new file mode 100644 index 0000000..3d2c1fc --- /dev/null +++ b/src/core/J6.DevFw.Template/Compiler/Text/Regx.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Template.Compiler.Text +{ + internal class Regx + { + public static List<string> GetMatchStrings(String text, String regx, + bool ignoreCase) + { + List<string> output = new List<string>(); + + Regex reg; + + int index = 0; + int begin = 0; + index = regx.IndexOf("(.+)"); + if (index < 0) + { + index = regx.IndexOf("(.+?)"); + if (index >= 0) + { + begin = index + 5; + } + } + else + { + begin = index + 4; + } + + if (index >= 0) + { + String endText = regx.Substring(begin); + + if (GetMatch(text, endText, ignoreCase) == "") + { + return output; + } + } + + if (ignoreCase) + { + reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); + } + else + { + reg = new Regex(regx, RegexOptions.Singleline); + } + + MatchCollection m = reg.Matches(text); + + if (m.Count == 0) + { + return output; + } + + for (int j = 0; j < m.Count; j++) + { + int count = m[j].Groups.Count; + + for (int i = 1; i < count; i++) + { + output.Add(m[j].Groups[i].Value.Trim()); + } + } + + return output; + } + + public static String GetMatch(String text, String regx, bool ignoreCase) + { + Regex reg; + + int index = 0; + int begin = 0; + index = regx.IndexOf("(.+)"); + if (index < 0) + { + index = regx.IndexOf("(.+?)"); + if (index >= 0) + { + begin = index + 5; + } + } + else + { + begin = index + 4; + } + + if (index >= 0) + { + String endText = regx.Substring(begin); + + if (endText != "") + { + if (GetMatch(text, endText, ignoreCase) == "") + { + return ""; + } + } + } + + if (ignoreCase) + { + reg = new Regex(regx, RegexOptions.IgnoreCase | RegexOptions.Singleline); + } + else + { + reg = new Regex(regx, RegexOptions.Singleline); + } + + String ret = ""; + Match m = reg.Match(text); + + if (m.Groups.Count > 0) + { + ret = m.Groups[m.Groups.Count - 1].Value; + } + + return ret; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Embed.Designer.cs b/src/core/J6.DevFw.Template/Embed.Designer.cs new file mode 100644 index 0000000..11dec96 --- /dev/null +++ b/src/core/J6.DevFw.Template/Embed.Designer.cs @@ -0,0 +1,95 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace JR.DevFw.Template { + using System; + + + /// <summary> + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// </summary> + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Embed { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Embed() { + } + + /// <summary> + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JR.DevFw.Template.Embed", typeof(Embed).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// 查找类似 <!DOCTYPE HTML> + ///<html> + ///<head> + /// <title>${title} - ASP.NET模板系统 - Power by opsoft</title> + /// <style type="text/css"> + /// body { margin: 0; } + /// + /// * { + /// font-size: 12px; + /// font-family: Tahoma; + /// } + /// + /// .center { text-align: Center; } + /// + /// #footer { + /// background: #e5e5e5; + /// color: #006699; + /// text-align: center; + /// line-height: 30px; + /// } + /// + /// a { + /// color: #006699; + /// outline: no [字符串的其余部分被截断]"; 的本地化字符串。 + /// </summary> + internal static string SysTemplatePage { + get { + return ResourceManager.GetString("SysTemplatePage", resourceCulture); + } + } + } +} diff --git a/src/core/AtNet.DevFw.Template/Embed.resources b/src/core/J6.DevFw.Template/Embed.resources similarity index 100% rename from src/core/AtNet.DevFw.Template/Embed.resources rename to src/core/J6.DevFw.Template/Embed.resources diff --git a/src/core/AtNet.DevFw.Template/Embed.resx b/src/core/J6.DevFw.Template/Embed.resx similarity index 100% rename from src/core/AtNet.DevFw.Template/Embed.resx rename to src/core/J6.DevFw.Template/Embed.resx diff --git a/src/core/J6.DevFw.Template/JR.DevFw.Template.csproj b/src/core/J6.DevFw.Template/JR.DevFw.Template.csproj new file mode 100644 index 0000000..84a98d0 --- /dev/null +++ b/src/core/J6.DevFw.Template/JR.DevFw.Template.csproj @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.30703</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{275CAE3E-A9E0-4DE0-8031-E9137BBDD693}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>JR.DevFw.Template</RootNamespace> + <AssemblyName>JR.DevFw.Template</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile> + </TargetFrameworkProfile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\dist\dll\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile>..\..\..\dist\dll\JR.DevFw.Template.xml</DocumentationFile> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\Bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup> + <SignAssembly>true</SignAssembly> + </PropertyGroup> + <PropertyGroup> + <AssemblyOriginatorKeyFile>template.snk</AssemblyOriginatorKeyFile> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Web" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Compiler\CompilerException.cs" /> + <Compile Include="Compiler\CSharpProvider.cs" /> + <Compile Include="Compiler\DotNetReferences.cs" /> + <Compile Include="Compiler\RemoteLoader.cs" /> + <Compile Include="Compiler\Text\File.cs" /> + <Compile Include="Compiler\Text\ReferenceInCode.cs" /> + <Compile Include="Compiler\Text\Regx.cs" /> + <Compile Include="old\Delegate.cs" /> + <Compile Include="Embed.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Embed.resx</DependentUpon> + </Compile> + <Compile Include="old\Eval.cs" /> + <Compile Include="old\HttpDataContainer.cs" /> + <Compile Include="old\IDataContrainer.cs" /> + <Compile Include="old\ITemplateVariableObject.cs" /> + <Compile Include="old\MD5.cs" /> + <Compile Include="old\NormalDataContrainer.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="old\SimpleTplEngine.cs" /> + <Compile Include="old\TemplateCache.cs" /> + <Compile Include="old\ITemplate.cs" /> + <Compile Include="old\TemplateNames.cs" /> + <Compile Include="old\TemplateRegister.cs" /> + <Compile Include="old\TemplateAttribute.cs" /> + <Compile Include="old\TemplateUtility.cs" /> + <Compile Include="old\TemplateRegexUtility.cs" /> + <Compile Include="old\Config.cs" /> + <Compile Include="old\TemplatePage.cs" /> + <Compile Include="old\temp\~Example.cs" /> + <Compile Include="old\Template.cs" /> + <Compile Include="old\temp\EventLog.cs" /> + <Compile Include="old\test.cs" /> + <Compile Include="old\Variable.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Embed.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Embed.Designer.cs</LastGenOutput> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <Content Include="embed\SysTemplatePage.html" /> + </ItemGroup> + <ItemGroup> + <None Include="template.snk" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.Template/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4650edf --- /dev/null +++ b/src/core/J6.DevFw.Template/Properties/AssemblyInfo.cs @@ -0,0 +1,44 @@ +using System.Reflection; +using System.Security; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +//publicKey:7baff2e0bbd0ef52 + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 + +[assembly: AllowPartiallyTrustedCallers] +[assembly: AssemblyTitle("ASP.NET模板引擎 v2.2")] +[assembly: AssemblyDescription("asp.net模板引擎")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("OPSoft(www.JR.DevFwcc)")] +[assembly: AssemblyProduct("OPSoft.Template")] +[assembly: AssemblyCopyright("Copyright © OPSoft 2013")] +[assembly: AssemblyTrademark("OPSoft")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 + +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID + +[assembly: Guid("129b8456-d420-43e2-9376-b16530a1d6af")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("2.3.0.0")] +[assembly: AssemblyFileVersion("2.3.0.0")] \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/embed/SysTemplatePage.html b/src/core/J6.DevFw.Template/embed/SysTemplatePage.html new file mode 100644 index 0000000..5d6b276 --- /dev/null +++ b/src/core/J6.DevFw.Template/embed/SysTemplatePage.html @@ -0,0 +1,38 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>${title} - ASP.NET模板系统 - Power by opsoft + + + +${content} + + + \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/Config.cs b/src/core/J6.DevFw.Template/old/Config.cs new file mode 100644 index 0000000..fbdaeca --- /dev/null +++ b/src/core/J6.DevFw.Template/old/Config.cs @@ -0,0 +1,41 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:ITemplate.cs +// Author:newmin +// Create:2011/06/05 +// + +namespace JR.DevFw.Template +{ + public delegate void TemplatePageHandler(TemplatePage page); + + public class Config + { + private static readonly string _version; + + public static string Version + { + get { return "2.1"; } + } + + /// + /// 是否启用Html压缩 + /// + public static bool EnabledCompress = true; + + /// + /// 是否将模板缓存 + /// + public static bool EnabledCache = true; + + /// + /// 是否共享URL参数值 + /// + public static bool UrlQueryShared = true; + + /// + /// 共享HttpItem传递的数据 + /// + public static bool HttpItemShared = true; + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/Delegate.cs b/src/core/J6.DevFw.Template/old/Delegate.cs new file mode 100644 index 0000000..9e1d25f --- /dev/null +++ b/src/core/J6.DevFw.Template/old/Delegate.cs @@ -0,0 +1,18 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:delegate.cs +// Author:newmin +// Create:2011/06/28 +// + +namespace JR.DevFw.Template +{ + /// + /// 模板呈现处理 + /// + /// 模板内容 + /// 数据对象 + public delegate void TemplateHandler(T obj, ref string templateContent); + + public delegate void TemplateBehavior(); +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/Eval.cs b/src/core/J6.DevFw.Template/old/Eval.cs new file mode 100644 index 0000000..51aac94 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/Eval.cs @@ -0,0 +1,447 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2013/09/05 +// + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Web; + +namespace JR.DevFw.Template +{ + public sealed class Eval + { + /// + /// 添加到数据项 + /// + /// + public static void ToItem(string expression) + { + //$item:x=123 + } + + /// + /// 赋值到变量 + /// $v = form('key') + /// + public static string SetToVariable(IDataContrainer dc, string content) + { + //正则模式,支持以下 + // //$menu="123456\" f" sdf + // $menu=12 fsdf + // $menu=item:123456 + // $menu=>getmenu(test,item,get) + const string expressionPattern = + "(/*/*|#*)\\$([_a-zA-Z][a-zA-Z0-9_]*)\\s*=\\s*(\"(\"|[^\"\\n])*\"|[^<>\\s\\n\"\\$/]+)(\\s+\\B)*"; + //设置表达式 + const string specialVarPattern = "(item|cache|query|form)\\([\"']*(.+?)[\"']*\\)"; //特殊数据 + + string outHtml, + varName, + varValue, + varKey; + + Match valueMatch; + + outHtml = Regex.Replace(content, expressionPattern, m => + { + //注释 + if (m.Groups[1].Value != "") return String.Empty; + + + //获取变量及表达式 + varName = m.Groups[2].Value; + varValue = m.Groups[3].Value; + + if (Regex.IsMatch(varValue, specialVarPattern, RegexOptions.IgnoreCase)) + { + valueMatch = Regex.Match(varValue, specialVarPattern, RegexOptions.IgnoreCase); + varKey = valueMatch.Groups[2].Value; + + switch (valueMatch.Groups[1].Value.ToLower()) + { + case "item": + dc.DefineVariable(varName, HttpContext.Current.Items[varKey]); + break; + case "cache": + dc.DefineVariable(varName, HttpRuntime.Cache[varKey]); + break; + case "query": + dc.DefineVariable(varName, HttpContext.Current.Request[varKey]); + break; + case "form": + dc.DefineVariable(varName,HttpContext.Current.Request.Form[varKey]); + break; + } + } + else + { + string varRealValue = Regex.Replace(varValue, "\\B\"|\"\\B", String.Empty); + + //如果为字符,否则读取指定值的变量 + if (Regex.IsMatch(varValue, "\\B\"|\"\\B")) + { + dc.DefineVariable(varName, varRealValue); + } + else + { + object obj = dc.GetVariable(varRealValue); + if (obj != null) + { + if (obj is Variable) + { + dc.DefineVariable(varName, (Variable) obj); + } + else + { + dc.DefineVariable(varName, obj.ToString()); + } + } + else + { + string message = ""; + int i = 0; + foreach (string key in dc.GetDefineVariable().Keys) + { + message += (++i == 1 ? "" : "," + key); + } + throw new NotSupportedException("数据引用键错误:" + m.Value + "\n" + + + (message != "" + ? "受支持可引用的数据键包括" + message + "\n使用\"$" + varName + + "=>键\"进行调用!" + : "")); + } + } + } + + return String.Empty; + }, RegexOptions.Singleline); + return outHtml; + } + + /// + /// 执行方法并将返回值赋予变量 + /// + /// + /// + /// + public static string EvalMethodToVar(IDataContrainer dc, string content, object data) + { + //正则模式,支持以下 + // //$menu="123456\" f" sdf + // $menu=12 fsdf + // $menu=item:123456 + // $menu=>getmenu(test,item,get) + const string expressionPattern = + "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)\\s*=>\\s*([a-zA-Z][a-zA-Z0-9_]*)\\((([^\\)]|\\\\\\))*)\\)(\\s+\\B)*"; //设置表达式 + + string outHtml, + varName, + methodName, + paramArray; + + Type type = data.GetType(); + MethodInfo method; + Type[] parameterTypes; + object[] parameters; + int parametersNum; + + + outHtml = Regex.Replace(content, expressionPattern, m => + { + //注释 + if (m.Groups[1].Value != "") return String.Empty; + + + //获取变量及表达式 + varName = m.Groups[2].Value; + methodName = m.Groups[3].Value; + paramArray = m.Groups[4].Value.Replace("\\,", "__CSP__"); + + parameters = paramArray.Trim().Length == 0 ? new object[0] : paramArray.Split(','); + parametersNum = parameters.Length; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parametersNum]; + for (int i = 0; i < parametersNum; i++) + { + parameterTypes[i] = typeof (String); + parameters[i] = + Regex.Replace(parameters[i].ToString(), "\\B\"|\"\\B", String.Empty).Replace("__CSP__", ","); + } + + method = type.GetMethod( + methodName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + if (method != null) + { + Type returnType = method.ReturnType; + if (returnType != typeof (void)) + { + object result = method.Invoke(data, parameters); + if (result != null) + { + if (returnType.IsPrimitive || returnType == typeof (String)) + { + dc.DefineVariable(varName, (result ?? "").ToString()); + } + else + { + dc.DefineVariable(varName, + new Variable {Key = varName, Value = result, Type = returnType}); + } + } + } + } + + /* + else + { + //throw new MissingMethodException("在对象中找不到"); + + Config.DC.DefineVar(varName, "在对象中找不到方法"+methodName+""+ + (parametersNum==0?"":",参数"+parametersNum.ToString()+"个") + +"。"); + } + */ + + return String.Empty; + }, RegexOptions.Singleline); + return outHtml; + } + + /// + /// 执行方法并将返回值赋予变量 + /// + /// + /// + /// + [Obsolete] + public static string EntityVariable(IDataContrainer dc, string content) + { + //正则模式,支持以下 + // //$menu="123456\" f" sdf + // $menu=12 fsdf + // $menu=item:123456 + // $menu=>getmenu(test,item,get) + const string expressionPattern = "(/*/*)\\$([a-zA-Z][a-zA-Z0-9_]*)=>([a-zA-Z0-9_]+)(\\s+\\B)*"; //设置表达式 + + string outHtml = content, + varName, + entityName; + + + outHtml = Regex.Replace(content, expressionPattern, m => + { + //注释 + if (m.Groups[1].Value != "") return String.Empty; + + //获取变量及表达式 + varName = m.Groups[2].Value; + entityName = m.Groups[3].Value; + + object obj = dc.GetVariable(entityName); + if (obj != null && obj is Variable) + { + Variable var = (Variable) obj; + obj = var.Value; + Type type = var.Type; + + //解析属性的值 + PropertyInfo[] pros = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); + foreach (PropertyInfo pro in pros) + { + outHtml = Regex.Replace(outHtml, + String.Format("\\$\\{0}{1}\\.{1}{2}", "\\{", varName, pro.Name, "\\}"), + m2 => { return (pro.GetValue(obj, null) ?? "").ToString(); }, RegexOptions.IgnoreCase); + } + } + return String.Empty; + }, RegexOptions.Singleline); + return outHtml; + } + + + public static string Complie(IDataContrainer dc, string html, object data) + { + string outHtml; + + //======= 设置变量 ======// + outHtml = SetToVariable(dc, html); + + //======= 求方法 =======// + if (data != null) + { + outHtml = EvalMethodToVar(dc, outHtml, data); + } + + // outHtml = EntityVariable(dc, outHtml); + + return outHtml; + } + + internal static string ResolveEntityProperties(IDataContrainer dc, string templateHtml) + { + const string keyParttern = "\\$\\{([a-zA-Z][a-zA-Z0-9_]*)\\.([A-Z_a-z][a-zA-Z0-9_]*)\\}"; + IDictionary entityKeys = new Dictionary(); + IDictionary entityValues = new Dictionary(); + + string entityName, proName; + Variable var; + PropertyInfo pro; + object varValue; + + templateHtml = Regex.Replace(templateHtml, keyParttern, m => + { + entityName = m.Groups[1].Value; + proName = m.Groups[2].Value; + + if (!entityValues.Keys.Contains(entityName)) + { + varValue = dc.GetVariable(entityName); + entityValues.Add(entityName, varValue != null ? (Variable) varValue : default(Variable)); + } + + var = entityValues[entityName]; + if (var.Value != null) + { + //解析属性的值 + pro = var.Type.GetProperty(entityName, + BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (pro != null) + { + return (pro.GetValue(var.Value, null) ?? "").ToString(); + } + + string message = ""; + int i = 0; + foreach ( + PropertyInfo p in + var.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | + BindingFlags.IgnoreCase)) + { + message += (++i == 1 ? "" : ",") + p.Name; + } + + throw new NotSupportedException("不支持的属性调用${" + var.Key + "." + proName + "}\n" + var.Key + + "支持可选的属性:" + message + "\n使用\"${" + var.Key + ".属性}\"进行调用!"); + } + return String.Empty; + }); + return templateHtml; + } + + /// + /// 解析变量 + /// + /// + /// + /// + internal static string ResolveVariable(string templateHtml, Variable variable) + { + // + // ${obj.name}; + // 字典方式 ${obj.__dict__[key]} + // 不支持的属性,默认以_开头 + // a-z下划线或中文开头 + // + string keyParttern = "\\$\\{" + variable.Key + + "\\.([A-Z_a-z\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*|__dict__\\[([^\\]]+)\\])\\}"; + string proName, dictKey; + PropertyInfo pro = null; + IDictionary propDict = null; + + templateHtml = Regex.Replace(templateHtml, keyParttern, m => + { + proName = m.Groups[1].Value; + if (variable.Value != null) + { + //解析属性的值 + pro = variable.Type.GetProperty(proName, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.IgnoreCase); + if (pro != null) + { + return (pro.GetValue(variable.Value, null) ?? "").ToString(); + } + + #region 获取字典 + + if (!String.IsNullOrEmpty(m.Groups[2].Value)) + { + //获取属性字典,并缓存 + if (propDict == null) + { + pro = variable.Type.GetProperty("__dict__", + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | + BindingFlags.IgnoreCase); + if (pro != null) + { + if (pro.PropertyType != typeof (IDictionary)) + { + throw new TypeLoadException("__dict__属性的类型应为IDictionary"); + } + else + { + propDict = pro.GetValue(variable.Value, null) as IDictionary; + } + } + else + { + //未定义字典 + throw new TypeLoadException("字典不存在!"); + } + } + + //获取值 + dictKey = m.Groups[2].Value; + if (propDict.ContainsKey(dictKey)) + { + return propDict[dictKey]; + } + else + { + //字典不存在值 + return String.Empty; + } + } + + #endregion + + string message = ""; + TemplateVariableFieldAttribute[] attr; + int i = 0; + foreach ( + PropertyInfo p in + variable.Type.GetProperties(BindingFlags.Instance | BindingFlags.Public | + BindingFlags.NonPublic | BindingFlags.IgnoreCase)) + { + if (!p.Name.StartsWith("_")) + { + attr = + (TemplateVariableFieldAttribute[]) + p.GetCustomAttributes(typeof (TemplateVariableFieldAttribute), true); + //message += (++i == 1 ? "" : ",") + p.Name; + message += (++i == 1 ? "\n=================================\n" : "\n") + p.Name + "\t : \t" + + (attr.Length > 0 ? attr[0].Descript : ""); + } + } + + throw new NotSupportedException("不支持的属性调用${" + variable.Key + "." + proName + "}\n\n" + variable.Key + + "支持下列可选属性:" + message + "\n\n注:使用\"${" + variable.Key + + ".属性}\"进行调用,属性不区分大小写。"); + } + return m.Value; + }); + return templateHtml; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/HttpDataContainer.cs b/src/core/J6.DevFw.Template/old/HttpDataContainer.cs new file mode 100644 index 0000000..11dd542 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/HttpDataContainer.cs @@ -0,0 +1,124 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2013/09/05 +// + +using System; +using System.Collections.Generic; +using System.Web; + +namespace JR.DevFw.Template +{ + /// + /// HTTP数据容器 + /// + internal sealed class HttpDataContrainer : IDataContrainer + { + private IDictionary varDict; + + public HttpDataContrainer() + { + object obj = HttpContext.Current.Items["__tpl_var_define__"]; + if (obj != null) + { + varDict = obj as IDictionary; + } + else + { + varDict = new Dictionary(); + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + } + } + + public string GetTemplatePageCacheContent(string templateID) + { + if (TemplateCache.templateDictionary.ContainsKey(templateID)) + { + return HttpRuntime.Cache["tpl_cache_" + templateID] as string; + } + return null; + } + + public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) + { + HttpRuntime.Cache.Insert("tpl_cache_" + templateID, content, + new System.Web.Caching.CacheDependency(dependFileName), DateTime.Now.AddDays(30), TimeSpan.Zero); + } + + public void DefineVariable(string key, T value) + { + if (value == null) return; //防止非法参数 + + /* + IDictionary varDict; + object obj = HttpContext.Current.Items["__tpl_var_define__"]; + if (obj != null) + { + varDict = obj as IDictionary; + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + } + else + { + varDict = new Dictionary(); + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + }*/ + + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + + //如果不是基元类型,则保存类型 + Type t = typeof (T); + if (t == typeof (String) || t.IsPrimitive) + { + varDict.Add(key, value); + } + else + { + varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); + } + + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + } + + public void DefineVariable(string key, Variable variable) + { + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + variable.Key = key; + varDict.Add(key, variable); + HttpContext.Current.Items["__tpl_var_define__"] = varDict; + } + + public object GetVariable(string key) + { + if (this.varDict.Keys.Contains(key)) + { + return varDict[key]; + } + return null; + } + + public IDictionary GetDefineVariable() + { + /* + object obj = HttpContext.Current.Items["__tpl_var_define__"]; + if (obj != null) + { + return obj as IDictionary; + } + return null; + */ + + return this.varDict; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/IDataContrainer.cs b/src/core/J6.DevFw.Template/old/IDataContrainer.cs new file mode 100644 index 0000000..5990c30 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/IDataContrainer.cs @@ -0,0 +1,59 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2013/09/05 +// + +using System.Collections.Generic; + +namespace JR.DevFw.Template +{ + /// + /// IDataContainer接口 + /// + public interface IDataContrainer + { + /// + /// 获取模板页缓存内容 + /// + /// + /// + string GetTemplatePageCacheContent(string templateID); + + /// + /// 设置模板页缓存内容 + /// + /// + /// + /// + void SetTemplatePageCacheContent(string templateID, string content, string dependFileName); + + /// + /// 设置变量 + /// + /// + /// + void DefineVariable(string key, T variable); + + /// + /// 定义变量 + /// + /// + /// + void DefineVariable(string key, Variable variable); + + /// + /// 获取变量 + /// + /// + /// + object GetVariable(string key); + + /// + /// 获取自定义变量 + /// + /// + IDictionary GetDefineVariable(); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/ITemplate.cs b/src/core/J6.DevFw.Template/old/ITemplate.cs new file mode 100644 index 0000000..66b782c --- /dev/null +++ b/src/core/J6.DevFw.Template/old/ITemplate.cs @@ -0,0 +1,39 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:ITemplate.cs +// Author:newmin +// Create:2011/06/05 +// + +namespace JR.DevFw.Template +{ + public interface ITemplate + { + /// + /// 读取模板 + /// + /// + /// + string Read(string templateID); + + /// + /// 压缩模板 + /// + /// + void Compress(string templateID); + + /// + /// 压缩Html + /// + /// + string CompressHtml(string html); + + /// + /// 根据模板路径获取模板的ID + /// 计算规则:小写文件名的16位md5 + /// + /// + /// + string GetTemplateID(string filePath); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/ITemplateVariableObject.cs b/src/core/J6.DevFw.Template/old/ITemplateVariableObject.cs new file mode 100644 index 0000000..6bd361c --- /dev/null +++ b/src/core/J6.DevFw.Template/old/ITemplateVariableObject.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +namespace JR.DevFw.Template +{ + /// + /// 模板变量对象 + /// + public interface ITemplateVariableObject + { + /// + /// 数据字典 + /// + IDictionary __dict__ { get; } + + /// + /// 添加数据 + /// + /// + /// + void AddData(string key, string data); + + /// + /// 删除数据 + /// + /// + void RemoveData(string key); + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/MD5.cs b/src/core/J6.DevFw.Template/old/MD5.cs new file mode 100644 index 0000000..3c50450 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/MD5.cs @@ -0,0 +1,39 @@ +using System; +using System.Text; + +namespace JR.DevFw.Template +{ + internal class MD5 + { + /// + /// 用md5加密 + /// + /// + /// + public static string Encode(String str) + { + StringBuilder sb = new StringBuilder(); + var md5 = System.Security.Cryptography.MD5.Create(); //实例化一个md5对像 + // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  + byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); + foreach (byte b in s) + { + sb.Append(b.ToString("x2")); + } + return sb.ToString(); + } + + /// + /// 16位MD5加密 + /// + /// + /// + public static string EncodeTo16(String str) + { + //取32位的中间部分 + var md5 = System.Security.Cryptography.MD5.Create(); + return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8) + .Replace("-", String.Empty); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/NormalDataContrainer.cs b/src/core/J6.DevFw.Template/old/NormalDataContrainer.cs new file mode 100644 index 0000000..156151e --- /dev/null +++ b/src/core/J6.DevFw.Template/old/NormalDataContrainer.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; + +namespace JR.DevFw.Template +{ + internal class NormalDataContrainer : IDataContrainer + { + private IDictionary varDict; + + public string GetTemplatePageCacheContent(string templateID) + { + throw new Exception(); + } + + public void SetTemplatePageCacheContent(string templateID, string content, string dependFileName) + { + } + + public void DefineVariable(string key, T value) + { + if (value == null) return; //防止非法参数 + + + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + + //如果不是基元类型,则保存类型 + Type t = typeof (T); + if (t == typeof (String) || t.IsPrimitive) + { + varDict.Add(key, value); + } + else + { + varDict.Add(key, new Variable {Key = key, Value = value, Type = t}); + } + } + + public void DefineVariable(string key, Variable variable) + { + if (varDict.Keys.Contains(key)) + { + throw new ArgumentException("模板变量已定义。", key); + } + variable.Key = key; + varDict.Add(key, variable); + } + + public object GetVariable(string key) + { + if (this.varDict.Keys.Contains(key)) + { + return varDict[key]; + } + return null; + } + + public IDictionary GetDefineVariable() + { + if (varDict == null) + { + varDict = new Dictionary(); + } + return varDict; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/SimpleTplEngine.cs b/src/core/J6.DevFw.Template/old/SimpleTplEngine.cs new file mode 100644 index 0000000..6a10da6 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/SimpleTplEngine.cs @@ -0,0 +1,257 @@ +/* +* Copyright(C) 2010-2012 S1N1.COM +* +* File Name : SimpleTemplateEngine +* Author : Administrator +* Create : 2012/10/26 23:49:52 +* Description : +* Mofify: +* 2013-04-11 10:29 newmin [+]: 添加TemplateAttribute特性判断是否为返回数据, 返回数据的方法不再限制为私有 +* 2013-04-23 22:45 newmin [+]: 支持私有,公共,受保护的成员调用 +* 2013-04-23 22:46 newmin [+]: 支持int参数,如$tpl(3,'c,a,r') +* 2013-04-26 17:15 newmin [+]: 支持method +*/ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Template +{ + /// + /// 简单模板解析类 + /// + public sealed class SimpleTplEngine + { + /// + /// 包含方法的类型实例 + /// + private object classInstance; + + /// + /// + /// + /// + /// + public SimpleTplEngine(object classInstance, bool counter) + { + this.classInstance = classInstance; + if (counter) + { + this.Count = new List(); + } + } + + /// + /// 计数 + /// + public IList Count; + + + /// + /// 数据列正则 + /// + private static readonly Regex FieldRegex = new Regex("{([a-z0-9_\\]\\[\u4e00-\u9fa5]+)}"); + + /// + /// 编译模版方法 + /// + /// + private void ComplieTemplateMethod(ref string html) + { + //返回结果 + const string methodPattern = "\\@([A-Za-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)\\s*([\\S\\s]+)@each\\s*off"; + //@each(id){ $nav() } + const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; + + Regex methodRegex = new Regex(methodPattern); //方法正则 + + //如果不包括方法,则直接返回 + if (!methodRegex.IsMatch(html)) + { + return; + } + + + Regex paramRegex = new Regex(paramPattern); //参数正则 + + Type type = this.classInstance.GetType(); + MethodInfo method; + string tagName; + string tagFormat; + object[] parameters; + Type[] parameterTypes; //参数类型数组 + MatchCollection paramMcs; + + + html = methodRegex.Replace(html, m => + { + tagName = m.Groups[1].Value; + tagFormat = m.Groups[3].Value; + + //获得参数 + paramMcs = paramRegex.Matches(m.Groups[2].Value); + + //参数,多添加一个tagFormat参数 + parameters = new object[paramMcs.Count + 1]; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parameters.Length]; + for (int i = 0; i < parameterTypes.Length; i++) + { + parameterTypes[i] = typeof(String); + } + + method = type.GetMethod( + tagName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + + //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 + if (method == null || method.GetCustomAttributes(typeof(TemplateMethodAttribute), true).Length == 0) + { + return m.Value; + } + //数字参数 + string intParamValue; + //则给参数数组赋值 + for (int i = 0; i < paramMcs.Count; i++) + { + intParamValue = paramMcs[i].Groups[2].Value; + if (intParamValue != String.Empty) + { + parameters[i] = intParamValue; + } + else + { + parameters[i] = paramMcs[i].Groups[1].Value; + } + } + + parameters[parameters.Length - 1] = tagFormat; + + if (this.Count != null) + this.Count.Add(String.Format("Method:{0},{1:mmssfff}", method.Name, DateTime.Now)); + + //执行方法并返回结果 + return method.Invoke(this.classInstance, parameters).ToString(); + }); + } + + /// + /// 执行解析模板内容 + /// + /// + /// + public void ComplieTemplateTag(ref string html) + { + //返回结果 + + const string tagPattern = "\\$([a-z_0-9\u4e00-\u9fa5]+)\\(([^)]*)\\)"; + const string paramPattern = "\\s*'([^']*)',*|\\s*(?!=')([^,]+),*"; + + Regex tagRegex, + paramRegex; + + tagRegex = new Regex(tagPattern); //方法正则 + + if (!tagRegex.IsMatch(html)) + { + return; + } + + paramRegex = new Regex(paramPattern); //参数正则 + + Type type = this.classInstance.GetType(); + MethodInfo method; + string tagName; + object[] parameters; + Type[] parameterTypes; //参数类型数组 + MatchCollection paramMcs; + + html = tagRegex.Replace(html, m => + { + tagName = m.Groups[1].Value; + + //获得参数 + paramMcs = paramRegex.Matches(m.Groups[2].Value); + + //参数 + parameters = new object[paramMcs.Count]; + + //查找是否存在方法(方法参数均为string类型) + parameterTypes = new Type[parameters.Length]; + for (int i = 0; i < parameterTypes.Length; i++) + { + parameterTypes[i] = typeof(String); + } + + method = type.GetMethod( + tagName, + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.IgnoreCase, + null, + parameterTypes, + null); + + + //如果方法存在且包含template特性,则执行返回结果,否则返回原始值 + if (method == null || method.GetCustomAttributes(typeof(TemplateTagAttribute), true) == null) + { + return m.Value; + } + else + { + //数字参数 + string intParamValue; + //则给参数数组赋值 + for (int i = 0; i < paramMcs.Count; i++) + { + intParamValue = paramMcs[i].Groups[2].Value; + if (intParamValue != String.Empty) + { + parameters[i] = intParamValue; + } + else + { + parameters[i] = paramMcs[i].Groups[1].Value; + } + } + + if (this.Count != null) + this.Count.Add(String.Format("Tag:{0},{1:mmssfff}", method.Name, DateTime.Now)); + + //执行方法并返回结果 + return method.Invoke(this.classInstance, parameters).ToString(); + } + }); + } + + /// + /// 执行解析模板内容 + /// + /// + /// + public string Execute(string html) + { + string resultHtml = html; + this.ComplieTemplateMethod(ref resultHtml); + this.ComplieTemplateTag(ref resultHtml); + return resultHtml; + } + + /// + /// 替换列中的模板字符 + /// + /// + /// + /// + public static string FieldTemplate(string format, Func func) + { + return FieldRegex.Replace(format, a => { return func(a.Groups[1].Value); }); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/Template.cs b/src/core/J6.DevFw.Template/old/Template.cs new file mode 100644 index 0000000..0f02212 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/Template.cs @@ -0,0 +1,106 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:Template.cs +// Author:newmin +// Create:2011/06/13 +// + +using System; +using System.IO; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Template +{ + /// + /// 模板实体 + /// + public sealed class Template + { + /// + /// 模板ID + /// + public string Id { get; set; } + + /// + /// 模板路径 + /// + public string FilePath { get; set; } + + /// + /// 模板注释(第一个html注释) + /// + public string Comment + { + get + { + //读取文件开头部分注释 + Regex reg = new Regex("", RegexOptions.Multiline); + + //保存内容到变量,避免重复读取 + string content = null; + + using (StreamReader sr = new StreamReader(FilePath)) + { + content = sr.ReadToEnd(); + } + Match match = reg.Match(content); + + + return match == null ? String.Empty : match.Groups[1].Value; + } + } + + + /// + /// 模板内容 + /// + public string Content + { + get + { + string content; + IDataContrainer dc = new HttpDataContrainer(); + + //从缓存中读取模板内容 + if (Config.EnabledCache) + { + content = dc.GetTemplatePageCacheContent(this.Id); + if (content != null) return content; + } + + if (String.IsNullOrEmpty(this.FilePath)) throw new ArgumentNullException("模板文件不存在!" + this.FilePath); + + //读取内容并缓存 + StreamReader sr = new StreamReader(this.FilePath); + content = sr.ReadToEnd(); + sr.Dispose(); + + + string partialFilePath = ""; + //读取模板里的部分视图 + content = TemplateRegexUtility.partialRegex.Replace(content, m => + { + string _path = m.Groups[1].Value; + string tplId = TemplateUtility.GetPartialTemplateId(_path, this.FilePath, out partialFilePath); + return Regex.Replace(m.Value, _path, tplId); + }); + + + //替换系统标签 + content = TemplateRegexUtility.Replace(content, m => { return TemplateCache.Tags[m.Groups[1].Value]; }); + + + //压缩模板代码 + if (false || Config.EnabledCompress) + { + content = TemplateUtility.CompressHtml(content); + } + + //缓存模板 + if (Config.EnabledCache) dc.SetTemplatePageCacheContent(this.Id, content, this.FilePath); + + return content; + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplateAttribute.cs b/src/core/J6.DevFw.Template/old/TemplateAttribute.cs new file mode 100644 index 0000000..25e92ba --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplateAttribute.cs @@ -0,0 +1,32 @@ +using System; + +namespace JR.DevFw.Template +{ + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] + public class TemplateTagAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true)] + public class TemplateMethodAttribute : Attribute + { + } + + /// + /// 变量字段属性 + /// + [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)] + public class TemplateVariableFieldAttribute : Attribute + { + public TemplateVariableFieldAttribute() + { + } + + public TemplateVariableFieldAttribute(string descript) + { + this.Descript = descript; + } + + public string Descript { get; set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplateCache.cs b/src/core/J6.DevFw.Template/old/TemplateCache.cs new file mode 100644 index 0000000..11af39a --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplateCache.cs @@ -0,0 +1,105 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplateCache.cs +// Author:newmin +// Create:2011/06/05 +// + +using System; +using System.Collections.Generic; + +namespace JR.DevFw.Template +{ + /// + /// 模板缓存 + /// + public static class TemplateCache + { + /// + /// 模板编号列表 + /// + internal static IDictionary templateDictionary = new Dictionary(); + + /// + /// 标签词典 + /// + public static readonly TagCollection Tags = new TagCollection(); + + + /// + /// 标签 + /// + public class TagCollection + { + private static IDictionary tagDictionary = new Dictionary(); + + public string this[string key] + { + get + { + if (!tagDictionary.ContainsKey(key)) return "${" + key + "}"; + return tagDictionary[key]; + } + set + { + if (tagDictionary.ContainsKey(key)) tagDictionary[key] = value; + else tagDictionary.Add(key, value); + } + } + + public void Add(string key, string value) + { + if (tagDictionary.ContainsKey(key)) + throw new ArgumentException("键:" + key + "已经存在!"); + else tagDictionary.Add(key, value); + } + } + + /// + /// 注册模板 + /// + /// + /// + internal static void RegisterTemplate(string templateID, string filePath) + { + templateID = templateID.ToLower(); + if (!templateDictionary.ContainsKey(templateID)) + { + templateDictionary.Add(templateID, new Template + { + Id = templateID, + FilePath = filePath + }); + } + } + + /// + /// 如果模板字典包含改模板则获取缓存 + /// + /// + /// + internal static string GetTemplateContent(string templateID) + { + string _templateID = templateID.ToLower(); + + if (templateDictionary.ContainsKey(_templateID)) + { + return templateDictionary[_templateID].Content; + } + //throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在,ID:", templateID)); + throw new ArgumentNullException("TemplateID", String.Format("模板{0}不存在。", templateID)); + } + + /// + /// 清除所有模板缓存 + /// + //internal static void Clear() + //{ + // templateDictionary = null; + // foreach (System.Collections.DictionaryEntry k in HttpRuntime.Cache) + // { + // if (k.Key.ToString().StartsWith("tpl_")) HttpRuntime.Cache.Remove(k.Key.ToString()); + // } + //} + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplateNames.cs b/src/core/J6.DevFw.Template/old/TemplateNames.cs new file mode 100644 index 0000000..a6c5487 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplateNames.cs @@ -0,0 +1,22 @@ +// +// File : TemplateNames.cs +// Name : 模板命名 +// Author : newmin +// Date : 2012-03-04 +// + +namespace JR.DevFw.Template +{ + public enum TemplateNames + { + /// + /// 以16位md5标识的ID + /// + ID, + + /// + /// 以文件名为标识 + /// + FileName + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplatePage.cs b/src/core/J6.DevFw.Template/old/TemplatePage.cs new file mode 100644 index 0000000..4ff8646 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplatePage.cs @@ -0,0 +1,287 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplatePage.cs +// Author:newmin +// Create:2011/06/06 +// + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; +using System.Web; +using System.Threading; + +namespace JR.DevFw.Template +{ + /// + /// 模板页 + /// + public class TemplatePage + { + /// + /// 模板初始化,替换数据之前发生的事件 + /// + public event TemplateHandler OnPreInit; + + /// + /// 模板呈现之前发生的事件 + /// + public event TemplateHandler OnPreRender; + + + private string _templateId; + private IDataContrainer dc; + + /// + /// 模板数据 + /// + private IDictionary data = new Dictionary(); + + private string _templateHtml; + + /// + /// + /// + public TemplatePage() + { + if (HttpContext.Current != null) + { + dc = new HttpDataContrainer(); + } + else + { + dc = new NormalDataContrainer(); + } + } + + public TemplatePage(string templateId) + : this() + { + this._templateId = templateId; + } + + public TemplatePage(string templateId, object templateData) + : this(templateId) + { + this.AddDataObject(templateData); + } + + /// + /// 模板编号 + /// + public string TemplateID + { + get { return _templateId; } + set { _templateId = value; } + } + + /// + /// 模板内容 + /// + public string TemplateContent + { + get { return _templateHtml; } + set + { + if (!String.IsNullOrEmpty(_templateId)) + throw new ArgumentException("已经指定模板ID,将自动读取模板内容,无法在过程中设置模板的内容!", "TemplateContent"); + _templateHtml = value; + } + } + + /// + /// 模板处理对象,用于在OnPreInit和OnInit事件中处理的数据对象 + /// + public object TemplateHandleObject { get; set; } + + /// + /// 添加变量 + /// + /// + /// + public TemplatePage AddVariable(string key, T value) + { + dc.DefineVariable(key, value); + return this; + } + + /// + /// 添加匿名对象实例 + /// + /// + public void AddDataObject(object templateData) + { + //替换传入的标签参数 + PropertyInfo[] properties = templateData.GetType().GetProperties(); + object dataValue; + foreach (PropertyInfo p in properties) + { + dataValue = p.GetValue(templateData, null); + if (dataValue != null) + { + data.Add(p.Name, dataValue); + } + } + } + + + internal void PreRender(object obj, ref string content) + { + if (this.OnPreRender != null) + { + this.OnPreRender(obj, ref content); + } + } + + internal void PreInit(object obj, ref string content) + { + if (this.OnPreInit != null && obj != null) + { + this.OnPreInit(obj, ref content); + } + } + + + public override string ToString() + { + DateTime dt = DateTime.Now; + + //指定了模板ID + if (!String.IsNullOrEmpty(_templateId)) + { + //读取内容 + _templateHtml = TemplateUtility.Read(_templateId); + + //替换部分视图 + _templateHtml = TemplateRegexUtility.ReplacePartial(_templateHtml); + } + + //HttpContext.Current.Response.Write("
                                                                                                                                            1." + (DateTime.Now - dt).Milliseconds.ToString()); + //初始化之前发生 + this.PreInit(this.TemplateHandleObject, ref _templateHtml); + + //如果参数不为空,则替换标签并返回内容 + if (this.data.Count != 0) + { + foreach (string key in this.data.Keys) + { + _templateHtml = TemplateRegexUtility.ReplaceHtml(_templateHtml, key, this.data[key].ToString()); + } + } + + // HttpContext.Current.Response.Write("
                                                                                                                                            2." + (DateTime.Now - dt).Milliseconds.ToString()); + //执行模板语法 + _templateHtml = Eval.Complie(dc, _templateHtml, this.TemplateHandleObject); + + + //替换自定义变量 + IDictionary defineVars = dc.GetDefineVariable(); + + if (defineVars != null && defineVars.Count != 0) + { + foreach (string key in defineVars.Keys) + { + if (defineVars[key] is Variable) + { + _templateHtml = Eval.ResolveVariable(_templateHtml, (Variable) defineVars[key]); + } + else + { + _templateHtml = TemplateRegexUtility.ReplaceHtml(_templateHtml, key, + (defineVars[key] ?? "").ToString()); + } + } + } + + // HttpContext.Current.Response.Write("
                                                                                                                                            3." + (DateTime.Now - dt).Milliseconds.ToString()); + + //解析实体的值 + //templateHtml = Eval.ExplanEntityProperties(dc,templateHtml); + + //呈现之前处理 + this.PreRender(this.TemplateHandleObject, ref _templateHtml); + + // HttpContext.Current.Response.Write("
                                                                                                                                            4."+(DateTime.Now - dt).Milliseconds.ToString()); + + return _templateHtml; + } + + /// + /// 压缩后的字符 + /// + /// + public string ToCompressedString() + { + return TemplateUtility.CompressHtml(ToString()); + } + + /// + /// 输出Html,并终止响应 + /// + public void Render() + { + HttpContext.Current.Response.Write(this.ToString()); + try + { + HttpContext.Current.Response.End(); + } + catch (ThreadAbortException exc) + { + + } + } + + /// + /// 使用指定编码保存成为本地文件 + /// + /// 包含路径的文件名称,如:/html/default.html + /// + /// + /// + public void SaveToFile(string fileName, Encoding coder, bool compressed, out string html) + { + string filePath = AppDomain.CurrentDomain.BaseDirectory + fileName; + + //FileShare.None 独占方式打开 + + FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None); + + //byte[] bytes = coder.GetBytes(this.ToString()); + //fs.Write(bytes, 0, bytes.Length); + + StreamWriter sr = new StreamWriter(fs, coder); + + html = compressed + ? this.ToCompressedString() + : this.ToString(); + + sr.Write(html); + + sr.Flush(); + fs.Flush(); + sr.Dispose(); + fs.Dispose(); + } + + /// + /// 保存成为本地文件(Unicode) + /// + /// 包含路径的文件名称,如:/html/default.html + public void SaveToFile(string fileName) + { + string html; + SaveToFile(fileName, Encoding.UTF8, false, out html); + } + + /// + /// 保存成为本地文件(Unicode) + /// + /// 包含路径的文件名称,如:/html/default.html + public void SaveToFile(string fileName, out string html) + { + SaveToFile(fileName, Encoding.UTF8, false, out html); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplateRegexUtility.cs b/src/core/J6.DevFw.Template/old/TemplateRegexUtility.cs new file mode 100644 index 0000000..0efbc8d --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplateRegexUtility.cs @@ -0,0 +1,85 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:RegexUtility.cs +// Author:newmin +// Create:2011/06/05 +// + +using System.Text.RegularExpressions; + +namespace JR.DevFw.Template +{ + public sealed class TemplateRegexUtility + { + private static readonly Regex tagRegex = new Regex("\\${([a-zA-Z\u4e00-\u9fa5\\._]+)}"); + + //部分页匹配模式 + internal static Regex partialRegex = new Regex("\\${partial:\"(.+?)\"}"); + + public static string Replace(string templateID, string tagKey, string tagValue) + { + return null; + } + + /// + /// 替换模板数据 + /// + /// + /// + /// + internal static string ReplaceTemplate(string templateID, MatchEvaluator eval) + { + string html = TemplateUtility.Read(templateID); + + return TemplateRegexUtility.Replace(html, eval); + } + + /// + /// 替换标签 + /// + /// + /// + /// + public static string Replace(string html, MatchEvaluator eval) + { + //如果包含部分视图,则替换成部分视图的内容 + //ReplacePartial(html); + + //替换匹配 + return tagRegex.Replace(html, eval); + } + + internal static string ReplaceHtml(string html, string tagKey, string tagValue) + { + return Regex.Replace(html, "\\${" + tagKey + "}", tagValue, RegexOptions.IgnoreCase); + } + + + /// + /// 替换模板的部分视图 + /// + /// + /// + internal static string ReplacePartial(string html) + { + //匹配的部分视图编号 + string matchValue; + + //如果包含部分视图,则替换成部分视图的内容 + if (partialRegex.IsMatch(html)) + { + //替换模板里的部分视图,并将内容添加到模板内容中 + html = Regex.Replace(html, "\\${partial:\"(.+?)\"}", match => + { + matchValue = match.Groups[1].Value; + return Regex.IsMatch(matchValue, "^[a-z0-9]+$", RegexOptions.IgnoreCase) + ? TemplateUtility.Read(match.Groups[1].Value) + : match.Value; + }); + } + + //返回替换部分视图后的内容 + return html; + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplateRegister.cs b/src/core/J6.DevFw.Template/old/TemplateRegister.cs new file mode 100644 index 0000000..8e31ac3 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplateRegister.cs @@ -0,0 +1,81 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplateRegister.cs +// Author:newmin +// Create:2011/06/28 +// + +using System; +using System.IO; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Template +{ + /// + /// 模板注册 + /// + public class TemplateRegister + { + private DirectoryInfo directory; + private TemplateNames nametype; + + /// + /// 注册模板时发生 + /// + public event TemplateBehavior OnRegister; + + public TemplateRegister(string directoryPath, TemplateNames nametype) + { + this.nametype = nametype; + this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); + if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); + } + + public TemplateRegister(string directoryPath) + { + this.directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + directoryPath); + if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); + } + + public TemplateRegister(DirectoryInfo templateDirectory, TemplateNames nametype) + { + this.nametype = nametype; + this.directory = templateDirectory; + if (!this.directory.Exists) throw new DirectoryNotFoundException("模版文件夹不存在!"); + } + + /// + /// 注册模板 + /// + public void Register() + { + //注册模板 + RegisterTemplates(directory, this.nametype); + + //触发注册模板事件 + if (OnRegister != null) OnRegister(); + } + + //递归方式注册模板 + private static void RegisterTemplates(DirectoryInfo dir, TemplateNames nametype) + { + // tml 为模板文件,防止可以被直接浏览 + Regex allowExt = new Regex("(.html|.tml|.phtml)$", RegexOptions.IgnoreCase); + foreach (FileInfo file in dir.GetFiles()) + { + if (allowExt.IsMatch(file.Extension)) + { + TemplateCache.RegisterTemplate(TemplateUtility.GetTemplateId(file.FullName, nametype), file.FullName); + } + } + foreach (DirectoryInfo _dir in dir.GetDirectories()) + { + //如果文件夹是可见的 + if ((_dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) + { + RegisterTemplates(_dir, nametype); + } + } + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/TemplateUtility.cs b/src/core/J6.DevFw.Template/old/TemplateUtility.cs new file mode 100644 index 0000000..d9dce94 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/TemplateUtility.cs @@ -0,0 +1,254 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:TemplateUtility.cs +// Author:newmin +// Create:2011/06/05 +// + +using System; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Template +{ + /// + /// + /// + public sealed class TemplateUtility + { + internal static string Read(string templateId) + { + //从缓存中获取模板内容 + return TemplateCache.GetTemplateContent(templateId); + } + + /// + /// 使用模板引擎自带的压缩程序压缩代码 + /// + /// + /// + public static string CompressHtml(string html) + { + //html = Regex.Replace(html, ">(\\s)+<", "><"); + ////html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); + //html = Regex.Replace(html, "|\r|\n|\t|(\\s\\s)", String.Empty); + //return html; + + html = Regex.Replace(html, ">(\\s)+<", "><"); + + //替换 //单行注释 + html = Regex.Replace(html, "[\\s|\\t]+\\/\\/[^\\n]*(?=\\n)", String.Empty); + + //替换多行注释 + //const string multCommentPattern = ""; + html = Regex.Replace(html, "/\\*[^\\*]+\\*/", String.Empty); + + //替换 + html = Regex.Replace(html, "", String.Empty); + + //html = Regex.Replace(html, "|(^?!=http:|https:)//(.+?)\r\n|\r|\n|\t|(\\s\\s)", String.Empty); + html = Regex.Replace(html, "\r|\n|\t|(\\s\\s)", String.Empty); + + return html; + } + + internal static string GetTemplateId(string filePath, TemplateNames nametype) + { + Match match = Regex.Match(filePath, "templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase); + if (String.IsNullOrEmpty(match.Value)) throw new Exception("模版页文件名:" + filePath + "不合法"); + + string fileName = match.Groups[2].Value; + if (!fileName.ToLower().EndsWith(".phtml") && nametype == TemplateNames.FileName) + { + string id = String.Format("{0}{1}", + match.Groups[1].Value, + match.Groups[2].Value) + .Replace('\\', '/'); + + return id.Substring(0, id.LastIndexOf('.')); + } + else + { + return MD5.EncodeTo16(Regex.Replace(fileName, "/|\\\\", String.Empty).ToLower()); + } + } + + /// + /// 获取部分模板的编号 + /// + /// + /// + /// + internal static string GetPartialTemplateId(string _path, string tmpPath, out string partialFilePath) + { + string _filepath = tmpPath; + string _filename = _path; + + // + // inc/header.html + // + + if (!_path.StartsWith("/")) + { + DirectoryInfo p_wrap = null, + p_par = null, + p_curr = new FileInfo(_filepath).Directory; + + + //exsample path: ../../inc/top.phtml + if (Regex.IsMatch(_path, "^\\.\\./")) + { + Regex pathRegex = new Regex("\\.\\./"); + int dirlayer = pathRegex.Matches(_path).Count; + _filename = pathRegex.Replace(_filename, String.Empty); + + int i = 0; + do + { + if (p_par != null) + { + p_wrap = p_par; + p_par = p_par.Parent; + } + else + { + p_par = p_curr.Parent; + } + + if (p_wrap != null) + { + p_curr = p_wrap; + } + } while (++i <= dirlayer); + + _filename = String.Format("{0}/{1}", p_curr.Name, _filename); + } + else + { + // + //exsample path: inc/top.phtml + // + + do + { + if (p_par != null) + { + p_wrap = p_par; + p_par = p_par.Parent; + } + else + { + p_par = p_curr.Parent; + } + + if (p_wrap != null) + { + p_curr = p_wrap; + } + + _filename = String.Format("{0}/{1}", p_curr.Name, _filename); + } while (String.Compare(p_par.Name, "templates", true) != 0); + } + } + + // + //TODO:测试 + // + partialFilePath = _filename; + + return MD5.EncodeTo16(Regex.Replace(_filename, "/|\\\\", String.Empty).ToLower()); + } + + /// + /// 显示模板信息到页面 + /// + public static void PrintTemplatesInfo() + { + string templateContent = Embed.SysTemplatePage; + StringBuilder sb = new StringBuilder(); + + sb.Append(@" + + + + + + "); + + Template tpl; + string tplFileName, tplContent; //模板文件名,内容 + int i = 0; + + foreach (string key in TemplateCache.templateDictionary.Keys) + { + tpl = TemplateCache.templateDictionary[key]; + tplFileName = + new Regex("templates(/|\\\\)+#*(.+?)$", RegexOptions.IgnoreCase).Match(tpl.FilePath).Groups[2].Value + .Replace("\\", "/"); + tplContent = tpl.Content; + + sb.Append("") - .Append(""); - } - tagsHtml = sb.ToString(); - } - else - { - tagsHtml = ""; - } - - string html = reg.Replace(pageContent, match => - { - switch (match.Groups[1].Value) - { - default: return null; - case "css": return ReturnStyleLink(); - case "tagsHtml": return tagsHtml; - case "pagetext": return ""; - - } - }); - response.Write(html); - } - - - - private void Invoke_TestReplace() - { - TagsManager tagsManager = new TagsManager(AppDomain.CurrentDomain.BaseDirectory + "tag.xml"); - - - const string testContent = @"最近项目有需要开发一个模板的功能,在asp.net mvc项目中使用模板在不压缩代码的模板情况下,性能能提升0.02s左右(本地IIS+FF)"; - - - const string testContent2 = @"奥博建站系统是厦门奥博科技技术

                                                                                                                                            开发的一款奥博科技技术基于asp.net mvc和asp.net 模板组件的网站管理系统。程序高效,安全,功能强大。从最初的v1.0到v1.5,v1.8,v2.0,v2.2,v2.7 - - 经过无数次的改进,不仅支持模板技术,缓存,自定义路由,全站静态化,更包括一键生成文档文件!奥博建站系统包括多用户管理,和会员系统,消息系统,评论系统,同时提供接口方便二次开发。 - - 今天奥博建站系统升级到3.0了,最大的特色就是:多数据库的支持。您现在可以做为网站的数据库,同时支持数据库的切换。小型网站使用更快。

                                                                                                                                            "; - - const string testContent1 = @" 淘宝网上卖银耳的卖家很多,但是在这里面很多卖家并不是我们通江人,而且也没有我们通江的银耳,很多卖家是以袋料银耳来充通江银耳,所以买到这样的假货心里一定很不舒服吧,很多买银耳的朋友非常担心这个问题,都想买到品质优良的正宗的通江银耳,我们是通江土特产专营,为了让淘宝网上的买家买到正宗的通江银耳,我们建立了专业的网站和论坛来对通江银耳进行宣传,我们还成立了专业的银耳合作社,和农户签订了购销合同,农民采收,我们包销售,这样农民也就有了相当的积极性。我们这样做也是为保证有大量的货源,能让淘宝网上的买家更多的买到正宗的通江银耳,我们销售的银耳力争是在野生天然环境下生长的银耳,虽然产量很小,但品质优良,所以价格高大家也愿意接受。因为我们不销售假银耳,我们的银耳是正宗地通江野生银耳。"; - - - - response.Write(String.Format("测试内容为:
                                                                                                                                            {0}
                                                                                                                                            ", testContent)); - - - string x1 = tagsManager.ReplaceSingleTag(testContent); - - - - response.Write(String.Format("

                                                                                                                                            替换标签后的内容为:
                                                                                                                                            {0}", x1)); - - - string x2 = tagsManager.ReplaceSingleTag(x1); - - - response.Write(String.Format("

                                                                                                                                            再次替换后的内容为:
                                                                                                                                            {0}", x2)); - - - response.Write(String.Format("

                                                                                                                                            移除多余的Tags:
                                                                                                                                            {0}", tagsManager.RemoveAutoTags(x2))); - - - } - - /// - /// 返回样式表链接 - /// - /// - public virtual string ReturnStyleLink() - { - return String.Format("", Resource.managestyle); - } - - #region test - - /* - /// - /// 给关键字加链接,同一关键字只加一次 - /// - /// 源字符串 - /// 关键字泛型 - /// 替换后结果 - private string keyAddUrl(string src, List keys) - { - Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); - int length = 0; - string temp = string.Empty; - return reg.Replace(src, delegate(Match m) - { - temp = m.Value; - length = temp.Length; - for (int i = keys.Count - 1; i >= 0;i--) - { - temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(keys[i])), @"$1${tag}"); - if (length != temp.Length) - { - keys.Remove(keys[i]); - } - length = temp.Length; - } - return temp; - }); - } - private void test() - { - //调用 - string str1 = "我想学习c语言教程,我想看的是C语言视频教程,其它什么C语言教程,我都不想看。我喜欢C语言,还是C语言。"; - List keys = new List(new string[] { "c语言", "C语言教程", "c语言视频教程" }); - string result = keyAddUrl(str1, keys); - response.Write(result); - } - */ - #endregion - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs b/src/toolkit/AtNet.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs deleted file mode 100644 index ea3a8ab..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 -[assembly: AssemblyTitle("标签组件-多配置文件版本")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("S1N1.COM")] -[assembly: AssemblyProduct("OPSoft.Tags")] -[assembly: AssemblyCopyright("Copyright © 2012 S1N1.COM.")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID -[assembly: Guid("696f3e0a-e689-4e26-ac7d-d67332966e4f")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Resource.Designer.cs b/src/toolkit/AtNet.DevFw.Toolkit.Tags/Resource.Designer.cs deleted file mode 100644 index 8aaa664..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Resource.Designer.cs +++ /dev/null @@ -1,116 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34003 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace AtNet.DevFw.Toolkit.Tags { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resource { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resource() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AtNet.DevFw.Toolkit.Tags.Resource", typeof(Resource).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 body - ///{ - /// font-size:12px;color:#666; - ///} - ///a{color:#0066cc;} - ///a:hover{color:#006699;} - ///h1{display:none;} - ///table{background:#f0f0f0;width:100%;} - ///th{border-bottom:solid 1px #e5e5e5;background:#006699;color:White;font-size:12px;line-height:23px;} - ///td{background:white;font-size:12px;padding:2px;line-height:23px;} - ///td.center{text-align:center;} - ///input.button{border:outset 1px #f0f0f0;} - ///td input{border:solid 1px #DCE5F1;padding:1px;line-height:16px;height:20px;width:100%;color:#006699} - ///td input.ck{border:none [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string managestyle { - get { - return ResourceManager.GetString("managestyle", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - /// <head> - /// <title>标签管理</title> - /// ${css} - /// </head> - /// <body> - /// <!-- - /// - /// // - /// // Copyright 2011 @ S1N1.COM,All rights reseved. - /// // Project : 奥博网站管理系统 - /// // Name : 标签组件 - /// // Author : Newmin (newmin.net@gmail.com) - /// // Create : 2011/08/28 16:27 - /// // Product Link: http://www.ops.cc - /// // - /// - /// --> - /// - /// - /// <h1>标签管理</h1> - /// <form action="" method="post" target="tag_ifr" enctype="application/x-www-form [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string tagsmanager { - get { - return ResourceManager.GetString("tagsmanager", resourceCulture); - } - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Tag.cs b/src/toolkit/AtNet.DevFw.Toolkit.Tags/Tag.cs deleted file mode 100644 index c95143f..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/Tag.cs +++ /dev/null @@ -1,42 +0,0 @@ -// -// -// Copyright 2011 (C) S1N1.COM,All rights reseved. -// -// Project : tagsplugin -// File Name : Tag.cs -// Date : 8/27/2011 -// Author : -// -// - - -namespace AtNet.DevFw.Toolkit.Tags -{ - - /// - /// ǩ - /// - public class Tag - { - /// - /// ʶID - /// - public int Indent { get; set; } - - /// - /// - /// - public string Name { get; set; } - - /// - /// - /// - public string Description { get; set; } - - /// - /// ӵַ - /// - public string LinkUri { get; set; } - } - -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/TagsManager.cs b/src/toolkit/AtNet.DevFw.Toolkit.Tags/TagsManager.cs deleted file mode 100644 index 42c84fb..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/TagsManager.cs +++ /dev/null @@ -1,514 +0,0 @@ -// -// -// Copyright 2011 (C) S1N1.COM,All rights reseved. -// -// Project : tagsplugin -// File Name : Tags.cs -// Date : 8/27/2011 -// Author : Newmin -// --------------------------------------------- -// 2011-09-13 newmin[+]:滻ǩReplaceSingleTag() -// [!]:޸ĿĿ -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.Tags -{ - public class TagsManager - { - //ļ· - private string configFilePath; - - private string[] nameArray; - - private TagsCollection tags=new TagsCollection(); - - - public class TagsCollection:IEnumerable - { - internal IDictionary dict = new Dictionary(); - - /// - /// ǩ - /// - public int Count - { - get { return dict.Count; } - } - - public IEnumerator GetEnumerator() - { - - foreach (KeyValuePair pair in dict) - { - yield return pair.Value; - } - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - } - - - public TagsManager(string configFilePath) - { - this.configFilePath = configFilePath; - if (!File.Exists(this.configFilePath)) - { - //ļ,򴴽ʼ - File.Create(this.configFilePath).Dispose(); - const string initData = "\r\n\r\n\t\r\n\t\r\n"; - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(this.configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - this.LoadAllTags(); - } - - /// - /// ǩ - /// - public TagsCollection Tags { get { return tags; } } - - - /// - /// Tags - /// - /// - private void LoadAllTags() - { - - XmlDocument xd = new XmlDocument(); - - //ļ - xd.Load(configFilePath); - - //бǩڵ - XmlNodeList tagNodes = xd.SelectNodes("/tags/list/tag"); - - // - tags.dict.Clear(); - - //ؼ - nameArray = new String[tagNodes.Count]; - - //ӹؼʵʵ䣬Ϊؼ鸳ֵ - for (int i = 0; i < tagNodes.Count; i++) - { - nameArray[i] = tagNodes[i].InnerText; - - tags.dict.Add(nameArray[i], - new Tag - { - Indent=int.Parse(tagNodes[i].Attributes["indent"].Value), - Name = tagNodes[i].InnerText, - Description = tagNodes[i].Attributes["description"].Value, - LinkUri = tagNodes[i].Attributes["linkuri"].Value - }); - } - - Array.Sort(nameArray, (a, b) => { return b.Length-a.Length; }); - - } - - /// - /// ӱǩ - /// - /// - /// - public bool Add(Tag tag) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - //ǩǷظ - if (xd.SelectSingleNode(String.Format("/tags/list/tag[@name=\"{0}\"]", tag.Name)) != null) return false; - - //ȡһڵ - XmlNode node = xd.SelectSingleNode("/tags/list/tag[last()]"); - if (node != null) - { - int tagIndex; - int.TryParse(node.Attributes["indent"].Value, out tagIndex); - tag.Indent = tagIndex + 1; - } - else - { - tag.Indent=1; - } - - - //бǩڵ - XmlNode root = xd.SelectSingleNode("/tags/list"); - - XmlNode tagNode = xd.CreateElement("tag"); - - XmlAttribute xn =xd.CreateAttribute("indent"); - xn.Value = tag.Indent.ToString(); - tagNode.Attributes.Append(xn); - - //xn = xd.CreateAttribute("name"); - //xn.Value = tag.Name; - //tagNode.Attributes.Append(xn); - - xn = xd.CreateAttribute("description"); - xn.Value = tag.Description; - tagNode.Attributes.Append(xn); - - xn = xd.CreateAttribute("linkuri"); - xn.Value = tag.LinkUri; - tagNode.Attributes.Append(xn); - - tagNode.InnerText = tag.Name; - - root.AppendChild(tagNode); - - // - xd.Save(configFilePath); - - //ݲ¼ - LoadAllTags(); - - return true; - - } - - /// - /// ȡ - /// - /// - /// - public string GetConfig(string key) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]",key)); - if (keyNode != null) - { - return keyNode.Attributes["value"].Value; - } - return null; - } - - /// - /// ޸ - /// - /// - /// - public void SetConfig(string key, string value) - { - - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - XmlNode keyNode = xd.SelectSingleNode(String.Format("/tags/config/add[@key=\"{0}\"]", key)); - if (keyNode != null) - { - keyNode.Attributes["value"].Value = value; - } - else - { - XmlNode rootNode = xd.SelectSingleNode("/tags/config"); - keyNode = xd.CreateElement("add"); - - XmlAttribute xa=xd.CreateAttribute("key"); - xa.Value=key; - keyNode.Attributes.Append(xa); - - xa=xd.CreateAttribute("value"); - xa.Value=value; - keyNode.Attributes.Append(xa); - - rootNode.AppendChild(keyNode); - } - - xd.Save(configFilePath); - } - - /// - /// ±ǩ - /// - /// - public void Update(Tag tag) - { - - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", tag.Indent.ToString())); - - tagNode.InnerText = tag.Name; - tagNode.Attributes["description"].Value = tag.Description; - tagNode.Attributes["linkuri"].Value = tag.LinkUri; - - // - xd.Save(configFilePath); - - //ݲ¼ - LoadAllTags(); - - } - - /// - /// ɾǩ - /// - /// - public void Delete(string id) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode root = xd.SelectSingleNode("/tags/list"); - XmlNode tagNode = xd.SelectSingleNode(String.Format("/tags/list/tag[@indent=\"{0}\"]", id)); - - if (tagNode != null) - { - root.RemoveChild(tagNode); - xd.Save(configFilePath); - - //ݲ¼ - LoadAllTags(); - } - } - - /// - /// ƻȡǩ - /// - /// - /// - private Tag FindByName(string name) - { - if (tags.dict.Keys.Contains(name)) return tags.dict[name]; - return null; - } - - private string Replace(string content,bool openInBlank) - { - //if (!defaultTagLinkFormat.Contains("{0}")) throw new ArgumentException("{0}ʾñǩID"); - - Tag tag; - Regex reg; - - //ǩӸʽ - string tagLinkFormat =openInBlank? - "{2}" : - "{2}"; - - - foreach (string key in nameArray) - { - tag=FindByName(key); - if(tag==null)continue; - - reg = new Regex(String.Format("]+>(?{0})|(?!]*)(?{0})(?![^<]*)", Regex.Escape(key)), RegexOptions.IgnoreCase); - - - content = reg.Replace(content, match => - { - return String.Format(tagLinkFormat, - String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, - tag.Description, - key); - }); - } - - return content; - } - - - /// - /// 滻 - /// - /// - /// - /// - /// - public string Replace(string content, bool openInBlank,bool singleMode) - { - //ȫ滻 - if (!singleMode) return Replace(content, openInBlank); - - Tag tag; - Regex reg; - - // - int _index=0; - - foreach(string key in nameArray) - { - tag = FindByName(key); - if (tag == null) continue; - - reg = new Regex(String.Format("]+>(?{0})|(?!]*)(?{0})(?![^<]*)", - Regex.Escape(key)), RegexOptions.IgnoreCase); - - - content = reg.Replace(content, match => - { - - if (++_index == 1) - { - return String.Format( - - //ǩӸʽ - openInBlank ?"{2}" : - "{2}", - - - String.IsNullOrEmpty(tag.LinkUri) ?"javascript:;":tag.LinkUri, - tag.Description, - key); - } - else - { - return match.Groups["key"].Value; - } - }); - - _index = 0; - } - return content; - } - - /// - /// ǩ滻 - /// - /// - /// - public string ReplaceSingleTag(string content) - { - return Replace(content, true, true); - } - - /// - /// ƳڵTag - /// - /// - /// - public string RemoveAutoTags(string content) - { - string linkText; - return Regex.Replace(content, "]+>(.+?)", match => - { - linkText = match.Groups[2].Value; - if (!tags.dict.Keys.Contains(linkText)) - { - return linkText; - } - return match.Value; - },RegexOptions.Multiline); - } - - - /// - /// 滻Ϊǩ - /// - /// - /// - /// - private string Replace2(string content) - { - return null; - - - - Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); - -#if DEBUG - //System.Web.HttpContext.Current.Response.Write(String.Format("

                                                                                                                                            ƥ{0}

                                                                                                                                            ",reg.IsMatch(content))); - - - - -#endif - //int length = 0; - string temp; - Tag tag; - - //Ѿӵջ,ȷֻ滻һ - Stack stack = new Stack(); - - return reg.Replace(content, m => - { - temp =Regex.Replace(m.Value,"<|>|\\/",String.Empty); - - - // System.Web.HttpContext.Current.Response.Write(String.Format("
                                                                                                                                            ({0})
                                                                                                                                            ", m.Value)); - - //length = temp.Length; - - //ؼ,ұ֤ؼвջ - for (int i = nameArray.Length - 1; i >= 0 && !stack.Contains(i); i--) - { - tag = this.FindByName(nameArray[i]); - - if (tag != null) - { - temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(tag.Name)) - , String.Format("$1{2}", - String.IsNullOrEmpty(tag.LinkUri)?"javascript:;":tag.LinkUri, //δӣʹĬϸʽ - tag.Description, "${tag}")); - } - - //ֻ֤滻һ - stack.Push(i); - - // if (length != temp.Length) - //{ - // stack.Push(i); - - // } - //length = temp.Length; - } - - return temp; - }); - } - - /// - /// ؼּӣͬһؼֻһ - /// - /// Դַ - /// ؼַ - /// - private string keyAddUrl(string content) - { - return null; - /* - Regex reg = new Regex(@"(?i)(?:^|(?]*)>)[^<>]*(?:<|$)"); - int length = 0; - string temp; - Tag tag; - - return reg.Replace(content, m => - { - temp = m.Value; - length = temp.Length; - for (int i = tags.Count - 1; i >= 0; i--) - { - tag = this.FindByName(nameArray[i]); - temp = Regex.Replace(temp, String.Format(@"(?is)^((?:(?:(?!{0}|)*(?:(?!{0}|{0})", Regex.Escape(tag.Name)) - , String.Format("$1${tag}",tag.LinkUri,tag.Description)); - - if (length != temp.Length) - { - //tags.nameDict.Remove(tags.nameDict[i]); - } - length = temp.Length; - } - return temp; - });*/ - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj deleted file mode 100644 index 8c033ed..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj +++ /dev/null @@ -1,165 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {D1FBD275-BF29-4823-970A-0F341BF99A9F} - Library - Properties - AtNet.DevFw.Toolkit.ThirdApi - AtNet.DevFw.Toolkit.ThirdApi - v4.0 - 512 - - - - true - full - false - ..\bin\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\bin\ - TRACE - prompt - 4 - - - true - ..\..\..\dist\dll\ - DEBUG;TRACE - full - x86 - bin\Debug\OPS.Plus.dll.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - true - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - bin\Release\OPS.Plus.dll.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - true - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - - ..\..\..\dll\NetPay.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - BankRes.resx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ResXFileCodeGenerator - BankRes.Designer.cs - - - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - - - - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user deleted file mode 100644 index 55f44b9..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/AtNet.DevFw.Toolkit.ThirdApi.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - ShowAllFiles - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs deleted file mode 100644 index be894d9..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/Authcode.cs +++ /dev/null @@ -1,333 +0,0 @@ -using System; -using System.Text; - -namespace AtNet.DevFw.Toolkit.ThirdApi.Discuz -{ - public enum DiscuzAuthcodeMode { Encode, Decode }; - - - public class Authcode - { - private static Encoding encoding = Encoding.GetEncoding(Request.UC_CHARSET); - - /// - /// 从字符串的指定位置截取指定长度的子字符串 - /// - /// 原字符串 - /// 子字符串的起始位置 - /// 子字符串的长度 - /// 子字符串 - private static string CutString(string str, int startIndex, int length) - { - if (startIndex >= 0) - { - if (length < 0) - { - length = length * -1; - if (startIndex - length < 0) - { - length = startIndex; - startIndex = 0; - } - else - { - startIndex = startIndex - length; - } - } - - if (startIndex > str.Length) - { - return ""; - } - } - else - { - if (length < 0) - { - return ""; - } - else - { - if (length + startIndex > 0) - { - length = length + startIndex; - startIndex = 0; - } - else - { - return ""; - } - } - } - - if (str.Length - startIndex < length) - { - length = str.Length - startIndex; - } - - return str.Substring(startIndex, length); - } - - /// - /// 从字符串的指定位置开始截取到字符串结尾的了符串 - /// - /// 原字符串 - /// 子字符串的起始位置 - /// 子字符串 - private static string CutString(string str, int startIndex) - { - return CutString(str, startIndex, str.Length); - } - - /// - /// MD5函数 - /// - /// 原始字符串 - /// MD5结果 - public static string MD5(string str) - { - byte[] b = encoding.GetBytes(str); - b = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b); - string ret = ""; - for (int i = 0; i < b.Length; i++) - { - ret += b[i].ToString("x").PadLeft(2, '0'); - } - return ret; - } - - /// - /// 用于 RC4 处理密码 - /// - /// 密码字串 - /// 密钥长度,一般为 256 - /// - private static Byte[] GetKey(Byte[] pass, Int32 kLen) - { - Byte[] mBox = new Byte[kLen]; - - for (Int64 i = 0; i < kLen; i++) - { - mBox[i] = (Byte)i; - } - Int64 j = 0; - for (Int64 i = 0; i < kLen; i++) - { - j = (j + mBox[i] + pass[i % pass.Length]) % kLen; - Byte temp = mBox[i]; - mBox[i] = mBox[j]; - mBox[j] = temp; - } - return mBox; - } - - /// - /// 生成随机字符 - /// - /// 随机字符长度 - /// 随机字符 - private static string RandomString(int lens) - { - char[] CharArray = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; - int clens = CharArray.Length; - string sCode = ""; - Random random = new Random(); - for (int i = 0; i < lens; i++) - { - sCode += CharArray[random.Next(clens)]; - } - return sCode; - } - - /// - /// 使用 authcode 方法对字符串加密 - /// - /// 原始字符串 - /// 密钥 - /// 加密字串有效时间,单位是秒 - /// 加密结果 - public static string DiscuzAuthcodeEncode(string source, string key, int expiry) - { - return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Encode, expiry); - - } - - /// - /// 使用 Discuz authcode 方法对字符串加密 - /// - /// 原始字符串 - /// 密钥 - /// 加密结果 - public static string DiscuzAuthcodeEncode(string source, string key) - { - return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Encode, 0); - - } - - /// - /// 使用 Discuz authcode 方法对字符串解密 - /// - /// 原始字符串 - /// 密钥 - /// 解密结果 - public static string DiscuzAuthcodeDecode(string source, string key) - { - return DiscuzAuthcode(source, key, DiscuzAuthcodeMode.Decode, 0); - - } - - /// - /// 使用 变形的 rc4 编码方法对字符串进行加密或者解密 - /// - /// 原始字符串 - /// 密钥 - /// 操作 加密还是解密 - /// 密文有效期, 加密时候有效, 单 位 秒,0 为永久有效 - /// 加密或者解密后的字符串 - private static string DiscuzAuthcode(string source, string key, DiscuzAuthcodeMode operation, int expiry) - { - if (source == null || key == null) - { - return ""; - } - - int ckey_length = 4; - string keya, keyb, keyc, cryptkey, result; - - key = MD5(key); - keya = MD5(CutString(key, 0, 16)); - keyb = MD5(CutString(key, 16, 16)); - keyc = ckey_length > 0 ? (operation == DiscuzAuthcodeMode.Decode ? CutString(source, 0, ckey_length) : RandomString(ckey_length)) : ""; - - cryptkey = keya + MD5(keya + keyc); - - if (operation == DiscuzAuthcodeMode.Decode) - { - byte[] temp; - try - { - temp = System.Convert.FromBase64String(CutString(source, ckey_length)); - } - catch - { - try - { - temp = System.Convert.FromBase64String(CutString(source + "=", ckey_length)); - } - catch - { - try - { - temp = System.Convert.FromBase64String(CutString(source + "==", ckey_length)); - } - catch - { - return ""; - } - } - } - - result = encoding.GetString(RC4(temp, cryptkey)); - - //throw new Exception(CutString(result, 0, 10)); - long timestamp = long.Parse(CutString(result, 0, 10)); - - if ((timestamp == 0 || timestamp - UnixTimestamp() > 0) && CutString(result, 10, 16) == CutString(MD5(CutString(result, 26) + keyb), 0, 16)) - { - return CutString(result, 26); - } - else - { - return ""; - } - } - else - { - source = (expiry == 0 ? "0000000000" : (expiry + UnixTimestamp()).ToString()) + CutString(MD5(source + keyb), 0, 16) + source; - byte[] temp = RC4(encoding.GetBytes(source), cryptkey); - return keyc + System.Convert.ToBase64String(temp); - } - } - - /// - /// RC4 原始算法 - /// - /// 原始字串数组 - /// 密钥 - /// 处理后的字串数组 - private static Byte[] RC4(Byte[] input, String pass) - { - if (input == null || pass == null) return null; - - byte[] output = new Byte[input.Length]; - byte[] mBox = GetKey(encoding.GetBytes(pass), 256); - - // 加密 - Int64 i = 0; - Int64 j = 0; - for (Int64 offset = 0; offset < input.Length; offset++) - { - i = (i + 1) % mBox.Length; - j = (j + mBox[i]) % mBox.Length; - Byte temp = mBox[i]; - mBox[i] = mBox[j]; - mBox[j] = temp; - Byte a = input[offset]; - //Byte b = mBox[(mBox[i] + mBox[j] % mBox.Length) % mBox.Length]; - // mBox[j] 一定比 mBox.Length 小,不需要在取模 - Byte b = mBox[(mBox[i] + mBox[j]) % mBox.Length]; - output[offset] = (Byte)((Int32)a ^ (Int32)b); - } - - return output; - } - - - private static string AscArr2Str(byte[] b) - { - return System.Text.UnicodeEncoding.Unicode.GetString( - System.Text.ASCIIEncoding.Convert(System.Text.Encoding.ASCII, - System.Text.Encoding.Unicode, b) - ); - } - - public static long UnixTimestamp() - { - DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); - DateTime dtNow = DateTime.Parse(DateTime.Now.ToString()); - TimeSpan toNow = dtNow.Subtract(dtStart); - string timeStamp = toNow.Ticks.ToString(); - return long.Parse(timeStamp.Substring(0, timeStamp.Length - 7)); - } - - public static string urlencode(string str) - { - //php的urlencode不同于HttpUtility.UrlEncode - //return HttpUtility.UrlEncode(str); - - string tmp = string.Empty; - string strSpecial = "_-.1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - for (int i = 0; i < str.Length; i++) - { - string crt = str.Substring(i, 1); - if (strSpecial.Contains(crt)) - tmp += crt; - else - { - byte[] bts = encoding.GetBytes(crt); - foreach (byte bt in bts) - { - tmp += "%" + bt.ToString("X"); - } - } - } - return tmp; - } - - public static long time() - { - TimeSpan ts = new TimeSpan(System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks); - return (long)ts.TotalMilliseconds; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/Request.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/Request.cs deleted file mode 100644 index 96d445f..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/Request.cs +++ /dev/null @@ -1,252 +0,0 @@ -/* - * name : Request - * author : newmin - * date : 2010/12/20 - * - */ - -using System; -using System.Configuration; -using System.IO; -using System.Net; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.Discuz -{ - public class Request - { - #region 对asp.net无用的 - /* - /// - /// 连接 UCenter 的方式 - /// mysql:MySQL 方式;空:远程方式 - /// - public const string UC_CONNECT="mysql"; - /// - ///UCenter 数据库主机 - /// - public const string UC_DBHOST="192.168.1.82"; - /// - ///UCenter 数据库用户名 - /// - public const string UC_DBUSER="root"; - /// - /// UCenter 数据库密码 - /// - public const string UC_DBPW=""; - /// - /// UCenter 数据库名称 - /// - public const string UC_DBNAME=""; - /// - /// UCenter 数据库字符集 - /// - public const string UC_DBCHARSET=""; - /// - /// UCenter 数据库表前缀 - /// - public const string UC_DBTABLEPRE=""; - /// - /// UCenter 数据库持久连接 0=关闭, 1=打开 - /// - public const string UC_DBCONNECT=""; - */ - #endregion - - - /// - /// 与 UCenter 的通信密钥, 要与 UCenter 保持一致 - /// - public static string UC_KEY; - /// - /// UCenter 服务端的 URL 地址 - /// - public static string UC_API; - /// - /// UCenter 的字符集 - /// - public static string UC_CHARSET; - /// - /// 当前应用的 ID - /// - public static string UC_APPID; - public static bool UC_RecordLog; - //匹配host的模式 - private static readonly string hostPattern; - static Request() - { - UC_APPID = ConfigurationManager.AppSettings["uc_appid"]; - UC_KEY = ConfigurationManager.AppSettings["uc_key"]; - UC_API = ConfigurationManager.AppSettings["uc_api"]; - UC_CHARSET = ConfigurationManager.AppSettings["uc_charset"] ?? "gbk"; - UC_RecordLog = ConfigurationManager.AppSettings["uc_log"] == "True"; - - hostPattern = "^(?=" + UC_API.Remove(UC_API.IndexOf("/", 7)).Replace("/", "\\/") + "|http:\\/\\/" + HttpContext.Current.Request.Url.Host + ")"; - } - - internal static object SendRequest(string path, string module, string action, string param) - { - //获取时间参数 - string time = ((DateTime.UtcNow.Ticks - new DateTime(0x7b2, 1, 1).Ticks) / 0x989680L).ToString(); - //获取agent参数 - string agent = Authcode.MD5(HttpContext.Current.Request.UserAgent); - StringBuilder sb = new StringBuilder(); - sb.Append("agent=").Append(agent).Append("&time=") - .Append(time).Append("&").Append(param); - //需要先解码 - string input = HttpContext.Current.Server.UrlEncode(Authcode.DiscuzAuthcodeEncode(sb.ToString(), UC_KEY, 0)); - - sb.Remove(0, sb.Length); - sb.Append("m=").Append(module).Append("&a=").Append(action).Append("&inajax=2&appid=") - .Append(UC_APPID).Append("&input=").Append(input); - - - HttpWebRequest request = WebRequest.Create(UC_API + path) as HttpWebRequest; - if (request == null) return "连接UCenter服务端失败!"; - request.Accept = "*/*"; - request.Method = "POST"; - request.UserAgent = HttpContext.Current.Request.UserAgent; - request.ContentType = "application/x-www-form-urlencoded"; - request.Timeout = 30000;//30秒超时 - - //发送请求 - byte[] data = Encoding.GetEncoding("GBK").GetBytes(sb.ToString()); - request.ContentLength = data.Length; - Stream requestStream = request.GetRequestStream(); - requestStream.Write(data, 0, data.Length); - requestStream.Dispose(); - - //获取响应 - HttpWebResponse response = request.GetResponse() as HttpWebResponse; - if (response.StatusCode == HttpStatusCode.OK) - { - using (StreamReader sr = new StreamReader(response.GetResponseStream())) - { - return sr.ReadToEnd(); - } - } - else - { - return "Error:" + response.StatusCode.ToString(); - } - } - /// - /// 调用UCenter API - /// - /// - /// - public static object CallUCenterAPI(HttpContext context, IUCenterAPI api) - { - //判断请求的主机 - string referer = context.Request.Headers["referer"]; - if (!Regex.IsMatch(referer, hostPattern)) return "404"; - - //因为包含+传递过来为" ",则需先转码再解码 - string query = context.Server.UrlDecode(context.Server.UrlEncode(context.Request["code"])); - //等同于以下这句 - //string query = context.Server.UrlEncode(context.Request["code"]).Replace("%2b","+").Replace("%2f","/"); - - System.Collections.Specialized.NameValueCollection parameters = HttpUtility.ParseQueryString - (Authcode.DiscuzAuthcodeDecode(query, UC_KEY)); - - #region 记录参数 - /* - StringBuilder sb = new StringBuilder(); - sb.Append(query).Append("\r\n"); - sb.Append(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)); - foreach (string s in parameters.Keys) - { - sb.Append("\r\n").Append(s).Append(":" + parameters[s]); - } - TraceLog.Record(sb.ToString()); - */ - #endregion - #region 记录日志 - /* - StringBuilder sb = new StringBuilder(); - - using (Stream stream = context.Request.InputStream) - { - byte[] buffer = new byte[100]; - int count; - if (stream.Length != 0) - { - do - { - count = stream.Read(buffer, 0, buffer.Length); - sb.Append(Encoding.Default.GetString(buffer)); - } while (count != 0); - } - } - string streamContent = sb.ToString(); - - sb.Remove(0, sb.Length); - - NameValueCollection _params = context.Request.Params; - - foreach (string a in _params.Keys) - { - sb.Append("&").Append(a).Append("=").Append(_params[a]); - } - - TraceLog.Record(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)+"\r\nMethod:"+context.Request.HttpMethod+ - "\r\nParams:"+sb.ToString()+"\r\nStream:"+streamContent+context.Request["action"]); - - */ - #endregion - - switch (parameters["action"]) - { - case "test": - TraceLog.Record("与UCenter建立通信成功!"); - return "1"; - case "addfeed": - return api.AddFeed(); - case "deleteuser": - return api.DeleteUser(parameters["ids"]); - - case "synlogin": - api.SyncLogin(parameters["username"], parameters["password"]);return ""; - - case "synlogout": - api.SyncLogout();return""; - - case "updatepw": - return api.Edit(parameters["username"], parameters["oldpw"], parameters["newpw"], parameters["email"], true); - - case "getcreditsettings": - break; - - case "gettag": - break; - - case "renameuser": - return api.RenameUser(int.Parse(parameters["uid"]), parameters["oldusername"], parameters["newusername"]); - - - - case "updateapps": - break; - - case "updatebadwords": - break; - - case "updateclient": - break; - - case "updatecredit": - break; - - case "updatecreditsettings": - break; - - case "updatehosts": - break; - } - return ""; - } - - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs deleted file mode 100644 index e25aadd..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/Discuz/UCenter.cs +++ /dev/null @@ -1,564 +0,0 @@ -/* - * Discuz UCenter - * author : newmin - * date : 2010/12/20 - * - */ - -using System; -using System.Collections; -using System.IO; -using System.Text.RegularExpressions; -using System.Web; -using System.Web.SessionState; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.ThirdApi.Discuz -{ - /// - /// XML操作方法 - /// - public class XML - { - public static string GetInnerText(string xmlContent, string xpath) - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(xmlContent); - return xd.SelectSingleNode(xpath).InnerText; - } - } - - - public class UCenter - { - public static readonly IUCenter Client; - public static IUCenterAPI Api; - - static UCenter() - { - Client = new UCenterClient(); - Api = new UCenterApi(); - } - } - - /// - /// UCenter客户端接口 - /// - public interface IUCenter - { - /// - /// 用户登陆并返回信息 - /// - /// - /// - /// 返回数据 - /// - int Login(string username, string password, bool? isUid, bool? checkQues, int? questionId, string answer, out Hashtable ht); - - /// - /// 使用用户,密码登陆并返回信息 - /// - /// - /// - /// - int Login(string username, string password, out Hashtable ht); - - /// - /// 使用用户,密码登陆 - /// - /// - /// - /// - int Login(string username, string password); - - /// - /// 注册,返回用户ID,或错误状态码 - /// - /// - /// - /// - /// - int Register(string username, string password, string email, int? questionId, string answer, string regIp); - - /// - /// 注册,返回用户ID,或错误状态码 - /// - /// - /// - /// - /// - int Register(string username, string password, string email); - - /// - /// 修改用户资料 - /// - /// 用户名 - /// 旧密码 - /// 新密码,如不修改则传空值 - /// 邮箱,如不修改则传空值 - /// 是否忽略旧密码 - /// - int Edit(string username, string oldpwd, string newpwd, string email, bool ignoreOldPwd); - - /// - /// 同步登录 - /// - /// - /// - /// 返回一段Javascript同步代码 - string SyncLogin(string username, string password); - - /// - /// 同步退出 - /// - /// - string SyncLogout(); - - /// - /// 获取用户信息,包括:用户ID,用户名,邮箱 - /// - /// 用户名或ID - /// 是否为uid,默认为false - /// - string[] GetUser(string username, bool isuid); - - /// - /// 删除用户,多个用户用","隔开 - /// - /// 用户ID,多个用户用","隔开 - /// - bool DeleteUser(string uid); - - /// - /// 用于检查用户输入的用户名的合法性 - /// - /// - /// - int CheckName(string username); - - /// - /// 用于检查用户输入的 Email 的合法性 - /// - /// - /// - int CheckEmail(string email); - } - - /// - /// UCenterAPI - /// - public interface IUCenterAPI : IRequiresSessionState - { - /// - /// 修改用户资料 - /// - /// 用户名 - /// 旧密码 - /// 新密码,如不修改则传空值 - /// 邮箱,如不修改则传空值 - /// 是否忽略旧密码 - /// - string Edit(string username, string oldpwd, string newpwd, string email, bool ignoreOldPwd); - - /// - /// 同步登录 - /// - /// - /// - /// 返回一段Javascript同步代码 - void SyncLogin(string username, string password); - - /// - /// 同步退出 - /// - /// - void SyncLogout(); - - /// - /// 删除用户 - /// - /// - /// - bool DeleteUser(string uids); - - - string AddFeed(); - - /// - /// 修改名称 - /// - /// - /// - /// - /// - string RenameUser(int uid, string oldUserName, string newUserName); - } - - /// - /// UCenter客户端 - /// - public class UCenterClient : IUCenter - { - internal UCenterClient() - { - DateTime dt = new DateTime(2018, 10, 01); - if (DateTime.Now > dt) - { - throw new Exception("new version in ops.cc"); - } - } - - public int Login(string username, string password, bool? isUid, bool? checkQues, int? questionId, string answer, out Hashtable ht) - { - int result = -1; - XmlDocument xd = new XmlDocument(); - ht = new Hashtable(); - string xpath, uid; - - //获取内容并加载到xml中 - string xmlContent = Request.SendRequest("index.php", "user", "login", - - String.Format("isuid={0}&uid={1}&username={1}&password={2}&checkques={3}&questionid={4}&answer={5}", - isUid == true ? "1" : "0", - username, - password, - checkQues == true ? "1" : "0", - questionId, - answer - )).ToString(); - - xd.LoadXml(xmlContent); - - //UCenter 1.5使用item_0,而UCenter1.6则用了item id="0" - bool isOldVersion = Regex.IsMatch(xmlContent, "item_"); - xpath = isOldVersion ? "/root/item_0" : "/root/item[@id=0]"; - - uid = xd.SelectSingleNode(xpath).InnerText; - - - int.TryParse(uid, out result); - - if (result < 0) - { - TraceLog.Record(String.Format("用户:{0}登录失败,原因:{1}.", - username, - this.GetLoginResultDesc(result) - )); - } - else - { - //登陆成功,则返回数据表 - - ht["uid"] = uid; - - //用户名 - xpath = isOldVersion ? "/root/item_1" : "/root/item[@id=1]"; - ht["username"] = xd.SelectSingleNode(xpath).InnerText; - - //密码 - xpath = isOldVersion ? "/root/item_2" : "/root/item[@id=2]"; - ht["password"] = xd.SelectSingleNode(xpath).InnerText; - - //邮件 - xpath = isOldVersion ? "/root/item_3" : "/root/item[@id=3]"; - ht["email"] = xd.SelectSingleNode(xpath).InnerText; - - //用户名是否重名 - xpath = isOldVersion ? "/root/item_4" : "/root/item[@id=4]"; - ht["username_repeat"] = xd.SelectSingleNode(xpath).InnerText; - - - TraceLog.Record("用户:" + username + "登录成功!"); - - } - - return result; - - } - - public int Login(string username, string password, out Hashtable ht) - { - return Login(username, password, null, null, null, null, out ht); - } - - public int Login(string username, string password) - { - Hashtable ht; - return Login(username, password, null, null, null, null, out ht); - } - - public int Register(string username, string password, string email, int? questionId, string answer, string regIp) - { - string resultTag = Request.SendRequest("index.php", "user", "register", - String.Format("username={0}&password={1}&email={2}&questionid={3}&answer={4}®ip={5}", - username, password, email, questionId, answer, regIp) - ).ToString(); - - int result; - int.TryParse(resultTag, out result); - - if (result > 0) - { - TraceLog.Record("新用户" + username + "注册成功."); - } - else - { - TraceLog.Record(String.Format("注册用户:{0}未成功,原因:{1}", username, this.GetRegResultDesc(result))); - } - - - return result; - } - - public int Register(string username, string password, string email) - { - return Register(username, password, email, null, null, null); - } - - - /// - /// 同步登录 - /// - /// - /// - /// 返回一段Javascript同步代码 - public string SyncLogin(string username, string password) - { - string xmlContent = Request.SendRequest("index.php", "user", "login", "isuid=0&uid=&username=" + username + "&password=" + password).ToString(); - - string xpath = Regex.IsMatch(xmlContent, "item_") ? "/root/item_0" : "/root/item[@id=0]"; - string uid = XML.GetInnerText(xmlContent, xpath); - if (uid.StartsWith("-")) - { - TraceLog.Record("用户:" + username + "同步登录(应用->论坛)未成功"); - return String.Empty; - } - else - { - TraceLog.Record("用户:" + username + "同步登录(应用->论坛)"); - return Request.SendRequest("index.php", "user", "synlogin", "uid=" + uid).ToString(); - } - } - /// - /// 同步退出 - /// - /// - public string SyncLogout() - { - TraceLog.Record("同步退出(应用->论坛)"); - return Request.SendRequest("index.php", "user", "synlogout", "").ToString(); - } - /// - /// 修改用户资料 - /// - /// 用户名 - /// 旧密码 - /// 新密码,如不修改则传空值 - /// 邮箱,如不修改则传空值 - /// - public int Edit(string username, string oldpwd, string newpwd, string email, bool ignorePwd) - { - int result = 0; - int.TryParse(Request.SendRequest("index.php", "user", "edit", "username=" + username + "&oldpw=" + oldpwd + "&newpw=" + newpwd + "&email=" + email + "&ignoreoldpw=" + (ignorePwd ? "1" : "0")).ToString(), out result); - - - TraceLog.Record(String.Format("修改资料:用户{0},结果:{1}.", - username, - this.GetEditResultDesc(result) - )); - - return result; - } - - public string[] GetUser(string username, bool isuid) - { - string xpath; - string[] users = new string[3]; - XmlDocument xd = new XmlDocument(); - - //UCenter 1.5使用item_0,而UCenter1.6则用了item id="0" - bool isOldVersion; - - //获取内容并加载到xml中 - string xmlContent = Request.SendRequest("index.php", "user", "get_user", String.Format("isuid={0}&username={1}", isuid == true ? "1" : "0", username)).ToString(); - xd.LoadXml(xmlContent); - - - - isOldVersion = Regex.IsMatch(xmlContent, "item_"); - - //用户ID - xpath = isOldVersion ? "/root/item_0" : "/root/item[@id=0]"; - users[0] = xd.SelectSingleNode(xpath).InnerText; - - //用户名 - xpath = isOldVersion ? "/root/item_1" : "/root/item[@id=1]"; - users[1] = xd.SelectSingleNode(xpath).InnerText; - - //邮件 - xpath = isOldVersion ? "/root/item_2" : "/root/item[@id=2]"; - users[2] = xd.SelectSingleNode(xpath).InnerText; - - //Log - TraceLog.Record("获取用户:" + username + "(应用->论坛)"); - - return users; - } - - public bool DeleteUser(string uid) - { - int i = 0; - int.TryParse(Request.SendRequest("index.php", "user", "delete", "uid=" + uid).ToString(), out i); - - TraceLog.Record(String.Format("删除用户:{0},{1}(应用->论坛)", uid, i == 1 ? "成功" : "失败")); - - return i == 1; - } - - - /// - /// 获取登陆结果描述 - /// - /// - /// - public string GetLoginResultDesc(int result) - { - switch (result) - { - case -1: return "用户不存在,或者被删除"; - case -2: return "密码错"; - case -3: return "安全提问错"; - default: return "登陆成功"; //(返回结果大于0) - } - } - - /// - /// 获取注册结果描述 - /// - /// - /// - public string GetRegResultDesc(int result) - { - switch (result) - { - case -1: return "用户名不合法"; - case -2: return "包含不允许注册的词语"; - case -3: return "用户名已经存在"; - case -4: return "Email 格式有误"; - case -5: return "Email 不允许注册"; - case -6: return "该 Email 已经被注册"; - default: return "注册成功"; //(返回结果大于0) - } - } - /// - /// 获取编辑结果描述 - /// - /// - /// - public string GetEditResultDesc(int result) - { - switch (result) - { - case 1: return "更新成功"; - case -1: return "旧密码不正确"; - case -4: return "Email 格式有误"; - case -5: return "Email 不允许注册"; - case -6: return "该 Email 已经被注册"; - case -7: return "没有做任何修改"; - case -8: return "该用户受保护无权限更改"; - default: return "未作任何修改"; - } - } - - - public int CheckName(string username) - { - int result = 0; - int.TryParse(Request.SendRequest("index.php", "user", "check_username", "username=" + username).ToString(), out result); - - TraceLog.Record(String.Format("检测用户名:{0},{1}", username, result.ToString())); - return result; - } - - public int CheckEmail(string email) - { - - int result = 0; - int.TryParse(Request.SendRequest("index.php", "user", "check_email", "email=" + email).ToString(), out result); - - TraceLog.Record(String.Format("检测邮箱:{0},{1}", email, result.ToString())); - return result; - } - } - - - /// - /// 用户接口 - /// - public class UCenterApi : IUCenterAPI - { - internal UCenterApi() { } - - public virtual string Edit(string username, string oldpwd, string newpwd, string email, bool ignorePwd) - { - TraceLog.Record("用户:" + username + "资料同步(论坛->应用)"); - return ""; - } - - public virtual void SyncLogin(string username, string password) - { - HttpContext.Current.Response.AppendHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); - TraceLog.Record("用户:" + username + "同步登录(论坛->应用)"); - } - - public virtual void SyncLogout() - { - HttpContext.Current.Response.AppendHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\""); - TraceLog.Record("同步登出(论坛->应用)"); - } - - public bool DeleteUser(string uids) - { - TraceLog.Record("删除用户:" + uids + "(论坛->应用)"); - return true; - } - - - public string AddFeed() - { - TraceLog.Record("添加收听(论坛->应用)"); - return ""; - } - - public string RenameUser(int uid, string oldUserName, string newUserName) - { - TraceLog.Record(String.Format("用户名重命名:{0}= {1}->{2} (论坛->应用)", uid, oldUserName, newUserName)); - return ""; - } - } - - - /// - /// 追踪日志 - /// - public static class TraceLog - { - /// - /// 记录日志,如日志文件不存在则自动创建日志文件到/logs/uc_log.txt - /// - /// - public static void Record(string content) - { - if (Request.UC_RecordLog) - { - string logFile = AppDomain.CurrentDomain.BaseDirectory + "logs/uc_log.txt"; - using (StreamWriter sw = new StreamWriter(logFile, true)) - { - sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + content); - sw.Flush(); - sw.Dispose(); - } - } - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Cate.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Cate.cs deleted file mode 100644 index ac7dc04..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Cate.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace AtNet.DevFw.Toolkit.ThirdApi.ETao -{ - public class Cate - { - /// - /// 商家子定义的类目ID - /// - public int scid { get; set; } - - /// - /// 类目名称 - /// - public string name { get; set; } - - /// - /// 子分类 - /// - public Cate[] child { get; set; } - - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Config.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Config.cs deleted file mode 100644 index 6cb6196..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Config.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.IO; - -namespace AtNet.DevFw.Toolkit.ThirdApi.ETao -{ - public class Config - { - /// - /// 是否开启ETao - /// - public static bool Opened = false; - - /// - /// 保存路径 - /// - public const string SavePath = "api/etao/"; - - /// - /// 销售账号 - /// - public static string Seller = "etao_test"; - - /// - /// 域名 - /// - public static string Domain = "http://xxx.com/"; - - /// - /// 接口版本 - /// - public const string Version = "1.0"; - - /// - /// 最后生成时间 - /// - public static DateTime LastBuildTime; - - /// - /// 使用线程数 - /// - public const int Threads = 5; - - public static string PhypicPath; - - static Config() - { - PhypicPath = AppDomain.CurrentDomain.BaseDirectory; - LastBuildTime = DateTime.Now.AddDays(-2); - DirectoryInfo dir = new DirectoryInfo(Config.PhypicPath+Config.SavePath+"items/"); - if (!dir.Exists) - { - Directory.CreateDirectory(dir.FullName).Create(); - } - - } - - /// - /// 设置 - /// - /// - /// - public static void Set(string seller, bool opened) - { - Seller = seller; - Opened = opened; - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Core.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Core.cs deleted file mode 100644 index 69610f8..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Core.cs +++ /dev/null @@ -1,387 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using System.Text; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.ThirdApi.ETao -{ - /// - /// 获取产品项 - /// - /// - public delegate IList GetItemsHandler(); - - /// - /// 获取分类项 - /// - /// - public delegate Cate[] GetCatsHandler(); - - - public class Core - { - /// - /// 创建项目 - /// - /// - private static void Generate(Item item) - { - string fileName = String.Format("{0}{1}items/{2}.xml", Config.PhypicPath, Config.SavePath, item.outer_id); - - StringBuilder sb = new StringBuilder(); - IDictionary prolist; - - XmlDocument xd = new XmlDocument(); - - xd.AppendChild(xd.CreateXmlDeclaration("1.0", null, null)); - - XmlNode root = xd.CreateElement("item"); - - Type type = typeof(Item); - PropertyInfo[] pros = type.GetProperties(); - object proValue; - - - foreach (PropertyInfo pro in pros) - { - XmlNode proNode = xd.CreateElement(pro.Name); - proValue = pro.GetValue(item, null); - if (proValue != null) - { - if (!pro.PropertyType.IsValueType && proValue as IDictionary != null) - { - prolist = pro.GetValue(item, null) as IDictionary; - foreach (KeyValuePair entity in prolist) - { - //重复键用:隔开 - XmlNode childProNode = xd.CreateElement(entity.Key.Split(':')[0]); - childProNode.InnerText = entity.Value.ToString().Replace("$DOMAIN", Config.Domain); - proNode.AppendChild(childProNode); - } - } - else - { - proNode.InnerText = proValue.ToString().Replace("$DOMAIN", Config.Domain); - } - } - - root.AppendChild(proNode); - } - xd.AppendChild(root); - xd.Save(fileName); - } - - public static void UploadItem(Item item) - { - Generate(item); - string fileName = String.Format("{0}{1}IncrementIndex.xml", Config.PhypicPath, Config.SavePath); - XmlDocument xd = new XmlDocument(); - if (!File.Exists(fileName)) - { - - XmlNode root = xd.CreateElement("root"); - - Core.AppendNode(xd, root, "version", Config.Version); - Core.AppendNode(xd, root, "modified", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); - Core.AppendNode(xd, root, "seller_id", Config.Seller); - Core.AppendNode(xd, root, "cat_url", String.Format("{0}{1}SellerCats.xml", Config.Domain, Config.SavePath)); - Core.AppendNode(xd, root, "dir", String.Format("{0}{1}items/", Config.Domain, Config.SavePath)); - Core.AppendNode(xd,root,"item_ids",null); - xd.AppendChild(root); - xd.Save(fileName); - } - - //重新加载 - xd.Load(fileName); - XmlNode ids = xd.SelectSingleNode("/root/item_ids"); - - XmlNode modify = xd.SelectSingleNode("/root/modified"); - modify.InnerText = String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now); - - bool isExist=false; - foreach(XmlNode xn in ids.ChildNodes) - { - if (xn.NodeType == XmlNodeType.Element && xn.InnerText==item.outer_id.ToString()) - { - isExist = true; - break; - } - } - - if (!isExist) - { - XmlNode xn = xd.CreateElement("outer_id"); - - XmlAttribute xat = xd.CreateAttribute("action"); - xat.Value = "upload"; - xn.Attributes.Append(xat); - - xn.InnerText = item.outer_id; - ids.AppendChild(xn); - } - - xd.Save(fileName); - - } - - public static void Generate(Cate[] rootCates) - { - string fileName = String.Format("{0}{1}SellerCats.xml", Config.PhypicPath, Config.SavePath); - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - - StringBuilder sb = new StringBuilder(); - Cate[] cates; - - XmlDocument xd = new XmlDocument(); - XmlNode root = xd.CreateElement("root"); - - //分类节点 - XmlNode cateNode; - XmlNode catesNode; - object proValue; - - Core.AppendNode(xd, root, "version", Config.Version); - Core.AppendNode(xd, root, "modified",String.Format("{0:yyyy-MM-dd HH:mm:ss}",DateTime.Now.ToUniversalTime())); - Core.AppendNode(xd, root, "seller_id", Config.Seller); - - catesNode = xd.CreateElement("seller_cats"); - - - - Type type = typeof(Cate); - PropertyInfo[] pros = type.GetProperties(); - - foreach(Cate c in rootCates){ - - cateNode =xd.CreateElement("cat"); - foreach (PropertyInfo pro in pros) - { - proValue = pro.GetValue(c, null); - if (proValue as Cate[] != null) - { - cates = pro.GetValue(c, null) as Cate[]; - if (cates.Length != 0) - { - XmlNode cateNode2 = xd.CreateElement("cats"); - XmlNode cateNode3; - foreach (Cate c2 in cates) - { - cateNode3 = xd.CreateElement("cat"); - foreach (PropertyInfo pro2 in pros) - { - if (pro2.Name != "child") - { - Core.AppendNode(xd, cateNode3, pro2.Name, pro2.GetValue(c, null).ToString()); - } - } - cateNode2.AppendChild(cateNode3); - } - - cateNode.AppendChild(cateNode2); - } - } - else - { - Core.AppendNode(xd, cateNode, pro.Name, proValue.ToString()); - } - } - - catesNode.AppendChild(cateNode); - } - root.AppendChild(catesNode); - xd.AppendChild(root); - xd.Save(fileName); - } - - /// - /// 创建完整索引 - /// - /// - public static void GenerateFullIndex(IList items) - { - XmlDocument xd = new XmlDocument(); - FileInfo file = new FileInfo(String.Format("{0}{1}fullindex.xml", Config.PhypicPath, Config.SavePath)); - if (file.Exists) - { - file.Delete(); - } - - xd.AppendChild(xd.CreateXmlDeclaration("1.0", null, null)); - - XmlNode root = xd.CreateElement("root"); - - Core.AppendNode(xd, root, "version", Config.Version); - Core.AppendNode(xd, root, "modified", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); - Core.AppendNode(xd, root, "seller_id", Config.Seller); - Core.AppendNode(xd, root, "cat_url", String.Format("{0}{1}SellerCats.xml", Config.Domain, Config.SavePath)); - Core.AppendNode(xd, root, "dir", String.Format("{0}{1}items/", Config.Domain, Config.SavePath)); - - XmlNode ids = xd.CreateElement("item_ids"); - - - - - MultiThreadProcess mp = new MultiThreadProcess(Config.Threads, items.Count); - mp.Start>(item => - { - Item itm = item[0]; - - XmlNode xn = xd.CreateElement("outer_id"); - - XmlAttribute xat = xd.CreateAttribute("action"); - xat.Value = "upload"; - xn.Attributes.Append(xat); - - xn.InnerText = itm.outer_id; - ids.AppendChild(xn); - - if (item.Count == 1) - { - UploadItem(itm); - } - else - { - Generate(itm); - } - - item.Remove(itm); - - }, items); - - while (true) - { - if (!mp.IsAlive) - { - root.AppendChild(ids); - xd.AppendChild(root); - xd.Save(file.FullName); - break; - } - } - - } - - /// - /// 删除项目 - /// - /// - public static void DelItem(Item item) - { - string fileName=String.Format("{0}{1}items/{2}.xml", Config.PhypicPath, Config.SavePath, item.outer_id); - if (File.Exists(fileName)) - { - File.Delete(fileName); - } - string fileName2 = String.Format("{0}{1}IncrementIndex.xml", Config.PhypicPath, Config.SavePath); - - XmlDocument xd = new XmlDocument(); - //重新加载 - xd.Load(fileName2); - - XmlNode modify = xd.SelectSingleNode("/root/modified"); - modify.InnerText = String.Format("{0:yyyy-MM-dd HH:mm:ss", DateTime.Now.ToUniversalTime()); - - - XmlNode ids = xd.SelectSingleNode("/root/item_ids"); - - XmlNode xn=null; - foreach (XmlNode _xn in ids.ChildNodes) - { - if (_xn.NodeType == XmlNodeType.Element && _xn.InnerText == item.outer_id.ToString()) - { - xn = _xn; - break; - } - } - - if (xn==null) - { - xn = xd.CreateElement("outer_id"); - - XmlAttribute xat = xd.CreateAttribute("action"); - xat.Value = "delete"; - xn.Attributes.Append(xat); - - xn.InnerText = item.outer_id; - ids.AppendChild(xn); - } - else - { - xn.Attributes["action"].Value = "delete"; - } - - xd.Save(fileName2); - } - - private static XmlNode NewNode(XmlDocument xd, string nodeName, string nodeValue) - { - XmlNode xn = xd.CreateElement(nodeName); - if (nodeValue != null) - { - xn.InnerText = nodeValue; - } - return xn; - } - - private static void AppendNode(XmlDocument xd, XmlNode parentNode, string nodeName, string nodeValue) - { - parentNode.AppendChild(NewNode(xd, nodeName, nodeValue)); - } - - /// - /// ETao监视器 - /// - public static ETaoMoniter Moninter - { - get { return new ETaoMoniter(); } - } - - - /// - /// 开启ETao服务 - /// - public static void StartService(string seller,GetItemsHandler hand,GetCatsHandler hand2) - { - //设置域名 - if (ETao.Config.Domain == "http://xxx.com") - { - ETao.Config.Domain = String.Format("http://{0}/", global::System.Web.HttpContext.Current.Request.Url.Host); - } - - //设置账号 - ETao.Config.Seller = seller; - - //开启 - const int interval = 3600000; //时间间隔(1小时) - - - new global::System.Threading.Thread(() => - { - - while (true) - { - DateTime dt = DateTime.Now; - if ((dt - ETao.Config.LastBuildTime).Days >= 1) - { - ETao.Core.GenerateFullIndex(hand()); - ETao.Core.Generate(hand2()); - - ETao.Config.LastBuildTime = dt; - global::System.Threading.Thread.Sleep(interval * 24); - } - else - { - global::System.Threading.Thread.Sleep(interval); - } - } - - }).Start(); - - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs deleted file mode 100644 index 574e638..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/ETaoMoniter.cs +++ /dev/null @@ -1,48 +0,0 @@ -namespace AtNet.DevFw.Toolkit.ThirdApi.ETao -{ - public delegate void ETaoItemHandler(Item item); - - public class ETaoMoniter - { - public static event ETaoItemHandler OnItemUpload; - - internal ETaoMoniter() - { - } - - /// - /// 更新项目 - /// - /// - public void UploadItem(Item item) - { - if (OnItemUpload != null) - { - OnItemUpload(item); - } - } - - - /// - /// 删除项目 - /// - /// - public void DelItem(string itemID) - { - // - //TODO: Code here - // - } - - /// - /// 更新类目文件 - /// - /// - public void RenewCats(Cate[] rootCate) - { - // - //TODO:Cate update - // - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Item.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Item.cs deleted file mode 100644 index 36e3f3f..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/Item.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System.Collections.Generic; - -namespace AtNet.DevFw.Toolkit.ThirdApi.ETao -{ - - /// - /// 商品项 - /// - public class Item - { - /// - /// 给合作商家创建的淘宝会员账号 - /// - public string seller_id { get { return Config.Seller; } } - - /// - /// 商家自定义的商品 - /// - public string outer_id { get; set; } - - /// - /// 商品标题,不超过60个字节- - /// - public string title { get; set; } - - /// - /// 商品类型,一口价(fixed 默认)、团购(group) - /// - public string type { get; set; } - - /// - /// 商品是否有货,默认为0,表示无货,1标示有货,必填 - /// - public string available { get; set; } - - /// - /// 商品价格,格式:5.00;单位:元;精确到:分;取值范围:0-100000000 - /// - public string price { get; set; } - - /// - /// 优惠信息 - /// - public IDictionary discount { get; set; } - - /// - /// 商品简描述, 不超过1000个字节 - /// - public string desc { get; set; } - - /// - /// 商品品牌,不超过30个字符 - /// - public string brand { get; set; } - - /// - /// 商品Tag标签,有助于搜索,不超过5个标签(如:阿迪达斯\Adidas) - /// - public string tags { get; set; } - - /// - /// 商品图片的地址,类型:jpg、jpeg、png,不支持gif;最大:500k - /// - public string image { get; set; } - - /// - /// 商品更多辅助图片的地址,类型:jpg、jpeg、png,不支持gif;最大:500k - /// - public IDictionary more_images { get; set; } - - /// - /// 商户自定义类目ID,一个商品可以属于多个类目,半角逗号分隔 - /// - public string scids { get; set; } - - /// - /// 邮费价格,精确到2位小数;单位:元;卖家承担运费邮费即为0 - /// - public float post_fee { get; set; } - - /// - /// SKU属性项、属性值,不同属性项间以分号分隔,不同属性值间以逗号分隔 - /// - public string props { get; set; } - - /// - /// 不填默认不推荐,1/0 - /// - public string showcase { get; set; } - - /// - /// 商品链接绝对地址 - /// - public string href { get; set; } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs deleted file mode 100644 index 1c182a7..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/ETao/MultiThreadProcess.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; - -/******************************************* -* 文 件 名:MultiThreadProcess.cs -* 文件说明: -* 创 建 人:刘成文 -* 创建日期:2012-11-9 13:56:56 -********************************************/ - -namespace AtNet.DevFw.Toolkit.ThirdApi.ETao -{ - - /// - /// 多线程处理事件 - /// - /// - /// - public delegate void ThreadProcessHandler(T t); - - /// - /// 多线程处理 - /// - public class MultiThreadProcess - { - /// - /// 线程数量 - /// - private int threadCount; - - /// - /// 线程堆栈,用于轮询线程 - /// - private Stack threadStack; - - /// - /// 线程锁 - /// - private object threadLocker = new object(); - - /// - /// 线程集合 - /// - private Thread[] threads; - - private bool isAlive=true; - - /// - /// 是否活动中 - /// - public bool IsAlive { get { return isAlive; } } - - public MultiThreadProcess(int threads,int processTimes) - { - this.threadCount = threads; - this.threads = new Thread[threads]; - - //初始化线程堆栈 - this.threadStack = new Stack(processTimes); - for (int i = processTimes; i > 0; i--) - { - this.threadStack.Push(i); - } - } - - public void Start(ThreadProcessHandler handler, T t) - { - while (this.isAlive) - { - for (int i = 0; i < threadCount && this.threadStack.Count > 0; i++) - { - if (threads[i] == null || threads[i].ThreadState == ThreadState.Stopped) - { - threads[i] = new Thread(() => - { - lock (this.threadStack) - { - if (this.threadStack.Count > 0) - { - this.threadStack.Pop(); - handler(t); - } - } - }); - - threads[i].Name = String.Format("thread{0}", i.ToString()); - threads[i].Start(); - } - } - - if (this.threadStack.Count == 0) - { - //终止线程 - //for (int i = 0; i < threadCount; i++) - //{ - // if (this.threads[i] != null) - // { - // this.threads[i].Abort(); - // } - //} - do - { - bool hasThreadRunning = false; - for (int i = 0; i < threadCount; i++) - { - if (this.threads[i] != null && this.threads[i].ThreadState == ThreadState.Running) - hasThreadRunning = true; - } - if (!hasThreadRunning) - { - this.isAlive = false; - } - - } while (this.isAlive); - - //设置线程任务完成 - this.isAlive = false; - } - } - } - - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayComfireApi.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayComfireApi.cs deleted file mode 100644 index e10a8df..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayComfireApi.cs +++ /dev/null @@ -1,285 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Web; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - internal class AlipayComfireApi:IPay - { - public string GetPayFormHtml(Hashtable ht) - { - //商户号 - string partner = ht["alipay_key"] as string; - //密钥 - string key = ht["alipay_secret"] as string; - - - AlipayConfig.Partner = partner;// +"5"; - AlipayConfig.Key = key; - - - decimal product_fee = (decimal)ht["order_fee"]; //商品费用 - decimal transport_fee = decimal.Parse(ht["order_exp_fee"].ToString()); //物流费用 - - string order_desc = ht["order_desc"] as string; - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = ht["order_no"] as string; - string host = ht["usr_host"] as string; - - string showUrl = ht["order_surl"] as string; - - string notify_url =ht.Contains("notify_url")?ht["notify_url"].ToString():PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Guarantee); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url =ht.Contains("return_url")?ht["return_url"].ToString():PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Guarantee); - //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ - - - //卖家支付宝帐户 - string seller_email = ht["seller_account"] as string; - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = ht["order_subject"].ToString(); //parma.desc ?? "支付订单"; - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - //todo - string body = order_desc; - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - - - ReceiveInfo receive=default(ReceiveInfo); - if (ht.ContainsKey("receive")) - { - receive =(ReceiveInfo) ht["receive"]; - } - - - - ////////////////////////////////////////////请求参数//////////////////////////////////////////// - - //支付类型 - string payment_type = "1"; - - //必填 - - //商品数量 - string quantity = "1"; - //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品 - //物流费用 - string logistics_fee = "0.00"; - //必填,即运费 - //物流类型 - string logistics_type = "EXPRESS"; - //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) - //物流支付方式 - string logistics_payment = "SELLER_PAY"; - //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) - //订单描述 - - - - - //////////////////////////////////////////////////////////////////////////////////////////////// - - //把请求参数打包成数组 - SortedDictionary sParaTemp = new SortedDictionary(); - sParaTemp.Add("partner", AlipayConfig.Partner); - sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower()); - sParaTemp.Add("service", "create_partner_trade_by_buyer"); - sParaTemp.Add("payment_type", payment_type); - sParaTemp.Add("notify_url", notify_url); - sParaTemp.Add("return_url", return_url); - sParaTemp.Add("seller_email", seller_email); - sParaTemp.Add("out_trade_no", out_trade_no); - sParaTemp.Add("subject", subject); - sParaTemp.Add("price", total_fee); - sParaTemp.Add("quantity", quantity); - sParaTemp.Add("logistics_fee", logistics_fee); - sParaTemp.Add("logistics_type", logistics_type); - sParaTemp.Add("logistics_payment", logistics_payment); - sParaTemp.Add("body", body); - sParaTemp.Add("show_url", showUrl); - sParaTemp.Add("receive_name", receive.Name); - sParaTemp.Add("receive_address", receive.Address); - sParaTemp.Add("receive_zip", receive.Zip); - sParaTemp.Add("receive_phone", receive.Phone); - sParaTemp.Add("receive_mobile",receive.Mobile); - - - //建立请求 - return Submit.BuildRequest(sParaTemp, "get", "确认"); - - } - - - public PaidHandleResult Return(PayMointor proc) where T : class - { - - SortedDictionary sPara = PayUtil.GetRequestGet(); - var request = HttpContext.Current.Request; - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.QueryString["notify_id"], request.QueryString["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - - //商户订单号 - - string out_trade_no = request.QueryString["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.QueryString["trade_no"]; - - //交易状态 - string trade_status = request.QueryString["trade_status"]; - - proc.Init(out_trade_no); - - - if (request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - return PaidHandleResult.Success; - } - else - { - return PaidHandleResult.Fail; - } - - - } - else//验证失败 - { - return PaidHandleResult.Fail; - } - } - else - { - return PaidHandleResult.Fail; - } - } - - public string AlipayNotify(PayMointor proc)where T:class - { - SortedDictionary sPara =PayUtil.GetRequestPost(); - var request = HttpContext.Current.Request; - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.Form["notify_id"], request.Form["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 - - //商户订单号 - - string out_trade_no = request.Form["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.Form["trade_no"]; - - //交易状态 - string trade_status = request.Form["trade_status"]; - - - proc.Init(out_trade_no); - - - if (request.Form["trade_status"] == "WAIT_BUYER_PAY") - { - proc.AsyncState(PaymentAsyncState.WAIT_BUYER_PAY); - } - else if (request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - - proc.PaidSuccess(); - - //该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS") - {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "TRADE_FINISHED") - {//该判断表示买家已经确认收货,这笔交易完成 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else - { - } - - return "success"; - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else//验证失败 - { - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - } - } - else - { - return "无通知参数"; - } - } - - - public string GetPayRequest(Hashtable hash) - { - return this.GetPayFormHtml(hash); - } - - - public string Notify(PayMointor proc) where T : class - { - return this.AlipayNotify(proc); - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayConfig.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayConfig.cs deleted file mode 100644 index c1538a2..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayConfig.cs +++ /dev/null @@ -1,84 +0,0 @@ -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 类名:Config - /// 功能:基础配置类 - /// 详细:设置帐户有关信息及返回路径 - /// 版本:3.3 - /// 日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// 如何获取安全校验码和合作身份者ID - /// 1.用您的签约支付宝账号登录支付宝网站(www.alipay.com) - /// 2.点击“商家服务”(https://b.alipay.com/order/myOrder.htm) - /// 3.点击“查询合作者身份(PID)”、“查询安全校验码(Key)” - /// - public class AlipayConfig - { - #region 字段 - private static string partner = ""; - private static string key = ""; - private static string input_charset = ""; - private static string sign_type = ""; - #endregion - - static AlipayConfig() - { - //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ - - //合作身份者ID,以2088开头由16位纯数字组成的字符串 - partner = ""; - - //交易安全检验码,由数字和字母组成的32位字符串 - key = ""; - - //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ - - - - //字符编码格式 目前支持 gbk 或 utf-8 - input_charset = "utf-8"; - - //签名方式,选择项:RSA、DSA、MD5 - sign_type = "MD5"; - } - - #region 属性 - /// - /// 获取或设置合作者身份ID - /// - public static string Partner - { - get { return partner; } - set { partner = value; } - } - - /// - /// 获取或设交易安全校验码 - /// - public static string Key - { - get { return key; } - set { key = value; } - } - - /// - /// 获取字符编码格式 - /// - public static string Input_charset - { - get { return input_charset; } - } - - /// - /// 获取签名方式 - /// - public static string Sign_type - { - get { return sign_type; } - } - #endregion - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobile.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobile.cs deleted file mode 100644 index 1fdadfa..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobile.cs +++ /dev/null @@ -1,346 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : AlipayRedirect.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Web; -using System.Xml; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 支付宝即时到帐 - /// - internal class AlipayMobile : IPay - { - public string GetPayRequest(Hashtable hash) - { - - //================================================================================== - //支付宝网关地址 - string GATEWAY_NEW = "http://wappaygw.alipay.com/service/rest.htm?"; - - ////////////////////////////////////////////调用授权接口alipay.wap.trade.create.direct获取授权码token//////////////////////////////////////////// - - //返回格式 - string format = "xml"; - //必填,不需要修改 - - //返回格式 - string v = "2.0"; - //必填,不需要修改 - - //请求号 - string req_id = DateTime.Now.ToString("yyyyMMddHHmmss"); - //必填,须保证每次请求都是唯一 - - - - - //商户号 - string partner = hash["alipay_key"].ToString(); - //密钥 - string key = hash["alipay_secret"].ToString(); - - - AlipayMobileConfig.Partner = partner; - AlipayMobileConfig.Key = key; - - float product_fee = (float)hash["order_fee"]; //商品费用 - float transport_fee = float.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - - - - - - //req_data详细信息 - - //服务器异步通知页面路径 - //需http://格式的完整路径,不允许加?id=123这类自定义参数 - - - //页面跳转同步通知页面路径 - string notify_url = hash.Contains("notify_url") ? hash["notify_url"].ToString() : PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Direct); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url = hash.Contains("return_url") ? hash["return_url"].ToString() : PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Direct); - - //操作中断返回地址 - string merchant_url = return_url; - //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数 - - //卖家支付宝帐户 - string seller_email = hash["seller_account"] as string; - //必填 - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"].ToString(); - string host = hash["usr_host"] as string; - - string showUrl = hash["order_showurl"] as string; - //商户网站订单系统中唯一订单号,必填 - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = hash["order_subject"].ToString(); //parma.desc ?? "支付订单"; - //必填 - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - //必填 - - //请求业务参数详细 - string req_dataToken = "" + notify_url + "" + return_url + "" + seller_email + "" + out_trade_no + "" + subject + "" + total_fee + "" + merchant_url + ""; - //必填 - - //把请求参数打包成数组 - Dictionary sParaTempToken = new Dictionary(); - sParaTempToken.Add("partner", AlipayMobileConfig.Partner); - sParaTempToken.Add("_input_charset", AlipayMobileConfig.Input_charset.ToLower()); - sParaTempToken.Add("sec_id", AlipayMobileConfig.Sign_type.ToUpper()); - sParaTempToken.Add("service", "alipay.wap.trade.create.direct"); - sParaTempToken.Add("format", format); - sParaTempToken.Add("v", v); - sParaTempToken.Add("req_id", req_id); - sParaTempToken.Add("req_data", req_dataToken); - - //建立请求 - string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken); - //URLDECODE返回的信息 - System.Text.Encoding code = System.Text.Encoding.GetEncoding(AlipayMobileConfig.Input_charset); - sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code); - - //解析远程模拟提交后返回的信息 - Dictionary dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken); - - //获取token - string request_token = dicHtmlTextToken["request_token"]; - - ////////////////////////////////////////////根据授权码token调用交易接口alipay.wap.auth.authAndExecute//////////////////////////////////////////// - - - //业务详细 - string req_data = "" + request_token + ""; - //必填 - - //把请求参数打包成数组 - Dictionary sParaTemp = new Dictionary(); - sParaTemp.Add("partner", AlipayMobileConfig.Partner); - sParaTemp.Add("_input_charset", AlipayMobileConfig.Input_charset.ToLower()); - sParaTemp.Add("sec_id", AlipayMobileConfig.Sign_type.ToUpper()); - sParaTemp.Add("service", "alipay.wap.auth.authAndExecute"); - sParaTemp.Add("format", format); - sParaTemp.Add("v", v); - sParaTemp.Add("req_data", req_data); - - //建立请求 - string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认"); - - - return sHtmlText; - } - - /// - /// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - public Dictionary GetRequestGet() - { - int i = 0; - Dictionary sArray = new Dictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - coll = HttpContext.Current.Request.QueryString; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sArray.Add(requestItem[i], HttpContext.Current.Request.QueryString[requestItem[i]]); - } - - return sArray; - } - /// - /// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - public Dictionary GetRequestPost() - { - int i = 0; - Dictionary sArray = new Dictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - coll = HttpContext.Current.Request.Form; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sArray.Add(requestItem[i], HttpContext.Current.Request.Form[requestItem[i]]); - } - - return sArray; - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - var request = HttpContext.Current.Request; - Dictionary sPara = this.GetRequestGet(); - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.VerifyReturn(sPara,request.QueryString["sign"]); - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - string trade_no = request.QueryString["trade_no"]; //支付宝交易号 - string order_no = request.QueryString["out_trade_no"]; //获取订单号 - // string total_fee = request.QueryString["total_fee"]; //获取总金额 - //string subject = request.QueryString["subject"]; //商品名称、订单名称 - // string body = request.QueryString["body"]; //商品描述、订单备注、描述 - // string buyer_email = request.QueryString["buyer_email"]; //买家支付宝账号 - //string trade_status = request.QueryString["trade_status"]; //交易状态 - - //交易状态 - string result = request.QueryString["result"]; - - proc.Init(order_no); - - return PaidHandleResult.Success; - - //打印页面 - // Response.Write("验证成功
                                                                                                                                            "); - // Response.Write("trade_no=" + trade_no); - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - - } - } - - return PaidHandleResult.Fail; - } - - public string Notify(PayMointor proc) where T : class - { - /* - * http://localhost:8080/pay/notify_1_3.html?body=%d6%a7%b8%b6%b6%a9%b5%a5&buyer_email=newmin.net@gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%2Fvwbh3I73%2FBJ%2FCypvvG4k72c8QSXT5yE44%2FMSUK0zqoTBaXxNf4BPOKZI¬ify_time=2013-03-21+11:42:53¬ify_type=trade_status_sync&out_trade_no=20130125033249408&payment_type=1&seller_email=chiaus_im@163.com&seller_id=2088801968591818&subject=%E6%94%AF%E4%BB%98%E8%AE%A2%E5%8D%95&total_fee=0.01&trade_no=2013032154249581&trade_status=TRADE_SUCCESS&sign=af01b9aa0bd11df2a723eb5ef52e9298&sign_type=MD5 - */ - var request = HttpContext.Current.Request; - //商户号 - string partner = AlipayMobileConfig.Partner; - //密钥 - string key = AlipayMobileConfig.Key; - - Dictionary sPara = this.GetRequestPost(); - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.VerifyNotify(sPara, request.Form["sign"]); - - if (verifyResult)//验证成功 - { //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) - // sPara = aliNotify.Decrypt(sPara); - - //XML解析notify_data数据 - try - { - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(sPara["notify_data"]); - //商户订单号 - string out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; - //支付宝交易号 - string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; - //交易状态 - string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText; - - - proc.Init(out_trade_no); - - if (trade_status == "TRADE_FINISHED") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在两种情况下出现 - //1、开通了普通即时到账,买家付款成功后。 - //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 - - - proc.PaidSuccess(); - return "success"; //请不要修改或删除 - } - else if (trade_status == "TRADE_SUCCESS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 - - proc.PaidSuccess(); - - return "success"; //请不要修改或删除 - } - else - { - return trade_status; - } - - } - catch (Exception exc) - { - return exc.Message; - } - - - proc.PaidSuccess(); - - //log.Append("success:" + request.Form["trade_status"]+"\r\n"+order_no+"\r\n"); - return "success"; //请不要修改或删除 - } - } - - - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - - } - } - - -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobileConfig.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobileConfig.cs deleted file mode 100644 index 2a41e89..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayMobileConfig.cs +++ /dev/null @@ -1,114 +0,0 @@ -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 类名:Config - /// 功能:基础配置类 - /// 详细:设置帐户有关信息及返回路径 - /// 版本:3.3 - /// 日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// 如何获取安全校验码和合作身份者ID - /// 1.用您的签约支付宝账号登录支付宝网站(www.alipay.com) - /// 2.点击“商家服务”(https://b.alipay.com/order/myOrder.htm) - /// 3.点击“查询合作者身份(PID)”、“查询安全校验码(Key)” - /// - public class AlipayMobileConfig - { - #region 字段 - private static string partner = ""; - private static string key = ""; - private static string private_key = ""; - private static string public_key = ""; - private static string input_charset = ""; - private static string sign_type = ""; - #endregion - - static AlipayMobileConfig() - { - //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ - - //合作身份者ID,以2088开头由16位纯数字组成的字符串 - partner = ""; - - //交易安全检验码,由数字和字母组成的32位字符串 - //如果签名方式设置为“MD5”时,请设置该参数 - key = ""; - - //商户的私钥 - //如果签名方式设置为“0001”时,请设置该参数 - private_key = @""; - - //支付宝的公钥 - //如果签名方式设置为“0001”时,请设置该参数 - public_key = @""; - - //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ - - - - //字符编码格式 目前支持 utf-8 - input_charset = "utf-8"; - - //签名方式,选择项:0001(RSA)、MD5 - sign_type = "MD5"; - //无线的产品中,签名方式为rsa时,sign_type需赋值为0001而不是RSA - } - - #region 属性 - /// - /// 获取或设置合作者身份ID - /// - public static string Partner - { - get { return partner; } - set { partner = value; } - } - - /// - /// 获取或设交易安全校验码 - /// - public static string Key - { - get { return key; } - set { key = value; } - } - - /// - /// 获取或设置商户的私钥 - /// - public static string Private_key - { - get { return private_key; } - set { private_key = value; } - } - - /// - /// 获取或设置支付宝的公钥 - /// - public static string Public_key - { - get { return public_key; } - set { public_key = value; } - } - - /// - /// 获取字符编码格式 - /// - public static string Input_charset - { - get { return input_charset; } - } - - /// - /// 获取签名方式 - /// - public static string Sign_type - { - get { return sign_type; } - } - #endregion - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayNormal.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayNormal.cs deleted file mode 100644 index 43c61eb..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayNormal.cs +++ /dev/null @@ -1,308 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : AlipayNormal.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Web; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 支付宝标准双接口 - /// - internal class AlipayNormal : IPay - { - public string GetPayRequest(Hashtable hash) - { - //商户号 - string partner = hash["alipay_key"] as string; - //密钥 - string key = hash["alipay_secret"] as string; - - - AlipayConfig.Partner = partner;// +"5"; - AlipayConfig.Key = key; - - - float product_fee = (float)hash["order_fee"]; //商品费用 - float transport_fee = float.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string order_desc = hash["order_desc"] as string; - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"] as string; - string host = hash["usr_host"] as string; - - string showUrl = hash["order_showurl"] as string; - - string notify_url =hash.Contains("notify_url")?hash["notify_url"].ToString():PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Normal); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url =hash.Contains("return_url")?hash["return_url"].ToString():PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Normal); - //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ - - - //卖家支付宝帐户 - string seller_email = hash["seller_account"] as string; - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = hash["order_subject"].ToString(); //parma.desc ?? "支付订单"; - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - //todo - string body = order_desc; - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - - - - - ////////////////////////////////////////////请求参数//////////////////////////////////////////// - - //支付类型 - string payment_type = "1"; - - //必填 - - //商品数量 - string quantity = "1"; - //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品 - //物流费用 - string logistics_fee =transport_fee.ToString(); - //必填,即运费 - //物流类型 - string logistics_type = "EXPRESS"; - //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) - //物流支付方式 - string logistics_payment = "SELLER_PAY"; - //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) - //订单描述 - - - //收货人姓名 - string receive_name =hash["receive_name"] as String; - //如:张三 - - //收货人地址 - string receive_address = hash["receive_address"] as String; - //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号 - - //收货人邮编 - string receive_zip = hash["receive_zip"] as String; - //如:123456 - - //收货人电话号码 - string receive_phone = hash["receive_phone"] as String; - //如:0571-88158090 - - //收货人手机号码 - string receive_mobile = hash["receive_mobile"] as String; - //如:13312341234 - - - //////////////////////////////////////////////////////////////////////////////////////////////// - - //把请求参数打包成数组 - SortedDictionary sParaTemp = new SortedDictionary(); - sParaTemp.Add("partner", AlipayConfig.Partner); - sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower()); - sParaTemp.Add("service", "trade_create_by_buyer"); - sParaTemp.Add("payment_type", payment_type); - sParaTemp.Add("notify_url", notify_url); - sParaTemp.Add("return_url", return_url); - sParaTemp.Add("seller_email", seller_email); - sParaTemp.Add("out_trade_no", out_trade_no); - sParaTemp.Add("subject", subject); - sParaTemp.Add("price", total_fee); - sParaTemp.Add("quantity", quantity); - sParaTemp.Add("logistics_fee", logistics_fee); - sParaTemp.Add("logistics_type", logistics_type); - sParaTemp.Add("logistics_payment", logistics_payment); - sParaTemp.Add("body", body); - sParaTemp.Add("show_url", showUrl); - sParaTemp.Add("receive_name", receive_name); - sParaTemp.Add("receive_address", receive_address); - sParaTemp.Add("receive_zip", receive_zip); - sParaTemp.Add("receive_phone", receive_phone); - sParaTemp.Add("receive_mobile", receive_mobile); - - //建立请求 - return Submit.BuildRequest(sParaTemp, "get", "确认"); - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - SortedDictionary sPara = PayUtil.GetRequestGet(); - var request = HttpContext.Current.Request; - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.QueryString["notify_id"], request.QueryString["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - - //商户订单号 - - string out_trade_no = request.QueryString["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.QueryString["trade_no"]; - - //交易状态 - string trade_status = request.QueryString["trade_status"]; - - proc.Init(out_trade_no); - - - if (request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - return PaidHandleResult.Success; - } - else if (request.QueryString["trade_status"] == "TRADE_FINISHED") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - return PaidHandleResult.Success; - } - else - { - return PaidHandleResult.Fail; - } - - - } - else//验证失败 - { - return PaidHandleResult.Fail; - } - } - else - { - return PaidHandleResult.Fail; - } - } - - public string Notify(PayMointor proc) where T : class - { - SortedDictionary sPara = PayUtil.GetRequestPost(); - var request = HttpContext.Current.Request; - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.Form["notify_id"], request.Form["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 - - //商户订单号 - - string out_trade_no = request.Form["out_trade_no"]; - - //支付宝交易号 - - string trade_no = request.Form["trade_no"]; - - //交易状态 - string trade_status = request.Form["trade_status"]; - - - proc.Init(out_trade_no); - - - if (request.Form["trade_status"] == "WAIT_BUYER_PAY") - { - - } - else if (request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS") - { - - proc.PaidSuccess(); - - //该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS") - {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else if (request.Form["trade_status"] == "TRADE_FINISHED") - {//该判断表示买家已经确认收货,这笔交易完成 - - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - } - else - { - } - - return "success"; - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else//验证失败 - { - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - } - } - else - { - return "无通知参数"; - } - } - } - -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayRedirect.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayRedirect.cs deleted file mode 100644 index 6de3fe8..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/AlipayRedirect.cs +++ /dev/null @@ -1,276 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : AlipayRedirect.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Web; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay -{ - /// - /// 支付宝即时到帐 - /// - internal class AlipayRedirect : IPay - { - public string GetPayRequest(Hashtable hash) - { - //商户号 - string partner = hash["alipay_key"].ToString(); - //密钥 - string key = hash["alipay_secret"].ToString(); - - - AlipayConfig.Partner = partner; - AlipayConfig.Key = key; - - - string bankCode = hash.Contains("bank") ? hash["bank"].ToString() : "DEFAULT"; - - float product_fee = (float)hash["order_fee"]; //商品费用 - float transport_fee = float.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string order_desc = (hash["order_desc"]??"").ToString();; - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"].ToString(); - string host = hash["usr_host"] as string; - - string showUrl = hash["order_showurl"] as string; - - //卖家支付宝帐户 - string seller_email = hash["seller_account"] as string; - - //订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里 - string subject = hash["order_subject"].ToString(); //parma.desc ?? "支付订单"; - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - //todo - string body = order_desc; - - //订单总金额,显示在支付宝收银台里的“应付总额”里 - string total_fee = Convert.ToString(product_fee + transport_fee); - - - - ////////////////////////////////////////////请求参数//////////////////////////////////////////// - - //支付类型 - string payment_type = "1"; - //必填,不能修改 - //服务器异步通知页面路径 - - - string notify_url =hash.Contains("notify_url")?hash["notify_url"].ToString():PayUtil.GetNotifyUrl(PayMethods.Alipay, PayApiType.Direct); - - //需http://格式的完整路径,不能加?id=123这类自定义参数 - - //页面跳转同步通知页面路径 - string return_url =hash.Contains("return_url")?hash["return_url"].ToString():PayUtil.GetReturnUrl(PayMethods.Alipay, PayApiType.Direct); - //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ - - - //防钓鱼时间戳 - string anti_phishing_key = ""; - //若要使用请调用类文件submit中的query_timestamp函数 - - //客户端的IP地址 - string exter_invoke_ip = ""; - //非局域网的外网IP地址,如:221.0.0.1 - - - //////////////////////////////////////////////////////////////////////////////////////////////// - - //把请求参数打包成数组 - SortedDictionary sParaTemp = new SortedDictionary(); - sParaTemp.Add("partner", AlipayConfig.Partner); - sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower()); - sParaTemp.Add("service", "create_direct_pay_by_user"); - sParaTemp.Add("payment_type", payment_type); - sParaTemp.Add("notify_url", notify_url); - sParaTemp.Add("return_url", return_url); - sParaTemp.Add("seller_email", seller_email); - sParaTemp.Add("out_trade_no", out_trade_no); - sParaTemp.Add("subject", subject); - sParaTemp.Add("total_fee", total_fee); - sParaTemp.Add("body", body); - sParaTemp.Add("show_url", showUrl); - sParaTemp.Add("anti_phishing_key", anti_phishing_key); - sParaTemp.Add("exter_invoke_ip", exter_invoke_ip); - - - if (bankCode != "DEFAULT") - { - sParaTemp.Add("defaultbank", bankCode); - sParaTemp.Add("payment", "bankPay"); - } - - //建立请求 - string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认"); - - - return sHtmlText; - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - - // http://www.jin-ec.com/mapfre/pay/notify?body=%E8%AE%A2%E5%8D%952013122345312 - // &buyer_email=newmin.net%40gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user - // &is_success=T¬ify_id=RqPnCoPT3K9%252Fvwbh3I75KL02sthKJHtG2dh1Mg5RF5qgJKDY8jd2nu0ChZQAfPMX38xu - // ¬ify_time=2013-12-23+14%3A18%3A53¬ify_type=trade_status_sync&out_trade_no=2013122345312 - //&payment_type=1&seller_email=clientinfo%40roadchina.com.cn&seller_id=2088201937033268 - //&subject=%E6%98%A5%E8%BF%90%E4%BF%9D%E9%9A%9C%E4%BA%A7%E5%93%81&total_fee=0.01 - // &trade_no=2013122303460581&trade_status=TRADE_SUCCESS&sign=c8c01b5ac095540f0a35d4f7f5831956&sign_type=MD5 - // - var request = HttpContext.Current.Request; - SortedDictionary sPara = PayUtil.GetRequestGet(); - - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.QueryString["notify_id"], request.QueryString["sign"]); - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 - string trade_no = request.QueryString["trade_no"]; //支付宝交易号 - string order_no = request.QueryString["out_trade_no"]; //获取订单号 - string total_fee = request.QueryString["total_fee"]; //获取总金额 - string subject = request.QueryString["subject"]; //商品名称、订单名称 - string body = request.QueryString["body"]; //商品描述、订单备注、描述 - string buyer_email = request.QueryString["buyer_email"]; //买家支付宝账号 - string trade_status = request.QueryString["trade_status"]; //交易状态 - - proc.Init(order_no); - - - if (request.QueryString["trade_status"] == "TRADE_FINISHED" || request.QueryString["trade_status"] == "TRADE_SUCCESS") - { - return PaidHandleResult.Success; - } - - //打印页面 - // Response.Write("验证成功
                                                                                                                                            "); - // Response.Write("trade_no=" + trade_no); - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - - } - } - - return PaidHandleResult.Fail; - } - - public string Notify(PayMointor proc) where T : class - { - /* - * http://localhost:8080/pay/notify_1_3.html?body=%d6%a7%b8%b6%b6%a9%b5%a5&buyer_email=newmin.net@gmail.com&buyer_id=2088302384317810&exterface=create_direct_pay_by_user&is_success=T¬ify_id=RqPnCoPT3K9%2Fvwbh3I73%2FBJ%2FCypvvG4k72c8QSXT5yE44%2FMSUK0zqoTBaXxNf4BPOKZI¬ify_time=2013-03-21+11:42:53¬ify_type=trade_status_sync&out_trade_no=20130125033249408&payment_type=1&seller_email=chiaus_im@163.com&seller_id=2088801968591818&subject=%E6%94%AF%E4%BB%98%E8%AE%A2%E5%8D%95&total_fee=0.01&trade_no=2013032154249581&trade_status=TRADE_SUCCESS&sign=af01b9aa0bd11df2a723eb5ef52e9298&sign_type=MD5 - */ - var request = HttpContext.Current.Request; - //商户号 - string partner = AlipayConfig.Partner; - //密钥 - string key = AlipayConfig.Key; - - SortedDictionary sPara = PayUtil.GetRequestPost(); - if (sPara.Count > 0)//判断是否有带返回参数 - { - Notify aliNotify = new Notify(); - bool verifyResult = aliNotify.Verify(sPara, request.Form["notify_id"], request.Form["sign"]); - - if (verifyResult)//验证成功 - { - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - //请在这里加上商户的业务逻辑程序代码 - - //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— - //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 - string trade_no = request.Form["trade_no"]; //支付宝交易号 - string order_no = request.Form["out_trade_no"]; //获取订单号 - string total_fee = request.Form["total_fee"]; //获取总金额 - string subject = request.Form["subject"]; //商品名称、订单名称 - string body = request.Form["body"]; //商品描述、订单备注、描述 - string buyer_email = request.Form["buyer_email"]; //买家支付宝账号 - string trade_status = request.Form["trade_status"]; //交易状态 - - - proc.Init(order_no); - - if (request.Form["trade_status"] == "TRADE_FINISHED") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在两种情况下出现 - //1、开通了普通即时到账,买家付款成功后。 - //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 - - - - } - else if (request.Form["trade_status"] == "TRADE_SUCCESS") - { - //判断该笔订单是否在商户网站中已经做过处理 - //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 - //如果有做过处理,不执行商户的业务程序 - - //注意: - //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 - - - - } - else - { - } - - //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— - - proc.PaidSuccess(); - - //log.Append("success:" + request.Form["trade_status"]+"\r\n"+order_no+"\r\n"); - return "success"; //请不要修改或删除 - - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else//验证失败 - { - - proc.PaidFail(); - - //log.Append("fail:" + request.Form["trade_status"] + "\r\n"); - - return "fail"; - } - } - else - { - //log.Append("无通知参数:" + request.Form["trade_status"] + "\r\n"); - return "无通知参数"; - } - } - } - - -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayCore.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayCore.cs deleted file mode 100644 index 55c20e4..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayCore.cs +++ /dev/null @@ -1,134 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:Core - /// 功能:支付宝接口公用函数类 - /// 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件,不需要修改 - /// 版本:3.3 - /// 修改日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public class Core - { - - public Core() - { - } - - /// - /// 除去数组中的空值和签名参数并以字母a到z的顺序排序 - /// - /// 过滤前的参数组 - /// 过滤后的参数组 - public static Dictionary FilterPara(SortedDictionary dicArrayPre) - { - Dictionary dicArray = new Dictionary(); - foreach (KeyValuePair temp in dicArrayPre) - { - if (temp.Key.ToLower() != "sign" && temp.Key.ToLower() != "sign_type" && temp.Value != "" && temp.Value != null) - { - dicArray.Add(temp.Key, temp.Value); - } - } - - return dicArray; - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - /// - /// 需要拼接的数组 - /// 拼接完成以后的字符串 - public static string CreateLinkString(Dictionary dicArray) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + temp.Value + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen-1,1); - - return prestr.ToString(); - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - /// - /// 需要拼接的数组 - /// 字符编码 - /// 拼接完成以后的字符串 - public static string CreateLinkStringUrlencode(Dictionary dicArray, Encoding code) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + HttpUtility.UrlEncode(temp.Value, code) + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen - 1, 1); - - return prestr.ToString(); - } - - /// - /// 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) - /// - /// 要写入日志里的文本内容 - public static void LogResult(string sWord) - { - string strPath = HttpContext.Current.Server.MapPath("/"); - strPath = strPath +String.Format("{0:yyyyfffff}.txt",DateTime.Now); - StreamWriter fs = new StreamWriter(strPath, false, System.Text.Encoding.Default); - fs.Write(sWord); - fs.Close(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(Stream sFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(sFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(byte[] dataFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(dataFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayNotify.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayNotify.cs deleted file mode 100644 index 48ed6e0..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipayNotify.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:Notify - /// 功能:支付宝通知处理类 - /// 详细:处理支付宝各接口通知返回 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// '说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// //////////////////////注意///////////////////////////// - /// 调试通知返回时,可查看或改写log日志的写入TXT里的数据,来检查通知返回是否正常 - /// - public class Notify - { - #region 字段 - - - //支付宝消息验证地址 - private string Https_veryfy_url = "https://mapi.alipay.com/gateway.do?service=notify_verify&"; - #endregion - - - /// - /// 验证消息是否是支付宝发出的合法消息 - /// - /// 通知返回参数数组 - /// 通知验证ID - /// 支付宝生成的签名结果 - /// 验证结果 - public bool Verify(SortedDictionary inputPara, string notify_id, string sign) - { - //获取返回时的签名验证结果 - bool isSign = GetSignVeryfy(inputPara, sign); - //获取是否是支付宝服务器发来的请求的验证结果 - string responseTxt = "true"; - if (notify_id != null && notify_id != "") { responseTxt = GetResponseTxt(notify_id); } - - //写日志记录(若要调试,请取消下面两行注释) - //string sWord = "Partner:"+Config.Partner+"\r\nSecret:"+ Config.Key+"\r\n responseTxt=" + responseTxt + "\n isSign=" + isSign.ToString() + "\n 返回回来的参数:" + GetPreSignStr(inputPara) + "\n "; - //Core.LogResult(sWord); - - //判断responsetTxt是否为true,isSign是否为true - //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 - //isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 - if (responseTxt == "true" && isSign)//验证成功 - { - return true; - } - else//验证失败 - { - return false; - } - } - - /// - /// 获取待签名字符串(调试用) - /// - /// 通知返回参数数组 - /// 待签名字符串 - private string GetPreSignStr(SortedDictionary inputPara) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - return preSignStr; - } - - /// - /// 获取返回时的签名验证结果 - /// - /// 通知返回参数数组 - /// 对比的签名结果 - /// 签名验证结果 - private bool GetSignVeryfy(SortedDictionary inputPara, string sign) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - //获得签名验证结果 - bool isSgin = false; - if (sign != null && sign != "") - { - switch (AlipayConfig.Sign_type) - { - case "MD5": - isSgin = AlipayMD5.Verify(preSignStr, sign, AlipayConfig.Key, AlipayConfig.Input_charset); - break; - default: - break; - } - } - - return isSgin; - } - - /// - /// 获取是否是支付宝服务器发来的请求的验证结果 - /// - /// 通知验证ID - /// 验证结果 - private string GetResponseTxt(string notify_id) - { - string veryfy_url = Https_veryfy_url + "partner=" + AlipayConfig.Partner + "¬ify_id=" + notify_id; - - //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 - string responseTxt = Get_Http(veryfy_url, 120000); - - return responseTxt; - } - - /// - /// 获取远程服务器ATN结果 - /// - /// 指定URL路径地址 - /// 超时时间设置 - /// 服务器ATN结果 - private string Get_Http(string strUrl, int timeout) - { - string strResult; - try - { - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Timeout = timeout; - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - StreamReader sr = new StreamReader(myStream, Encoding.Default); - StringBuilder strBuilder = new StringBuilder(); - while (-1 != sr.Peek()) - { - strBuilder.Append(sr.ReadLine()); - } - - strResult = strBuilder.ToString(); - } - catch (Exception exp) - { - strResult = "错误:" + exp.Message; - } - - return strResult; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipaySubmit.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipaySubmit.cs deleted file mode 100644 index 2c1d23c..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/AlipaySubmit.cs +++ /dev/null @@ -1,291 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:Submit - /// 功能:支付宝各接口请求提交类 - /// 详细:构造支付宝各接口表单HTML文本,获取远程HTTP数据 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考 - /// - public class Submit - { - #region 字段 - //支付宝网关地址(新) - private static string GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?"; - - #endregion - - - /// - /// 生成请求时的签名 - /// - /// 请求给支付宝的参数数组 - /// 签名结果 - private static string BuildRequestMysign(Dictionary sPara) - { - //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - string prestr = Core.CreateLinkString(sPara); - - //把最终的字符串签名,获得签名结果 - string mysign = ""; - switch (AlipayConfig.Sign_type) - { - case "MD5": - mysign = AlipayMD5.Sign(prestr, AlipayConfig.Key, AlipayConfig.Input_charset); - break; - default: - mysign = ""; - break; - } - - return mysign; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 要请求的参数数组 - private static Dictionary BuildRequestPara(SortedDictionary sParaTemp) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - //签名结果 - string mysign = ""; - - //过滤签名参数数组 - sPara = Core.FilterPara(sParaTemp); - - //获得签名结果 - mysign = BuildRequestMysign(sPara); - - //签名结果与签名方式加入请求提交参数组中 - sPara.Add("sign", mysign); - sPara.Add("sign_type", AlipayConfig.Sign_type); - - return sPara; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 字符编码 - /// 要请求的参数数组字符串 - private static string BuildRequestParaToString(SortedDictionary sParaTemp, Encoding code) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - sPara = BuildRequestPara(sParaTemp); - - //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - string strRequestData = Core.CreateLinkStringUrlencode(sPara, code); - - return strRequestData; - } - - /// - /// 建立请求,以表单HTML形式构造(默认) - /// - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 确认按钮显示文字 - /// 提交表单HTML文本 - public static string BuildRequest(SortedDictionary sParaTemp, string strMethod, string strButtonValue) - { - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - StringBuilder sbHtml = new StringBuilder(); - - sbHtml.Append("
                                                                                                                                            "); - - foreach (KeyValuePair temp in dicPara) - { - sbHtml.Append(""); - } - - //submit按钮控件请不要含有name属性 - sbHtml.Append(""); - - sbHtml.Append(""); - - return sbHtml.ToString(); - } - - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果 - /// - /// 请求参数数组 - /// 支付宝处理结果 - public static string BuildRequest(SortedDictionary sParaTemp) - { - Encoding code = Encoding.GetEncoding(AlipayConfig.Input_charset); - - //待请求参数数组字符串 - string strRequestData = BuildRequestParaToString(sParaTemp,code); - - //把数组转换成流中所需字节数组类型 - byte[] bytesRequestData = code.GetBytes(strRequestData); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayConfig.Input_charset; - - //请求远程HTTP - string strResult = ""; - try - { - //设置HttpWebRequest基本信息 - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Method = "post"; - myReq.ContentType = "application/x-www-form-urlencoded"; - - //填充POST数据 - myReq.ContentLength = bytesRequestData.Length; - Stream requestStream = myReq.GetRequestStream(); - requestStream.Write(bytesRequestData, 0, bytesRequestData.Length); - requestStream.Close(); - - //发送POST数据请求服务器 - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - - //获取服务器返回信息 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - - //释放 - myStream.Close(); - - strResult = responseData.ToString(); - } - catch (Exception exp) - { - strResult = "报错:"+exp.Message; - } - - return strResult; - } - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能 - /// - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 文件绝对路径 - /// 文件数据 - /// 文件内容类型 - /// 文件长度 - /// 支付宝处理结果 - public static string BuildRequest(SortedDictionary sParaTemp, string strMethod, string fileName, byte[] data, string contentType, int lengthFile) - { - - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayConfig.Input_charset; - - //设置HttpWebRequest基本信息 - HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl); - //设置请求方式:get、post - request.Method = strMethod; - //设置boundaryValue - string boundaryValue = DateTime.Now.Ticks.ToString("x"); - string boundary = "--" + boundaryValue; - request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue; - //设置KeepAlive - request.KeepAlive = true; - //设置请求数据,拼接成字符串 - StringBuilder sbHtml = new StringBuilder(); - foreach (KeyValuePair key in dicPara) - { - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"" + key.Key + "\"\r\n\r\n" + key.Value + "\r\n"); - } - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"withhold_file\"; filename=\""); - sbHtml.Append(fileName); - sbHtml.Append("\"\r\nContent-Type: " + contentType + "\r\n\r\n"); - string postHeader = sbHtml.ToString(); - //将请求数据字符串类型根据编码格式转换成字节流 - Encoding code = Encoding.GetEncoding(AlipayConfig.Input_charset); - byte[] postHeaderBytes = code.GetBytes(postHeader); - byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n"); - //设置长度 - long length = postHeaderBytes.Length + lengthFile + boundayBytes.Length; - request.ContentLength = length; - - //请求远程HTTP - Stream requestStream = request.GetRequestStream(); - Stream myStream; - try - { - //发送数据请求服务器 - requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); - requestStream.Write(data, 0, lengthFile); - requestStream.Write(boundayBytes, 0, boundayBytes.Length); - HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); - myStream = HttpWResp.GetResponseStream(); - } - catch (WebException e) - { - return e.ToString(); - } - finally - { - if (requestStream != null) - { - requestStream.Close(); - } - } - - //读取支付宝返回处理结果 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - myStream.Close(); - return responseData.ToString(); - } - - /// - /// 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 - /// 注意:远程解析XML出错,与IIS服务器配置有关 - /// - /// 时间戳字符串 - public static string Query_timestamp() - { - string url = GATEWAY_NEW + "service=query_timestamp&partner=" + AlipayConfig.Partner; - string encrypt_key = ""; - - XmlTextReader Reader = new XmlTextReader(url); - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.Load(Reader); - - encrypt_key = xmlDoc.SelectSingleNode("/alipay/response/timestamp/encrypt_key").InnerText; - - return encrypt_key; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/MD5.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/MD5.cs deleted file mode 100644 index 7eaf970..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/Core/MD5.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Security.Cryptography; -using System.Text; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core -{ - /// - /// 类名:MD5 - /// 功能:MD5加密 - /// 版本:3.3 - /// 修改日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public sealed class AlipayMD5 - { - public AlipayMD5() - { - // - // TODO: 在此处添加构造函数逻辑 - // - } - - /// - /// 签名字符串 - /// - /// 需要签名的字符串 - /// 密钥 - /// 编码格式 - /// 签名结果 - public static string Sign(string prestr, string key, string _input_charset) - { - StringBuilder sb = new StringBuilder(32); - - prestr = prestr + key; - - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(prestr)); - for (int i = 0; i < t.Length; i++) - { - sb.Append(t[i].ToString("x").PadLeft(2, '0')); - } - - return sb.ToString(); - } - - /// - /// 验证签名 - /// - /// 需要签名的字符串 - /// 签名结果 - /// 密钥 - /// 编码格式 - /// 验证结果 - public static bool Verify(string prestr, string sign, string key, string _input_charset) - { - string mysign = Sign(prestr, key, _input_charset); - // Core.LogResult(mysign+"/"+sign+"/"+_input_charset); - return String.Compare(mysign,sign,true)==0; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayCore.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayCore.cs deleted file mode 100644 index b5fb857..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayCore.cs +++ /dev/null @@ -1,147 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:Core - /// 功能:支付宝接口公用函数类 - /// 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件,不需要修改 - /// 版本:3.3 - /// 修改日期:2012-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public class Core - { - - public Core() - { - } - - /// - /// 除去数组中的空值和签名参数 - /// - /// 过滤前的参数组 - /// 过滤后的参数组 - public static Dictionary FilterPara(Dictionary dicArrayPre) - { - Dictionary dicArray = new Dictionary(); - foreach (KeyValuePair temp in dicArrayPre) - { - if (temp.Key.ToLower() != "sign" && temp.Key.ToLower() != "sign_type" && temp.Value != "" && temp.Value != null) - { - dicArray.Add(temp.Key, temp.Value); - } - } - - return dicArray; - } - - /// - /// 根据字母a到z的顺序把参数排序 - /// - /// 排序前的参数组 - /// 排序后的参数组 - public static Dictionary SortPara(Dictionary dicArrayPre) - { - SortedDictionary dicTemp = new SortedDictionary(dicArrayPre); - Dictionary dicArray = new Dictionary(dicTemp); - - return dicArray; - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - /// - /// 需要拼接的数组 - /// 拼接完成以后的字符串 - public static string CreateLinkString(Dictionary dicArray) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + temp.Value + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen-1,1); - - return prestr.ToString(); - } - - /// - /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - /// - /// 需要拼接的数组 - /// 字符编码 - /// 拼接完成以后的字符串 - public static string CreateLinkStringUrlencode(Dictionary dicArray, Encoding code) - { - StringBuilder prestr = new StringBuilder(); - foreach (KeyValuePair temp in dicArray) - { - prestr.Append(temp.Key + "=" + HttpUtility.UrlEncode(temp.Value, code) + "&"); - } - - //去掉最後一個&字符 - int nLen = prestr.Length; - prestr.Remove(nLen - 1, 1); - - return prestr.ToString(); - } - - /// - /// 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) - /// - /// 要写入日志里的文本内容 - public static void LogResult(string sWord) - { - string strPath = HttpContext.Current.Server.MapPath("/"); - strPath = strPath +String.Format("{0:yyyyfffff}.txt",DateTime.Now); - StreamWriter fs = new StreamWriter(strPath, false, System.Text.Encoding.Default); - fs.Write(sWord); - fs.Close(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(Stream sFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(sFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - - /// - /// 获取文件的md5摘要 - /// - /// 文件流 - /// MD5摘要结果 - public static string GetAbstractToMD5(byte[] dataFile) - { - MD5 md5 = new MD5CryptoServiceProvider(); - byte[] result = md5.ComputeHash(dataFile); - StringBuilder sb = new StringBuilder(32); - for (int i = 0; i < result.Length; i++) - { - sb.Append(result[i].ToString("x").PadLeft(2, '0')); - } - return sb.ToString(); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayNotify.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayNotify.cs deleted file mode 100644 index 7a43e69..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipayNotify.cs +++ /dev/null @@ -1,262 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:Notify - /// 功能:支付宝通知处理类 - /// 详细:处理支付宝各接口通知返回 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// '说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - /// //////////////////////注意///////////////////////////// - /// 调试通知返回时,可查看或改写log日志的写入TXT里的数据,来检查通知返回是否正常 - /// - public class Notify - { - #region 字段 - - //支付宝消息验证地址 - private string Https_veryfy_url = "https://mapi.alipay.com/gateway.do?service=notify_verify&"; - #endregion - - - - /// - /// 验证消息是否是支付宝发出的合法消息,验证callback - /// - /// 通知返回参数数组 - /// 支付宝生成的签名结果 - /// 验证结果 - public bool VerifyReturn(Dictionary inputPara, string sign) - { - //获取返回时的签名验证结果 - bool isSign = GetSignVeryfy(inputPara, sign,true); - - //写日志记录(若要调试,请取消下面两行注释) - // string sWord = "patern:"+Config.Partner+"\r\n key:"+Config.Key+"\r\n"+"isSign="+ isSign.ToString() + "\n 返回回来的参数:" + GetPreSignStr(inputPara) + "\n "; - // Core.LogResult(sWord); - - //判断isSign是否为true - //isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 - if (isSign)//验证成功 - { - return true; - } - else//验证失败 - { - return false; - } - } - - /// - /// 验证消息是否是支付宝发出的合法消息,验证服务器异步通知 - /// - /// 通知返回参数数组 - /// 支付宝生成的签名结果 - /// 验证结果 - public bool VerifyNotify(Dictionary inputPara, string sign) - { - //解密 - if (AlipayMobileConfig.Sign_type == "0001") - { - inputPara = Decrypt(inputPara); - } - - //获取是否是支付宝服务器发来的请求的验证结果 - string responseTxt = "true"; - try - { - //XML解析notify_data数据,获取notify_id - string notify_id = ""; - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(inputPara["notify_data"]); - notify_id = xmlDoc.SelectSingleNode("/notify/notify_id").InnerText; - - if (notify_id != "") { responseTxt = GetResponseTxt(notify_id); } - } - catch(Exception e) - { - responseTxt = e.ToString(); - } - - //获取返回时的签名验证结果 - bool isSign = GetSignVeryfy(inputPara, sign, false); - - //写日志记录(若要调试,请取消下面两行注释) - //string sWord = "responseTxt=" + responseTxt + "\n isSign=" + isSign.ToString() + "\n 返回回来的参数:" + GetPreSignStr(inputPara) + "\n "; - //Core.LogResult(sWord); - - //判断responsetTxt是否为true,isSign是否为true - //responsetTxt的结果不是true,与服务器设置问题、合作身份者ID、notify_id一分钟失效有关 - //isSign不是true,与安全校验码、请求时的参数格式(如:带自定义参数等)、编码格式有关 - if (responseTxt == "true" && isSign)//验证成功 - { - return true; - } - else//验证失败 - { - return false; - } - } - - /// - /// 获取待签名字符串(调试用) - /// - /// 通知返回参数数组 - /// 待签名字符串 - public string GetPreSignStr(Dictionary inputPara) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - //根据字母a到z的顺序把参数排序 - sPara = Core.SortPara(sPara); - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - return preSignStr; - } - - /// - /// 解密 - /// - /// 要解密数据 - /// 解密后结果 - public Dictionary Decrypt(Dictionary inputPara) - { - try - { - inputPara["notify_data"] = RSAFromPkcs8.decryptData(inputPara["notify_data"], AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - } - catch (Exception e) { } - - return inputPara; - } - - /// - /// 异步通知时,对参数做固定排序 - /// - /// 排序前的参数组 - /// 排序后的参数组 - private Dictionary SortNotifyPara(Dictionary dicArrayPre) - { - Dictionary sPara = new Dictionary(); - sPara.Add("service", dicArrayPre["service"]); - sPara.Add("v", dicArrayPre["v"]); - sPara.Add("sec_id", dicArrayPre["sec_id"]); - sPara.Add("notify_data", dicArrayPre["notify_data"]); - - return sPara; - } - - /// - /// 获取返回时的签名验证结果 - /// - /// 通知返回参数数组 - /// 对比的签名结果 - /// 是否对待签名数组排序 - /// 签名验证结果 - private bool GetSignVeryfy(Dictionary inputPara, string sign,bool isSort) - { - Dictionary sPara = new Dictionary(); - - //过滤空值、sign与sign_type参数 - sPara = Core.FilterPara(inputPara); - - if (isSort) - { - //根据字母a到z的顺序把参数排序 - sPara = Core.SortPara(sPara); - } - else - { - sPara = SortNotifyPara(sPara); - } - - //获取待签名字符串 - string preSignStr = Core.CreateLinkString(sPara); - - //获得签名验证结果 - bool isSgin = false; - if (sign != null && sign != "") - { - switch (AlipayMobileConfig.Sign_type) - { - case "MD5": - isSgin = AlipayMD5.Verify(preSignStr, sign, AlipayMobileConfig.Key, AlipayMobileConfig.Input_charset); - break; - case "RSA": - isSgin = RSAFromPkcs8.verify(preSignStr, sign, AlipayMobileConfig.Public_key, AlipayMobileConfig.Input_charset); - break; - case "0001": - isSgin = RSAFromPkcs8.verify(preSignStr, sign, AlipayMobileConfig.Public_key, AlipayMobileConfig.Input_charset); - break; - default: - break; - } - } - - return isSgin; - } - - /// - /// 获取是否是支付宝服务器发来的请求的验证结果 - /// - /// 通知验证ID - /// 验证结果 - private string GetResponseTxt(string notify_id) - { - string veryfy_url = Https_veryfy_url + "partner=" + AlipayMobileConfig.Partner + "¬ify_id=" + notify_id; - - //获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求 - string responseTxt = Get_Http(veryfy_url, 120000); - - return responseTxt; - } - - /// - /// 获取远程服务器ATN结果 - /// - /// 指定URL路径地址 - /// 超时时间设置 - /// 服务器ATN结果 - private string Get_Http(string strUrl, int timeout) - { - string strResult; - try - { - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Timeout = timeout; - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - StreamReader sr = new StreamReader(myStream, Encoding.Default); - StringBuilder strBuilder = new StringBuilder(); - while (-1 != sr.Peek()) - { - strBuilder.Append(sr.ReadLine()); - } - - strResult = strBuilder.ToString(); - } - catch (Exception exp) - { - strResult = "错误:" + exp.Message; - } - - return strResult; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipaySubmit.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipaySubmit.cs deleted file mode 100644 index 519d9b6..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/AlipaySubmit.cs +++ /dev/null @@ -1,356 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.Core; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:Submit - /// 功能:支付宝各接口请求提交类 - /// 详细:构造支付宝各接口表单HTML文本,获取远程HTTP数据 - /// 版本:3.3 - /// 修改日期:2011-07-05 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考 - /// - public class Submit - { - /// - /// 生成请求时的签名 - /// - /// 请求给支付宝的参数数组 - /// 签名结果 - private static string BuildRequestMysign(Dictionary sPara) - { - //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 - string prestr = Core.CreateLinkString(sPara); - - //把最终的字符串签名,获得签名结果 - string mysign = ""; - switch (AlipayMobileConfig.Sign_type) - { - case "MD5": - mysign = AlipayMD5.Sign(prestr, AlipayMobileConfig.Key, AlipayMobileConfig.Input_charset); - break; - case "RSA": - mysign = RSAFromPkcs8.sign(prestr, AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - break; - case "0001": - mysign = RSAFromPkcs8.sign(prestr, AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - break; - default: - mysign = ""; - break; - } - - return mysign; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 要请求的参数数组 - private static Dictionary BuildRequestPara(Dictionary sParaTemp) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - //签名结果 - string mysign = ""; - - //过滤签名参数数组 - sPara = Core.FilterPara(sParaTemp); - - //根据字母a到z的顺序把参数排序 - sPara = Core.SortPara(sPara); - - //获得签名结果 - mysign = BuildRequestMysign(sPara); - - //签名结果与签名方式加入请求提交参数组中 - sPara.Add("sign", mysign); - if (sPara["service"] != "alipay.wap.trade.create.direct" && sPara["service"] != "alipay.wap.auth.authAndExecute") - { - sPara.Add("sign_type", AlipayMobileConfig.Sign_type); - } - - return sPara; - } - - /// - /// 生成要请求给支付宝的参数数组 - /// - /// 请求前的参数数组 - /// 字符编码 - /// 要请求的参数数组字符串 - private static string BuildRequestParaToString(Dictionary sParaTemp, Encoding code) - { - //待签名请求参数数组 - Dictionary sPara = new Dictionary(); - sPara = BuildRequestPara(sParaTemp); - - //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode - string strRequestData = Core.CreateLinkStringUrlencode(sPara, code); - - return strRequestData; - } - - /// - /// 建立请求,以表单HTML形式构造(默认) - /// - /// 支付宝网关地址 - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 确认按钮显示文字 - /// 提交表单HTML文本 - public static string BuildRequest(string GATEWAY_NEW, Dictionary sParaTemp, string strMethod, string strButtonValue) - { - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - StringBuilder sbHtml = new StringBuilder(); - - sbHtml.Append("
                                                                                                                                            "); - - foreach (KeyValuePair temp in dicPara) - { - sbHtml.Append(""); - } - - //submit按钮控件请不要含有name属性 - sbHtml.Append(""); - - sbHtml.Append(""); - - return sbHtml.ToString(); - } - - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果 - /// - /// 支付宝网关地址 - /// 请求参数数组 - /// 支付宝处理结果 - public static string BuildRequest(string GATEWAY_NEW, Dictionary sParaTemp) - { - Encoding code = Encoding.GetEncoding(AlipayMobileConfig.Input_charset); - - //待请求参数数组字符串 - string strRequestData = BuildRequestParaToString(sParaTemp,code); - - //把数组转换成流中所需字节数组类型 - byte[] bytesRequestData = code.GetBytes(strRequestData); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayMobileConfig.Input_charset; - - //请求远程HTTP - string strResult = ""; - try - { - //设置HttpWebRequest基本信息 - HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); - myReq.Method = "post"; - myReq.ContentType = "application/x-www-form-urlencoded"; - - //填充POST数据 - myReq.ContentLength = bytesRequestData.Length; - Stream requestStream = myReq.GetRequestStream(); - requestStream.Write(bytesRequestData, 0, bytesRequestData.Length); - requestStream.Close(); - - //发送POST数据请求服务器 - HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); - Stream myStream = HttpWResp.GetResponseStream(); - - //获取服务器返回信息 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - - //释放 - myStream.Close(); - - strResult = responseData.ToString(); - } - catch (Exception exp) - { - strResult = "报错:"+exp.Message; - } - - return strResult; - } - - /// - /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能 - /// - /// 支付宝网关地址 - /// 请求参数数组 - /// 提交方式。两个值可选:post、get - /// 文件绝对路径 - /// 文件数据 - /// 文件内容类型 - /// 文件长度 - /// 支付宝处理结果 - public static string BuildRequest(string GATEWAY_NEW, Dictionary sParaTemp, string strMethod, string fileName, byte[] data, string contentType, int lengthFile) - { - - //待请求参数数组 - Dictionary dicPara = new Dictionary(); - dicPara = BuildRequestPara(sParaTemp); - - //构造请求地址 - string strUrl = GATEWAY_NEW + "_input_charset=" + AlipayMobileConfig.Input_charset; - - //设置HttpWebRequest基本信息 - HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl); - //设置请求方式:get、post - request.Method = strMethod; - //设置boundaryValue - string boundaryValue = DateTime.Now.Ticks.ToString("x"); - string boundary = "--" + boundaryValue; - request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue; - //设置KeepAlive - request.KeepAlive = true; - //设置请求数据,拼接成字符串 - StringBuilder sbHtml = new StringBuilder(); - foreach (KeyValuePair key in dicPara) - { - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"" + key.Key + "\"\r\n\r\n" + key.Value + "\r\n"); - } - sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"withhold_file\"; filename=\""); - sbHtml.Append(fileName); - sbHtml.Append("\"\r\nContent-Type: " + contentType + "\r\n\r\n"); - string postHeader = sbHtml.ToString(); - //将请求数据字符串类型根据编码格式转换成字节流 - Encoding code = Encoding.GetEncoding(AlipayMobileConfig.Input_charset); - byte[] postHeaderBytes = code.GetBytes(postHeader); - byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n"); - //设置长度 - long length = postHeaderBytes.Length + lengthFile + boundayBytes.Length; - request.ContentLength = length; - - //请求远程HTTP - Stream requestStream = request.GetRequestStream(); - Stream myStream; - try - { - //发送数据请求服务器 - requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); - requestStream.Write(data, 0, lengthFile); - requestStream.Write(boundayBytes, 0, boundayBytes.Length); - HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); - myStream = HttpWResp.GetResponseStream(); - } - catch (WebException e) - { - return e.ToString(); - } - finally - { - if (requestStream != null) - { - requestStream.Close(); - } - } - - //读取支付宝返回处理结果 - StreamReader reader = new StreamReader(myStream, code); - StringBuilder responseData = new StringBuilder(); - - String line; - while ((line = reader.ReadLine()) != null) - { - responseData.Append(line); - } - myStream.Close(); - return responseData.ToString(); - } - - /// - /// 解析远程模拟提交后返回的信息 - /// - /// 要解析的字符串 - /// 解析结果 - public static Dictionary ParseResponse(string strText) - { - //以“&”字符切割字符串 - string[] strSplitText = strText.Split('&'); - //把切割后的字符串数组变成变量与数值组合的字典数组 - Dictionary dicText = new Dictionary(); - for (int i = 0; i < strSplitText.Length; i++) - { - //获得第一个=字符的位置 - int nPos = strSplitText[i].IndexOf('='); - //获得字符串长度 - int nLen = strSplitText[i].Length; - //获得变量名 - string strKey = strSplitText[i].Substring(0,nPos); - //获得数值 - string strValue = strSplitText[i].Substring(nPos+1,nLen-nPos-1); - //放入字典类数组中 - dicText.Add(strKey, strValue); - } - - if(!dicText.ContainsKey("res_data")) - { - throw new Exception(strText); - } - - if (dicText["res_data"] != null) - { - //解析加密部分字符串(RSA与MD5区别仅此一句) - if (AlipayMobileConfig.Sign_type == "0001") - { - dicText["res_data"] = RSAFromPkcs8.decryptData(dicText["res_data"], AlipayMobileConfig.Private_key, AlipayMobileConfig.Input_charset); - } - - //token从res_data中解析出来(也就是说res_data中已经包含token的内容) - XmlDocument xmlDoc = new XmlDocument(); - try - { - xmlDoc.LoadXml(dicText["res_data"]); - string strRequest_token = xmlDoc.SelectSingleNode("/direct_trade_create_res/request_token").InnerText; - dicText.Add("request_token", strRequest_token); - } - catch (Exception exp) - { - dicText.Add("request_token", exp.ToString()); - } - } - - return dicText; - } - - /// - /// 用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 - /// 注意:远程解析XML出错,与IIS服务器配置有关 - /// - /// 时间戳字符串 - public static string Query_timestamp() - { - string GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?"; - string url = GATEWAY_NEW + "service=query_timestamp&partner=" + AlipayMobileConfig.Partner + "&_input_charset=" + AlipayMobileConfig.Input_charset; - string encrypt_key = ""; - - XmlTextReader Reader = new XmlTextReader(url); - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.Load(Reader); - - encrypt_key = xmlDoc.SelectSingleNode("/alipay/response/timestamp/encrypt_key").InnerText; - - return encrypt_key; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/RSA.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/RSA.cs deleted file mode 100644 index df9635d..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Alipay/MobileCore/RSA.cs +++ /dev/null @@ -1,383 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using System.Text; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay.MobileCore -{ - /// - /// 类名:RSAFromPkcs8 - /// 功能:RSA解密、签名、验签 - /// 详细:该类对Java生成的密钥进行解密和签名以及验签专用类,不需要修改 - /// 版本:2.0 - /// 修改日期:2011-05-10 - /// 说明: - /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 - /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 - /// - public sealed class RSAFromPkcs8 - { - /// - /// 签名 - /// - /// 需要签名的内容 - /// 私钥 - /// 编码格式 - /// - public static string sign(string content, string privateKey, string input_charset) - { - Encoding code = Encoding.GetEncoding(input_charset); - byte[] Data = code.GetBytes(content); - RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey); - SHA1 sh = new SHA1CryptoServiceProvider(); - byte[] signData = rsa.SignData(Data, sh); - return Convert.ToBase64String(signData); - } - - /// - /// 验证签名 - /// - /// 需要验证的内容 - /// 签名结果 - /// 公钥 - /// 编码格式 - /// - public static bool verify(string content, string signedString, string publicKey, string input_charset) - { - bool result = false; - - Encoding code = Encoding.GetEncoding(input_charset); - byte[] Data = code.GetBytes(content); - byte[] data = Convert.FromBase64String(signedString); - RSAParameters paraPub = ConvertFromPublicKey(publicKey); - RSACryptoServiceProvider rsaPub = new RSACryptoServiceProvider(); - rsaPub.ImportParameters(paraPub); - - SHA1 sh = new SHA1CryptoServiceProvider(); - result = rsaPub.VerifyData(Data, sh, data); - return result; - } - - /// - /// 用RSA解密 - /// - /// 待解密字符串 - /// 私钥 - /// 编码格式 - /// 解密结果 - public static string decryptData(string resData, string privateKey, string input_charset) - { - byte[] DataToDecrypt = Convert.FromBase64String(resData); - List result = new List(); - - for (int j = 0; j < DataToDecrypt.Length / 128; j++) - { - byte[] buf = new byte[128]; - for (int i = 0; i < 128; i++) - { - buf[i] = DataToDecrypt[i + 128 * j]; - } - result.AddRange(decrypt(buf, privateKey, input_charset)); - } - byte[] source = result.ToArray(); - char[] asciiChars = new char[Encoding.GetEncoding(input_charset).GetCharCount(source, 0, source.Length)]; - Encoding.GetEncoding(input_charset).GetChars(source, 0, source.Length, asciiChars, 0); - return new string(asciiChars); - } - - private static byte[] decrypt(byte[] data, string privateKey, string input_charset) - { - RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey); - SHA1 sh = new SHA1CryptoServiceProvider(); - return rsa.Decrypt(data, false); - } - - /// - /// 解析java生成的pem文件私钥 - /// - /// - /// - private static RSACryptoServiceProvider DecodePemPrivateKey(String pemstr) - { - byte[] pkcs8privatekey; - pkcs8privatekey = Convert.FromBase64String(pemstr); - if (pkcs8privatekey != null) - { - - RSACryptoServiceProvider rsa = DecodePrivateKeyInfo(pkcs8privatekey); - return rsa; - } - else - return null; - } - - private static RSACryptoServiceProvider DecodePrivateKeyInfo(byte[] pkcs8) - { - - byte[] SeqOID = { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 }; - byte[] seq = new byte[15]; - - MemoryStream mem = new MemoryStream(pkcs8); - int lenstream = (int)mem.Length; - BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading - byte bt = 0; - ushort twobytes = 0; - - try - { - - twobytes = binr.ReadUInt16(); - if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81) - binr.ReadByte(); //advance 1 byte - else if (twobytes == 0x8230) - binr.ReadInt16(); //advance 2 bytes - else - return null; - - - bt = binr.ReadByte(); - if (bt != 0x02) - return null; - - twobytes = binr.ReadUInt16(); - - if (twobytes != 0x0001) - return null; - - seq = binr.ReadBytes(15); //read the Sequence OID - if (!CompareBytearrays(seq, SeqOID)) //make sure Sequence for OID is correct - return null; - - bt = binr.ReadByte(); - if (bt != 0x04) //expect an Octet string - return null; - - bt = binr.ReadByte(); //read next byte, or next 2 bytes is 0x81 or 0x82; otherwise bt is the byte count - if (bt == 0x81) - binr.ReadByte(); - else - if (bt == 0x82) - binr.ReadUInt16(); - //------ at this stage, the remaining sequence should be the RSA private key - - byte[] rsaprivkey = binr.ReadBytes((int)(lenstream - mem.Position)); - RSACryptoServiceProvider rsacsp = DecodeRSAPrivateKey(rsaprivkey); - return rsacsp; - } - - catch (Exception) - { - return null; - } - - finally { binr.Close(); } - - } - - - private static bool CompareBytearrays(byte[] a, byte[] b) - { - if (a.Length != b.Length) - return false; - int i = 0; - foreach (byte c in a) - { - if (c != b[i]) - return false; - i++; - } - return true; - } - - private static RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey) - { - byte[] MODULUS, E, D, P, Q, DP, DQ, IQ; - - // --------- Set up stream to decode the asn.1 encoded RSA private key ------ - MemoryStream mem = new MemoryStream(privkey); - BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading - byte bt = 0; - ushort twobytes = 0; - int elems = 0; - try - { - twobytes = binr.ReadUInt16(); - if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81) - binr.ReadByte(); //advance 1 byte - else if (twobytes == 0x8230) - binr.ReadInt16(); //advance 2 bytes - else - return null; - - twobytes = binr.ReadUInt16(); - if (twobytes != 0x0102) //version number - return null; - bt = binr.ReadByte(); - if (bt != 0x00) - return null; - - - //------ all private key components are Integer sequences ---- - elems = GetIntegerSize(binr); - MODULUS = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - E = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - D = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - P = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - Q = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - DP = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - DQ = binr.ReadBytes(elems); - - elems = GetIntegerSize(binr); - IQ = binr.ReadBytes(elems); - - // ------- create RSACryptoServiceProvider instance and initialize with public key ----- - RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); - RSAParameters RSAparams = new RSAParameters(); - RSAparams.Modulus = MODULUS; - RSAparams.Exponent = E; - RSAparams.D = D; - RSAparams.P = P; - RSAparams.Q = Q; - RSAparams.DP = DP; - RSAparams.DQ = DQ; - RSAparams.InverseQ = IQ; - RSA.ImportParameters(RSAparams); - return RSA; - } - catch (Exception) - { - return null; - } - finally { binr.Close(); } - } - - private static int GetIntegerSize(BinaryReader binr) - { - byte bt = 0; - byte lowbyte = 0x00; - byte highbyte = 0x00; - int count = 0; - bt = binr.ReadByte(); - if (bt != 0x02) //expect integer - return 0; - bt = binr.ReadByte(); - - if (bt == 0x81) - count = binr.ReadByte(); // data size in next byte - else - if (bt == 0x82) - { - highbyte = binr.ReadByte(); // data size in next 2 bytes - lowbyte = binr.ReadByte(); - byte[] modint = { lowbyte, highbyte, 0x00, 0x00 }; - count = BitConverter.ToInt32(modint, 0); - } - else - { - count = bt; // we already have the data size - } - - - - while (binr.ReadByte() == 0x00) - { //remove high order zeros in data - count -= 1; - } - binr.BaseStream.Seek(-1, SeekOrigin.Current); //last ReadByte wasn't a removed zero, so back up a byte - return count; - } - - #region 解析.net 生成的Pem - private static RSAParameters ConvertFromPublicKey(string pemFileConent) - { - - byte[] keyData = Convert.FromBase64String(pemFileConent); - if (keyData.Length < 162) - { - throw new ArgumentException("pem file content is incorrect."); - } - byte[] pemModulus = new byte[128]; - byte[] pemPublicExponent = new byte[3]; - Array.Copy(keyData, 29, pemModulus, 0, 128); - Array.Copy(keyData, 159, pemPublicExponent, 0, 3); - RSAParameters para = new RSAParameters(); - para.Modulus = pemModulus; - para.Exponent = pemPublicExponent; - return para; - } - - private static RSAParameters ConvertFromPrivateKey(string pemFileConent) - { - byte[] keyData = Convert.FromBase64String(pemFileConent); - if (keyData.Length < 609) - { - throw new ArgumentException("pem file content is incorrect."); - } - - int index = 11; - byte[] pemModulus = new byte[128]; - Array.Copy(keyData, index, pemModulus, 0, 128); - - index += 128; - index += 2;//141 - byte[] pemPublicExponent = new byte[3]; - Array.Copy(keyData, index, pemPublicExponent, 0, 3); - - index += 3; - index += 4;//148 - byte[] pemPrivateExponent = new byte[128]; - Array.Copy(keyData, index, pemPrivateExponent, 0, 128); - - index += 128; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//279 - byte[] pemPrime1 = new byte[64]; - Array.Copy(keyData, index, pemPrime1, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//346 - byte[] pemPrime2 = new byte[64]; - Array.Copy(keyData, index, pemPrime2, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//412/413 - byte[] pemExponent1 = new byte[64]; - Array.Copy(keyData, index, pemExponent1, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//479/480 - byte[] pemExponent2 = new byte[64]; - Array.Copy(keyData, index, pemExponent2, 0, 64); - - index += 64; - index += ((int)keyData[index + 1] == 64 ? 2 : 3);//545/546 - byte[] pemCoefficient = new byte[64]; - Array.Copy(keyData, index, pemCoefficient, 0, 64); - - RSAParameters para = new RSAParameters(); - para.Modulus = pemModulus; - para.Exponent = pemPublicExponent; - para.D = pemPrivateExponent; - para.P = pemPrime1; - para.Q = pemPrime2; - para.DP = pemExponent1; - para.DQ = pemExponent2; - para.InverseQ = pemCoefficient; - return para; - } - #endregion - - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Bank.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Bank.cs deleted file mode 100644 index 16912fd..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Bank.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.IO; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - public class BankItem - { - public BankItem(BankSign sign,string name,string netway) - { - this.Sign = sign; - this.HansName = name; - this.NetGateway = netway; - } - - /// - /// 标识 - /// - public BankSign Sign { get; set; } - - /// - /// 汉语名称 - /// - public string HansName { get; set; } - - /// - /// 网关 - /// - public string NetGateway { get; set; } - } - - public enum BankSign - { - Default,ICBC, ABC, CCB, BOC, CIB, CITIC, CMB, CMBC, CEB, COMM, GDB, SPAB, POSTGC, SPDB - } - - - /// - /// 银行 - /// - public class Bank - { - public static BankItem[] Alipay; - public static BankItem[] Tenpay; - - static Bank() - { - Alipay = new BankItem[]{ - new BankItem(BankSign.ICBC,"中国工商银行","ICBCBTB"), - new BankItem(BankSign.ABC,"中国农业银行","ABCBTB"), - new BankItem(BankSign.CCB,"中国建设银行","CCBBTB"), - new BankItem(BankSign.BOC,"中国银行","BOCB2C"), - new BankItem(BankSign.CIB,"兴业银行","CIB"), - new BankItem(BankSign.CITIC,"中信银行","CITIC"), - new BankItem(BankSign.CMB,"招商银行","CMB"), - new BankItem(BankSign.CMBC,"中国民生银行","CMBC"), - new BankItem(BankSign.CEB,"中国光大银行","CEBBANK"), - new BankItem(BankSign.COMM,"交通银行","COMM"), - new BankItem(BankSign.GDB,"广发银行","GDB"), - new BankItem(BankSign.SPAB,"平安银行","SPABANK"), - new BankItem(BankSign.POSTGC,"中国邮政储蓄银行","POSTGC"), - new BankItem(BankSign.SPDB,"浦发银行","SPDBB2B") - }; - - Tenpay = new BankItem[]{ - new BankItem(BankSign.ICBC,"中国工商银行","ICBC"), - new BankItem(BankSign.ABC,"中国农业银行","ABC"), - new BankItem(BankSign.CCB,"中国建设银行","CCB"), - new BankItem(BankSign.BOC,"中国银行","BOC"), - new BankItem(BankSign.CIB,"兴业银行","CIB"), - new BankItem(BankSign.CITIC,"中信银行","CITIC"), - new BankItem(BankSign.CMB,"招商银行","CMB"), - new BankItem(BankSign.CMBC,"中国民生银行","CMBC"), - new BankItem(BankSign.CEB,"中国光大银行","CEB"), - new BankItem(BankSign.COMM,"交通银行","COMM"), - new BankItem(BankSign.GDB,"广发银行","GDB"), - new BankItem(BankSign.SPAB,"平安银行","PAB"), - new BankItem(BankSign.POSTGC,"中国邮政储蓄银行","POSTGC"), - new BankItem(BankSign.SPDB,"浦发银行","SPDB") - }; - - } - - /// - /// 获取银行图标 - /// - /// - /// - public static byte[] ReadBankImage(string id) - { - - System.Drawing.Bitmap img=null; - BankSign sign =(BankSign)Enum.Parse(typeof(BankSign), id, true); - switch (sign) - { - case BankSign.ICBC: img = BankRes.ICBC; break; - case BankSign.ABC: img = BankRes.ABC; break; - case BankSign.CCB: img = BankRes.CCB; break; - case BankSign.BOC: img = BankRes.BOC; break; - case BankSign.CIB: img = BankRes.CIB; break; - case BankSign.CITIC: img = BankRes.CITIC; break; - case BankSign.CMB: img = BankRes.CMB; break; - case BankSign.CMBC: img = BankRes.CMBC; break; - case BankSign.CEB: img = BankRes.CEB; break; - case BankSign.COMM: img = BankRes.COMM; break; - case BankSign.GDB: img = BankRes.GDB; break; - case BankSign.SPAB: img = BankRes.SPAB; break; - case BankSign.POSTGC: img = BankRes.POSTGC; break; - case BankSign.SPDB: img = BankRes.SPDB; break; - } - if (img == null) - { - return new byte[0]; - } - - MemoryStream ms = new MemoryStream(); - img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); - - byte[] buffer = ms.ToArray(); - ms.Dispose(); - - return buffer; - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes.Designer.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes.Designer.cs deleted file mode 100644 index 988ac95..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes.Designer.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34003 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class BankRes { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal BankRes() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AtNet.DevFw.Toolkit.ThirdApi.NetPay.BankRes", typeof(BankRes).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap ABC { - get { - object obj = ResourceManager.GetObject("ABC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap BOC { - get { - object obj = ResourceManager.GetObject("BOC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CCB { - get { - object obj = ResourceManager.GetObject("CCB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CEB { - get { - object obj = ResourceManager.GetObject("CEB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CIB { - get { - object obj = ResourceManager.GetObject("CIB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CITIC { - get { - object obj = ResourceManager.GetObject("CITIC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CMB { - get { - object obj = ResourceManager.GetObject("CMB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap CMBC { - get { - object obj = ResourceManager.GetObject("CMBC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap COMM { - get { - object obj = ResourceManager.GetObject("COMM", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap GDB { - get { - object obj = ResourceManager.GetObject("GDB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap ICBC { - get { - object obj = ResourceManager.GetObject("ICBC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap POSTGC { - get { - object obj = ResourceManager.GetObject("POSTGC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap SPAB { - get { - object obj = ResourceManager.GetObject("SPAB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 - /// - internal static System.Drawing.Bitmap SPDB { - get { - object obj = ResourceManager.GetObject("SPDB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes2.Designer.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes2.Designer.cs deleted file mode 100644 index 1bd5332..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes2.Designer.cs +++ /dev/null @@ -1,162 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.296 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace Ops.Plugin.NetPay -{ - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class BankRes { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal BankRes() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("U1City.Shop.API.Pay.BankRes", typeof(BankRes).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - internal static System.Drawing.Bitmap ABC { - get { - object obj = ResourceManager.GetObject("ABC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap BOC { - get { - object obj = ResourceManager.GetObject("BOC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CCB { - get { - object obj = ResourceManager.GetObject("CCB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CEB { - get { - object obj = ResourceManager.GetObject("CEB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CIB { - get { - object obj = ResourceManager.GetObject("CIB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CITIC { - get { - object obj = ResourceManager.GetObject("CITIC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CMB { - get { - object obj = ResourceManager.GetObject("CMB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap CMBC { - get { - object obj = ResourceManager.GetObject("CMBC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap COMM { - get { - object obj = ResourceManager.GetObject("COMM", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap GDB { - get { - object obj = ResourceManager.GetObject("GDB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap ICBC { - get { - object obj = ResourceManager.GetObject("ICBC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap POSTGC { - get { - object obj = ResourceManager.GetObject("POSTGC", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap SPAB { - get { - object obj = ResourceManager.GetObject("SPAB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap SPDB { - get { - object obj = ResourceManager.GetObject("SPDB", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes2.resx b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes2.resx deleted file mode 100644 index ad7daf8..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/BankRes2.resx +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - BankImages\ABC.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\BOC.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\CCB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\CEB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\CIB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\CITIC.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\CMB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\CMBC.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\COMM.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\GDB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\ICBC.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\POSTGC.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\SPAB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - BankImages\SPDB.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPayApi.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPayApi.cs deleted file mode 100644 index a343651..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPayApi.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; -using System.Collections; -using System.Web; -using AtNet.DevFw.Framework.Extensions; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay -{ - public class ChinaPayApi:IPay - { - - public string GetPayRequest(Hashtable hash) - { - - string[] keys = (hash["chinapay_secret"] as string).Split('|'); - - ChinaPaySignData.MerchantID = hash["chinapay_key"] as string; - ChinaPaySignData.PrivateKeyPath =String.Format("{0}{1}",AppDomain.CurrentDomain.BaseDirectory, keys[0]); - ChinaPaySignData.PublicKeyPath =String.Format("{0}{1}",AppDomain.CurrentDomain.BaseDirectory, keys[1]); - - //test url //http://localhost:8080/pay/notify_3_1.html?merid=808080201301103&orderno=2013052309145966&transdate=20130523&amount=000000000001¤cycode=156&transtype=0001&status=1001&checkvalue=872E476C3C0B471CF6C408F2B311E8A89FB78D5166676B60FB06F45797F24FFAD092FDE5CE85BA084CCDEFF4097D31DA68DDCCB5A59B719E0EB1718EB2CC77FA72F0F0039AE03684CC59EE6204A2EC104B792F33321D4EC66D7A90F9C3BD7531A50FA47199FE084D4715DEC312117C8E62A673947B293472BD8B5685C67106B8&GateId=8607&Priv1=beizhu - const string gatewayHTML = @"
                                                                                                                                            -
                                                                                                                                            -
                                                                                                                                            模板编号模板类型文件名模板注释文件路径
                                                                                                                                            ").Append((++i).ToString()).Append("") + .Append(key.ToLower()).Append("") + .Append( + + //RegexUtility.partialRegex.IsMatch(tplContent) && tplContent.IndexOf("") != -1 + !tpl.FilePath.EndsWith(".phtml") + ? "<span style=\"color:#333\">模板页面</span>" + : "<span style=\"color:#006699\">部分视图</span>") + .Append("</td><td>/").Append(tplFileName).Append("</td><td>").Append(tpl.Comment) + .Append("</td><td>").Append(tpl.FilePath).Append("</td></tr>"); + } + + sb.Append(@"<tr><td colspan=""6"" align=""center"" style=""background:#f0f0f0;color:#333""> + 部分视图扩展名为“.phtml”,可允许格式如: +   A:${partial:""inc/header.phtml""} +   B:${partial:""/tmpdir/inc/header.phtml""} +   C:${partial:""../../inc/header.phtml""} + </td></tr>"); + + sb.Append( + "</table><script type=\"text/javascript\">dynamicTable(document.getElementsByTagName('table')[0]);</script>"); + + templateContent = TemplateRegexUtility.Replace(templateContent, match => + { + switch (match.Groups[1].Value) + { + case "title": + return "模板信息"; + case "content": + return sb.ToString(); + case "year": + return DateTime.Now.Year.ToString(); + } + return String.Empty; + }); + + System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; + response.Write(TemplateUtility.CompressHtml(templateContent)); + response.End(); + } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/Variable.cs b/src/core/J6.DevFw.Template/old/Variable.cs new file mode 100644 index 0000000..a6a620d --- /dev/null +++ b/src/core/J6.DevFw.Template/old/Variable.cs @@ -0,0 +1,21 @@ +// +// Copyright 2011 @ S1N1.COM,All right reseved. +// Name:Variable.cs +// Author:newmin +// Create:2013/09/10 +// + +using System; + +namespace JR.DevFw.Template +{ + /// <summary> + /// 变量 + /// </summary> + public struct Variable + { + public string Key { get; set; } + public object Value { get; set; } + public Type Type { get; set; } + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Template/old/temp/EventLog.cs b/src/core/J6.DevFw.Template/old/temp/EventLog.cs new file mode 100644 index 0000000..1eafe4a --- /dev/null +++ b/src/core/J6.DevFw.Template/old/temp/EventLog.cs @@ -0,0 +1,50 @@ +// +// Copyright (C) 2011 S1N1.COM,All right reseved. +// Name:EventLog.cs +// Author:newmin +// Create:2011/06/13 +// + +using System; +using System.Text; + +namespace JR.DevFw.Template.temp +{ + /// <summary> + /// 事件日志 + /// </summary> + [Obsolete] + internal sealed class EventLog + { + private static StringBuilder _csb = new StringBuilder(); + + + internal EventLog() + { + } + + public string Content + { + get { return _csb.ToString(); } + } + + /// <summary> + /// 附加日志 + /// </summary> + /// <param name="logText"></param> + public void Append(string logText) + { + _csb.Append(logText); + } + + public void Clear() + { + _csb.Remove(0, _csb.Length); + } + + public override string ToString() + { + return _csb.ToString(); + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/temp/~Example.cs b/src/core/J6.DevFw.Template/old/temp/~Example.cs similarity index 100% rename from src/core/AtNet.DevFw.Template/old/temp/~Example.cs rename to src/core/J6.DevFw.Template/old/temp/~Example.cs diff --git a/src/core/J6.DevFw.Template/old/test.cs b/src/core/J6.DevFw.Template/old/test.cs new file mode 100644 index 0000000..2cc29d2 --- /dev/null +++ b/src/core/J6.DevFw.Template/old/test.cs @@ -0,0 +1,15 @@ +namespace JR.DevFw.Template +{ + internal class test + { + private void Main() + { + TemplatePage tp = new TemplatePage(); + tp.TemplateContent = "$m=item KEY:${item.key} Note:${item.note}<br />${m.key}"; + tp.AddVariable("item", new {Key = "Key", Note = "Note"}); + var x = System.Web.HttpContext.Current.Items; + string y = tp.ToString(); + // return y; + } + } +} \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Template/old/test.html b/src/core/J6.DevFw.Template/old/test.html similarity index 100% rename from src/core/AtNet.DevFw.Template/old/test.html rename to src/core/J6.DevFw.Template/old/test.html diff --git a/src/core/AtNet.DevFw.Template/template.snk b/src/core/J6.DevFw.Template/template.snk similarity index 100% rename from src/core/AtNet.DevFw.Template/template.snk rename to src/core/J6.DevFw.Template/template.snk diff --git a/J6/src/core/J6.DevFw.Web/AtNet.DevFw.Web.csproj.user b/src/core/J6.DevFw.Web/AtNet.DevFw.Web.csproj.user similarity index 100% rename from J6/src/core/J6.DevFw.Web/AtNet.DevFw.Web.csproj.user rename to src/core/J6.DevFw.Web/AtNet.DevFw.Web.csproj.user diff --git a/src/core/J6.DevFw.Web/Cache/CacheFactory.cs b/src/core/J6.DevFw.Web/Cache/CacheFactory.cs new file mode 100644 index 0000000..b01cf64 --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/CacheFactory.cs @@ -0,0 +1,24 @@ +using JR.DevFw.Web.Cache.Compoment; + +namespace JR.DevFw.Web.Cache +{ + /// <summary> + /// + /// </summary> + public static class CacheFactory + { + private static ICache _cacheInstance; + + /// <summary> + /// + /// </summary> + public static ICache Sington + { + get + { + return _cacheInstance ?? (_cacheInstance = new BasicCache(new DependCache())); + // return cacheInstance ?? (cacheInstance = new CmsCache(new LevelDbCacheProvider())); + } + } + } +} diff --git a/src/core/J6.DevFw.Web/Cache/CacheUpdateAttribute.cs b/src/core/J6.DevFw.Web/Cache/CacheUpdateAttribute.cs new file mode 100644 index 0000000..b05f602 --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/CacheUpdateAttribute.cs @@ -0,0 +1,49 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:46 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using JR.DevFw.Web.Cache.Compoment; + +namespace JR.DevFw.Web.Cache +{ + /// <summary> + /// Description of CacheUpdateAttribute. + /// </summary> + [AttributeUsage(AttributeTargets.Method)] + public class CacheUpdateAttribute:Attribute,ICacheUpdatePolicy + { + /// <summary> + /// + /// </summary> + /// <param name="cacheKey"></param> + public CacheUpdateAttribute(string cacheKey) + { + this.Key=cacheKey; + } + /// <summary> + /// + /// </summary> + /// <param name="sign"></param> + public CacheUpdateAttribute(CacheSign sign) + { + this.Key=sign.ToString(); + } + + /// <summary> + /// + /// </summary> + public string Key{get;private set;} + + + public void Clear() + { + CacheFactory.Sington.Clear(this.Key); + } + } +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/BasicCache.cs b/src/core/J6.DevFw.Web/Cache/Compoment/BasicCache.cs new file mode 100644 index 0000000..c39b904 --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/BasicCache.cs @@ -0,0 +1,149 @@ + +/* +* Copyright(C) 2010-2013 S1N1.COM +* +* File Name : TemplateUrlRule +* Author : Newmin (new.min@msn.com) +* Create : 2013/05/21 19:59:54 +* Description : +* +*/ + +using System; +using System.Web; +using JR.DevFw.Framework; +using JR.DevFw.Framework.Web.Cache; + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// CMS缓存处理 + /// </summary> + public class BasicCache : ICache + { + private readonly ICache dependCache; + private static string _cacheSha1ETag; //客户端ETag + + internal BasicCache(ICache cache) + { + dependCache = cache; + this.Reset(null); + } + + /// <summary> + /// 获取缓存结果 + /// </summary> + /// <param name="cacheKey"></param> + /// <param name="func"></param> + /// <returns></returns> + public T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) + { + return dependCache.GetCachedResult<T>(cacheKey, func); + } + + public T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) + { + return dependCache.GetResult<T>(cacheKey, func); + } + + /// <summary> + /// 重置系统缓存(不包括Framework Cache) + /// </summary> + /// <param name="handler"></param> + public void Reset(FwHandler handler) + { + //清除系统缓存 + _cacheSha1ETag = dependCache.Rebuilt(); + + if (handler != null) + { + handler(); + } + } + + /// <summary> + /// + /// </summary> + /// <param name="seconds"></param> + /// <returns></returns> + public bool CheckClientCacheExpires(int seconds) + { + return CacheUtil.CheckClientCacheExpires(seconds); + } + + /// <summary> + /// + /// </summary> + /// <returns></returns> + public bool CheckClientCacheExpiresByEtag() + { + return CacheUtil.CheckClientCacheExpires(_cacheSha1ETag); + } + + + /// <summary> + /// + /// </summary> + /// <param name="response"></param> + /// <param name="seconds"></param> + public void SetClientCache(HttpResponse response, int seconds) + { + CacheUtil.SetClientCache(response, seconds); + } + + /// <summary> + /// + /// </summary> + /// <param name="response"></param> + public void SetClientCacheByEtag(HttpResponse response) + { + CacheUtil.SetClientCache(response, _cacheSha1ETag); + } + + /// <summary> + /// + /// </summary> + /// <param name="response"></param> + /// <param name="handler"></param> + public void ETagOutput(HttpResponse response,StringCreatorHandler handler) + { + CacheUtil.Output(response,_cacheSha1ETag,handler); + } + + #region 接口方法 + + public void Insert(string key, object value, DateTime absoluteExpireTime) + { + dependCache.Insert(key, value, absoluteExpireTime); + } + + public void Insert(string key, object value, string filename) + { + dependCache.Insert(key, value, filename); + } + + public void Insert(string key, object value) + { + dependCache.Insert(key, value); + } + + public void Clear(string keySign) + { + dependCache.Clear(keySign); + } + + public object Get(string cacheKey) + { + return dependCache.Get(cacheKey); + } + + public string Rebuilt() + { + return dependCache.Rebuilt(); + } + + #endregion + + + } +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs b/src/core/J6.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs new file mode 100644 index 0000000..99171da --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/BuiltCacheResultHandler.cs @@ -0,0 +1,18 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:55 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +namespace JR.DevFw.Web.Cache.Compoment +{ + + /// <summary> + /// 创建缓存数据结果事件 + /// </summary> + /// <returns></returns> + public delegate T BuiltCacheResultHandler<T>(); +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/CacheBase.cs b/src/core/J6.DevFw.Web/Cache/Compoment/CacheBase.cs new file mode 100644 index 0000000..1c88f98 --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/CacheBase.cs @@ -0,0 +1,111 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:54 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using System.Collections; +using System.Web; +using System.Web.Caching; + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// 缓存基础类 + /// </summary> + public class CacheBase : ICache + { + + private T GetCacheResult<T>(string cacheKey, BuiltCacheResultHandler<T> func, bool autoCache) + { + T data = default(T); + + object _data = this.Get(cacheKey); + if (_data == null) + { + data = func(); + + if (autoCache) this.Insert(cacheKey, data); + } + else + { + data = (T)_data; + } + return data; + } + + + + public virtual void Insert(string key, object value, DateTime absoluteExpireTime) + { + HttpRuntime.Cache.Insert(key, value,null,absoluteExpireTime,TimeSpan.Zero); + } + + public virtual void Insert(string key, object value) + { + HttpRuntime.Cache.Insert(key, value); + } + + public void Insert(string key, object value, string filename) + { + HttpRuntime.Cache.Insert(key, value, new CacheDependency(filename) + , System.Web.Caching.Cache.NoAbsoluteExpiration + , TimeSpan.Zero); + } + + public virtual void Clear(string keySign) + { + if (keySign != null) + { + foreach (DictionaryEntry dict in HttpRuntime.Cache) + { + if (dict.Key.ToString().Contains(keySign)) + HttpRuntime.Cache.Remove(dict.Key.ToString()); + } + } + } + + public virtual object Get(string key) + { + return HttpRuntime.Cache[key]; + } + + public virtual string Rebuilt() + { + return ""; + } + + + + /// <summary> + /// 获取缓存结果 + /// </summary> + /// <param name="cacheKey"></param> + /// <param name="func"></param> + /// <returns></returns> + public T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) + { + return GetCacheResult<T>(cacheKey, func,true); + } + + + + public T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func) + { + return GetCacheResult<T>(cacheKey, func, false); + } + + + + + public virtual void Reset(FwHandler handler) + { + } + + } + +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/CacheSign.cs b/src/core/J6.DevFw.Web/Cache/Compoment/CacheSign.cs new file mode 100644 index 0000000..f622bc1 --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/CacheSign.cs @@ -0,0 +1,32 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:54 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// 缓存符号 + /// </summary> + public enum CacheSign:int + { + Unknown =1, + Site = 1 << 1, + Comm = 1 << 2, + Archive = 1 << 3, + + /// <summary> + /// 栏目 + /// </summary> + Category= 1 << 4, + Link = 1 << 5, + Property = 1 << 6, + Template = 1 << 7, + TemplateBind = 1 << 8, + Module = 1 << 9 + } +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs b/src/core/J6.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs new file mode 100644 index 0000000..5d68ebe --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/CmsCacheUtility.cs @@ -0,0 +1,29 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:58 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; +using System.Reflection; + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// Description of CmsCacheUtility. + /// </summary> + public class CmsCacheUtility + { + public static void EvalCacheUpdate<T>(MethodInfo method) where T:Attribute,ICacheUpdatePolicy + { + object[] attrs=method.GetCustomAttributes(typeof(T),false); + if(attrs.Length!=0) + { + (attrs[0] as ICacheUpdatePolicy).Clear(); + } + } + } +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/DependCache.cs b/src/core/J6.DevFw.Web/Cache/Compoment/DependCache.cs new file mode 100644 index 0000000..e8c956d --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/DependCache.cs @@ -0,0 +1,61 @@ +using System; +using System.IO; +using System.Text; +using System.Web; +using System.Web.Caching; +using JR.DevFw.Utils; + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// 注入缓存 + /// </summary> + public class DependCache : CacheBase + { + private static readonly string CacheDependFile; + + internal DependCache() { } + static DependCache() + { + CacheDependFile = Variables.PhysicPath + "tmp/cache.pid"; + } + + public override void Insert(string key, object value, DateTime absoluteExpireTime) + { + HttpRuntime.Cache.Insert(key, value, new CacheDependency(CacheDependFile), absoluteExpireTime, TimeSpan.Zero); + } + + public override void Insert(string key, object value) + { + HttpRuntime.Cache.Insert(key, value, new CacheDependency(CacheDependFile), + System.Web.Caching.Cache.NoAbsoluteExpiration, + System.Web.Caching.Cache.NoSlidingExpiration); + } + + /// <summary> + /// 重建缓存 + /// </summary> + public override string Rebuilt() + { + //初始化config文件夹 + if (!Directory.Exists(String.Concat(Variables.PhysicPath, "config/"))) + { + Directory.CreateDirectory(String.Concat(Variables.PhysicPath, "config/")).Create(); + } + + using (FileStream fs = new FileStream(CacheDependFile, FileMode.OpenOrCreate, FileAccess.Write)) + { + byte[] pid = Encoding.UTF8.GetBytes(new Random().Next(1000, 5000).ToString()); + fs.Seek(0, SeekOrigin.Begin); + fs.Write(pid, 0, pid.Length); + fs.Flush(); + } + + return IoUtil.GetFileSha1(CacheDependFile); + + //FileInfo file = new FileInfo(cacheDependFile); + //file.LastWriteTimeUtc = DateTime.UtcNow; + } + + } +} \ No newline at end of file diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/ICache.cs b/src/core/J6.DevFw.Web/Cache/Compoment/ICache.cs new file mode 100644 index 0000000..517f46e --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/ICache.cs @@ -0,0 +1,86 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:53 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +using System; + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// + /// </summary> + public interface ICache + { + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="absoluteExpireTime"></param> + void Insert(string key, object value, DateTime absoluteExpireTime); + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + /// <param name="filename"></param> + void Insert(string key, object value, String filename); + + /// <summary> + /// + /// </summary> + /// <param name="key"></param> + /// <param name="value"></param> + void Insert(string key, object value); + + + /// <summary> + /// 清除缓存KEY带指定符号的缓存 + /// </summary> + /// <param name="keySign"></param> + void Clear(string keySign); + + /// <summary> + /// + /// </summary> + /// <param name="cacheKey"></param> + /// <returns></returns> + object Get(string cacheKey); + + /// <summary> + /// + /// </summary> + /// <param name="handler"></param> + void Reset(FwHandler handler); + + /// <summary> + /// 获取缓存过的结果,如果没有缓存则自动缓存永不失效 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="cacheKey"></param> + /// <param name="func"></param> + /// <returns></returns> + T GetCachedResult<T>(string cacheKey, BuiltCacheResultHandler<T> func); + + /// <summary> + /// 获取缓存结果,如果未缓存则调用委托产生的缓存结果 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="cacheKey"></param> + /// <param name="func"></param> + /// <returns></returns> + T GetResult<T>(string cacheKey, BuiltCacheResultHandler<T> func); + + /// <summary> + /// + /// </summary> + /// <returns></returns> + string Rebuilt(); + } +} diff --git a/src/core/J6.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs b/src/core/J6.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs new file mode 100644 index 0000000..0a1305f --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Compoment/ICacheUpdatePolicy.cs @@ -0,0 +1,22 @@ +/* + * Created by SharpDevelop. + * User: newmin + * Date: 2014/1/14 + * Time: 22:49 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ + +namespace JR.DevFw.Web.Cache.Compoment +{ + /// <summary> + /// Description of ICacheUpdatePolicy. + /// </summary> + public interface ICacheUpdatePolicy + { + /// <summary> + /// 清理缓存 + /// </summary> + void Clear(); + } +} diff --git a/src/core/J6.DevFw.Web/Cache/Variables.cs b/src/core/J6.DevFw.Web/Cache/Variables.cs new file mode 100644 index 0000000..3a34f55 --- /dev/null +++ b/src/core/J6.DevFw.Web/Cache/Variables.cs @@ -0,0 +1,12 @@ +using System; + +namespace JR.DevFw.Web.Cache +{ + /// <summary> + /// + /// </summary> + internal class Variables + { + public static string PhysicPath = AppDomain.CurrentDomain.BaseDirectory; + } +} diff --git a/src/core/J6.DevFw.Web/FwHandler.cs b/src/core/J6.DevFw.Web/FwHandler.cs new file mode 100644 index 0000000..de397fd --- /dev/null +++ b/src/core/J6.DevFw.Web/FwHandler.cs @@ -0,0 +1,11 @@ + + +namespace JR.DevFw.Web +{ + + /// <summary> + /// 处理行为 + /// </summary> + /// <returns></returns> + public delegate void FwHandler(); +} diff --git a/src/core/J6.DevFw.Web/JR.DevFw.Web.csproj b/src/core/J6.DevFw.Web/JR.DevFw.Web.csproj new file mode 100644 index 0000000..a992920 --- /dev/null +++ b/src/core/J6.DevFw.Web/JR.DevFw.Web.csproj @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{4F756EAD-0C41-499C-AE91-660892B444AC}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>JR.DevFw.Web</RootNamespace> + <AssemblyName>JR.DevFw.Web</AssemblyName> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <TargetFrameworkProfile /> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\dist\dll\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile> + </DocumentationFile> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <Prefer32Bit>false</Prefer32Bit> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Web" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Cache\Compoment\BuiltCacheResultHandler.cs" /> + <Compile Include="Cache\Compoment\CacheSign.cs" /> + <Compile Include="Cache\Compoment\BasicCache.cs" /> + <Compile Include="Cache\Compoment\CacheBase.cs" /> + <Compile Include="Cache\Compoment\CmsCacheUtility.cs" /> + <Compile Include="Cache\Compoment\DependCache.cs" /> + <Compile Include="Cache\Compoment\ICacheUpdatePolicy.cs" /> + <Compile Include="Cache\Compoment\ICache.cs" /> + <Compile Include="Cache\CacheFactory.cs" /> + <Compile Include="Cache\CacheUpdateAttribute.cs" /> + <Compile Include="Cache\Variables.cs" /> + <Compile Include="PageDataItems.cs" /> + <Compile Include="FwHandler.cs" /> + <Compile Include="Plugin\PluginRouteHandler.cs" /> + <Compile Include="TemplatePageVariable.cs" /> + <Compile Include="WebConf.cs" /> + <Compile Include="Plugin\WebPluginApp.cs" /> + <Compile Include="Plugin\IPluginApp.cs" /> + <Compile Include="WebCtx.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\J6.DevFw.Core\JR.DevFw.Core.csproj"> + <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> + <Name>JR.DevFw.Core</Name> + </ProjectReference> + <ProjectReference Include="..\J6.DevFw.PluginKernel\kernel\JR.DevFw.PluginKernel.csproj"> + <Project>{cad14dcc-112c-4b28-98eb-1ce143d09033}</Project> + <Name>JR.DevFw.PluginKernel</Name> + </ProjectReference> + <ProjectReference Include="..\J6.DevFw.Template\JR.DevFw.Template.csproj"> + <Project>{275cae3e-a9e0-4de0-8031-e9137bbdd693}</Project> + <Name>JR.DevFw.Template</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/src/core/J6.DevFw.Web/PageDataItems.cs b/src/core/J6.DevFw.Web/PageDataItems.cs new file mode 100644 index 0000000..dccec71 --- /dev/null +++ b/src/core/J6.DevFw.Web/PageDataItems.cs @@ -0,0 +1,34 @@ +/** + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. + * Get more infromation of this software,please visit site http://cms.ops.cc + * + * name : CmsContext.cs + * author : newmin (new.min@msn.com) + * date : 2014/12/01 23:00:00 + * description : + * history : + */ + +using System.Web; + +namespace JR.DevFw.Web +{ + /// <summary> + /// 页面数据项 + /// </summary> + public class PageDataItems + { + public object this[object key] + { + get + { + return HttpContext.Current.Items[key]; + } + set + { + HttpContext.Current.Items[key] = value; + } + } + } + +} \ No newline at end of file diff --git a/J6/src/core/J6.DevFw.Web/Plugin/CmsPluginContext.cs b/src/core/J6.DevFw.Web/Plugin/CmsPluginContext.cs similarity index 100% rename from J6/src/core/J6.DevFw.Web/Plugin/CmsPluginContext.cs rename to src/core/J6.DevFw.Web/Plugin/CmsPluginContext.cs diff --git a/J6/src/core/J6.DevFw.Web/Plugin/IPluginApp.cs b/src/core/J6.DevFw.Web/Plugin/IPluginApp.cs similarity index 87% rename from J6/src/core/J6.DevFw.Web/Plugin/IPluginApp.cs rename to src/core/J6.DevFw.Web/Plugin/IPluginApp.cs index d033b96..2de3650 100644 --- a/J6/src/core/J6.DevFw.Web/Plugin/IPluginApp.cs +++ b/src/core/J6.DevFw.Web/Plugin/IPluginApp.cs @@ -1,8 +1,8 @@ -using J6.DevFw.PluginKernel; -using J6.DevFw.PluginKernel.Web; -using J6.DevFw.Template; +using JR.DevFw.PluginKernel; +using JR.DevFw.PluginKernel.Web; +using JR.DevFw.Template; -namespace J6.DevFw.Web.Plugin +namespace JR.DevFw.Web.Plugin { /// <summary> /// 插件应用 diff --git a/J6/src/core/J6.DevFw.Web/Plugin/PluginRouteHandler.cs b/src/core/J6.DevFw.Web/Plugin/PluginRouteHandler.cs similarity index 86% rename from J6/src/core/J6.DevFw.Web/Plugin/PluginRouteHandler.cs rename to src/core/J6.DevFw.Web/Plugin/PluginRouteHandler.cs index feb3729..696ba6a 100644 --- a/J6/src/core/J6.DevFw.Web/Plugin/PluginRouteHandler.cs +++ b/src/core/J6.DevFw.Web/Plugin/PluginRouteHandler.cs @@ -11,7 +11,7 @@ using System.Web.Routing; using System.Web.SessionState; -namespace J6.DevFw.Web.Plugin +namespace JR.DevFw.Web.Plugin { /// <summary> /// Description of PluginExtendRouteHandler. @@ -44,11 +44,11 @@ public void ProcessRequest(HttpContext context) if (httpMethod == "POST") { - WebCtx.Plugin.HttpPluginPost(context, extendName, ref result); + WebCtx.Current.Plugin.HttpPluginPost(context, extendName, ref result); } else { - WebCtx.Plugin.HttpPluginRequest(context, extendName, ref result); + WebCtx.Current.Plugin.HttpPluginRequest(context, extendName, ref result); } if(!result) diff --git a/J6/src/core/J6.DevFw.Web/Plugin/WebPluginApp.cs b/src/core/J6.DevFw.Web/Plugin/WebPluginApp.cs similarity index 92% rename from J6/src/core/J6.DevFw.Web/Plugin/WebPluginApp.cs rename to src/core/J6.DevFw.Web/Plugin/WebPluginApp.cs index ae8dec5..f63c3ad 100644 --- a/J6/src/core/J6.DevFw.Web/Plugin/WebPluginApp.cs +++ b/src/core/J6.DevFw.Web/Plugin/WebPluginApp.cs @@ -3,12 +3,12 @@ using System.IO; using System.Web; using System.Web.Routing; -using J6.DevFw.Framework.Xml.AutoObject; -using J6.DevFw.PluginKernel; -using J6.DevFw.PluginKernel.Web; -using J6.DevFw.Template; +using JR.DevFw.Framework.Xml.AutoObject; +using JR.DevFw.PluginKernel; +using JR.DevFw.PluginKernel.Web; +using JR.DevFw.Template; -namespace J6.DevFw.Web.Plugin +namespace JR.DevFw.Web.Plugin { /// <summary> /// CMS插件 @@ -41,14 +41,14 @@ private void RegisterRoute() RouteCollection routes = RouteTable.Routes; IRouteHandler pluginHandler = new PluginRouteHandler(); routes.Add("plugin_do", new Route("{plugin}.do/{*path}", pluginHandler)); - routes.Add("plugin_h", new Route("{plugin}.h/{*path}", pluginHandler)); - routes.Add("plugin_aspx", new Route("{plugin}.h.aspx/{*path}", pluginHandler)); + routes.Add("plugin_pl", new Route("{plugin}.pl/{*path}", pluginHandler)); + routes.Add("plugin_aspx", new Route("{plugin}.pl.aspx/{*path}", pluginHandler)); if (FwCtx.Mono()) { routes.Add("plugin_mono_do", new Route("{plugin}.do", pluginHandler)); - routes.Add("plugin_mono_h", new Route("{plugin}.h", pluginHandler)); - routes.Add("plugin_mono_aspx", new Route("{plugin}.h.aspx", pluginHandler)); + routes.Add("plugin_mono_pl", new Route("{plugin}.pl", pluginHandler)); + routes.Add("plugin_mono_aspx", new Route("{plugin}.pl.aspx", pluginHandler)); } } @@ -161,7 +161,7 @@ public TemplatePage GetTemplatePage(string filePath, PluginPackAttribute attr) string cacheId = String.Concat("plugin", "_tpl_", attr.WorkIndent, filePath); - string html = WebCtx.Cache.Get(cacheId) as string; + string html = WebCtx.Current.Cache.Get(cacheId) as string; if (html == null) { @@ -176,7 +176,7 @@ public TemplatePage GetTemplatePage(string filePath, PluginPackAttribute attr) tr.Dispose(); } - WebCtx.Cache.Insert(cacheId, html, tplFilePath); + WebCtx.Current.Cache.Insert(cacheId, html, tplFilePath); } catch (Exception exc) { @@ -193,7 +193,7 @@ public TemplatePage GetTemplatePage(string filePath, PluginPackAttribute attr) tpl.AddVariable("os", new { version = FwCtx.Version.GetVersion(), - domain = WebCtx.Domain, + domain = WebCtx.Current.Domain, ppath = pluginPath, fpath = this._fpath, mjs = this._shareJs, @@ -216,7 +216,7 @@ private void Load() { if (!this._loaded) { - string domain = WebCtx.Domain; + string domain = WebCtx.Current.Domain; this._fpath = String.Concat(domain, "/", FwCtx.Variables.AssetsPath.Substring(0, FwCtx.Variables.AssetsPath.Length - 1)); this._shareJs = String.Concat(domain, "/", FwCtx.Variables.AssetsPath, "share.js?ver=", FwCtx.Version.GetVersion()); this._shareCss = String.Concat(domain, "/", FwCtx.Variables.AssetsPath, "share.css?ver=", FwCtx.Version.GetVersion()); @@ -276,7 +276,7 @@ public void MapPluginRoute(IPlugin plugin) PluginPackAttribute attr = PluginUtil.GetAttribute(plugin); workIndent = attr.WorkIndent; - aliasName = attr.Settings["override.url.indent"]; + aliasName = attr.Settings[PluginSettingKeys.OverrideUrlIndent]; //throw new Exception(extendName + "/" + aliasName); if (aliasName == "" diff --git a/src/core/J6.DevFw.Web/Properties/AssemblyInfo.cs b/src/core/J6.DevFw.Web/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ce80585 --- /dev/null +++ b/src/core/J6.DevFw.Web/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("JR.DevFw.Web")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("JR.DevFw.Web")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("25fb3c6a-8e42-414e-8c61-79da4af46a93")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/core/J6.DevFw.Web/TemplatePageVariable.cs b/src/core/J6.DevFw.Web/TemplatePageVariable.cs new file mode 100644 index 0000000..4f71e8c --- /dev/null +++ b/src/core/J6.DevFw.Web/TemplatePageVariable.cs @@ -0,0 +1,152 @@ +using System; +using JR.DevFw.PluginKernel; +using JR.DevFw.Template; +using JR.DevFw.Web.Cache.Compoment; + +namespace JR.DevFw.Web +{ + /// <summary> + /// + /// </summary> + public class TemplatePageVariable + { + private string _domain; + private string _frameworkPath; + private string _templatePath; + private string _pluginRootPath; + private string _sitemap; + private string _resDomain; + + + [TemplateVariableField("版本")] + public string Version + { + get { return FwCtx.Version.GetVersion(); } + } + + /// <summary> + /// 域名 + /// </summary> + [TemplateVariableField("站点域名")] + public string Domain + { + get + { + if (_domain == null) + { + _domain = WebCtx.Current.Domain; + } + return _domain; + } + } + + + /// <summary> + /// 框架路径 + /// </summary> + [TemplateVariableField("框架资源根路径")] + private string FrameworkPath + { + get + { + if (_frameworkPath == null) + { + _frameworkPath = String.Format("{0}{1}", this.Domain, + FwCtx.Variables.AssetsPath.Substring(0, FwCtx.Variables.AssetsPath.Length - 1) + ); + } + + return _frameworkPath; + } + } + +// [TemplateVariableField("模板根路径")] +// private string TemplatePath +// { +// get +// { +// if (_templatePath == null) +// { +// string cacheKey = String.Format("{0}_s{1}_template_path", +// CacheSign.Site.ToString(), +// site.SiteId.ToString() +// ); +// +// _templatePath= Ops.Cms.Cache.GetCachedResult(cacheKey, () => +// { +// return String.Format( +// "{0}/templates/{1}", +// this.ResDomain, +// site.Tpl +// ); +// }); +// +// } +// +// return _templatePath; +// } +// } +// + + + [TemplateVariableField("插件根路径")] + public string PluginPath + { + get + { + if (_pluginRootPath == null) + { + _pluginRootPath = String.Format("{0}/{1}", + this.Domain, + PluginConfig.PLUGIN_DIRECTORY); + + _pluginRootPath = _pluginRootPath.Remove(_pluginRootPath.Length - 1); + } + return _pluginRootPath; + } + } + + [TemplateVariableField("框架资源根路径")] + public string Fpath { get { return this.FrameworkPath; } } + +// [TemplateVariableField("模板根路径")] +// public string Tpath { get { return this.TemplatePath; } } +// +// [TemplateVariableField("资源域名路径")] +// public string Rdomain { get { return this.ResDomain; } } + + [TemplateVariableField("插件根路径")] + public string Ppath { get { return this.PluginPath; } } + + + /// <summary> + ///标题 + /// </summary> + [TemplateVariableField("网页(当前页)标题")] + public string Title { get; set; } + + /// <summary> + /// 子标题 + /// </summary> + [TemplateVariableField("子标题")] + public string SubTitle { get; set; } + + /// <summary> + /// 关键词 + /// </summary> + [TemplateVariableField("关键词")] + public string Keywords { get; set; } + + /// <summary> + /// 描述 + /// </summary> + [TemplateVariableField("描述")] + public string Description { get; set; } + + /// <summary> + /// 页码 + /// </summary> + [TemplateVariableField("当前页面(带分页页面)的页码")] + public int PageIndex { get; set; } + } +} diff --git a/src/core/J6.DevFw.Web/WebConf.cs b/src/core/J6.DevFw.Web/WebConf.cs new file mode 100644 index 0000000..21f1bbd --- /dev/null +++ b/src/core/J6.DevFw.Web/WebConf.cs @@ -0,0 +1,42 @@ + + +namespace JR.DevFw.Web +{ + /// <summary> + /// + /// </summary> + public static class WebConf + { + /// <summary> + /// 是否支持GZip压缩 + /// </summary> + public static bool Opti_SupportGZip = false; + + /// <summary> + /// 调试模式 + /// </summary> + public static bool Opti_Debug = false; + + /// <summary> + /// 客户端缓存 + /// </summary> + public static bool Opti_ClientCache { get { return Opti_ClientCacheSeconds > 0; } } + + /// <summary> + /// 客户端缓存秒数 + /// </summary> + public static int Opti_ClientCacheSeconds = 0; + + /// <summary> + /// 首页缓存秒数 + /// </summary> + public static int Opti_IndexCacheSeconds = 0; + + /// <summary> + /// GC回收间隔(默认30分钟回收一次) + /// </summary> + public static int Opti_GC_Collect_Interval = 3600000 * 30; + + + } +} diff --git a/src/core/J6.DevFw.Web/WebCtx.cs b/src/core/J6.DevFw.Web/WebCtx.cs new file mode 100644 index 0000000..eba285d --- /dev/null +++ b/src/core/J6.DevFw.Web/WebCtx.cs @@ -0,0 +1,405 @@ +using System; +using System.IO; +using System.IO.Compression; +using System.Text; +using System.Web; +using JR.DevFw.Framework.Web.Cache; +using JR.DevFw.PluginKernel.Web; +using JR.DevFw.Web.Cache; +using JR.DevFw.Web.Cache.Compoment; +using JR.DevFw.Web.Plugin; + +namespace JR.DevFw.Web +{ + /// <summary> + /// Ӧó + /// </summary> + public class WebCtx + { + + /// <summary> + /// ־ļ + /// </summary> + public static string ErrorFilePath; + + private const string KeyCtxDomain = "_ctx_domain"; + + public static HttpContext HttpCtx + { + get { return HttpContext.Current; } + } + + + /// <summary> + /// Դ + /// </summary> + public object Source { get; set; } + + public HttpResponse Response { get { return HttpCtx.Response; } } + public HttpRequest Request { get { return HttpCtx.Request; } } + + + static WebCtx() + { + ErrorFilePath = AppDomain.CurrentDomain.BaseDirectory + "tmp/logs/error.log"; + } + + private PageDataItems _dataItems; + private string _staticDomain; + private string _resouceDomain; + private string _host; + private string _siteAppPath; + private static IPluginApp _extends; + private string _domain; + + /// <summary> + /// ʱ + /// </summary> + public static event FwHandler OnBeginRequest; + + + /// <summary> + /// ǰHost,˿ڣ磺www.ops.cc:8080 + /// </summary> + public string Host + { + get + { + if (this._host == null) + { + this._host = String.Format("{0}{1}", HttpCtx.Request.Url.Host, + HttpCtx.Request.Url.Port != 80 ? ":" + HttpCtx.Request.Url.Port.ToString() : ""); + } + return this._host; + } + } + + public static WebCtx Current + { + get + { + const string key = "web_ctx_instance"; + WebCtx ctx = null; + object obj = HttpCtx.Items[key]; + if (obj != null) + { + ctx = obj as WebCtx; + } + + if (ctx == null) + { + ctx = new WebCtx(); + HttpCtx.Items[key] = ctx; + } + return ctx; + } + } + + /// <summary> + /// ϵͳӦóĿ¼ + /// </summary> + public string ApplicationPath + { + get { return HttpCtx.Request.ApplicationPath; } + } + + /// <summary> + /// չ + /// </summary> + public IPluginApp Plugin + { + get + { + if (_extends == null) + { + var handler = new WebPluginHandleProxy<System.Web.HttpContext>(); + _extends = new WebPluginApp(handler); + } + return _extends; + } + } + + + public ICache Cache + { + get { return CacheFactory.Sington; } + } + + // /// <summary> + // /// + // /// </summary> + // public string SiteDomain + // { + // get + // { + // if (_siteDomain == null) + // { + // string host = String.Format("{0}{1}", context.Request.Url.Host, + // context.Request.Url.Port != 80 ? ":" + context.Request.Url.Port.ToString() : ""); + // + // _siteDomain= String.Format("http://{0}{1}{2}", + // host, + // this.ApplicationPath=="/"?"":this.ApplicationPath, + // this.SiteAppPath=="/"?"/":this.SiteAppPath+"/" + // ); + // + //// this._siteDomain = this.CurrentSite.FullDomain; + //// + //// if (this._siteDomain.IndexOf("#") != -1) + //// { + //// this._siteDomain = this._siteDomain.Replace( + //// "#", host); + //// } + // } + // return _siteDomain; + // } + // } + + // /// <summary> + // /// Դ + // /// </summary> + // public string ResourceDomain + // { + // get + // { + // if (this._resouceDomain == null) + // { + // //RES DOMAIN + // if (this.IsVirtualDirectoryRunning) + // { + // this._resouceDomain = String.Empty; + // } + // } + // return this._resouceDomain ?? (this._resouceDomain = this.SiteDomain); + // } + // } + // + // /// <summary> + // /// ̬Դ + // /// </summary> + // public string StaticDomain + // { + // get + // { + // if (this._staticDomain == null) + // { + // if (Settings.SERVER_STATIC_ENABLED && Settings.SERVER_STATIC.Length != 0) + // { + // this._staticDomain = String.Concat("http://", Settings.SERVER_STATIC, "/"); + // } + // else + // { + // this._staticDomain = this.ResourceDomain == String.Empty ? "/" : this.ResourceDomain; + // } + // } + // + // return this._staticDomain; + // } + // } + /// <summary> + /// + /// </summary> + public PageDataItems Items + { + get + { + if (_dataItems == null) + { + _dataItems = new PageDataItems(); + } + return _dataItems; + } + } + public string Domain + { + get + { + + if (this._domain == null) + { + HttpRequest request = HttpCtx.Request; + String applicationPath = request.ApplicationPath; + this._domain = String.Format("{0}//{1}{2}{3}", + request.Url.Scheme == "http" ? "" : request.Url.Scheme + ":", + request.Url.Host, + HttpCtx.Request.Url.Port != 80 ? ":" + request.Url.Port.ToString() : "", + applicationPath == "/" ? "" : applicationPath + ); + } + + return this._domain; + } + set { this._domain = value; } + } + + + public static void SaveErrorLog(Exception exception) + { + lock (ErrorFilePath) + { + HttpRequest req = HttpCtx.Request; + + if (!File.Exists(ErrorFilePath)) + { + string dir = AppDomain.CurrentDomain.BaseDirectory + "tmp/logs"; + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + File.Create(ErrorFilePath).Close(); + } + HttpCtx.Response.Write((File.Exists(ErrorFilePath).ToString())); + using (FileStream fs = new FileStream(ErrorFilePath, FileMode.Append, FileAccess.Write)) + { + StreamWriter sw = new StreamWriter(fs); + StringBuilder sb = new StringBuilder(); + + sb.Append("---------------------------------------------------------------------\r\n") + .Append("[]IP:").Append(req.UserHostAddress) + .Append("\tʱ䣺").Append(DateTime.Now.ToString()) + .Append("\r\n[Ϣ]").Append(exception.Message) + .Append("\r\n[·]").Append(req.Url.PathAndQuery) + .Append(" -> Դ").Append(req.Headers["referer"] ?? "") + .Append("\r\n[ջ]").Append(exception.StackTrace) + .Append("\r\n\r\n"); + + sw.Write(sb.ToString()); + + sw.Flush(); + sw.Dispose(); + fs.Dispose(); + } + } + } + + + // public bool CheckSiteState() + // { + // if (this.CurrentSite.State == SiteState.Normal) + // { + // return true; + // } + // else if (this.CurrentSite.State == SiteState.Closed) + // { + // this.RenderNotfound(); + // } + // else if (this.CurrentSite.State == SiteState.Paused) + // { + // this.Render("<h1 style=\"color:red;text-align:center;font-size:16px;padding:20px\">վά,ͣʣ</h1>"); + // //this.RenderNotfound("<h1 style=\"color:red\">վά,ͣʣ</h1>"); + // } + // return false; + // } + + /// <summary> + /// ÿͻ˻(̨û沢ʱ>0) + /// </summary> + /// <returns></returns> + public bool CheckAndSetClientCache() + { + if (WebConf.Opti_ClientCache && WebConf.Opti_ClientCacheSeconds > 0) + { + if (CacheUtil.CheckClientCacheExpires(WebConf.Opti_ClientCacheSeconds)) + { + CacheUtil.SetClientCache(this.Response, WebConf.Opti_ClientCacheSeconds); + } + else + { + return false; + } + } + return true; + } + + + /// <summary> + /// ÿͻ˻(Զʱ,λ) + /// </summary> + /// <returns></returns> + public bool CheckAndSetClientCache(int maxAge) + { + if (maxAge > 0) + { + if (CacheUtil.CheckClientCacheExpires(maxAge)) + { + CacheUtil.SetClientCache(this.Response, maxAge); + } + else + { + return false; + } + } + return true; + } + + + /// <summary> + /// + /// </summary> + /// <param name="html"></param> + public void Render(string html) + { + HttpResponse response = this.Response; + + response.Write(html); + + //GZipѹ + if (WebConf.Opti_SupportGZip) + { + response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); + response.AddHeader("Content-Encoding", "gzip"); + } + /* + else + { + response.Filter=new DeflateStream(response.Filter,CompressionMode.Compress); + response.AddHeader("Content-Encoding", "deflate"); + }*/ + + response.AddHeader("X-AspNet-Version", String.Format("JR.DevFw - v{0}", FwCtx.Version.GetVersion())); + response.AddHeader("Support-URL", "github.com/jsix/devfw"); + } + + // + // /// <summary> + // /// ʾ400ҳ + // /// </summary> + // /// <returns></returns> + // public void RenderNotfound() + // { + // this.RenderNotfound("File not found!", null); + // } + // + // /// <summary> + // /// ʾ400ҳ + // /// </summary> + // /// <returns></returns> + // public void RenderNotfound(string message, TemplatePageHandler handler) + // { + // Response.StatusCode = 404; + // + // string html = null; + // try + // { + // TemplatePage tpl = new TemplatePage(String.Format("/{0}/not_found", this.CurrentSite.Tpl)); + // if (handler != null) + // { + // handler(tpl); + // } + // tpl.Render(); + // return; + // } + // catch + // { + // html = "File not found!"; + // } + // + // Response.Write(html); + // } + // + // public string ComposeUrl(string url) + // { + // if (url.StartsWith("/")) + // throw new ArgumentException("URL\"/\"ͷ!"); + // + // return String.Concat(this.SiteDomain, url); + // } + } +} \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/App_Start/BundleConfig.cs b/src/examples/JR.DevFw.Web.Example/App_Start/BundleConfig.cs new file mode 100644 index 0000000..0fc5ab9 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/App_Start/BundleConfig.cs @@ -0,0 +1,31 @@ +using System.Web; +using System.Web.Optimization; + +namespace JR.DevFw.Web.Example +{ + public class BundleConfig + { + // For more information on bundling, visit https://go.microsoft.com/fwlink/?LinkId=301862 + public static void RegisterBundles(BundleCollection bundles) + { + bundles.Add(new ScriptBundle("~/bundles/jquery").Include( + "~/Scripts/jquery-{version}.js")); + + bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( + "~/Scripts/jquery.validate*")); + + // 使用要用于开发和学习的 Modernizr 的开发版本。然后,当你做好 + // ready for production, use the build tool at https://modernizr.com to pick only the tests you need. + bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( + "~/Scripts/modernizr-*")); + + bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( + "~/Scripts/bootstrap.js", + "~/Scripts/respond.js")); + + bundles.Add(new StyleBundle("~/Content/css").Include( + "~/Content/bootstrap.css", + "~/Content/site.css")); + } + } +} diff --git a/src/examples/JR.DevFw.Web.Example/App_Start/FilterConfig.cs b/src/examples/JR.DevFw.Web.Example/App_Start/FilterConfig.cs new file mode 100644 index 0000000..ec9fc95 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/App_Start/FilterConfig.cs @@ -0,0 +1,13 @@ +using System.Web; +using System.Web.Mvc; + +namespace JR.DevFw.Web.Example +{ + public class FilterConfig + { + public static void RegisterGlobalFilters(GlobalFilterCollection filters) + { + filters.Add(new HandleErrorAttribute()); + } + } +} diff --git a/src/examples/JR.DevFw.Web.Example/App_Start/HttpApplication.cs b/src/examples/JR.DevFw.Web.Example/App_Start/HttpApplication.cs new file mode 100644 index 0000000..8f51b33 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/App_Start/HttpApplication.cs @@ -0,0 +1,56 @@ +using System; +using System.Web.Mvc; +using System.Web.Optimization; +using System.Web.Routing; +using JR.DevFw.Utils; +using JR.DevFw.PluginKernel; + +namespace JR.DevFw.Web.Example +{ + public class HttpApplication :System.Web.HttpApplication + { + static HttpApplication() + { + //解决依赖 + FwCtx.ResolveAssemblies(); + } + + /// <summary> + /// 初始化 + /// </summary> + public static void ApplicationInit() + { + //设置可写权限 + IoUtil.SetDirCanWrite(FwCtx.Variables.AssetsPath); + IoUtil.SetDirCanWrite("templates/"); + IoUtil.SetDirCanWrite(PluginConfig.PLUGIN_DIRECTORY); + IoUtil.SetDirCanWrite(FwCtx.Variables.TempPath); + IoUtil.SetDirCanWrite(FwCtx.Variables.TempPath + "update"); + IoUtil.SetDirHidden("config"); + IoUtil.SetDirHidden("bin"); + + //加载插件 + WebCtx.Current.Plugin.Connect(); + } + + + protected void Application_Start() + { + AreaRegistration.RegisterAllAreas(); + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + RouteConfig.RegisterRoutes(RouteTable.Routes); + BundleConfig.RegisterBundles(BundleTable.Bundles); + } + + + protected virtual void Application_BeginRequest(object o, EventArgs e) + { + //mono 下编码可能会有问题 + if (FwCtx.Mono()) + { + Response.Charset = "utf-8"; + } + } + + } +} \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/App_Start/RouteConfig.cs b/src/examples/JR.DevFw.Web.Example/App_Start/RouteConfig.cs new file mode 100644 index 0000000..2bf787f --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/App_Start/RouteConfig.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; + +namespace JR.DevFw.Web.Example +{ + public class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + routes.MapRoute( + name: "Default", + url: "{controller}/{action}/{id}", + defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } + ); + } + } +} diff --git a/src/examples/JR.DevFw.Web.Example/ApplicationInsights.config b/src/examples/JR.DevFw.Web.Example/ApplicationInsights.config new file mode 100644 index 0000000..2e0a49a --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/ApplicationInsights.config @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings"> + <TelemetryInitializers> + <Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureWebAppRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer"/> + <Add Type="Microsoft.ApplicationInsights.Web.WebTestTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.SyntheticUserAgentTelemetryInitializer, Microsoft.AI.Web"> + <!-- Extended list of bots: + search|spider|crawl|Bot|Monitor|BrowserMob|BingPreview|PagePeeker|WebThumb|URL2PNG|ZooShot|GomezA|Google SketchUp|Read Later|KTXN|KHTE|Keynote|Pingdom|AlwaysOn|zao|borg|oegp|silk|Xenu|zeal|NING|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|Java|JNLP|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|vortex|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|voyager|archiver|Icarus6j|mogimogi|Netvibes|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|wsr-agent|http client|Python-urllib|AppEngine-Google|semanticdiscovery|facebookexternalhit|web/snippet|Google-HTTP-Java-Client--> + <Filters>search|spider|crawl|Bot|Monitor|AlwaysOn</Filters> + </Add> + <Add Type="Microsoft.ApplicationInsights.Web.ClientIpHeaderTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.OperationCorrelationTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.UserTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.AuthenticatedUserIdTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.AccountIdTelemetryInitializer, Microsoft.AI.Web"/> + <Add Type="Microsoft.ApplicationInsights.Web.SessionTelemetryInitializer, Microsoft.AI.Web"/> + </TelemetryInitializers> + <TelemetryModules> + <Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector"/> + <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector"> + <!-- + Use the following syntax here to collect additional performance counters: + + <Counters> + <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" /> + ... + </Counters> + + PerformanceCounter must be either \CategoryName(InstanceName)\CounterName or \CategoryName\CounterName + + NOTE: performance counters configuration will be lost upon NuGet upgrade. + + The following placeholders are supported as InstanceName: + ??APP_WIN32_PROC?? - instance name of the application process for Win32 counters. + ??APP_W3SVC_PROC?? - instance name of the application IIS worker process for IIS/ASP.NET counters. + ??APP_CLR_PROC?? - instance name of the application CLR process for .NET counters. + --> + </Add> + <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule, Microsoft.AI.WindowsServer"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule, Microsoft.AI.WindowsServer"/> + <Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web"> + <Handlers> + <!-- + Add entries here to filter out additional handlers: + + NOTE: handler configuration will be lost upon NuGet upgrade. + --> + <Add>System.Web.Handlers.TransferRequestHandler</Add> + <Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add> + <Add>System.Web.StaticFileHandler</Add> + <Add>System.Web.Handlers.AssemblyResourceLoader</Add> + <Add>System.Web.Optimization.BundleHandler</Add> + <Add>System.Web.Script.Services.ScriptHandlerFactory</Add> + <Add>System.Web.Handlers.TraceHandler</Add> + <Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add> + <Add>System.Web.HttpDebugHandler</Add> + </Handlers> + </Add> + <Add Type="Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule, Microsoft.AI.Web"/> + </TelemetryModules> + <TelemetryProcessors> + <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/> + <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> + <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> + </Add> + </TelemetryProcessors> + <TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"/> +<!-- + Learn more about Application Insights configuration with ApplicationInsights.config here: + http://go.microsoft.com/fwlink/?LinkID=513840 + + Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file. + --></ApplicationInsights> \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Content/Site.css b/src/examples/JR.DevFw.Web.Example/Content/Site.css new file mode 100644 index 0000000..6ea5d8f --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Content/Site.css @@ -0,0 +1,24 @@ +body { + padding-top: 50px; + padding-bottom: 20px; +} + +/* Set padding to keep content from hitting the edges */ +.body-content { + padding-left: 15px; + padding-right: 15px; +} + +/* Override the default bootstrap behavior where horizontal description lists + will truncate terms that are too long to fit in the left column +*/ +.dl-horizontal dt { + white-space: normal; +} + +/* Set width on the form input elements since they're 100% wide by default */ +input, +select, +textarea { + max-width: 280px; +} diff --git a/src/examples/JR.DevFw.Web.Example/Content/bootstrap.css b/src/examples/JR.DevFw.Web.Example/Content/bootstrap.css new file mode 100644 index 0000000..6d6e682 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Content/bootstrap.css @@ -0,0 +1,6816 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. The notices and licenses below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden] { + display: none; +} + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + outline: 0; +} + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +mark { + color: #000; + background: #ff0; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +pre { + white-space: pre-wrap; +} + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} + +button, +input { + line-height: normal; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; + box-sizing: border-box; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input, +select[multiple], +textarea { + background-image: none; +} + +a { + color: #428bca; + text-decoration: none; +} + +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + height: auto; + max-width: 100%; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16.099999999999998px; + font-weight: 200; + line-height: 1.4; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small { + font-size: 85%; +} + +cite { + font-style: normal; +} + +.text-muted { + color: #999999; +} + +.text-primary { + color: #428bca; +} + +.text-warning { + color: #c09853; +} + +.text-danger { + color: #b94a48; +} + +.text-success { + color: #468847; +} + +.text-info { + color: #3a87ad; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +h1, +.h1 { + font-size: 36px; +} + +h2, +.h2 { + font-size: 30px; +} + +h3, +.h3 { + font-size: 24px; +} + +h4, +.h4 { + font-size: 18px; +} + +h5, +.h5 { + font-size: 14px; +} + +h6, +.h6 { + font-size: 12px; +} + +h1 small, +.h1 small { + font-size: 24px; +} + +h2 small, +.h2 small { + font-size: 18px; +} + +h3 small, +.h3 small, +h4 small, +.h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} + +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 0; +} + +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote p:last-child { + margin-bottom: 0; +} + +blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +pre { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} + +.col-xs-1 { + width: 8.333333333333332%; +} + +.col-xs-2 { + width: 16.666666666666664%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-4 { + width: 33.33333333333333%; +} + +.col-xs-5 { + width: 41.66666666666667%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-7 { + width: 58.333333333333336%; +} + +.col-xs-8 { + width: 66.66666666666666%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-10 { + width: 83.33333333333334%; +} + +.col-xs-11 { + width: 91.66666666666666%; +} + +.col-xs-12 { + width: 100%; +} + +@media (min-width: 768px) { + .container { + max-width: 750px; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 992px) { + .container { + max-width: 970px; + } + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11 { + float: left; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1170px; + } + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } +} + +table { + max-width: 100%; + background-color: transparent; +} + +th { + text-align: left; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table thead > tr > th, +.table tbody > tr > th, +.table tfoot > tr > th, +.table thead > tr > td, +.table tbody > tr > td, +.table tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} + +.table caption + thead tr:first-child th, +.table colgroup + thead tr:first-child th, +.table thead:first-child tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed thead > tr > th, +.table-condensed tbody > tr > th, +.table-condensed tfoot > tr > th, +.table-condensed thead > tr > td, +.table-condensed tbody > tr > td, +.table-condensed tfoot > tr > td { + padding: 5px; +} + +.table-bordered { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} + +table col[class*="col-"] { + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; +} + +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} + +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td { + background-color: #d0e9c6; + border-color: #c9e2b3; +} + +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; + border-color: #eed3d7; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td { + background-color: #ebcccc; + border-color: #e6c1c7; +} + +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td { + background-color: #faf2cc; + border-color: #f8e5be; +} + +@media (max-width: 768px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + background-color: #fff; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > thead > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > thead > tr:last-child > td, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} + +input[type="file"] { + display: block; +} + +select[multiple], +select[size] { + height: auto; +} + +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} + +.form-control:-moz-placeholder { + color: #999999; +} + +.form-control::-moz-placeholder { + color: #999999; +} + +.form-control:-ms-input-placeholder { + color: #999999; +} + +.form-control::-webkit-input-placeholder { + color: #999999; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 15px; +} + +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.radio label, +.checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +textarea.input-sm { + height: auto; +} + +.input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-lg { + height: 45px; + line-height: 45px; +} + +textarea.input-lg { + height: auto; +} + +.has-warning .help-block, +.has-warning .control-label { + color: #c09853; +} + +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.has-warning .input-group-addon { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.has-error .help-block, +.has-error .control-label { + color: #b94a48; +} + +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.has-error .input-group-addon { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.has-success .help-block, +.has-success .control-label { + color: #468847; +} + +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.has-success .input-group-addon { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.form-control-static { + padding-top: 7px; + margin-bottom: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} + +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} + +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} + +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} + +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-sm, +.btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs { + padding: 1px 5px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + line-height: 1; +} + +.glyphicon-asterisk:before { + content: "\2a"; +} + +.glyphicon-plus:before { + content: "\2b"; +} + +.glyphicon-euro:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-briefcase:before { + content: "\1f4bc"; +} + +.glyphicon-calendar:before { + content: "\1f4c5"; +} + +.glyphicon-pushpin:before { + content: "\1f4cc"; +} + +.glyphicon-paperclip:before { + content: "\1f4ce"; +} + +.glyphicon-camera:before { + content: "\1f4f7"; +} + +.glyphicon-lock:before { + content: "\1f512"; +} + +.glyphicon-bell:before { + content: "\1f514"; +} + +.glyphicon-bookmark:before { + content: "\1f516"; +} + +.glyphicon-fire:before { + content: "\1f525"; +} + +.glyphicon-wrench:before { + content: "\1f527"; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-bottom: 0 dotted; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open > .dropdown-menu { + display: block; +} + +.open > a { + outline: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } +} + +.btn-default .caret { + border-top-color: #333333; +} + +.btn-primary .caret, +.btn-success .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret { + border-top-color: #fff; +} + +.dropup .btn-default .caret { + border-bottom-color: #333333; +} + +.dropup .btn-primary .caret, +.dropup .btn-success .caret, +.dropup .btn-warning .caret, +.dropup .btn-danger .caret, +.dropup .btn-info .caret { + border-bottom-color: #fff; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar .btn-group { + float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group-xs > .btn { + padding: 5px 10px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} + +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group > .btn { + float: none; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + border-collapse: separate; + table-layout: fixed; +} + +.btn-group-justified .btn { + display: table-cell; + float: none; + width: 1%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group.col { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + width: 100%; + margin-bottom: 0; +} + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 45px; + line-height: 45px; +} + +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} + +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} + +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} + +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} + +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; +} + +.input-group-btn > .btn + .btn { + margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { + z-index: 2; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav > li { + position: relative; + display: block; +} + +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li.disabled > a { + color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} + +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.nav > li > a > img { + max-width: none; +} + +.nav-tabs { + border-bottom: 1px solid #dddddd; +} + +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; +} + +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} + +.nav-tabs.nav-justified > li { + float: none; +} + +.nav-tabs.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs.nav-justified > .active > a { + border-bottom-color: #ffffff; +} + +.nav-pills > li { + float: left; +} + +.nav-pills > li > a { + border-radius: 5px; +} + +.nav-pills > li + li { + margin-left: 2px; +} + +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #428bca; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified { + width: 100%; +} + +.nav-justified > li { + float: none; +} + +.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs-justified > .active > a { + border-bottom-color: #ffffff; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} + +.nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar { + position: relative; + z-index: 1000; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} + +.container > .navbar-header, +.container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + z-index: 1030; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; +} + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +@media (min-width: 768px) { + .navbar > .container .navbar-brand { + margin-left: -15px; + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + border: 1px solid transparent; + border-radius: 4px; +} + +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} + +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} + +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} + +.navbar-nav { + margin: 7.5px -15px; +} + +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} + +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} + +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} + +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} + +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 768px) { + .navbar-text { + margin-right: 15px; + margin-left: 15px; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777777; +} + +.navbar-default .navbar-nav > li > a { + color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e6e6e6; +} + +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777777; +} + +.navbar-default .navbar-link:hover { + color: #333333; +} + +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} + +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; +} + +.breadcrumb > li + li:before { + padding: 0 5px; + color: #cccccc; + content: "/\00a0"; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} + +.pagination > li { + display: inline; +} + +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} + +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #eeeeee; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; + border-color: #dddddd; +} + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} + +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.label-default { + background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} + +.label-primary { + background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} + +.label-success { + background-color: #5cb85c; +} + +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} + +.label-info { + background-color: #5bc0de; +} + +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} + +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} + +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} + +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} + +.jumbotron h1 { + line-height: 1; + color: inherit; +} + +.jumbotron p { + line-height: 1.4; +} + +.container .jumbotron { + border-radius: 6px; +} + +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: inline-block; + display: block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.thumbnail > img { + display: block; + height: auto; + max-width: 100%; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #428bca; +} + +.thumbnail > img { + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} + +.alert h4 { + margin-top: 0; + color: inherit; +} + +.alert .alert-link { + font-weight: bold; +} + +.alert > p, +.alert > ul { + margin-bottom: 0; +} + +.alert > p + p { + margin-top: 5px; +} + +.alert-dismissable { + padding-right: 35px; +} + +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #356635; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #2d6987; +} + +.alert-warning { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.alert-warning hr { + border-top-color: #f8e5be; +} + +.alert-warning .alert-link { + color: #a47e3c; +} + +.alert-danger { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger hr { + border-top-color: #e6c1c7; +} + +.alert-danger .alert-link { + color: #953b39; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} + +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + padding-left: 0; + list-style: none; +} + +.list-group { + padding-left: 0; + margin-bottom: 20px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.list-group-item > .badge { + float: right; +} + +.list-group-item > .badge + .badge { + margin-right: 5px; +} + +a.list-group-item { + color: #555555; +} + +a.list-group-item .list-group-item-heading { + color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} + +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel > .list-group { + margin-bottom: 0; +} + +.panel > .list-group .list-group-item { + border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.panel > .table { + margin-bottom: 0; +} + +.panel > .panel-body + .table { + border-top: 1px solid #dddddd; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} + +.panel-title > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} + +.panel-group .panel + .panel { + margin-top: 5px; +} + +.panel-group .panel-heading { + border-bottom: 0; +} + +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} + +.panel-default { + border-color: #dddddd; +} + +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} + +.panel-primary { + border-color: #428bca; +} + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} + +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-warning { + border-color: #fbeed5; +} + +.panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #fbeed5; +} + +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #fbeed5; +} + +.panel-danger { + border-color: #eed3d7; +} + +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #eed3d7; +} + +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #eed3d7; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} + +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +body.modal-open, +.modal-open .navbar-fixed-top, +.modal-open .navbar-fixed-bottom { + margin-right: 15px; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: auto; + overflow-y: scroll; +} + +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog { + z-index: 1050; + width: auto; + padding: 10px; + margin-right: auto; + margin-left: auto; +} + +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} + +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 20px; +} + +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +@media screen and (min-width: 768px) { + .modal-dialog { + right: auto; + left: 50%; + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; + content: " "; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; + content: " "; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; + content: " "; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; + content: " "; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + height: auto; + max-width: 100%; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.left { + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} + +.carousel-control .icon-prev:before { + content: '\2039'; +} + +.carousel-control .icon-next:before { + content: '\203a'; +} + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} + +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #ffffff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #ffffff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} + +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} + +.clearfix:after { + clear: both; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.visible-xs { + display: none !important; +} + +tr.visible-xs { + display: none !important; +} + +th.visible-xs, +td.visible-xs { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } +} + +.visible-sm { + display: none !important; +} + +tr.visible-sm { + display: none !important; +} + +th.visible-sm, +td.visible-sm { + display: none !important; +} + +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } +} + +.visible-md { + display: none !important; +} + +tr.visible-md { + display: none !important; +} + +th.visible-md, +td.visible-md { + display: none !important; +} + +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } +} + +.visible-lg { + display: none !important; +} + +tr.visible-lg { + display: none !important; +} + +th.visible-lg, +td.visible-lg { + display: none !important; +} + +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} + +.hidden-xs { + display: block !important; +} + +tr.hidden-xs { + display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + tr.hidden-xs { + display: none !important; + } + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm { + display: none !important; + } + tr.hidden-xs.hidden-sm { + display: none !important; + } + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md { + display: none !important; + } + tr.hidden-xs.hidden-md { + display: none !important; + } + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xs.hidden-lg { + display: none !important; + } + tr.hidden-xs.hidden-lg { + display: none !important; + } + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } +} + +.hidden-sm { + display: block !important; +} + +tr.hidden-sm { + display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-sm.hidden-xs { + display: none !important; + } + tr.hidden-sm.hidden-xs { + display: none !important; + } + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + tr.hidden-sm { + display: none !important; + } + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md { + display: none !important; + } + tr.hidden-sm.hidden-md { + display: none !important; + } + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-sm.hidden-lg { + display: none !important; + } + tr.hidden-sm.hidden-lg { + display: none !important; + } + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } +} + +.hidden-md { + display: block !important; +} + +tr.hidden-md { + display: table-row !important; +} + +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-md.hidden-xs { + display: none !important; + } + tr.hidden-md.hidden-xs { + display: none !important; + } + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm { + display: none !important; + } + tr.hidden-md.hidden-sm { + display: none !important; + } + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + tr.hidden-md { + display: none !important; + } + th.hidden-md, + td.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-md.hidden-lg { + display: none !important; + } + tr.hidden-md.hidden-lg { + display: none !important; + } + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } +} + +.hidden-lg { + display: block !important; +} + +tr.hidden-lg { + display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-lg.hidden-xs { + display: none !important; + } + tr.hidden-lg.hidden-xs { + display: none !important; + } + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm { + display: none !important; + } + tr.hidden-lg.hidden-sm { + display: none !important; + } + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md { + display: none !important; + } + tr.hidden-lg.hidden-md { + display: none !important; + } + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + tr.hidden-lg { + display: none !important; + } + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +tr.visible-print { + display: none !important; +} + +th.visible-print, +td.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print { + display: none !important; + } + tr.hidden-print { + display: none !important; + } + th.hidden-print, + td.hidden-print { + display: none !important; + } +} \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Content/bootstrap.min.css b/src/examples/JR.DevFw.Web.Example/Content/bootstrap.min.css new file mode 100644 index 0000000..df89a50 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Content/bootstrap.min.css @@ -0,0 +1,20 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. The notices and licenses below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Controllers/HomeController.cs b/src/examples/JR.DevFw.Web.Example/Controllers/HomeController.cs new file mode 100644 index 0000000..8c1e8ce --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Controllers/HomeController.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace JR.DevFw.Web.Example.Controllers +{ + public class HomeController : Controller + { + public String Echo() + { + return "Hello devfw!"; + + } + public ActionResult Index() + { + return View(); + } + } +} \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Global.asax b/src/examples/JR.DevFw.Web.Example/Global.asax new file mode 100644 index 0000000..846409e --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="JR.DevFw.Web.Example.HttpApplication" Language="C#" %> diff --git a/src/examples/JR.DevFw.Web.Example/JR.DevFw.Web.Example.csproj b/src/examples/JR.DevFw.Web.Example/JR.DevFw.Web.Example.csproj new file mode 100644 index 0000000..cfdc7d5 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/JR.DevFw.Web.Example.csproj @@ -0,0 +1,225 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> + <Import Project="..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" /> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion> + </ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{876E3277-D7D6-4DF6-811F-03D741DF11C4}</ProjectGuid> + <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>JR.DevFw.Web.Example</RootNamespace> + <AssemblyName>JR.DevFw.Web.Example</AssemblyName> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <MvcBuildViews>false</MvcBuildViews> + <UseIISExpress>true</UseIISExpress> + <IISExpressSSLPort /> + <IISExpressAnonymousAuthentication /> + <IISExpressWindowsAuthentication /> + <IISExpressUseClassicPipelineMode /> + <UseGlobalApplicationHostFile /> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + <WebGreaseLibPath>..\..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Web.DynamicData" /> + <Reference Include="System.Web.Entity" /> + <Reference Include="System.Web.ApplicationServices" /> + <Reference Include="System.Core" /> + <Reference Include="System.Web" /> + <Reference Include="System.Web.Extensions" /> + <Reference Include="System.Web.Abstractions" /> + <Reference Include="System.Web.Routing" /> + <Reference Include="System.Xml" /> + <Reference Include="System.Configuration" /> + <Reference Include="System.Web.Services" /> + <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> + </Reference> + <Reference Include="System.Net.Http"> + </Reference> + <Reference Include="System.Net.Http.WebRequest"> + </Reference> + <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll</HintPath> + </Reference> + <Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath> + </Reference> + <Reference Include="System.Web.Optimization"> + <HintPath>..\..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath> + </Reference> + <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath> + </Reference> + <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll</HintPath> + </Reference> + <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll</HintPath> + </Reference> + <Reference Include="Antlr3.Runtime"> + <Private>True</Private> + <HintPath>..\..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath> + </Reference> + <Reference Include="WebGrease, Version=1.5.2.14234, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Reference Include="Newtonsoft.Json"> + <HintPath>..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="App_Start\BundleConfig.cs" /> + <Compile Include="App_Start\FilterConfig.cs" /> + <Compile Include="App_Start\HttpApplication.cs" /> + <Compile Include="App_Start\RouteConfig.cs" /> + <Compile Include="Controllers\HomeController.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="Content\bootstrap.css" /> + <Content Include="Content\bootstrap.min.css" /> + <Content Include="favicon.ico" /> + <Content Include="fonts\glyphicons-halflings-regular.svg" /> + <Content Include="Global.asax" /> + <Content Include="Content\Site.css" /> + <Content Include="Scripts\bootstrap.js" /> + <Content Include="Scripts\bootstrap.min.js" /> + <Content Include="ApplicationInsights.config"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <None Include="Scripts\jquery-1.10.2.intellisense.js" /> + <Content Include="Scripts\jquery-1.10.2.js" /> + <Content Include="Scripts\jquery-1.10.2.min.js" /> + <None Include="Scripts\jquery.validate-vsdoc.js" /> + <Content Include="Scripts\jquery.validate.js" /> + <Content Include="Scripts\jquery.validate.min.js" /> + <Content Include="Scripts\jquery.validate.unobtrusive.js" /> + <Content Include="Scripts\jquery.validate.unobtrusive.min.js" /> + <Content Include="Scripts\modernizr-2.6.2.js" /> + <Content Include="Scripts\respond.js" /> + <Content Include="Scripts\respond.min.js" /> + <Content Include="Web.config" /> + <Content Include="Web.Debug.config"> + <DependentUpon>Web.config</DependentUpon> + </Content> + <Content Include="Web.Release.config"> + <DependentUpon>Web.config</DependentUpon> + </Content> + <Content Include="Views\Web.config" /> + <Content Include="Views\_ViewStart.cshtml" /> + <Content Include="Views\Shared\Error.cshtml" /> + <Content Include="Views\Shared\_Layout.cshtml" /> + <Content Include="Views\Home\Index.cshtml" /> + </ItemGroup> + <ItemGroup> + <Folder Include="Models\" /> + </ItemGroup> + <ItemGroup> + <Content Include="fonts\glyphicons-halflings-regular.woff" /> + </ItemGroup> + <ItemGroup> + <Content Include="fonts\glyphicons-halflings-regular.ttf" /> + </ItemGroup> + <ItemGroup> + <Content Include="fonts\glyphicons-halflings-regular.eot" /> + </ItemGroup> + <ItemGroup> + <Content Include="packages.config" /> + </ItemGroup> + <ItemGroup> + <Content Include="Scripts\jquery-1.10.2.min.map" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\core\J6.DevFw.Core\JR.DevFw.Core.csproj"> + <Project>{44e05d6c-5b0a-453a-913f-00124d1bf435}</Project> + <Name>JR.DevFw.Core</Name> + </ProjectReference> + <ProjectReference Include="..\..\core\J6.DevFw.PluginKernel\kernel\JR.DevFw.PluginKernel.csproj"> + <Project>{cad14dcc-112c-4b28-98eb-1ce143d09033}</Project> + <Name>JR.DevFw.PluginKernel</Name> + </ProjectReference> + <ProjectReference Include="..\..\core\J6.DevFw.Web\JR.DevFw.Web.csproj"> + <Project>{4f756ead-0c41-499c-ae91-660892b444ac}</Project> + <Name>JR.DevFw.Web</Name> + </ProjectReference> + </ItemGroup> + <PropertyGroup> + <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> + <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> + </PropertyGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> + <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> + <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> + <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> + </Target> + <ProjectExtensions> + <VisualStudio> + <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> + <WebProjectProperties> + <UseIIS>True</UseIIS> + <AutoAssignPort>True</AutoAssignPort> + <DevelopmentServerPort>49873</DevelopmentServerPort> + <DevelopmentServerVPath>/</DevelopmentServerVPath> + <IISUrl>http://localhost:49873/</IISUrl> + <NTLMAuthentication>False</NTLMAuthentication> + <UseCustomServer>False</UseCustomServer> + <CustomServerUrl> + </CustomServerUrl> + <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile> + </WebProjectProperties> + </FlavorProperties> + </VisualStudio> + </ProjectExtensions> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + <ErrorText>此项目引用这台计算机上缺少的 NuGet 程序包。使用 NuGet 程序包还原可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText> + </PropertyGroup> + <Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props'))" /> + <Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" /> + </Target> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> --> +</Project> \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/JR.DevFw.Web.Example.csproj.user b/src/examples/JR.DevFw.Web.Example/JR.DevFw.Web.Example.csproj.user new file mode 100644 index 0000000..d218c5d --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/JR.DevFw.Web.Example.csproj.user @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <UseIISExpress>true</UseIISExpress> + </PropertyGroup> + <ProjectExtensions> + <VisualStudio> + <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> + <WebProjectProperties> + <StartPageUrl> + </StartPageUrl> + <StartAction>CurrentPage</StartAction> + <AspNetDebugging>True</AspNetDebugging> + <SilverlightDebugging>False</SilverlightDebugging> + <NativeDebugging>False</NativeDebugging> + <SQLDebugging>False</SQLDebugging> + <ExternalProgram> + </ExternalProgram> + <StartExternalURL> + </StartExternalURL> + <StartCmdLineArguments> + </StartCmdLineArguments> + <StartWorkingDirectory> + </StartWorkingDirectory> + <EnableENC>True</EnableENC> + <AlwaysStartWebServerOnDebug>True</AlwaysStartWebServerOnDebug> + </WebProjectProperties> + </FlavorProperties> + </VisualStudio> + </ProjectExtensions> +</Project> \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Properties/AssemblyInfo.cs b/src/examples/JR.DevFw.Web.Example/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..77ae794 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息是通过以下项进行控制的 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("JR.DevFw.Web.Example")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("JR.DevFw.Web.Example")] +[assembly: AssemblyCopyright("版权所有(C) 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 将使此程序集中的类型 +// 对 COM 组件不可见。如果需要 +// 从 COM 访问此程序集中的某个类型,请针对该类型将 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID +[assembly: Guid("df9ac9bd-96ff-4cc9-8dac-2fea910ce70b")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订版本 +// +// 你可以指定所有值,也可以让修订版本和内部版本号采用默认值, +// 方法是按如下所示使用 "*": +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/bootstrap.js b/src/examples/JR.DevFw.Web.Example/Scripts/bootstrap.js new file mode 100644 index 0000000..5aa9982 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/bootstrap.js @@ -0,0 +1,2014 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ + +/** +* bootstrap.js v3.0.0 by @fat and @mdo +* Copyright 2013 Twitter Inc. +* http://www.apache.org/licenses/LICENSE-2.0 +*/ +if (!jQuery) { throw new Error("Bootstrap requires jQuery") } + +/* ======================================================================== + * Bootstrap: transition.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#transitions + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d); + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + .prop('checked', !this.$element.hasClass('active')) + .trigger('change') + if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') + } + + this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#carousel + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000 + , pause: 'hover' + , wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#collapse + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#dropdowns + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we we use a backdrop because click events don't delegate + $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) + } + + $parent.trigger(e = $.Event('show.bs.dropdown')) + + if (e.isDefaultPrevented()) return + + $parent + .toggleClass('open') + .trigger('shown.bs.dropdown') + + $this.focus() + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27)/.test(e.keyCode)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) { + if (e.which == 27) $parent.find(toggle).focus() + return $this.click() + } + + var $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + var index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index=0 + + $items.eq(index).focus() + } + + function clearMenus() { + $(backdrop).remove() + $(toggle).each(function (e) { + var $parent = getParent($(this)) + if (!$parent.hasClass('open')) return + $parent.trigger(e = $.Event('hide.bs.dropdown')) + if (e.isDefaultPrevented()) return + $parent.removeClass('open').trigger('hidden.bs.dropdown') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('dropdown') + + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#modals + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + this.$backdrop = + this.isShown = null + + if (this.options.remote) this.$element.load(this.options.remote) + } + + Modal.DEFAULTS = { + backdrop: true + , keyboard: true + , show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this[!this.isShown ? 'show' : 'hide'](_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) // don't move modals dom position + } + + that.$element.show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$element.find('.modal-dialog') // wait for modal to slide in + .one($.support.transition.end, function () { + that.$element.focus().trigger(e) + }) + .emulateTransitionEnd(300) : + that.$element.focus().trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + .off('click.dismiss.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one($.support.transition.end, $.proxy(this.hideModal, this)) + .emulateTransitionEnd(300) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.focus() + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.removeBackdrop() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') + .appendTo(document.body) + + this.$element.on('click.dismiss.modal', $.proxy(function (e) { + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus.call(this.$element[0]) + : this.hide.call(this) + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one($.support.transition.end, callback) + .emulateTransitionEnd(150) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + $.support.transition && this.$element.hasClass('fade')? + this.$backdrop + .one($.support.transition.end, callback) + .emulateTransitionEnd(150) : + callback() + + } else if (callback) { + callback() + } + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + var old = $.fn.modal + + $.fn.modal = function (option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 + var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + e.preventDefault() + + $target + .modal(option, this) + .one('hide', function () { + $this.is(':visible') && $this.focus() + }) + }) + + $(document) + .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') }) + .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = + this.options = + this.enabled = + this.timeout = + this.hoverState = + this.$element = null + + this.init('tooltip', element, options) + } + + Tooltip.DEFAULTS = { + animation: true + , placement: 'top' + , selector: false + , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + , trigger: 'hover focus' + , title: '' + , delay: 0 + , html: false + , container: false + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay + , hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.'+ this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + var $tip = this.tip() + + this.setContent() + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var $parent = this.$element.parent() + + var orgPlacement = placement + var docScroll = document.documentElement.scrollTop || document.body.scrollTop + var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth() + var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight() + var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left + + placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' : + placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' : + placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' : + placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + this.$element.trigger('shown.bs.' + this.type) + } + } + + Tooltip.prototype.applyPlacement = function(offset, placement) { + var replace + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top = offset.top + marginTop + offset.left = offset.left + marginLeft + + $tip + .offset(offset) + .addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + replace = true + offset.top = offset.top + height - actualHeight + } + + if (/bottom|top/.test(placement)) { + var delta = 0 + + if (offset.left < 0) { + delta = offset.left * -2 + offset.left = 0 + + $tip.offset(offset) + + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + } + + this.replaceArrow(delta - width + actualWidth, actualWidth, 'left') + } else { + this.replaceArrow(actualHeight - height, actualHeight, 'top') + } + + if (replace) $tip.offset(offset) + } + + Tooltip.prototype.replaceArrow = function(delta, dimension, position) { + this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function () { + var that = this + var $tip = this.tip() + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one($.support.transition.end, complete) + .emulateTransitionEnd(150) : + complete() + + this.$element.trigger('hidden.bs.' + this.type) + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function () { + var el = this.$element[0] + return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : { + width: el.offsetWidth + , height: el.offsetHeight + }, this.$element.offset()) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.tip = function () { + return this.$tip = this.$tip || $(this.options.template) + } + + Tooltip.prototype.arrow = function () { + return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow') + } + + Tooltip.prototype.validate = function () { + if (!this.$element[0].parentNode) { + this.hide() + this.$element = null + this.options = null + } + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + + Tooltip.prototype.destroy = function () { + this.hide().$element.off('.' + this.type).removeData('bs.' + this.type) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + var old = $.fn.tooltip + + $.fn.tooltip = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#popovers + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right' + , trigger: 'click' + , content: '' + , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return this.$arrow = this.$arrow || this.tip().find('.arrow') + } + + Popover.prototype.tip = function () { + if (!this.$tip) this.$tip = $(this.options.template) + return this.$tip + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + var old = $.fn.popover + + $.fn.popover = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#scrollspy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + var href + var process = $.proxy(this.process, this) + + this.$element = $(element).is('body') ? $(window) : $(element) + this.$body = $('body') + this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target + || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + || '') + ' .nav li > a' + this.offsets = $([]) + this.targets = $([]) + this.activeTarget = null + + this.refresh() + this.process() + } + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.refresh = function () { + var offsetMethod = this.$element[0] == window ? 'offset' : 'position' + + this.offsets = $([]) + this.targets = $([]) + + var self = this + var $targets = this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#\w/.test(href) && $(href) + + return ($href + && $href.length + && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + var maxScroll = scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) && this.activate(i) + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate( targets[i] ) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + $(this.selector) + .parents('.active') + .removeClass('active') + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + var old = $.fn.scrollspy + + $.fn.scrollspy = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + $spy.scrollspy($spy.data()) + }) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#tabs + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + this.element = $(element) + } + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var previous = $ul.find('.active:last a')[0] + var e = $.Event('show.bs.tab', { + relatedTarget: previous + }) + + $this.trigger(e) + + if (e.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function () { + $this.trigger({ + type: 'shown.bs.tab' + , relatedTarget: previous + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu')) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active + .one($.support.transition.end, next) + .emulateTransitionEnd(150) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + var old = $.fn.tab + + $.fn.tab = function ( option ) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { + e.preventDefault() + $(this).tab('show') + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#affix + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + this.$window = $(window) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = + this.unpin = null + + this.checkPosition() + } + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0 + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var scrollHeight = $(document).height() + var scrollTop = this.$window.scrollTop() + var position = this.$element.offset() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top() + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + + var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false : + offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' : + offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false + + if (this.affixed === affix) return + if (this.unpin) this.$element.css('top', '') + + this.affixed = affix + this.unpin = affix == 'bottom' ? position.top - scrollTop : null + + this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : '')) + + if (affix == 'bottom') { + this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + var old = $.fn.affix + + $.fn.affix = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom) data.offset.bottom = data.offsetBottom + if (data.offsetTop) data.offset.top = data.offsetTop + + $spy.affix(data) + }) + }) + +}(window.jQuery); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/bootstrap.min.js b/src/examples/JR.DevFw.Web.Example/Scripts/bootstrap.min.js new file mode 100644 index 0000000..9c96832 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/bootstrap.min.js @@ -0,0 +1,21 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ + +/** +* bootstrap.js v3.0.0 by @fat and @mdo +* Copyright 2013 Twitter Inc. +* http://www.apache.org/licenses/LICENSE-2.0 +*/ +if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery); \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.intellisense.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.intellisense.js new file mode 100644 index 0000000..f1d8325 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.intellisense.js @@ -0,0 +1,2671 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +intellisense.annotate(jQuery, { + 'ajax': function() { + /// <signature> + /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary> + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param> + /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings.</param> + /// <returns type="jqXHR" /> + /// </signature> + /// <signature> + /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary> + /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup().</param> + /// <returns type="jqXHR" /> + /// </signature> + }, + 'ajaxPrefilter': function() { + /// <signature> + /// <summary>Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax().</summary> + /// <param name="dataTypes" type="String">An optional string containing one or more space-separated dataTypes</param> + /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to set default values for future Ajax requests.</param> + /// </signature> + }, + 'ajaxSetup': function() { + /// <signature> + /// <summary>Set default values for future Ajax requests.</summary> + /// <param name="options" type="PlainObject">A set of key/value pairs that configure the default Ajax request. All options are optional.</param> + /// </signature> + }, + 'ajaxTransport': function() { + /// <signature> + /// <summary>Creates an object that handles the actual transmission of Ajax data.</summary> + /// <param name="dataType" type="String">A string identifying the data type to use</param> + /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to return the new transport object to use with the data type provided in the first argument.</param> + /// </signature> + }, + 'boxModel': function() { + /// <summary>Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model.</summary> + /// <returns type="Boolean" /> + }, + 'browser': function() { + /// <summary>Contains flags for the useragent, read from navigator.userAgent. We recommend against using this property; please try to use feature detection instead (see jQuery.support). jQuery.browser may be moved to a plugin in a future release of jQuery.</summary> + /// <returns type="PlainObject" /> + }, + 'browser.version': function() { + /// <summary>The version number of the rendering engine for the user's browser.</summary> + /// <returns type="String" /> + }, + 'Callbacks': function() { + /// <signature> + /// <summary>A multi-purpose callbacks list object that provides a powerful way to manage callback lists.</summary> + /// <param name="flags" type="String">An optional list of space-separated flags that change how the callback list behaves.</param> + /// <returns type="Callbacks" /> + /// </signature> + }, + 'contains': function() { + /// <signature> + /// <summary>Check to see if a DOM element is a descendant of another DOM element.</summary> + /// <param name="container" type="Element">The DOM element that may contain the other element.</param> + /// <param name="contained" type="Element">The DOM element that may be contained by (a descendant of) the other element.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'cssHooks': function() { + /// <summary>Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties.</summary> + /// <returns type="Object" /> + }, + 'data': function() { + /// <signature> + /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary> + /// <param name="element" type="Element">The DOM element to query for the data.</param> + /// <param name="key" type="String">Name of the data stored.</param> + /// <returns type="Object" /> + /// </signature> + /// <signature> + /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary> + /// <param name="element" type="Element">The DOM element to query for the data.</param> + /// <returns type="Object" /> + /// </signature> + }, + 'Deferred': function() { + /// <signature> + /// <summary>A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.</summary> + /// <param name="beforeStart" type="Function">A function that is called just before the constructor returns.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'dequeue': function() { + /// <signature> + /// <summary>Execute the next function on the queue for the matched element.</summary> + /// <param name="element" type="Element">A DOM element from which to remove and execute a queued function.</param> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// </signature> + }, + 'each': function() { + /// <signature> + /// <summary>A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.</summary> + /// <param name="collection" type="Object">The object or array to iterate over.</param> + /// <param name="callback(indexInArray, valueOfElement)" type="Function">The function that will be executed on every object.</param> + /// <returns type="Object" /> + /// </signature> + }, + 'error': function() { + /// <signature> + /// <summary>Takes a string and throws an exception containing it.</summary> + /// <param name="message" type="String">The message to send out.</param> + /// </signature> + }, + 'extend': function() { + /// <signature> + /// <summary>Merge the contents of two or more objects together into the first object.</summary> + /// <param name="target" type="Object">An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument.</param> + /// <param name="object1" type="Object">An object containing additional properties to merge in.</param> + /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param> + /// <returns type="Object" /> + /// </signature> + /// <signature> + /// <summary>Merge the contents of two or more objects together into the first object.</summary> + /// <param name="deep" type="Boolean">If true, the merge becomes recursive (aka. deep copy).</param> + /// <param name="target" type="Object">The object to extend. It will receive the new properties.</param> + /// <param name="object1" type="Object">An object containing additional properties to merge in.</param> + /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param> + /// <returns type="Object" /> + /// </signature> + }, + 'get': function() { + /// <signature> + /// <summary>Load data from the server using a HTTP GET request.</summary> + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param> + /// <param name="data" type="String">A plain object or string that is sent to the server with the request.</param> + /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param> + /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).</param> + /// <returns type="jqXHR" /> + /// </signature> + }, + 'getJSON': function() { + /// <signature> + /// <summary>Load JSON-encoded data from the server using a GET HTTP request.</summary> + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param> + /// <param name="data" type="PlainObject">A plain object or string that is sent to the server with the request.</param> + /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param> + /// <returns type="jqXHR" /> + /// </signature> + }, + 'getScript': function() { + /// <signature> + /// <summary>Load a JavaScript file from the server using a GET HTTP request, then execute it.</summary> + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param> + /// <param name="success(script, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param> + /// <returns type="jqXHR" /> + /// </signature> + }, + 'globalEval': function() { + /// <signature> + /// <summary>Execute some JavaScript code globally.</summary> + /// <param name="code" type="String">The JavaScript code to execute.</param> + /// </signature> + }, + 'grep': function() { + /// <signature> + /// <summary>Finds the elements of an array which satisfy a filter function. The original array is not affected.</summary> + /// <param name="array" type="Array">The array to search through.</param> + /// <param name="function(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object.</param> + /// <param name="invert" type="Boolean">If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false.</param> + /// <returns type="Array" /> + /// </signature> + }, + 'hasData': function() { + /// <signature> + /// <summary>Determine whether an element has any jQuery data associated with it.</summary> + /// <param name="element" type="Element">A DOM element to be checked for data.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'holdReady': function() { + /// <signature> + /// <summary>Holds or releases the execution of jQuery's ready event.</summary> + /// <param name="hold" type="Boolean">Indicates whether the ready hold is being requested or released</param> + /// </signature> + }, + 'inArray': function() { + /// <signature> + /// <summary>Search for a specified value within an array and return its index (or -1 if not found).</summary> + /// <param name="value" type="Anything">The value to search for.</param> + /// <param name="array" type="Array">An array through which to search.</param> + /// <param name="fromIndex" type="Number">The index of the array at which to begin the search. The default is 0, which will search the whole array.</param> + /// <returns type="Number" /> + /// </signature> + }, + 'isArray': function() { + /// <signature> + /// <summary>Determine whether the argument is an array.</summary> + /// <param name="obj" type="Object">Object to test whether or not it is an array.</param> + /// <returns type="boolean" /> + /// </signature> + }, + 'isEmptyObject': function() { + /// <signature> + /// <summary>Check to see if an object is empty (contains no enumerable properties).</summary> + /// <param name="object" type="Object">The object that will be checked to see if it's empty.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'isFunction': function() { + /// <signature> + /// <summary>Determine if the argument passed is a Javascript function object.</summary> + /// <param name="obj" type="PlainObject">Object to test whether or not it is a function.</param> + /// <returns type="boolean" /> + /// </signature> + }, + 'isNumeric': function() { + /// <signature> + /// <summary>Determines whether its argument is a number.</summary> + /// <param name="value" type="PlainObject">The value to be tested.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'isPlainObject': function() { + /// <signature> + /// <summary>Check to see if an object is a plain object (created using "{}" or "new Object").</summary> + /// <param name="object" type="PlainObject">The object that will be checked to see if it's a plain object.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'isWindow': function() { + /// <signature> + /// <summary>Determine whether the argument is a window.</summary> + /// <param name="obj" type="PlainObject">Object to test whether or not it is a window.</param> + /// <returns type="boolean" /> + /// </signature> + }, + 'isXMLDoc': function() { + /// <signature> + /// <summary>Check to see if a DOM node is within an XML document (or is an XML document).</summary> + /// <param name="node" type="Element">The DOM node that will be checked to see if it's in an XML document.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'makeArray': function() { + /// <signature> + /// <summary>Convert an array-like object into a true JavaScript array.</summary> + /// <param name="obj" type="PlainObject">Any object to turn into a native Array.</param> + /// <returns type="Array" /> + /// </signature> + }, + 'map': function() { + /// <signature> + /// <summary>Translate all items in an array or object to new array of items.</summary> + /// <param name="array" type="Array">The Array to translate.</param> + /// <param name="callback(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object.</param> + /// <returns type="Array" /> + /// </signature> + /// <signature> + /// <summary>Translate all items in an array or object to new array of items.</summary> + /// <param name="arrayOrObject" type="Object">The Array or Object to translate.</param> + /// <param name="callback( value, indexOrKey )" type="Function">The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object.</param> + /// <returns type="Array" /> + /// </signature> + }, + 'merge': function() { + /// <signature> + /// <summary>Merge the contents of two arrays together into the first array.</summary> + /// <param name="first" type="Array">The first array to merge, the elements of second added.</param> + /// <param name="second" type="Array">The second array to merge into the first, unaltered.</param> + /// <returns type="Array" /> + /// </signature> + }, + 'noConflict': function() { + /// <signature> + /// <summary>Relinquish jQuery's control of the $ variable.</summary> + /// <param name="removeAll" type="Boolean">A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself).</param> + /// <returns type="Object" /> + /// </signature> + }, + 'noop': function() { + /// <summary>An empty function.</summary> + }, + 'now': function() { + /// <summary>Return a number representing the current time.</summary> + /// <returns type="Number" /> + }, + 'param': function() { + /// <signature> + /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary> + /// <param name="obj" type="Object">An array or object to serialize.</param> + /// <returns type="String" /> + /// </signature> + /// <signature> + /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary> + /// <param name="obj" type="Object">An array or object to serialize.</param> + /// <param name="traditional" type="Boolean">A Boolean indicating whether to perform a traditional "shallow" serialization.</param> + /// <returns type="String" /> + /// </signature> + }, + 'parseHTML': function() { + /// <signature> + /// <summary>Parses a string into an array of DOM nodes.</summary> + /// <param name="data" type="String">HTML string to be parsed</param> + /// <param name="context" type="Element">DOM element to serve as the context in which the HTML fragment will be created</param> + /// <param name="keepScripts" type="Boolean">A Boolean indicating whether to include scripts passed in the HTML string</param> + /// <returns type="Array" /> + /// </signature> + }, + 'parseJSON': function() { + /// <signature> + /// <summary>Takes a well-formed JSON string and returns the resulting JavaScript object.</summary> + /// <param name="json" type="String">The JSON string to parse.</param> + /// <returns type="Object" /> + /// </signature> + }, + 'parseXML': function() { + /// <signature> + /// <summary>Parses a string into an XML document.</summary> + /// <param name="data" type="String">a well-formed XML string to be parsed</param> + /// <returns type="XMLDocument" /> + /// </signature> + }, + 'post': function() { + /// <signature> + /// <summary>Load data from the server using a HTTP POST request.</summary> + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param> + /// <param name="data" type="String">A plain object or string that is sent to the server with the request.</param> + /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param> + /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).</param> + /// <returns type="jqXHR" /> + /// </signature> + }, + 'proxy': function() { + /// <signature> + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary> + /// <param name="function" type="Function">The function whose context will be changed.</param> + /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param> + /// <returns type="Function" /> + /// </signature> + /// <signature> + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary> + /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param> + /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param> + /// <returns type="Function" /> + /// </signature> + /// <signature> + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary> + /// <param name="function" type="Function">The function whose context will be changed.</param> + /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param> + /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function referenced in the function argument.</param> + /// <returns type="Function" /> + /// </signature> + /// <signature> + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary> + /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param> + /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param> + /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function named in the name argument.</param> + /// <returns type="Function" /> + /// </signature> + }, + 'queue': function() { + /// <signature> + /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary> + /// <param name="element" type="Element">A DOM element where the array of queued functions is attached.</param> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary> + /// <param name="element" type="Element">A DOM element on which to add a queued function.</param> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <param name="callback()" type="Function">The new function to add to the queue.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'removeData': function() { + /// <signature> + /// <summary>Remove a previously-stored piece of data.</summary> + /// <param name="element" type="Element">A DOM element from which to remove data.</param> + /// <param name="name" type="String">A string naming the piece of data to remove.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'sub': function() { + /// <summary>Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object.</summary> + /// <returns type="jQuery" /> + }, + 'support': function() { + /// <summary>A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance.</summary> + /// <returns type="Object" /> + }, + 'trim': function() { + /// <signature> + /// <summary>Remove the whitespace from the beginning and end of a string.</summary> + /// <param name="str" type="String">The string to trim.</param> + /// <returns type="String" /> + /// </signature> + }, + 'type': function() { + /// <signature> + /// <summary>Determine the internal JavaScript [[Class]] of an object.</summary> + /// <param name="obj" type="PlainObject">Object to get the internal JavaScript [[Class]] of.</param> + /// <returns type="String" /> + /// </signature> + }, + 'unique': function() { + /// <signature> + /// <summary>Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.</summary> + /// <param name="array" type="Array">The Array of DOM elements.</param> + /// <returns type="Array" /> + /// </signature> + }, + 'when': function() { + /// <signature> + /// <summary>Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events.</summary> + /// <param name="deferreds" type="Deferred">One or more Deferred objects, or plain JavaScript objects.</param> + /// <returns type="Promise" /> + /// </signature> + }, +}); + +var _1228819969 = jQuery.Callbacks; +jQuery.Callbacks = function(flags) { +var _object = _1228819969(flags); +intellisense.annotate(_object, { + 'add': function() { + /// <signature> + /// <summary>Add a callback or a collection of callbacks to a callback list.</summary> + /// <param name="callbacks" type="Array">A function, or array of functions, that are to be added to the callback list.</param> + /// <returns type="Callbacks" /> + /// </signature> + }, + 'disable': function() { + /// <summary>Disable a callback list from doing anything more.</summary> + /// <returns type="Callbacks" /> + }, + 'disabled': function() { + /// <summary>Determine if the callbacks list has been disabled.</summary> + /// <returns type="Boolean" /> + }, + 'empty': function() { + /// <summary>Remove all of the callbacks from a list.</summary> + /// <returns type="Callbacks" /> + }, + 'fire': function() { + /// <signature> + /// <summary>Call all of the callbacks with the given arguments</summary> + /// <param name="arguments" type="Anything">The argument or list of arguments to pass back to the callback list.</param> + /// <returns type="Callbacks" /> + /// </signature> + }, + 'fired': function() { + /// <summary>Determine if the callbacks have already been called at least once.</summary> + /// <returns type="Boolean" /> + }, + 'fireWith': function() { + /// <signature> + /// <summary>Call all callbacks in a list with the given context and arguments.</summary> + /// <param name="context" type="">A reference to the context in which the callbacks in the list should be fired.</param> + /// <param name="args" type="">An argument, or array of arguments, to pass to the callbacks in the list.</param> + /// <returns type="Callbacks" /> + /// </signature> + }, + 'has': function() { + /// <signature> + /// <summary>Determine whether a supplied callback is in a list</summary> + /// <param name="callback" type="Function">The callback to search for.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'lock': function() { + /// <summary>Lock a callback list in its current state.</summary> + /// <returns type="Callbacks" /> + }, + 'locked': function() { + /// <summary>Determine if the callbacks list has been locked.</summary> + /// <returns type="Boolean" /> + }, + 'remove': function() { + /// <signature> + /// <summary>Remove a callback or a collection of callbacks from a callback list.</summary> + /// <param name="callbacks" type="Array">A function, or array of functions, that are to be removed from the callback list.</param> + /// <returns type="Callbacks" /> + /// </signature> + }, +}); + +return _object; +}; +intellisense.redirectDefinition(jQuery.Callbacks, _1228819969); + +var _731531622 = jQuery.Deferred; +jQuery.Deferred = function(func) { +var _object = _731531622(func); +intellisense.annotate(_object, { + 'always': function() { + /// <signature> + /// <summary>Add handlers to be called when the Deferred object is either resolved or rejected.</summary> + /// <param name="alwaysCallbacks" type="Function">A function, or array of functions, that is called when the Deferred is resolved or rejected.</param> + /// <param name="alwaysCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'done': function() { + /// <signature> + /// <summary>Add handlers to be called when the Deferred object is resolved.</summary> + /// <param name="doneCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is resolved.</param> + /// <param name="doneCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'fail': function() { + /// <signature> + /// <summary>Add handlers to be called when the Deferred object is rejected.</summary> + /// <param name="failCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is rejected.</param> + /// <param name="failCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is rejected.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'isRejected': function() { + /// <summary>Determine whether a Deferred object has been rejected.</summary> + /// <returns type="Boolean" /> + }, + 'isResolved': function() { + /// <summary>Determine whether a Deferred object has been resolved.</summary> + /// <returns type="Boolean" /> + }, + 'notify': function() { + /// <signature> + /// <summary>Call the progressCallbacks on a Deferred object with the given args.</summary> + /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'notifyWith': function() { + /// <signature> + /// <summary>Call the progressCallbacks on a Deferred object with the given context and args.</summary> + /// <param name="context" type="Object">Context passed to the progressCallbacks as the this object.</param> + /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'pipe': function() { + /// <signature> + /// <summary>Utility method to filter and/or chain Deferreds.</summary> + /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param> + /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param> + /// <returns type="Promise" /> + /// </signature> + /// <signature> + /// <summary>Utility method to filter and/or chain Deferreds.</summary> + /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param> + /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param> + /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param> + /// <returns type="Promise" /> + /// </signature> + }, + 'progress': function() { + /// <signature> + /// <summary>Add handlers to be called when the Deferred object generates progress notifications.</summary> + /// <param name="progressCallbacks" type="Function">A function, or array of functions, that is called when the Deferred generates progress notifications.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'promise': function() { + /// <signature> + /// <summary>Return a Deferred's Promise object.</summary> + /// <param name="target" type="Object">Object onto which the promise methods have to be attached</param> + /// <returns type="Promise" /> + /// </signature> + }, + 'reject': function() { + /// <signature> + /// <summary>Reject a Deferred object and call any failCallbacks with the given args.</summary> + /// <param name="args" type="Object">Optional arguments that are passed to the failCallbacks.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'rejectWith': function() { + /// <signature> + /// <summary>Reject a Deferred object and call any failCallbacks with the given context and args.</summary> + /// <param name="context" type="Object">Context passed to the failCallbacks as the this object.</param> + /// <param name="args" type="Array">An optional array of arguments that are passed to the failCallbacks.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'resolve': function() { + /// <signature> + /// <summary>Resolve a Deferred object and call any doneCallbacks with the given args.</summary> + /// <param name="args" type="Object">Optional arguments that are passed to the doneCallbacks.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'resolveWith': function() { + /// <signature> + /// <summary>Resolve a Deferred object and call any doneCallbacks with the given context and args.</summary> + /// <param name="context" type="Object">Context passed to the doneCallbacks as the this object.</param> + /// <param name="args" type="Array">An optional array of arguments that are passed to the doneCallbacks.</param> + /// <returns type="Deferred" /> + /// </signature> + }, + 'state': function() { + /// <summary>Determine the current state of a Deferred object.</summary> + /// <returns type="String" /> + }, + 'then': function() { + /// <signature> + /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary> + /// <param name="doneFilter" type="Function">A function that is called when the Deferred is resolved.</param> + /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param> + /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param> + /// <returns type="Promise" /> + /// </signature> + /// <signature> + /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary> + /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param> + /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param> + /// <returns type="Promise" /> + /// </signature> + /// <signature> + /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary> + /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param> + /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param> + /// <param name="progressCallbacks" type="Function">A function, or array of functions, called when the Deferred notifies progress.</param> + /// <returns type="Promise" /> + /// </signature> + }, +}); + +return _object; +}; +intellisense.redirectDefinition(jQuery.Callbacks, _731531622); + +intellisense.annotate(jQuery.Event.prototype, { + 'currentTarget': function() { + /// <summary>The current DOM element within the event bubbling phase.</summary> + /// <returns type="Element" /> + }, + 'data': function() { + /// <summary>An optional object of data passed to an event method when the current executing handler is bound.</summary> + /// <returns type="Object" /> + }, + 'delegateTarget': function() { + /// <summary>The element where the currently-called jQuery event handler was attached.</summary> + /// <returns type="Element" /> + }, + 'isDefaultPrevented': function() { + /// <summary>Returns whether event.preventDefault() was ever called on this event object.</summary> + /// <returns type="Boolean" /> + }, + 'isImmediatePropagationStopped': function() { + /// <summary>Returns whether event.stopImmediatePropagation() was ever called on this event object.</summary> + /// <returns type="Boolean" /> + }, + 'isPropagationStopped': function() { + /// <summary>Returns whether event.stopPropagation() was ever called on this event object.</summary> + /// <returns type="Boolean" /> + }, + 'metaKey': function() { + /// <summary>Indicates whether the META key was pressed when the event fired.</summary> + /// <returns type="Boolean" /> + }, + 'namespace': function() { + /// <summary>The namespace specified when the event was triggered.</summary> + /// <returns type="String" /> + }, + 'pageX': function() { + /// <summary>The mouse position relative to the left edge of the document.</summary> + /// <returns type="Number" /> + }, + 'pageY': function() { + /// <summary>The mouse position relative to the top edge of the document.</summary> + /// <returns type="Number" /> + }, + 'preventDefault': function() { + /// <summary>If this method is called, the default action of the event will not be triggered.</summary> + }, + 'relatedTarget': function() { + /// <summary>The other DOM element involved in the event, if any.</summary> + /// <returns type="Element" /> + }, + 'result': function() { + /// <summary>The last value returned by an event handler that was triggered by this event, unless the value was undefined.</summary> + /// <returns type="Object" /> + }, + 'stopImmediatePropagation': function() { + /// <summary>Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree.</summary> + }, + 'stopPropagation': function() { + /// <summary>Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event.</summary> + }, + 'target': function() { + /// <summary>The DOM element that initiated the event.</summary> + /// <returns type="Element" /> + }, + 'timeStamp': function() { + /// <summary>The difference in milliseconds between the time the browser created the event and January 1, 1970.</summary> + /// <returns type="Number" /> + }, + 'type': function() { + /// <summary>Describes the nature of the event.</summary> + /// <returns type="String" /> + }, + 'which': function() { + /// <summary>For key or mouse events, this property indicates the specific key or button that was pressed.</summary> + /// <returns type="Number" /> + }, +}); + +intellisense.annotate(jQuery.fn, { + 'add': function() { + /// <signature> + /// <summary>Add elements to the set of matched elements.</summary> + /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add elements to the set of matched elements.</summary> + /// <param name="elements" type="Array">One or more elements to add to the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add elements to the set of matched elements.</summary> + /// <param name="html" type="String">An HTML fragment to add to the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add elements to the set of matched elements.</summary> + /// <param name="jQuery object" type="jQuery object ">An existing jQuery object to add to the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add elements to the set of matched elements.</summary> + /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param> + /// <param name="context" type="Element">The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'addBack': function() { + /// <signature> + /// <summary>Add the previous set of elements on the stack to the current set, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'addClass': function() { + /// <signature> + /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary> + /// <param name="className" type="String">One or more space-separated classes to be added to the class attribute of each matched element.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary> + /// <param name="function(index, currentClass)" type="Function">A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'after': function() { + /// <signature> + /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary> + /// <param name="content" type="jQuery">HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements.</param> + /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary> + /// <param name="function(index)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'ajaxComplete': function() { + /// <signature> + /// <summary>Register a handler to be called when Ajax requests complete. This is an AjaxEvent.</summary> + /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'ajaxError': function() { + /// <signature> + /// <summary>Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event.</summary> + /// <param name="handler(event, jqXHR, ajaxSettings, thrownError)" type="Function">The function to be invoked.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'ajaxSend': function() { + /// <signature> + /// <summary>Attach a function to be executed before an Ajax request is sent. This is an Ajax Event.</summary> + /// <param name="handler(event, jqXHR, ajaxOptions)" type="Function">The function to be invoked.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'ajaxStart': function() { + /// <signature> + /// <summary>Register a handler to be called when the first Ajax request begins. This is an Ajax Event.</summary> + /// <param name="handler()" type="Function">The function to be invoked.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'ajaxStop': function() { + /// <signature> + /// <summary>Register a handler to be called when all Ajax requests have completed. This is an Ajax Event.</summary> + /// <param name="handler()" type="Function">The function to be invoked.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'ajaxSuccess': function() { + /// <signature> + /// <summary>Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event.</summary> + /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'all': function() { + /// <summary>Selects all elements.</summary> + }, + 'andSelf': function() { + /// <summary>Add the previous set of elements on the stack to the current set.</summary> + /// <returns type="jQuery" /> + }, + 'animate': function() { + /// <signature> + /// <summary>Perform a custom animation of a set of CSS properties.</summary> + /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Perform a custom animation of a set of CSS properties.</summary> + /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'animated': function() { + /// <summary>Select all elements that are in the progress of an animation at the time the selector is run.</summary> + }, + 'append': function() { + /// <signature> + /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary> + /// <param name="content" type="jQuery">DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements.</param> + /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary> + /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'appendTo': function() { + /// <signature> + /// <summary>Insert every element in the set of matched elements to the end of the target.</summary> + /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'attr': function() { + /// <signature> + /// <summary>Set one or more attributes for the set of matched elements.</summary> + /// <param name="attributeName" type="String">The name of the attribute to set.</param> + /// <param name="value" type="Number">A value to set for the attribute.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set one or more attributes for the set of matched elements.</summary> + /// <param name="attributes" type="PlainObject">An object of attribute-value pairs to set.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set one or more attributes for the set of matched elements.</summary> + /// <param name="attributeName" type="String">The name of the attribute to set.</param> + /// <param name="function(index, attr)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'attributeContains': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute with a value containing the a given substring.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'attributeContainsPrefix': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-).</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'attributeContainsWord': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute with a value containing a given word, delimited by spaces.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'attributeEndsWith': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'attributeEquals': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute with a value exactly equal to a certain value.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'attributeHas': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute, with any value.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// </signature> + }, + 'attributeMultiple': function() { + /// <signature> + /// <summary>Matches elements that match all of the specified attribute filters.</summary> + /// <param name="attributeFilter1" type="String">An attribute filter.</param> + /// <param name="attributeFilter2" type="String">Another attribute filter, reducing the selection even more</param> + /// <param name="attributeFilterN" type="String">As many more attribute filters as necessary</param> + /// </signature> + }, + 'attributeNotEqual': function() { + /// <signature> + /// <summary>Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'attributeStartsWith': function() { + /// <signature> + /// <summary>Selects elements that have the specified attribute with a value beginning exactly with a given string.</summary> + /// <param name="attribute" type="String">An attribute name.</param> + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param> + /// </signature> + }, + 'before': function() { + /// <signature> + /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary> + /// <param name="content" type="jQuery">HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements.</param> + /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary> + /// <param name="function" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'bind': function() { + /// <signature> + /// <summary>Attach a handler to an event for the elements.</summary> + /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach a handler to an event for the elements.</summary> + /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="preventBubble" type="Boolean">Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach a handler to an event for the elements.</summary> + /// <param name="events" type="Object">An object containing one or more DOM event types and functions to execute for them.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'blur': function() { + /// <signature> + /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'button': function() { + /// <summary>Selects all button elements and elements of type button.</summary> + }, + 'change': function() { + /// <signature> + /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'checkbox': function() { + /// <summary>Selects all elements of type checkbox.</summary> + }, + 'checked': function() { + /// <summary>Matches all elements that are checked.</summary> + }, + 'child': function() { + /// <signature> + /// <summary>Selects all direct child elements specified by "child" of elements specified by "parent".</summary> + /// <param name="parent" type="String">Any valid selector.</param> + /// <param name="child" type="String">A selector to filter the child elements.</param> + /// </signature> + }, + 'children': function() { + /// <signature> + /// <summary>Get the children of each element in the set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'class': function() { + /// <signature> + /// <summary>Selects all elements with the given class.</summary> + /// <param name="class" type="String">A class to search for. An element can have multiple classes; only one of them must match.</param> + /// </signature> + }, + 'clearQueue': function() { + /// <signature> + /// <summary>Remove from the queue all items that have not yet been run.</summary> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'click': function() { + /// <signature> + /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'clone': function() { + /// <signature> + /// <summary>Create a deep copy of the set of matched elements.</summary> + /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Create a deep copy of the set of matched elements.</summary> + /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up.</param> + /// <param name="deepWithDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false).</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'closest': function() { + /// <signature> + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <param name="context" type="Element">A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary> + /// <param name="jQuery object" type="jQuery">A jQuery object to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary> + /// <param name="element" type="Element">An element to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'contains': function() { + /// <signature> + /// <summary>Select all elements that contain the specified text.</summary> + /// <param name="text" type="String">A string of text to look for. It's case sensitive.</param> + /// </signature> + }, + 'contents': function() { + /// <summary>Get the children of each element in the set of matched elements, including text and comment nodes.</summary> + /// <returns type="jQuery" /> + }, + 'context': function() { + /// <summary>The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document.</summary> + /// <returns type="Element" /> + }, + 'css': function() { + /// <signature> + /// <summary>Set one or more CSS properties for the set of matched elements.</summary> + /// <param name="propertyName" type="String">A CSS property name.</param> + /// <param name="value" type="Number">A value to set for the property.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set one or more CSS properties for the set of matched elements.</summary> + /// <param name="propertyName" type="String">A CSS property name.</param> + /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set one or more CSS properties for the set of matched elements.</summary> + /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'data': function() { + /// <signature> + /// <summary>Store arbitrary data associated with the matched elements.</summary> + /// <param name="key" type="String">A string naming the piece of data to set.</param> + /// <param name="value" type="Object">The new data value; it can be any Javascript type including Array or Object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Store arbitrary data associated with the matched elements.</summary> + /// <param name="obj" type="Object">An object of key-value pairs of data to update.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'dblclick': function() { + /// <signature> + /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'delay': function() { + /// <signature> + /// <summary>Set a timer to delay execution of subsequent items in the queue.</summary> + /// <param name="duration" type="Number">An integer indicating the number of milliseconds to delay execution of the next item in the queue.</param> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'delegate': function() { + /// <signature> + /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary> + /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param> + /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary> + /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param> + /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary> + /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param> + /// <param name="events" type="PlainObject">A plain object of one or more event types and functions to execute for them.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'dequeue': function() { + /// <signature> + /// <summary>Execute the next function on the queue for the matched elements.</summary> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'descendant': function() { + /// <signature> + /// <summary>Selects all elements that are descendants of a given ancestor.</summary> + /// <param name="ancestor" type="String">Any valid selector.</param> + /// <param name="descendant" type="String">A selector to filter the descendant elements.</param> + /// </signature> + }, + 'detach': function() { + /// <signature> + /// <summary>Remove the set of matched elements from the DOM.</summary> + /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'die': function() { + /// <signature> + /// <summary>Remove event handlers previously attached using .live() from the elements.</summary> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or keydown.</param> + /// <param name="handler" type="String">The function that is no longer to be executed.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove event handlers previously attached using .live() from the elements.</summary> + /// <param name="events" type="PlainObject">A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'disabled': function() { + /// <summary>Selects all elements that are disabled.</summary> + }, + 'each': function() { + /// <signature> + /// <summary>Iterate over a jQuery object, executing a function for each matched element.</summary> + /// <param name="function(index, Element)" type="Function">A function to execute for each matched element.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'element': function() { + /// <signature> + /// <summary>Selects all elements with the given tag name.</summary> + /// <param name="element" type="String">An element to search for. Refers to the tagName of DOM nodes.</param> + /// </signature> + }, + 'empty': function() { + /// <summary>Select all elements that have no children (including text nodes).</summary> + }, + 'enabled': function() { + /// <summary>Selects all elements that are enabled.</summary> + }, + 'end': function() { + /// <summary>End the most recent filtering operation in the current chain and return the set of matched elements to its previous state.</summary> + /// <returns type="jQuery" /> + }, + 'eq': function() { + /// <signature> + /// <summary>Select the element at index n within the matched set.</summary> + /// <param name="index" type="Number">Zero-based index of the element to match.</param> + /// </signature> + /// <signature> + /// <summary>Select the element at index n within the matched set.</summary> + /// <param name="-index" type="Number">Zero-based index of the element to match, counting backwards from the last element.</param> + /// </signature> + }, + 'error': function() { + /// <signature> + /// <summary>Bind an event handler to the "error" JavaScript event.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "error" JavaScript event.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'even': function() { + /// <summary>Selects even elements, zero-indexed. See also odd.</summary> + }, + 'fadeIn': function() { + /// <signature> + /// <summary>Display the matched elements by fading them to opaque.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display the matched elements by fading them to opaque.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display the matched elements by fading them to opaque.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'fadeOut': function() { + /// <signature> + /// <summary>Hide the matched elements by fading them to transparent.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Hide the matched elements by fading them to transparent.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Hide the matched elements by fading them to transparent.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'fadeTo': function() { + /// <signature> + /// <summary>Adjust the opacity of the matched elements.</summary> + /// <param name="duration" type="Number">A string or number determining how long the animation will run.</param> + /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Adjust the opacity of the matched elements.</summary> + /// <param name="duration" type="Number">A string or number determining how long the animation will run.</param> + /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'fadeToggle': function() { + /// <signature> + /// <summary>Display or hide the matched elements by animating their opacity.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display or hide the matched elements by animating their opacity.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'file': function() { + /// <summary>Selects all elements of type file.</summary> + }, + 'filter': function() { + /// <signature> + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary> + /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary> + /// <param name="element" type="Element">An element to match the current set of elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary> + /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'find': function() { + /// <signature> + /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary> + /// <param name="jQuery object" type="Object">A jQuery object to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary> + /// <param name="element" type="Element">An element to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'finish': function() { + /// <signature> + /// <summary>Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements.</summary> + /// <param name="queue" type="String">The name of the queue in which to stop animations.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'first': function() { + /// <summary>Selects the first matched element.</summary> + }, + 'first-child': function() { + /// <summary>Selects all elements that are the first child of their parent.</summary> + }, + 'first-of-type': function() { + /// <summary>Selects all elements that are the first among siblings of the same element name.</summary> + }, + 'focus': function() { + /// <signature> + /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'focusin': function() { + /// <signature> + /// <summary>Bind an event handler to the "focusin" event.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "focusin" event.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'focusout': function() { + /// <signature> + /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary> + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'get': function() { + /// <signature> + /// <summary>Retrieve the DOM elements matched by the jQuery object.</summary> + /// <param name="index" type="Number">A zero-based integer indicating which element to retrieve.</param> + /// <returns type="Element, Array" /> + /// </signature> + }, + 'gt': function() { + /// <signature> + /// <summary>Select all elements at an index greater than index within the matched set.</summary> + /// <param name="index" type="Number">Zero-based index.</param> + /// </signature> + }, + 'has': function() { + /// <signature> + /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary> + /// <param name="contained" type="Element">A DOM element to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'hasClass': function() { + /// <signature> + /// <summary>Determine whether any of the matched elements are assigned the given class.</summary> + /// <param name="className" type="String">The class name to search for.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'header': function() { + /// <summary>Selects all elements that are headers, like h1, h2, h3 and so on.</summary> + }, + 'height': function() { + /// <signature> + /// <summary>Set the CSS height of every matched element.</summary> + /// <param name="value" type="Number">An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string).</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set the CSS height of every matched element.</summary> + /// <param name="function(index, height)" type="Function">A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'hidden': function() { + /// <summary>Selects all elements that are hidden.</summary> + }, + 'hide': function() { + /// <signature> + /// <summary>Hide the matched elements.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Hide the matched elements.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Hide the matched elements.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'hover': function() { + /// <signature> + /// <summary>Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements.</summary> + /// <param name="handlerIn(eventObject)" type="Function">A function to execute when the mouse pointer enters the element.</param> + /// <param name="handlerOut(eventObject)" type="Function">A function to execute when the mouse pointer leaves the element.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'html': function() { + /// <signature> + /// <summary>Set the HTML contents of each element in the set of matched elements.</summary> + /// <param name="htmlString" type="String">A string of HTML to set as the content of each matched element.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set the HTML contents of each element in the set of matched elements.</summary> + /// <param name="function(index, oldhtml)" type="Function">A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'id': function() { + /// <signature> + /// <summary>Selects a single element with the given id attribute.</summary> + /// <param name="id" type="String">An ID to search for, specified via the id attribute of an element.</param> + /// </signature> + }, + 'image': function() { + /// <summary>Selects all elements of type image.</summary> + }, + 'index': function() { + /// <signature> + /// <summary>Search for a given element from among the matched elements.</summary> + /// <param name="selector" type="String">A selector representing a jQuery collection in which to look for an element.</param> + /// <returns type="Number" /> + /// </signature> + /// <signature> + /// <summary>Search for a given element from among the matched elements.</summary> + /// <param name="element" type="jQuery">The DOM element or first element within the jQuery object to look for.</param> + /// <returns type="Number" /> + /// </signature> + }, + 'init': function() { + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="selector" type="String">A string containing a selector expression</param> + /// <param name="context" type="jQuery">A DOM Element, Document, or jQuery to use as context</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'innerHeight': function() { + /// <summary>Get the current computed height for the first element in the set of matched elements, including padding but not border.</summary> + /// <returns type="Integer" /> + }, + 'innerWidth': function() { + /// <summary>Get the current computed width for the first element in the set of matched elements, including padding but not border.</summary> + /// <returns type="Integer" /> + }, + 'input': function() { + /// <summary>Selects all input, textarea, select and button elements.</summary> + }, + 'insertAfter': function() { + /// <signature> + /// <summary>Insert every element in the set of matched elements after the target.</summary> + /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'insertBefore': function() { + /// <signature> + /// <summary>Insert every element in the set of matched elements before the target.</summary> + /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'is': function() { + /// <signature> + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="Boolean" /> + /// </signature> + /// <signature> + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary> + /// <param name="function(index)" type="Function">A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element.</param> + /// <returns type="Boolean" /> + /// </signature> + /// <signature> + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary> + /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param> + /// <returns type="Boolean" /> + /// </signature> + /// <signature> + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary> + /// <param name="element" type="Element">An element to match the current set of elements against.</param> + /// <returns type="Boolean" /> + /// </signature> + }, + 'jquery': function() { + /// <summary>A string containing the jQuery version number.</summary> + /// <returns type="String" /> + }, + 'keydown': function() { + /// <signature> + /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'keypress': function() { + /// <signature> + /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'keyup': function() { + /// <signature> + /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'lang': function() { + /// <signature> + /// <summary>Selects all elements of the specified language.</summary> + /// <param name="language" type="String">A language code.</param> + /// </signature> + }, + 'last': function() { + /// <summary>Selects the last matched element.</summary> + }, + 'last-child': function() { + /// <summary>Selects all elements that are the last child of their parent.</summary> + }, + 'last-of-type': function() { + /// <summary>Selects all elements that are the last among siblings of the same element name.</summary> + }, + 'length': function() { + /// <summary>The number of elements in the jQuery object.</summary> + /// <returns type="Number" /> + }, + 'live': function() { + /// <signature> + /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary> + /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary> + /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param> + /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary> + /// <param name="events" type="PlainObject">A plain object of one or more JavaScript event types and functions to execute for them.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'load': function() { + /// <signature> + /// <summary>Bind an event handler to the "load" JavaScript event.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "load" JavaScript event.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'lt': function() { + /// <signature> + /// <summary>Select all elements at an index less than index within the matched set.</summary> + /// <param name="index" type="Number">Zero-based index.</param> + /// </signature> + }, + 'map': function() { + /// <signature> + /// <summary>Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.</summary> + /// <param name="callback(index, domElement)" type="Function">A function object that will be invoked for each element in the current set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mousedown': function() { + /// <signature> + /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mouseenter': function() { + /// <signature> + /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mouseleave': function() { + /// <signature> + /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mousemove': function() { + /// <signature> + /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mouseout': function() { + /// <signature> + /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mouseover': function() { + /// <signature> + /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'mouseup': function() { + /// <signature> + /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'multiple': function() { + /// <signature> + /// <summary>Selects the combined results of all the specified selectors.</summary> + /// <param name="selector1" type="String">Any valid selector.</param> + /// <param name="selector2" type="String">Another valid selector.</param> + /// <param name="selectorN" type="String">As many more valid selectors as you like.</param> + /// </signature> + }, + 'next': function() { + /// <signature> + /// <summary>Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'next adjacent': function() { + /// <signature> + /// <summary>Selects all next elements matching "next" that are immediately preceded by a sibling "prev".</summary> + /// <param name="prev" type="String">Any valid selector.</param> + /// <param name="next" type="String">A selector to match the element that is next to the first selector.</param> + /// </signature> + }, + 'next siblings': function() { + /// <signature> + /// <summary>Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector.</summary> + /// <param name="prev" type="String">Any valid selector.</param> + /// <param name="siblings" type="String">A selector to filter elements that are the following siblings of the first selector.</param> + /// </signature> + }, + 'nextAll': function() { + /// <signature> + /// <summary>Get all following siblings of each element in the set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'nextUntil': function() { + /// <signature> + /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary> + /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching following sibling elements.</param> + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary> + /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching following sibling elements.</param> + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'not': function() { + /// <signature> + /// <summary>Remove elements from the set of matched elements.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove elements from the set of matched elements.</summary> + /// <param name="elements" type="Array">One or more DOM elements to remove from the matched set.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove elements from the set of matched elements.</summary> + /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove elements from the set of matched elements.</summary> + /// <param name="jQuery object" type="PlainObject">An existing jQuery object to match the current set of elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'nth-child': function() { + /// <signature> + /// <summary>Selects all elements that are the nth-child of their parent.</summary> + /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) )</param> + /// </signature> + }, + 'nth-last-child': function() { + /// <signature> + /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary> + /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) )</param> + /// </signature> + }, + 'nth-last-of-type': function() { + /// <signature> + /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary> + /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) )</param> + /// </signature> + }, + 'nth-of-type': function() { + /// <signature> + /// <summary>Selects all elements that are the nth child of their parent in relation to siblings with the same element name.</summary> + /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) )</param> + /// </signature> + }, + 'odd': function() { + /// <summary>Selects odd elements, zero-indexed. See also even.</summary> + }, + 'off': function() { + /// <signature> + /// <summary>Remove an event handler.</summary> + /// <param name="events" type="String">One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin".</param> + /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param> + /// <param name="handler(eventObject)" type="Function">A handler function previously attached for the event(s), or the special value false.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove an event handler.</summary> + /// <param name="events" type="PlainObject">An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s).</param> + /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'offset': function() { + /// <signature> + /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary> + /// <param name="coordinates" type="PlainObject">An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary> + /// <param name="function(index, coords)" type="Function">A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'offsetParent': function() { + /// <summary>Get the closest ancestor element that is positioned.</summary> + /// <returns type="jQuery" /> + }, + 'on': function() { + /// <signature> + /// <summary>Attach an event handler function for one or more events to the selected elements.</summary> + /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param> + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param> + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach an event handler function for one or more events to the selected elements.</summary> + /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param> + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param> + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'one': function() { + /// <signature> + /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary> + /// <param name="events" type="String">A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names.</param> + /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary> + /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param> + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param> + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary> + /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param> + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param> + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'only-child': function() { + /// <summary>Selects all elements that are the only child of their parent.</summary> + }, + 'only-of-type': function() { + /// <summary>Selects all elements that have no siblings with the same element name.</summary> + }, + 'outerHeight': function() { + /// <signature> + /// <summary>Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements.</summary> + /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param> + /// <returns type="Integer" /> + /// </signature> + }, + 'outerWidth': function() { + /// <signature> + /// <summary>Get the current computed width for the first element in the set of matched elements, including padding and border.</summary> + /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param> + /// <returns type="Integer" /> + /// </signature> + }, + 'parent': function() { + /// <signature> + /// <summary>Get the parent of each element in the current set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'parents': function() { + /// <signature> + /// <summary>Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'parentsUntil': function() { + /// <signature> + /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary> + /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching ancestor elements.</param> + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary> + /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching ancestor elements.</param> + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'password': function() { + /// <summary>Selects all elements of type password.</summary> + }, + 'position': function() { + /// <summary>Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.</summary> + /// <returns type="Object" /> + }, + 'prepend': function() { + /// <signature> + /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary> + /// <param name="content" type="jQuery">DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements.</param> + /// <param name="content" type="jQuery">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary> + /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'prependTo': function() { + /// <signature> + /// <summary>Insert every element in the set of matched elements to the beginning of the target.</summary> + /// <param name="target" type="jQuery">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'prev': function() { + /// <signature> + /// <summary>Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'prevAll': function() { + /// <signature> + /// <summary>Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'prevUntil': function() { + /// <signature> + /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary> + /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching preceding sibling elements.</param> + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary> + /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching preceding sibling elements.</param> + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'promise': function() { + /// <signature> + /// <summary>Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished.</summary> + /// <param name="type" type="String">The type of queue that needs to be observed.</param> + /// <param name="target" type="PlainObject">Object onto which the promise methods have to be attached</param> + /// <returns type="Promise" /> + /// </signature> + }, + 'prop': function() { + /// <signature> + /// <summary>Set one or more properties for the set of matched elements.</summary> + /// <param name="propertyName" type="String">The name of the property to set.</param> + /// <param name="value" type="Boolean">A value to set for the property.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set one or more properties for the set of matched elements.</summary> + /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set one or more properties for the set of matched elements.</summary> + /// <param name="propertyName" type="String">The name of the property to set.</param> + /// <param name="function(index, oldPropertyValue)" type="Function">A function returning the value to set. Receives the index position of the element in the set and the old property value as arguments. Within the function, the keyword this refers to the current element.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'pushStack': function() { + /// <signature> + /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary> + /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary> + /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param> + /// <param name="name" type="String">The name of a jQuery method that generated the array of elements.</param> + /// <param name="arguments" type="Array">The arguments that were passed in to the jQuery method (for serialization).</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'queue': function() { + /// <signature> + /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary> + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param> + /// <param name="callback( next )" type="Function">The new function to add to the queue, with a function to call that will dequeue the next item.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'radio': function() { + /// <summary>Selects all elements of type radio.</summary> + }, + 'ready': function() { + /// <signature> + /// <summary>Specify a function to execute when the DOM is fully loaded.</summary> + /// <param name="handler" type="Function">A function to execute after the DOM is ready.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'remove': function() { + /// <signature> + /// <summary>Remove the set of matched elements from the DOM.</summary> + /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'removeAttr': function() { + /// <signature> + /// <summary>Remove an attribute from each element in the set of matched elements.</summary> + /// <param name="attributeName" type="String">An attribute to remove; as of version 1.7, it can be a space-separated list of attributes.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'removeClass': function() { + /// <signature> + /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary> + /// <param name="className" type="String">One or more space-separated classes to be removed from the class attribute of each matched element.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary> + /// <param name="function(index, class)" type="Function">A function returning one or more space-separated class names to be removed. Receives the index position of the element in the set and the old class value as arguments.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'removeData': function() { + /// <signature> + /// <summary>Remove a previously-stored piece of data.</summary> + /// <param name="name" type="String">A string naming the piece of data to delete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a previously-stored piece of data.</summary> + /// <param name="list" type="String">An array or space-separated string naming the pieces of data to delete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'removeProp': function() { + /// <signature> + /// <summary>Remove a property for the set of matched elements.</summary> + /// <param name="propertyName" type="String">The name of the property to remove.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'replaceAll': function() { + /// <signature> + /// <summary>Replace each target element with the set of matched elements.</summary> + /// <param name="target" type="String">A selector expression indicating which element(s) to replace.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'replaceWith': function() { + /// <signature> + /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary> + /// <param name="newContent" type="jQuery">The content to insert. May be an HTML string, DOM element, or jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary> + /// <param name="function" type="Function">A function that returns content with which to replace the set of matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'reset': function() { + /// <summary>Selects all elements of type reset.</summary> + }, + 'resize': function() { + /// <signature> + /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'root': function() { + /// <signature> + /// <summary>Selects the element that is the root of the document.</summary> + /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) )</param> + /// </signature> + }, + 'scroll': function() { + /// <signature> + /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'scrollLeft': function() { + /// <signature> + /// <summary>Set the current horizontal position of the scroll bar for each of the set of matched elements.</summary> + /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'scrollTop': function() { + /// <signature> + /// <summary>Set the current vertical position of the scroll bar for each of the set of matched elements.</summary> + /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'select': function() { + /// <signature> + /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'selected': function() { + /// <summary>Selects all elements that are selected.</summary> + }, + 'selector': function() { + /// <summary>A selector representing selector originally passed to jQuery().</summary> + /// <returns type="String" /> + }, + 'serialize': function() { + /// <summary>Encode a set of form elements as a string for submission.</summary> + /// <returns type="String" /> + }, + 'serializeArray': function() { + /// <summary>Encode a set of form elements as an array of names and values.</summary> + /// <returns type="Array" /> + }, + 'show': function() { + /// <signature> + /// <summary>Display the matched elements.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display the matched elements.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display the matched elements.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'siblings': function() { + /// <signature> + /// <summary>Get the siblings of each element in the set of matched elements, optionally filtered by a selector.</summary> + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'size': function() { + /// <summary>Return the number of elements in the jQuery object.</summary> + /// <returns type="Number" /> + }, + 'slice': function() { + /// <signature> + /// <summary>Reduce the set of matched elements to a subset specified by a range of indices.</summary> + /// <param name="start" type="Number">An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set.</param> + /// <param name="end" type="Number">An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'slideDown': function() { + /// <signature> + /// <summary>Display the matched elements with a sliding motion.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display the matched elements with a sliding motion.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display the matched elements with a sliding motion.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'slideToggle': function() { + /// <signature> + /// <summary>Display or hide the matched elements with a sliding motion.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display or hide the matched elements with a sliding motion.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display or hide the matched elements with a sliding motion.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'slideUp': function() { + /// <signature> + /// <summary>Hide the matched elements with a sliding motion.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Hide the matched elements with a sliding motion.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Hide the matched elements with a sliding motion.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'stop': function() { + /// <signature> + /// <summary>Stop the currently-running animation on the matched elements.</summary> + /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param> + /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Stop the currently-running animation on the matched elements.</summary> + /// <param name="queue" type="String">The name of the queue in which to stop animations.</param> + /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param> + /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'submit': function() { + /// <signature> + /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary> + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'target': function() { + /// <summary>Selects the target element indicated by the fragment identifier of the document's URI.</summary> + }, + 'text': function() { + /// <signature> + /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary> + /// <param name="textString" type="String">A string of text to set as the content of each matched element.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary> + /// <param name="function(index, text)" type="Function">A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'toArray': function() { + /// <summary>Retrieve all the DOM elements contained in the jQuery set, as an array.</summary> + /// <returns type="Array" /> + }, + 'toggle': function() { + /// <signature> + /// <summary>Display or hide the matched elements.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display or hide the matched elements.</summary> + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display or hide the matched elements.</summary> + /// <param name="duration" type="">A string or number determining how long the animation will run.</param> + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param> + /// <param name="complete" type="Function">A function to call once the animation is complete.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Display or hide the matched elements.</summary> + /// <param name="showOrHide" type="Boolean">A Boolean indicating whether to show or hide the elements.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'toggleClass': function() { + /// <signature> + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary> + /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary> + /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param> + /// <param name="switch" type="Boolean">A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary> + /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary> + /// <param name="function(index, class, switch)" type="Function">A function that returns class names to be toggled in the class attribute of each element in the matched set. Receives the index position of the element in the set, the old class value, and the switch as arguments.</param> + /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'trigger': function() { + /// <signature> + /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param> + /// <param name="extraParameters" type="PlainObject">Additional parameters to pass along to the event handler.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary> + /// <param name="event" type="Event">A jQuery.Event object.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'triggerHandler': function() { + /// <signature> + /// <summary>Execute all handlers attached to an element for an event.</summary> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param> + /// <param name="extraParameters" type="Array">An array of additional parameters to pass along to the event handler.</param> + /// <returns type="Object" /> + /// </signature> + }, + 'unbind': function() { + /// <signature> + /// <summary>Remove a previously-attached event handler from the elements.</summary> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param> + /// <param name="handler(eventObject)" type="Function">The function that is to be no longer executed.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a previously-attached event handler from the elements.</summary> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param> + /// <param name="false" type="Boolean">Unbinds the corresponding 'return false' function that was bound using .bind( eventType, false ).</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a previously-attached event handler from the elements.</summary> + /// <param name="event" type="Object">A JavaScript event object as passed to an event handler.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'undelegate': function() { + /// <signature> + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary> + /// <param name="selector" type="String">A selector which will be used to filter the event results.</param> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary> + /// <param name="selector" type="String">A selector which will be used to filter the event results.</param> + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param> + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary> + /// <param name="selector" type="String">A selector which will be used to filter the event results.</param> + /// <param name="events" type="PlainObject">An object of one or more event types and previously bound functions to unbind from them.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary> + /// <param name="namespace" type="String">A string containing a namespace to unbind all events from.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'unload': function() { + /// <signature> + /// <summary>Bind an event handler to the "unload" JavaScript event.</summary> + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Bind an event handler to the "unload" JavaScript event.</summary> + /// <param name="eventData" type="Object">A plain object of data that will be passed to the event handler.</param> + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'unwrap': function() { + /// <summary>Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place.</summary> + /// <returns type="jQuery" /> + }, + 'val': function() { + /// <signature> + /// <summary>Set the value of each element in the set of matched elements.</summary> + /// <param name="value" type="Array">A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set the value of each element in the set of matched elements.</summary> + /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'visible': function() { + /// <summary>Selects all elements that are visible.</summary> + }, + 'width': function() { + /// <signature> + /// <summary>Set the CSS width of each element in the set of matched elements.</summary> + /// <param name="value" type="Number">An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string).</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Set the CSS width of each element in the set of matched elements.</summary> + /// <param name="function(index, width)" type="Function">A function returning the width to set. Receives the index position of the element in the set and the old width as arguments. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'wrap': function() { + /// <signature> + /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary> + /// <param name="wrappingElement" type="jQuery">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary> + /// <param name="function(index)" type="Function">A callback function returning the HTML content or jQuery object to wrap around the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'wrapAll': function() { + /// <signature> + /// <summary>Wrap an HTML structure around all elements in the set of matched elements.</summary> + /// <param name="wrappingElement" type="jQuery">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + }, + 'wrapInner': function() { + /// <signature> + /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary> + /// <param name="wrappingElement" type="String">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary> + /// <param name="function(index)" type="Function">A callback function which generates a structure to wrap around the content of the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param> + /// <returns type="jQuery" /> + /// </signature> + }, +}); + +intellisense.annotate(window, { + '$': function() { + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="selector" type="String">A string containing a selector expression</param> + /// <param name="context" type="jQuery">A DOM Element, Document, or jQuery to use as context</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param> + /// <returns type="jQuery" /> + /// </signature> + /// <signature> + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary> + /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param> + /// <returns type="jQuery" /> + /// </signature> + }, +}); + diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.js new file mode 100644 index 0000000..d3e121b --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.js @@ -0,0 +1,9803 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! + * jQuery JavaScript Library v1.10.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03T13:48Z + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "<div class='a'></div><div class='a i'></div>"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = "<select><option selected=''></option></select>"; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = "<a href='#'></a>"; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = "<input/>"; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "<div></div>"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG <use> instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /<tbody/i, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + manipulation_rcheckableType = /^(?:checkbox|radio)$/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "<select multiple='multiple'>", "</select>" ], + legend: [ 1, "<fieldset>", "</fieldset>" ], + area: [ 1, "<map>", "</map>" ], + param: [ 1, "<object>", "</object>" ], + thead: [ 1, "<table>", "</table>" ], + tr: [ 2, "<table><tbody>", "</tbody></table>" ], + col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1></$2>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted <tbody> from table fragments + if ( !jQuery.support.tbody ) { + + // String was a <table>, *may* have spurious <tbody> + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare <thead> or <tfoot> + wrap[1] === "<table>" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("<iframe frameborder='0' width='0' height='0'/>") + .css( "cssText", "display:block !important" ) + ).appendTo( doc.documentElement ); + + // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse + doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document; + doc.write("<!doctype html><html><body>"); + doc.close(); + + display = actualDisplay( nodeName, doc ); + iframe.detach(); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + } + + return display; +} + +// Called ONLY from within css_defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + display = jQuery.css( elem[0], "display" ); + elem.remove(); + return display; +} + +jQuery.each([ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + // certain elements can have dimension info if we invisibly show them + // however, it must have a current display style that would benefit from this + return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ? + jQuery.swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + }) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var styles = extra && getStyles( elem ); + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ) : 0 + ); + } + }; +}); + +if ( !jQuery.support.opacity ) { + jQuery.cssHooks.opacity = { + get: function( elem, computed ) { + // IE uses filters for opacity + return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? + ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : + computed ? "1" : ""; + }, + + set: function( elem, value ) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; + + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + style.zoom = 1; + + // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + // if value === "", then remove inline opacity #12685 + if ( ( value >= 1 || value === "" ) && + jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there is no filter style applied in a css rule or unset inline opacity, we are done + if ( value === "" || currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +// These hooks cannot be added until DOM ready because the support test +// for it is not run until after DOM ready +jQuery(function() { + if ( !jQuery.support.reliableMarginRight ) { + jQuery.cssHooks.marginRight = { + get: function( elem, computed ) { + if ( computed ) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + return jQuery.swap( elem, { "display": "inline-block" }, + curCSS, [ elem, "marginRight" ] ); + } + } + }; + } + + // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // getComputedStyle returns percent when specified for top/left/bottom/right + // rather than make the css module depend on the offset module, we just check for it here + if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { + jQuery.each( [ "top", "left" ], function( i, prop ) { + jQuery.cssHooks[ prop ] = { + get: function( elem, computed ) { + if ( computed ) { + computed = curCSS( elem, prop ); + // if curCSS returns percentage, fallback to offset + return rnumnonpx.test( computed ) ? + jQuery( elem ).position()[ prop ] + "px" : + computed; + } + } + }; + }); + } + +}); + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.hidden = function( elem ) { + // Support: Opera <= 12.12 + // Opera reports offsetWidths and offsetHeights less than zero on some elements + return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || + (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none"); + }; + + jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); + }; +} + +// These hooks are used by animate to expand properties +jQuery.each({ + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +}); +var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +jQuery.fn.extend({ + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map(function(){ + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + }) + .filter(function(){ + var type = this.type; + // Use .is(":disabled") so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !manipulation_rcheckableType.test( type ) ); + }) + .map(function( i, elem ){ + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val ){ + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }).get(); + } +}); + +//Serialize an array of form elements or a set of +//key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, value ) { + // If value is a function, invoke it and return its value + value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); + s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); + }; + + // Set traditional to true for jQuery <= 1.3.2 behavior. + if ( traditional === undefined ) { + traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + }); + + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ).replace( r20, "+" ); +}; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( jQuery.isArray( obj ) ) { + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + // Item is non-scalar (array or object), encode its numeric index. + buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); + } + }); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + // Serialize scalar item. + add( prefix, obj ); + } +} +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +}); + +jQuery.fn.extend({ + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + } +}); +var + // Document location + ajaxLocParts, + ajaxLocation, + ajax_nonce = jQuery.now(), + + ajax_rquery = /\?/, + rhash = /#.*$/, + rts = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat("*"); + +// #8138, IE may throw an exception when accessing +// a field from window.location if document.domain has been set +try { + ajaxLocation = location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + // For each dataType in the dataTypeExpression + while ( (dataType = dataTypes[i++]) ) { + // Prepend if requested + if ( dataType[0] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + (structure[ dataType ] = structure[ dataType ] || []).unshift( func ); + + // Otherwise append + } else { + (structure[ dataType ] = structure[ dataType ] || []).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + }); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var deep, key, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + var selector, response, type, + self = this, + off = url.indexOf(" "); + + if ( off >= 0 ) { + selector = url.slice( off, url.length ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( jQuery.isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( params && typeof params === "object" ) { + type = "POST"; + } + + // If we have elements to modify, make the request + if ( self.length > 0 ) { + jQuery.ajax({ + url: url, + + // if "type" variable is undefined, then "GET" method will be used + type: type, + dataType: "html", + data: params + }).done(function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + self.html( selector ? + + // If a selector was specified, locate the right elements in a dummy div + // Exclude scripts to avoid IE 'Permission Denied' errors + jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : + + // Otherwise use the full result + responseText ); + + }).complete( callback && function( jqXHR, status ) { + self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); + }); + } + + return this; +}; + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){ + jQuery.fn[ type ] = function( fn ){ + return this.on( type, fn ); + }; +}); + +jQuery.extend({ + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: ajaxLocation, + type: "GET", + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var // Cross-domain detection vars + parts, + // Loop variable + i, + // URL without anti-cache param + cacheURL, + // Response headers as string + responseHeadersString, + // timeout handle + timeoutTimer, + + // To know if global events are to be dispatched + fireGlobals, + + transport, + // Response headers + responseHeaders, + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + // Callbacks context + callbackContext = s.context || s, + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks("once memory"), + // Status-dependent callbacks + statusCode = s.statusCode || {}, + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + // The jqXHR state + state = 0, + // Default abort message + strAbort = "canceled", + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( state === 2 ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( (match = rheaders.exec( responseHeadersString )) ) { + responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + var lname = name.toLowerCase(); + if ( !state ) { + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( state < 2 ) { + for ( code in map ) { + // Lazy-add the new callback in a way that preserves old ones + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } else { + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ).complete = completeDeferred.add; + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""]; + + // A cross-domain request is in order when we have a protocol:host:port mismatch + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ); + s.crossDomain = !!( parts && + ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || + ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) + ); + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( state === 2 ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger("ajaxStart"); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + cacheURL = s.url; + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add anti-cache in url if needed + if ( s.cache === false ) { + s.url = rts.test( cacheURL ) ? + + // If there is already a '_' parameter, set its value + cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) : + + // Otherwise add one to the end + cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++; + } + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { + // Abort if not done already and return + return jqXHR.abort(); + } + + // aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = setTimeout(function() { + jqXHR.abort("timeout"); + }, s.timeout ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch ( e ) { + // Propagate exception as error if not done + if ( state < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + throw e; + } + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Called once + if ( state === 2 ) { + return; + } + + // State is "done" now + state = 2; + + // Clear timeout if it exists + if ( timeoutTimer ) { + clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader("Last-Modified"); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader("etag"); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger("ajaxStop"); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +}); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + // shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + return jQuery.ajax({ + url: url, + type: method, + dataType: type, + data: data, + success: callback + }); + }; +}); + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + var firstDataType, ct, finalDataType, type, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s[ "throws" ] ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} +// Install script dataType +jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /(?:java|ecma)script/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +}); + +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + s.global = false; + } +}); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || jQuery("head")[0] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement("script"); + + script.async = true; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( script.parentNode ) { + script.parentNode.removeChild( script ); + } + + // Dereference the script + script = null; + + // Callback if not abort + if ( !isAbort ) { + callback( 200, "success" ); + } + } + }; + + // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending + // Use native DOM manipulation to avoid our domManip AJAX trickery + head.insertBefore( script, head.firstChild ); + }, + + abort: function() { + if ( script ) { + script.onload( undefined, true ); + } + } + }; + } +}); +var oldCallbacks = [], + rjsonp = /(=)\?(?=&|$)|\?\?/; + +// Default jsonp settings +jQuery.ajaxSetup({ + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) ); + this[ callback ] = true; + return callback; + } +}); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + var callbackName, overwritten, responseContainer, + jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? + "url" : + typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" + ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + + // Insert callback into url or form data + if ( jsonProp ) { + s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); + } else if ( s.jsonp !== false ) { + s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; + } + + // Use data converter to retrieve json after script execution + s.converters["script json"] = function() { + if ( !responseContainer ) { + jQuery.error( callbackName + " was not called" ); + } + return responseContainer[ 0 ]; + }; + + // force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + overwritten = window[ callbackName ]; + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always(function() { + // Restore preexisting value + window[ callbackName ] = overwritten; + + // Save back as free + if ( s[ callbackName ] ) { + // make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + }); + + // Delegate to script + return "script"; + } +}); +var xhrCallbacks, xhrSupported, + xhrId = 0, + // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject && function() { + // Abort all pending requests + var key; + for ( key in xhrCallbacks ) { + xhrCallbacks[ key ]( undefined, true ); + } + }; + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject("Microsoft.XMLHTTP"); + } catch( e ) {} +} + +// Create the request object +// (This is still attached to ajaxSettings for backward compatibility) +jQuery.ajaxSettings.xhr = window.ActiveXObject ? + /* Microsoft failed to properly + * implement the XMLHttpRequest in IE7 (can't request local files), + * so we use the ActiveXObject when it is available + * Additionally XMLHttpRequest can be disabled in IE7/IE8 so + * we need a fallback. + */ + function() { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : + // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; + +// Determine support properties +xhrSupported = jQuery.ajaxSettings.xhr(); +jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +xhrSupported = jQuery.support.ajax = !!xhrSupported; + +// Create transport if the browser can provide an xhr +if ( xhrSupported ) { + + jQuery.ajaxTransport(function( s ) { + // Cross domain only allowed if supported through XMLHttpRequest + if ( !s.crossDomain || jQuery.support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + + // Get a new xhr + var handle, i, + xhr = s.xhr(); + + // Open the socket + // Passing null username, generates a login popup on Opera (#2865) + if ( s.username ) { + xhr.open( s.type, s.url, s.async, s.username, s.password ); + } else { + xhr.open( s.type, s.url, s.async ); + } + + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !s.crossDomain && !headers["X-Requested-With"] ) { + headers["X-Requested-With"] = "XMLHttpRequest"; + } + + // Need an extra try/catch for cross domain requests in Firefox 3 + try { + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + } catch( err ) {} + + // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( s.hasContent && s.data ) || null ); + + // Listener + callback = function( _, isAbort ) { + var status, responseHeaders, statusText, responses; + + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occurred + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { + + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } + } + + // If it's an abort + if ( isAbort ) { + // Abort it manually if needed + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + responses = {}; + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + + // When requesting binary data, IE6-9 will throw an exception + // on any attempt to access responseText (#11426) + if ( typeof xhr.responseText === "string" ) { + responses.text = xhr.responseText; + } + + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch( e ) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } + + // Filter status for non standard behaviors + + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && s.isLocal && !s.crossDomain ) { + status = responses.text ? 200 : 404; + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } + } + } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } + }; + + if ( !s.async ) { + // if we're in sync mode we fire the callback + callback(); + } else if ( xhr.readyState === 4 ) { + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + setTimeout( callback ); + } else { + handle = ++xhrId; + if ( xhrOnUnloadAbort ) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + jQuery( window ).unload( xhrOnUnloadAbort ); + } + // Add to list of active xhrs callbacks + xhrCallbacks[ handle ] = callback; + } + xhr.onreadystatechange = callback; + } + }, + + abort: function() { + if ( callback ) { + callback( undefined, true ); + } + } + }; + } + }); +} +var fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), + rrun = /queueHooks$/, + animationPrefilters = [ defaultPrefilter ], + tweeners = { + "*": [function( prop, value ) { + var tween = this.createTween( prop, value ), + target = tween.cur(), + parts = rfxnum.exec( value ), + unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && + rfxnum.exec( jQuery.css( tween.elem, prop ) ), + scale = 1, + maxIterations = 20; + + if ( start && start[ 3 ] !== unit ) { + // Trust units reported by jQuery.css + unit = unit || start[ 3 ]; + + // Make sure we update the tween properties later on + parts = parts || []; + + // Iteratively approximate from a nonzero starting point + start = +target || 1; + + do { + // If previous iteration zeroed out, double until we get *something* + // Use a string for doubling factor so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + start = start / scale; + jQuery.style( tween.elem, prop, start + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // And breaking the loop if scale is unchanged or perfect, or if we've just had enough + } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); + } + + // Update tween properties + if ( parts ) { + start = tween.start = +start || +target || 0; + tween.unit = unit; + // If a +=/-= token was provided, we're doing a relative animation + tween.end = parts[ 1 ] ? + start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : + +parts[ 2 ]; + } + + return tween; + }] + }; + +// Animations created synchronously will run synchronously +function createFxNow() { + setTimeout(function() { + fxNow = undefined; + }); + return ( fxNow = jQuery.now() ); +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( (tween = collection[ index ].call( animation, prop, value )) ) { + + // we're done with this property + return tween; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = animationPrefilters.length, + deferred = jQuery.Deferred().always( function() { + // don't match elem in the :animated selector + delete tick.elem; + }), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ]); + + if ( percent < 1 && length ) { + return remaining; + } else { + deferred.resolveWith( elem, [ animation ] ); + return false; + } + }, + animation = deferred.promise({ + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { specialEasing: {} }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + // if we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // resolve when we played the last frame + // otherwise, reject + if ( gotoEnd ) { + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + }), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length ; index++ ) { + result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + }) + ); + + // attach callbacks from options + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( jQuery.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // not quite $.extend, this wont overwrite keys already present. + // also - reusing 'index' from above because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.split(" "); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length ; index++ ) { + prop = props[ index ]; + tweeners[ prop ] = tweeners[ prop ] || []; + tweeners[ prop ].unshift( callback ); + } + }, + + prefilter: function( callback, prepend ) { + if ( prepend ) { + animationPrefilters.unshift( callback ); + } else { + animationPrefilters.push( callback ); + } + } +}); + +function defaultPrefilter( elem, props, opts ) { + /* jshint validthis: true */ + var prop, value, toggle, tween, hooks, oldfire, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHidden( elem ), + dataShow = jQuery._data( elem, "fxshow" ); + + // handle queue: false promises + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always(function() { + // doing this makes sure that the complete handler will be called + // before this completes + anim.always(function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + }); + }); + } + + // height/width overflow pass + if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { + // Make sure that nothing sneaks out + // Record all 3 overflow attributes because IE does not + // change the overflow attribute when overflowX and + // overflowY are set to the same value + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Set display property to inline-block for height/width + // animations on inline elements that are having width/height animated + if ( jQuery.css( elem, "display" ) === "inline" && + jQuery.css( elem, "float" ) === "none" ) { + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { + style.display = "inline-block"; + + } else { + style.zoom = 1; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + if ( !jQuery.support.shrinkWrapBlocks ) { + anim.always(function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + }); + } + } + + + // show/hide pass + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.exec( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + continue; + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + if ( !jQuery.isEmptyObject( orig ) ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = jQuery._data( elem, "fxshow", {} ); + } + + // store state if its toggle - enables .stop().toggle() to "reverse" + if ( toggle ) { + dataShow.hidden = !hidden; + } + if ( hidden ) { + jQuery( elem ).show(); + } else { + anim.done(function() { + jQuery( elem ).hide(); + }); + } + anim.done(function() { + var prop; + jQuery._removeData( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + }); + for ( prop in orig ) { + tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } +} + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || "swing"; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + if ( tween.elem[ tween.prop ] != null && + (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { + return tween.elem[ tween.prop ]; + } + + // passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, simple values such as "10px" are parsed to Float. + // complex values such as "rotate(1rad)" are returned as is. + result = jQuery.css( tween.elem, tween.prop, "" ); + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + // use step hook for back compat - use cssHook if its there - use .style if its + // available and use plain properties where available + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 +// Panic based approach to setting things on disconnected nodes + +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +}); + +jQuery.fn.extend({ + fadeTo: function( speed, to, easing, callback ) { + + // show any hidden elements after setting opacity to 0 + return this.filter( isHidden ).css( "opacity", 0 ).show() + + // animate to the value specified + .end().animate({ opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || jQuery._data( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each(function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = jQuery._data( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // start the next in the queue if the last step wasn't forced + // timers currently will call their complete callbacks, which will dequeue + // but only if they were gotoEnd + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + }); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each(function() { + var index, + data = jQuery._data( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // enable finishing flag on private data + data.finish = true; + + // empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // turn off finishing flag + delete data.finish; + }); + } +}); + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + attrs = { height: type }, + i = 0; + + // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, step value is 2 to skip over Left and Right + includeWidth = includeWidth? 1 : 0; + for( ; i < 4 ; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +// Generate shortcuts for custom animations +jQuery.each({ + slideDown: genFx("show"), + slideUp: genFx("hide"), + slideToggle: genFx("toggle"), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +}); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : + opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; + + // normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p*Math.PI ) / 2; + } +}; + +jQuery.timers = []; +jQuery.fx = Tween.prototype.init; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + // Checks the timer has not already been removed + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + if ( timer() && jQuery.timers.push( timer ) ) { + jQuery.fx.start(); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.start = function() { + if ( !timerId ) { + timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.stop = function() { + clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 +}; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.animated = function( elem ) { + return jQuery.grep(jQuery.timers, function( fn ) { + return elem === fn.elem; + }).length; + }; +} +jQuery.fn.offset = function( options ) { + if ( arguments.length ) { + return options === undefined ? + this : + this.each(function( i ) { + jQuery.offset.setOffset( this, options, i ); + }); + } + + var docElem, win, + box = { top: 0, left: 0 }, + elem = this[ 0 ], + doc = elem && elem.ownerDocument; + + if ( !doc ) { + return; + } + + docElem = doc.documentElement; + + // Make sure it's not a disconnected DOM node + if ( !jQuery.contains( docElem, elem ) ) { + return box; + } + + // If we don't have gBCR, just use 0,0 rather than error + // BlackBerry 5, iOS 3 (original iPhone) + if ( typeof elem.getBoundingClientRect !== core_strundefined ) { + box = elem.getBoundingClientRect(); + } + win = getWindow( doc ); + return { + top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ), + left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 ) + }; +}; + +jQuery.offset = { + + setOffset: function( elem, options, i ) { + var position = jQuery.css( elem, "position" ); + + // set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + var curElem = jQuery( elem ), + curOffset = curElem.offset(), + curCSSTop = jQuery.css( elem, "top" ), + curCSSLeft = jQuery.css( elem, "left" ), + calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, + props = {}, curPosition = {}, curTop, curLeft; + + // need to be able to calculate position if either top or left is auto and position is either absolute or fixed + if ( calculatePosition ) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; + } + + if ( jQuery.isFunction( options ) ) { + options = options.call( elem, i, curOffset ); + } + + if ( options.top != null ) { + props.top = ( options.top - curOffset.top ) + curTop; + } + if ( options.left != null ) { + props.left = ( options.left - curOffset.left ) + curLeft; + } + + if ( "using" in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + } +}; + + +jQuery.fn.extend({ + + position: function() { + if ( !this[ 0 ] ) { + return; + } + + var offsetParent, offset, + parentOffset = { top: 0, left: 0 }, + elem = this[ 0 ]; + + // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent + if ( jQuery.css( elem, "position" ) === "fixed" ) { + // we assume that getBoundingClientRect is available when computed position is fixed + offset = elem.getBoundingClientRect(); + } else { + // Get *real* offsetParent + offsetParent = this.offsetParent(); + + // Get correct offsets + offset = this.offset(); + if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { + parentOffset = offsetParent.offset(); + } + + // Add offsetParent borders + parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); + parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); + } + + // Subtract parent offsets and element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + return { + top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), + left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true) + }; + }, + + offsetParent: function() { + return this.map(function() { + var offsetParent = this.offsetParent || docElem; + while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || docElem; + }); + } +}); + + +// Create scrollLeft and scrollTop methods +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { + var top = /Y/.test( prop ); + + jQuery.fn[ method ] = function( val ) { + return jQuery.access( this, function( elem, method, val ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? (prop in win) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +}); + +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { + jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { + // margin is only for outerHeight, outerWidth + jQuery.fn[ funcName ] = function( margin, value ) { + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); + + return jQuery.access( this, function( elem, type, value ) { + var doc; + + if ( jQuery.isWindow( elem ) ) { + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement[ "client" + name ]; + } + + // Get document width or height + if ( elem.nodeType === 9 ) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + return Math.max( + elem.body[ "scroll" + name ], doc[ "scroll" + name ], + elem.body[ "offset" + name ], doc[ "offset" + name ], + doc[ "client" + name ] + ); + } + + return value === undefined ? + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css( elem, type, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable, null ); + }; + }); +}); +// Limit scope pollution from any deprecated API +// (function() { + +// The number of elements contained in the matched element set +jQuery.fn.size = function() { + return this.length; +}; + +jQuery.fn.andSelf = jQuery.fn.addBack; + +// })(); +if ( typeof module === "object" && module && typeof module.exports === "object" ) { + // Expose jQuery as module.exports in loaders that implement the Node + // module pattern (including browserify). Do not create the global, since + // the user will be storing it themselves locally, and globals are frowned + // upon in the Node module world. + module.exports = jQuery; +} else { + // Otherwise expose jQuery to the global object as usual + window.jQuery = window.$ = jQuery; + + // Register as a named AMD module, since jQuery can be concatenated with other + // files that may use define, but not via a proper concatenation script that + // understands anonymous AMD modules. A named AMD is safest and most robust + // way to register. Lowercase jquery is used because AMD module names are + // derived from file names, and jQuery is normally delivered in a lowercase + // file name. Do this after creating the global so that if an AMD module wants + // to call noConflict to hide this version of jQuery, it will work. + if ( typeof define === "function" && define.amd ) { + define( "jquery", [], function () { return jQuery; } ); + } +} + +})( window ); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.min.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.min.js new file mode 100644 index 0000000..51aa758 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.min.js @@ -0,0 +1,23 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * JQUERY CORE 1.10.2; Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; http://jquery.org/license + * Includes Sizzle.js; Copyright 2013 jQuery Foundation, Inc. and other contributors; http://opensource.org/licenses/MIT + * + * NUGET: END LICENSE TEXT */ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.2.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.min.map b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.min.map new file mode 100644 index 0000000..4dc4920 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery-1.10.2.min.map @@ -0,0 +1 @@ +{"version":3,"file":"jquery-1.10.2.min.js","sources":["jquery-1.10.2.js"],"names":["window","undefined","readyList","rootjQuery","core_strundefined","location","document","docElem","documentElement","_jQuery","jQuery","_$","$","class2type","core_deletedIds","core_version","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","selector","context","fn","init","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","completed","event","addEventListener","type","readyState","detach","ready","removeEventListener","detachEvent","prototype","jquery","constructor","match","elem","this","charAt","length","exec","find","merge","parseHTML","nodeType","ownerDocument","test","isPlainObject","isFunction","attr","getElementById","parentNode","id","makeArray","toArray","call","get","num","pushStack","elems","ret","prevObject","each","callback","args","promise","done","apply","arguments","first","eq","last","i","len","j","map","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isArray","expando","Math","random","replace","noConflict","isReady","readyWait","holdReady","hold","wait","body","setTimeout","resolveWith","trigger","off","obj","Array","isWindow","isNumeric","isNaN","parseFloat","isFinite","String","key","e","support","ownLast","isEmptyObject","error","msg","Error","data","keepScripts","parsed","scripts","createElement","buildFragment","remove","childNodes","parseJSON","JSON","parse","Function","parseXML","xml","tmp","DOMParser","parseFromString","ActiveXObject","async","loadXML","getElementsByTagName","noop","globalEval","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","arr","results","Object","inArray","max","second","l","grep","inv","retVal","arg","guid","proxy","access","chainable","emptyGet","raw","bulk","now","Date","getTime","swap","old","style","Deferred","attachEvent","top","frameElement","doScroll","doScrollCheck","split","cachedruns","Expr","getText","isXML","compile","outermostContext","sortInput","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","hasDuplicate","sortOrder","a","b","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rsibling","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rnative","rinputs","rheader","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","Sizzle","seed","m","groups","nid","newContext","newSelector","getElementsByClassName","qsa","tokenize","getAttribute","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","cacheLength","shift","markFunction","assert","div","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","doc","parent","defaultView","className","appendChild","createComment","innerHTML","firstChild","getById","getElementsByName","filter","attrId","getAttributeNode","tag","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","dirkey","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","matcherCachedRuns","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","group","contexts","token","div1","defaultValue","unique","isXMLDoc","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","list","stack","once","fire","stopOnFalse","self","disable","add","index","lock","locked","fireWith","func","tuples","state","always","deferred","fail","then","fns","newDefer","tuple","action","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","progressContexts","resolveContexts","fragment","opt","eventName","isSupported","cssText","getSetAttribute","leadingWhitespace","tbody","htmlSerialize","hrefNormalized","opacity","cssFloat","checkOn","optSelected","enctype","html5Clone","cloneNode","outerHTML","inlineBlockNeedsLayout","shrinkWrapBlocks","pixelPosition","deleteExpando","noCloneEvent","reliableMarginRight","boxSizingReliable","noCloneChecked","optDisabled","radioValue","createDocumentFragment","appendChecked","checkClone","click","change","focusin","backgroundClip","clearCloneStyle","container","marginDiv","tds","divReset","offsetHeight","display","reliableHiddenOffsets","zoom","boxSizing","offsetWidth","getComputedStyle","width","marginRight","rbrace","rmultiDash","internalData","pvt","acceptData","thisCache","internalKey","isNode","toJSON","internalRemoveData","isEmptyDataObject","cleanData","noData","applet","embed","hasData","removeData","_data","_removeData","dataAttr","queue","dequeue","startLength","hooks","_queueHooks","next","stop","setter","delay","time","fx","speeds","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","rclass","rreturn","rfocusable","rclickable","ruseDefault","getSetInput","removeAttr","prop","removeProp","propFix","addClass","classes","clazz","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","valHooks","set","option","one","optionSet","nType","attrHooks","propName","attrNames","for","class","notxml","propHooks","tabindex","parseInt","getter","setAttributeNode","createAttribute","coords","contenteditable","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","global","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","origFn","triggerHandler","isSimple","rparentsprev","rneedsContext","guaranteedUnique","children","contents","prev","targets","winnow","is","closest","pos","prevAll","addBack","sibling","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","n","r","qualifier","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","manipulation_rcheckableType","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","append","createTextNode","domManip","manipulationTarget","prepend","insertBefore","before","after","keepData","getAll","setGlobalEval","dataAndEvents","deepDataAndEvents","html","replaceWith","allowIntersection","hasScripts","iNoClone","disableScript","restoreScript","_evalUrl","content","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultChecked","defaultSelected","appendTo","prependTo","insertAfter","replaceAll","insert","found","fixDefaultChecked","destElements","srcElements","inPage","selection","wrap","safe","nodes","url","ajax","dataType","throws","wrapAll","wrapInner","unwrap","iframe","getStyles","curCSS","ralpha","ropacity","rposition","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","BODY","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssExpand","cssPrefixes","vendorPropName","capName","origName","isHidden","el","css","showHide","show","hidden","css_defaultDisplay","styles","hide","toggle","cssHooks","computed","cssNumber","columnCount","fillOpacity","lineHeight","order","orphans","widows","zIndex","cssProps","float","extra","_computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","actualDisplay","write","close","$1","visible","margin","padding","border","prefix","suffix","expand","expanded","parts","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","serialize","serializeArray","traditional","s","encodeURIComponent","ajaxSettings","buildParams","v","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","ajaxLocParts","ajaxLocation","ajax_nonce","ajax_rquery","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","params","response","responseText","complete","status","active","lastModified","etag","isLocal","processData","contentType","accepts","*","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","code","abort","statusText","finalText","success","method","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ajaxHandleResponses","ajaxConvert","rejectWith","getJSON","getScript","firstDataType","ct","finalDataType","conv2","current","conv","dataFilter","script","text script","head","scriptCharset","charset","onload","onreadystatechange","isAbort","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","xhrCallbacks","xhrSupported","xhrId","xhrOnUnloadAbort","createStandardXHR","XMLHttpRequest","createActiveXHR","xhr","cors","username","open","xhrFields","firefoxAccessException","unload","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","tween","createTween","unit","scale","maxIterations","createFxNow","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","duration","percent","tweens","run","opts","specialEasing","originalProperties","Tween","easing","gotoEnd","propFilter","timer","anim","tweener","prefilter","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","eased","step","cssFn","speed","animate","genFx","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","includeWidth","height","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","win","box","getBoundingClientRect","getWindow","pageYOffset","pageXOffset","curElem","curOffset","curCSSTop","curCSSLeft","calculatePosition","curPosition","curTop","curLeft","using","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","module","exports","define","amd"],"mappings":";;;CAaA,SAAWA,EAAQC,GAOnB,GAECC,GAGAC,EAIAC,QAA2BH,GAG3BI,EAAWL,EAAOK,SAClBC,EAAWN,EAAOM,SAClBC,EAAUD,EAASE,gBAGnBC,EAAUT,EAAOU,OAGjBC,EAAKX,EAAOY,EAGZC,KAGAC,KAEAC,EAAe,SAGfC,EAAcF,EAAgBG,OAC9BC,EAAYJ,EAAgBK,KAC5BC,EAAaN,EAAgBO,MAC7BC,EAAeR,EAAgBS,QAC/BC,EAAgBX,EAAWY,SAC3BC,EAAcb,EAAWc,eACzBC,EAAYb,EAAac,KAGzBnB,EAAS,SAAUoB,EAAUC,GAE5B,MAAO,IAAIrB,GAAOsB,GAAGC,KAAMH,EAAUC,EAAS5B,IAI/C+B,EAAY,sCAAsCC,OAGlDC,EAAiB,OAGjBC,EAAQ,qCAKRC,EAAa,sCAGbC,EAAa,6BAGbC,EAAc,gBACdC,EAAe,uBACfC,EAAe,qCACfC,EAAe,kEAGfC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAUC,EAAKC,GAC3B,MAAOA,GAAOC,eAIfC,EAAY,SAAUC,IAGhB7C,EAAS8C,kBAAmC,SAAfD,EAAME,MAA2C,aAAxB/C,EAASgD,cACnEC,IACA7C,EAAO8C,UAITD,EAAS,WACHjD,EAAS8C,kBACb9C,EAASmD,oBAAqB,mBAAoBP,GAAW,GAC7DlD,EAAOyD,oBAAqB,OAAQP,GAAW,KAG/C5C,EAASoD,YAAa,qBAAsBR,GAC5ClD,EAAO0D,YAAa,SAAUR,IAIjCxC,GAAOsB,GAAKtB,EAAOiD,WAElBC,OAAQ7C,EAER8C,YAAanD,EACbuB,KAAM,SAAUH,EAAUC,EAAS5B,GAClC,GAAI2D,GAAOC,CAGX,KAAMjC,EACL,MAAOkC,KAIR,IAAyB,gBAAblC,GAAwB,CAUnC,GAPCgC,EAF2B,MAAvBhC,EAASmC,OAAO,IAAyD,MAA3CnC,EAASmC,OAAQnC,EAASoC,OAAS,IAAepC,EAASoC,QAAU,GAE7F,KAAMpC,EAAU,MAGlBQ,EAAW6B,KAAMrC,IAIrBgC,IAAUA,EAAM,IAAO/B,EAqDrB,OAAMA,GAAWA,EAAQ6B,QACtB7B,GAAW5B,GAAaiE,KAAMtC,GAKhCkC,KAAKH,YAAa9B,GAAUqC,KAAMtC,EAxDzC,IAAKgC,EAAM,GAAK,CAWf,GAVA/B,EAAUA,YAAmBrB,GAASqB,EAAQ,GAAKA,EAGnDrB,EAAO2D,MAAOL,KAAMtD,EAAO4D,UAC1BR,EAAM,GACN/B,GAAWA,EAAQwC,SAAWxC,EAAQyC,eAAiBzC,EAAUzB,GACjE,IAIIiC,EAAWkC,KAAMX,EAAM,KAAQpD,EAAOgE,cAAe3C,GACzD,IAAM+B,IAAS/B,GAETrB,EAAOiE,WAAYX,KAAMF,IAC7BE,KAAMF,GAAS/B,EAAS+B,IAIxBE,KAAKY,KAAMd,EAAO/B,EAAS+B,GAK9B,OAAOE,MAQP,GAJAD,EAAOzD,EAASuE,eAAgBf,EAAM,IAIjCC,GAAQA,EAAKe,WAAa,CAG9B,GAAKf,EAAKgB,KAAOjB,EAAM,GACtB,MAAO3D,GAAWiE,KAAMtC,EAIzBkC,MAAKE,OAAS,EACdF,KAAK,GAAKD,EAKX,MAFAC,MAAKjC,QAAUzB,EACf0D,KAAKlC,SAAWA,EACTkC,KAcH,MAAKlC,GAASyC,UACpBP,KAAKjC,QAAUiC,KAAK,GAAKlC,EACzBkC,KAAKE,OAAS,EACPF,MAIItD,EAAOiE,WAAY7C,GACvB3B,EAAWqD,MAAO1B,IAGrBA,EAASA,WAAa7B,IAC1B+D,KAAKlC,SAAWA,EAASA,SACzBkC,KAAKjC,QAAUD,EAASC,SAGlBrB,EAAOsE,UAAWlD,EAAUkC,QAIpClC,SAAU,GAGVoC,OAAQ,EAERe,QAAS,WACR,MAAO7D,GAAW8D,KAAMlB,OAKzBmB,IAAK,SAAUC,GACd,MAAc,OAAPA,EAGNpB,KAAKiB,UAGG,EAANG,EAAUpB,KAAMA,KAAKE,OAASkB,GAAQpB,KAAMoB,IAKhDC,UAAW,SAAUC,GAGpB,GAAIC,GAAM7E,EAAO2D,MAAOL,KAAKH,cAAeyB,EAO5C,OAJAC,GAAIC,WAAaxB,KACjBuB,EAAIxD,QAAUiC,KAAKjC,QAGZwD,GAMRE,KAAM,SAAUC,EAAUC,GACzB,MAAOjF,GAAO+E,KAAMzB,KAAM0B,EAAUC,IAGrCnC,MAAO,SAAUxB,GAIhB,MAFAtB,GAAO8C,MAAMoC,UAAUC,KAAM7D,GAEtBgC,MAGR3C,MAAO,WACN,MAAO2C,MAAKqB,UAAWjE,EAAW0E,MAAO9B,KAAM+B,aAGhDC,MAAO,WACN,MAAOhC,MAAKiC,GAAI,IAGjBC,KAAM,WACL,MAAOlC,MAAKiC,GAAI,KAGjBA,GAAI,SAAUE,GACb,GAAIC,GAAMpC,KAAKE,OACdmC,GAAKF,GAAU,EAAJA,EAAQC,EAAM,EAC1B,OAAOpC,MAAKqB,UAAWgB,GAAK,GAASD,EAAJC,GAAYrC,KAAKqC,SAGnDC,IAAK,SAAUZ,GACd,MAAO1B,MAAKqB,UAAW3E,EAAO4F,IAAItC,KAAM,SAAUD,EAAMoC,GACvD,MAAOT,GAASR,KAAMnB,EAAMoC,EAAGpC,OAIjCwC,IAAK,WACJ,MAAOvC,MAAKwB,YAAcxB,KAAKH,YAAY,OAK5C1C,KAAMD,EACNsF,QAASA,KACTC,UAAWA,QAIZ/F,EAAOsB,GAAGC,KAAK0B,UAAYjD,EAAOsB,GAElCtB,EAAOgG,OAAShG,EAAOsB,GAAG0E,OAAS,WAClC,GAAIC,GAAKC,EAAaC,EAAMC,EAAMC,EAASC,EAC1CC,EAASlB,UAAU,OACnBI,EAAI,EACJjC,EAAS6B,UAAU7B,OACnBgD,GAAO,CAqBR,KAlBuB,iBAAXD,KACXC,EAAOD,EACPA,EAASlB,UAAU,OAEnBI,EAAI,GAIkB,gBAAXc,IAAwBvG,EAAOiE,WAAWsC,KACrDA,MAII/C,IAAWiC,IACfc,EAASjD,OACPmC,GAGSjC,EAAJiC,EAAYA,IAEnB,GAAmC,OAA7BY,EAAUhB,UAAWI,IAE1B,IAAMW,IAAQC,GACbJ,EAAMM,EAAQH,GACdD,EAAOE,EAASD,GAGXG,IAAWJ,IAKXK,GAAQL,IAAUnG,EAAOgE,cAAcmC,KAAUD,EAAclG,EAAOyG,QAAQN,MAC7ED,GACJA,GAAc,EACdI,EAAQL,GAAOjG,EAAOyG,QAAQR,GAAOA,MAGrCK,EAAQL,GAAOjG,EAAOgE,cAAciC,GAAOA,KAI5CM,EAAQH,GAASpG,EAAOgG,OAAQQ,EAAMF,EAAOH,IAGlCA,IAAS5G,IACpBgH,EAAQH,GAASD,GAOrB,OAAOI,IAGRvG,EAAOgG,QAGNU,QAAS,UAAarG,EAAesG,KAAKC,UAAWC,QAAS,MAAO,IAErEC,WAAY,SAAUN,GASrB,MARKlH,GAAOY,IAAMF,IACjBV,EAAOY,EAAID,GAGPuG,GAAQlH,EAAOU,SAAWA,IAC9BV,EAAOU,OAASD,GAGVC,GAIR+G,SAAS,EAITC,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJlH,EAAOgH,YAEPhH,EAAO8C,OAAO,IAKhBA,MAAO,SAAUqE,GAGhB,GAAKA,KAAS,KAASnH,EAAOgH,WAAYhH,EAAO+G,QAAjD,CAKA,IAAMnH,EAASwH,KACd,MAAOC,YAAYrH,EAAO8C,MAI3B9C,GAAO+G,SAAU,EAGZI,KAAS,KAAUnH,EAAOgH,UAAY,IAK3CxH,EAAU8H,YAAa1H,GAAYI,IAG9BA,EAAOsB,GAAGiG,SACdvH,EAAQJ,GAAW2H,QAAQ,SAASC,IAAI,YAO1CvD,WAAY,SAAUwD,GACrB,MAA4B,aAArBzH,EAAO2C,KAAK8E,IAGpBhB,QAASiB,MAAMjB,SAAW,SAAUgB,GACnC,MAA4B,UAArBzH,EAAO2C,KAAK8E,IAGpBE,SAAU,SAAUF,GAEnB,MAAc,OAAPA,GAAeA,GAAOA,EAAInI,QAGlCsI,UAAW,SAAUH,GACpB,OAAQI,MAAOC,WAAWL,KAAUM,SAAUN,IAG/C9E,KAAM,SAAU8E,GACf,MAAY,OAAPA,EACWA,EAARO,GAEc,gBAARP,IAAmC,kBAARA,GACxCtH,EAAYW,EAAc0D,KAAKiD,KAAU,eAClCA,IAGTzD,cAAe,SAAUyD,GACxB,GAAIQ,EAKJ,KAAMR,GAA4B,WAArBzH,EAAO2C,KAAK8E,IAAqBA,EAAI5D,UAAY7D,EAAO2H,SAAUF,GAC9E,OAAO,CAGR,KAEC,GAAKA,EAAItE,cACPnC,EAAYwD,KAAKiD,EAAK,iBACtBzG,EAAYwD,KAAKiD,EAAItE,YAAYF,UAAW,iBAC7C,OAAO,EAEP,MAAQiF,GAET,OAAO,EAKR,GAAKlI,EAAOmI,QAAQC,QACnB,IAAMH,IAAOR,GACZ,MAAOzG,GAAYwD,KAAMiD,EAAKQ,EAMhC,KAAMA,IAAOR,IAEb,MAAOQ,KAAQ1I,GAAayB,EAAYwD,KAAMiD,EAAKQ,IAGpDI,cAAe,SAAUZ,GACxB,GAAIrB,EACJ,KAAMA,IAAQqB,GACb,OAAO,CAER,QAAO,GAGRa,MAAO,SAAUC,GAChB,KAAUC,OAAOD,IAMlB3E,UAAW,SAAU6E,EAAMpH,EAASqH,GACnC,IAAMD,GAAwB,gBAATA,GACpB,MAAO,KAEgB,kBAAZpH,KACXqH,EAAcrH,EACdA,GAAU,GAEXA,EAAUA,GAAWzB,CAErB,IAAI+I,GAAS9G,EAAW4B,KAAMgF,GAC7BG,GAAWF,KAGZ,OAAKC,IACKtH,EAAQwH,cAAeF,EAAO,MAGxCA,EAAS3I,EAAO8I,eAAiBL,GAAQpH,EAASuH,GAC7CA,GACJ5I,EAAQ4I,GAAUG,SAEZ/I,EAAO2D,SAAWgF,EAAOK,cAGjCC,UAAW,SAAUR,GAEpB,MAAKnJ,GAAO4J,MAAQ5J,EAAO4J,KAAKC,MACxB7J,EAAO4J,KAAKC,MAAOV,GAGb,OAATA,EACGA,EAGa,gBAATA,KAGXA,EAAOzI,EAAOmB,KAAMsH,GAEfA,GAGC3G,EAAYiC,KAAM0E,EAAK5B,QAAS7E,EAAc,KACjD6E,QAAS5E,EAAc,KACvB4E,QAAS9E,EAAc,MAEXqH,SAAU,UAAYX,MAKtCzI,EAAOsI,MAAO,iBAAmBG,GAAjCzI,IAIDqJ,SAAU,SAAUZ,GACnB,GAAIa,GAAKC,CACT,KAAMd,GAAwB,gBAATA,GACpB,MAAO,KAER,KACMnJ,EAAOkK,WACXD,EAAM,GAAIC,WACVF,EAAMC,EAAIE,gBAAiBhB,EAAO,cAElCa,EAAM,GAAII,eAAe,oBACzBJ,EAAIK,MAAQ,QACZL,EAAIM,QAASnB,IAEb,MAAOP,GACRoB,EAAM/J,EAKP,MAHM+J,IAAQA,EAAIxJ,kBAAmBwJ,EAAIO,qBAAsB,eAAgBrG,QAC9ExD,EAAOsI,MAAO,gBAAkBG,GAE1Ba,GAGRQ,KAAM,aAKNC,WAAY,SAAUtB,GAChBA,GAAQzI,EAAOmB,KAAMsH,KAIvBnJ,EAAO0K,YAAc,SAAUvB,GAChCnJ,EAAe,KAAEkF,KAAMlF,EAAQmJ,KAC3BA,IAMPwB,UAAW,SAAUC,GACpB,MAAOA,GAAOrD,QAAS3E,EAAW,OAAQ2E,QAAS1E,EAAYC,IAGhE+H,SAAU,SAAU9G,EAAM+C,GACzB,MAAO/C,GAAK8G,UAAY9G,EAAK8G,SAASC,gBAAkBhE,EAAKgE,eAI9DrF,KAAM,SAAU0C,EAAKzC,EAAUC,GAC9B,GAAIoF,GACH5E,EAAI,EACJjC,EAASiE,EAAIjE,OACbiD,EAAU6D,EAAa7C,EAExB,IAAKxC,GACJ,GAAKwB,GACJ,KAAYjD,EAAJiC,EAAYA,IAGnB,GAFA4E,EAAQrF,EAASI,MAAOqC,EAAKhC,GAAKR,GAE7BoF,KAAU,EACd,UAIF,KAAM5E,IAAKgC,GAGV,GAFA4C,EAAQrF,EAASI,MAAOqC,EAAKhC,GAAKR,GAE7BoF,KAAU,EACd,UAOH,IAAK5D,GACJ,KAAYjD,EAAJiC,EAAYA,IAGnB,GAFA4E,EAAQrF,EAASR,KAAMiD,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpC4E,KAAU,EACd,UAIF,KAAM5E,IAAKgC,GAGV,GAFA4C,EAAQrF,EAASR,KAAMiD,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpC4E,KAAU,EACd,KAMJ,OAAO5C,IAIRtG,KAAMD,IAAcA,EAAUsD,KAAK,gBAClC,SAAU+F,GACT,MAAe,OAARA,EACN,GACArJ,EAAUsD,KAAM+F,IAIlB,SAAUA,GACT,MAAe,OAARA,EACN,IACEA,EAAO,IAAK1D,QAASlF,EAAO,KAIjC2C,UAAW,SAAUkG,EAAKC,GACzB,GAAI5F,GAAM4F,KAaV,OAXY,OAAPD,IACCF,EAAaI,OAAOF,IACxBxK,EAAO2D,MAAOkB,EACE,gBAAR2F,IACLA,GAAQA,GAGXhK,EAAUgE,KAAMK,EAAK2F,IAIhB3F,GAGR8F,QAAS,SAAUtH,EAAMmH,EAAK/E,GAC7B,GAAIC,EAEJ,IAAK8E,EAAM,CACV,GAAK5J,EACJ,MAAOA,GAAa4D,KAAMgG,EAAKnH,EAAMoC,EAMtC,KAHAC,EAAM8E,EAAIhH,OACViC,EAAIA,EAAQ,EAAJA,EAAQkB,KAAKiE,IAAK,EAAGlF,EAAMD,GAAMA,EAAI,EAEjCC,EAAJD,EAASA,IAEhB,GAAKA,IAAK+E,IAAOA,EAAK/E,KAAQpC,EAC7B,MAAOoC,GAKV,MAAO,IAGR9B,MAAO,SAAU2B,EAAOuF,GACvB,GAAIC,GAAID,EAAOrH,OACdiC,EAAIH,EAAM9B,OACVmC,EAAI,CAEL,IAAkB,gBAANmF,GACX,KAAYA,EAAJnF,EAAOA,IACdL,EAAOG,KAAQoF,EAAQlF,OAGxB,OAAQkF,EAAOlF,KAAOpG,EACrB+F,EAAOG,KAAQoF,EAAQlF,IAMzB,OAFAL,GAAM9B,OAASiC,EAERH,GAGRyF,KAAM,SAAUnG,EAAOI,EAAUgG,GAChC,GAAIC,GACHpG,KACAY,EAAI,EACJjC,EAASoB,EAAMpB,MAKhB,KAJAwH,IAAQA,EAIIxH,EAAJiC,EAAYA,IACnBwF,IAAWjG,EAAUJ,EAAOa,GAAKA,GAC5BuF,IAAQC,GACZpG,EAAIpE,KAAMmE,EAAOa,GAInB,OAAOZ,IAIRe,IAAK,SAAUhB,EAAOI,EAAUkG,GAC/B,GAAIb,GACH5E,EAAI,EACJjC,EAASoB,EAAMpB,OACfiD,EAAU6D,EAAa1F,GACvBC,IAGD,IAAK4B,EACJ,KAAYjD,EAAJiC,EAAYA,IACnB4E,EAAQrF,EAAUJ,EAAOa,GAAKA,EAAGyF,GAEnB,MAATb,IACJxF,EAAKA,EAAIrB,QAAW6G,OAMtB,KAAM5E,IAAKb,GACVyF,EAAQrF,EAAUJ,EAAOa,GAAKA,EAAGyF,GAEnB,MAATb,IACJxF,EAAKA,EAAIrB,QAAW6G,EAMvB,OAAO/J,GAAY8E,SAAWP,IAI/BsG,KAAM,EAINC,MAAO,SAAU9J,EAAID,GACpB,GAAI4D,GAAMmG,EAAO7B,CAUjB,OARwB,gBAAZlI,KACXkI,EAAMjI,EAAID,GACVA,EAAUC,EACVA,EAAKiI,GAKAvJ,EAAOiE,WAAY3C,IAKzB2D,EAAOvE,EAAW8D,KAAMa,UAAW,GACnC+F,EAAQ,WACP,MAAO9J,GAAG8D,MAAO/D,GAAWiC,KAAM2B,EAAK1E,OAAQG,EAAW8D,KAAMa,cAIjE+F,EAAMD,KAAO7J,EAAG6J,KAAO7J,EAAG6J,MAAQnL,EAAOmL,OAElCC,GAZC7L,GAiBT8L,OAAQ,SAAUzG,EAAOtD,EAAI2G,EAAKoC,EAAOiB,EAAWC,EAAUC,GAC7D,GAAI/F,GAAI,EACPjC,EAASoB,EAAMpB,OACfiI,EAAc,MAAPxD,CAGR,IAA4B,WAAvBjI,EAAO2C,KAAMsF,GAAqB,CACtCqD,GAAY,CACZ,KAAM7F,IAAKwC,GACVjI,EAAOqL,OAAQzG,EAAOtD,EAAImE,EAAGwC,EAAIxC,IAAI,EAAM8F,EAAUC,OAIhD,IAAKnB,IAAU9K,IACrB+L,GAAY,EAENtL,EAAOiE,WAAYoG,KACxBmB,GAAM,GAGFC,IAECD,GACJlK,EAAGkD,KAAMI,EAAOyF,GAChB/I,EAAK,OAILmK,EAAOnK,EACPA,EAAK,SAAU+B,EAAM4E,EAAKoC,GACzB,MAAOoB,GAAKjH,KAAMxE,EAAQqD,GAAQgH,MAKhC/I,GACJ,KAAYkC,EAAJiC,EAAYA,IACnBnE,EAAIsD,EAAMa,GAAIwC,EAAKuD,EAAMnB,EAAQA,EAAM7F,KAAMI,EAAMa,GAAIA,EAAGnE,EAAIsD,EAAMa,GAAIwC,IAK3E,OAAOqD,GACN1G,EAGA6G,EACCnK,EAAGkD,KAAMI,GACTpB,EAASlC,EAAIsD,EAAM,GAAIqD,GAAQsD,GAGlCG,IAAK,WACJ,OAAO,GAAMC,OAASC,WAMvBC,KAAM,SAAUxI,EAAMgD,EAASrB,EAAUC,GACxC,GAAIJ,GAAKuB,EACR0F,IAGD,KAAM1F,IAAQC,GACbyF,EAAK1F,GAAS/C,EAAK0I,MAAO3F,GAC1B/C,EAAK0I,MAAO3F,GAASC,EAASD,EAG/BvB,GAAMG,EAASI,MAAO/B,EAAM4B,MAG5B,KAAMmB,IAAQC,GACbhD,EAAK0I,MAAO3F,GAAS0F,EAAK1F,EAG3B,OAAOvB,MAIT7E,EAAO8C,MAAMoC,QAAU,SAAUuC,GAChC,IAAMjI,EAOL,GALAA,EAAYQ,EAAOgM,WAKU,aAAxBpM,EAASgD,WAEbyE,WAAYrH,EAAO8C,WAGb,IAAKlD,EAAS8C,iBAEpB9C,EAAS8C,iBAAkB,mBAAoBF,GAAW,GAG1DlD,EAAOoD,iBAAkB,OAAQF,GAAW,OAGtC,CAEN5C,EAASqM,YAAa,qBAAsBzJ,GAG5ClD,EAAO2M,YAAa,SAAUzJ,EAI9B,IAAI0J,IAAM,CAEV,KACCA,EAA6B,MAAvB5M,EAAO6M,cAAwBvM,EAASE,gBAC7C,MAAMoI,IAEHgE,GAAOA,EAAIE,UACf,QAAUC,KACT,IAAMrM,EAAO+G,QAAU,CAEtB,IAGCmF,EAAIE,SAAS,QACZ,MAAMlE,GACP,MAAOb,YAAYgF,EAAe,IAInCxJ,IAGA7C,EAAO8C,YAMZ,MAAOtD,GAAU0F,QAASuC,IAI3BzH,EAAO+E,KAAK,gEAAgEuH,MAAM,KAAM,SAAS7G,EAAGW,GACnGjG,EAAY,WAAaiG,EAAO,KAAQA,EAAKgE,eAG9C,SAASE,GAAa7C,GACrB,GAAIjE,GAASiE,EAAIjE,OAChBb,EAAO3C,EAAO2C,KAAM8E,EAErB,OAAKzH,GAAO2H,SAAUF,IACd,EAGc,IAAjBA,EAAI5D,UAAkBL,GACnB,EAGQ,UAATb,GAA6B,aAATA,IACb,IAAXa,GACgB,gBAAXA,IAAuBA,EAAS,GAAOA,EAAS,IAAOiE,IAIhEhI,EAAaO,EAAOJ,GAWpB,SAAWN,EAAQC,GAEnB,GAAIkG,GACH0C,EACAoE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAlN,EACAC,EACAkN,EACAC,EACAC,EACAC,EACAC,EAGAzG,EAAU,UAAY,GAAKiF,MAC3ByB,EAAe9N,EAAOM,SACtByN,EAAU,EACVlI,EAAO,EACPmI,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,GAAe,EACfC,EAAY,SAAUC,EAAGC,GACxB,MAAKD,KAAMC,GACVH,GAAe,EACR,GAED,GAIRI,QAAsBvO,GACtBwO,EAAe,GAAK,GAGpBC,KAAc/M,eACduJ,KACAyD,EAAMzD,EAAIyD,IACVC,EAAc1D,EAAI/J,KAClBA,EAAO+J,EAAI/J,KACXE,EAAQ6J,EAAI7J,MAEZE,EAAU2J,EAAI3J,SAAW,SAAUwC,GAClC,GAAIoC,GAAI,EACPC,EAAMpC,KAAKE,MACZ,MAAYkC,EAAJD,EAASA,IAChB,GAAKnC,KAAKmC,KAAOpC,EAChB,MAAOoC,EAGT,OAAO,IAGR0I,EAAW,6HAKXC,EAAa,sBAEbC,EAAoB,mCAKpBC,EAAaD,EAAkBxH,QAAS,IAAK,MAG7C0H,EAAa,MAAQH,EAAa,KAAOC,EAAoB,IAAMD,EAClE,mBAAqBA,EAAa,wCAA0CE,EAAa,QAAUF,EAAa,OAQjHI,EAAU,KAAOH,EAAoB,mEAAqEE,EAAW1H,QAAS,EAAG,GAAM,eAGvIlF,EAAY8M,OAAQ,IAAML,EAAa,8BAAgCA,EAAa,KAAM,KAE1FM,EAAaD,OAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DO,EAAmBF,OAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FQ,EAAeH,OAAQL,EAAa,SACpCS,EAAuBJ,OAAQ,IAAML,EAAa,gBAAkBA,EAAa,OAAQ,KAEzFU,EAAcL,OAAQD,GACtBO,EAAkBN,OAAQ,IAAMH,EAAa,KAE7CU,GACCC,GAAUR,OAAQ,MAAQJ,EAAoB,KAC9Ca,MAAaT,OAAQ,QAAUJ,EAAoB,KACnDc,IAAWV,OAAQ,KAAOJ,EAAkBxH,QAAS,IAAK,MAAS,KACnEuI,KAAYX,OAAQ,IAAMF,GAC1Bc,OAAcZ,OAAQ,IAAMD,GAC5Bc,MAAab,OAAQ,yDAA2DL,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCmB,KAAYd,OAAQ,OAASN,EAAW,KAAM,KAG9CqB,aAAoBf,OAAQ,IAAML,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEqB,EAAU,yBAGV7N,EAAa,mCAEb8N,GAAU,sCACVC,GAAU,SAEVC,GAAU,QAGVC,GAAgBpB,OAAQ,qBAAuBL,EAAa,MAAQA,EAAa,OAAQ,MACzF0B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EAEO,EAAPE,EACClI,OAAOmI,aAAcD,EAAO,OAE5BlI,OAAOmI,aAA2B,MAAbD,GAAQ,GAA4B,MAAR,KAAPA,GAI9C,KACCzP,EAAK2E,MACHoF,EAAM7J,EAAM6D,KAAM4I,EAAapE,YAChCoE,EAAapE,YAIdwB,EAAK4C,EAAapE,WAAWxF,QAASK,SACrC,MAAQqE,IACTzH,GAAS2E,MAAOoF,EAAIhH,OAGnB,SAAU+C,EAAQ6J,GACjBlC,EAAY9I,MAAOmB,EAAQ5F,EAAM6D,KAAK4L,KAKvC,SAAU7J,EAAQ6J,GACjB,GAAIzK,GAAIY,EAAO/C,OACdiC,EAAI,CAEL,OAASc,EAAOZ,KAAOyK,EAAI3K,MAC3Bc,EAAO/C,OAASmC,EAAI,IAKvB,QAAS0K,IAAQjP,EAAUC,EAASoJ,EAAS6F,GAC5C,GAAIlN,GAAOC,EAAMkN,EAAG1M,EAEnB4B,EAAG+K,EAAQ1E,EAAK2E,EAAKC,EAAYC,CASlC,KAPOtP,EAAUA,EAAQyC,eAAiBzC,EAAU+L,KAAmBxN,GACtEkN,EAAazL,GAGdA,EAAUA,GAAWzB,EACrB6K,EAAUA,OAEJrJ,GAAgC,gBAAbA,GACxB,MAAOqJ,EAGR,IAAuC,KAAjC5G,EAAWxC,EAAQwC,WAAgC,IAAbA,EAC3C,QAGD,IAAKkJ,IAAmBuD,EAAO,CAG9B,GAAMlN,EAAQxB,EAAW6B,KAAMrC,GAE9B,GAAMmP,EAAInN,EAAM,IACf,GAAkB,IAAbS,EAAiB,CAIrB,GAHAR,EAAOhC,EAAQ8C,eAAgBoM,IAG1BlN,IAAQA,EAAKe,WAQjB,MAAOqG,EALP,IAAKpH,EAAKgB,KAAOkM,EAEhB,MADA9F,GAAQhK,KAAM4C,GACPoH,MAOT,IAAKpJ,EAAQyC,gBAAkBT,EAAOhC,EAAQyC,cAAcK,eAAgBoM,KAC3EpD,EAAU9L,EAASgC,IAAUA,EAAKgB,KAAOkM,EAEzC,MADA9F,GAAQhK,KAAM4C,GACPoH,MAKH,CAAA,GAAKrH,EAAM,GAEjB,MADA3C,GAAK2E,MAAOqF,EAASpJ,EAAQwI,qBAAsBzI,IAC5CqJ,CAGD,KAAM8F,EAAInN,EAAM,KAAO+E,EAAQyI,wBAA0BvP,EAAQuP,uBAEvE,MADAnQ,GAAK2E,MAAOqF,EAASpJ,EAAQuP,uBAAwBL,IAC9C9F,EAKT,GAAKtC,EAAQ0I,OAAS7D,IAAcA,EAAUjJ,KAAM3C,IAAc,CASjE,GARAqP,EAAM3E,EAAMpF,EACZgK,EAAarP,EACbsP,EAA2B,IAAb9M,GAAkBzC,EAMd,IAAbyC,GAAqD,WAAnCxC,EAAQ8I,SAASC,cAA6B,CACpEoG,EAASM,GAAU1P,IAEb0K,EAAMzK,EAAQ0P,aAAa,OAChCN,EAAM3E,EAAIjF,QAAS+I,GAAS,QAE5BvO,EAAQ2P,aAAc,KAAMP,GAE7BA,EAAM,QAAUA,EAAM,MAEtBhL,EAAI+K,EAAOhN,MACX,OAAQiC,IACP+K,EAAO/K,GAAKgL,EAAMQ,GAAYT,EAAO/K,GAEtCiL,GAAa9B,EAAS7K,KAAM3C,IAAcC,EAAQ+C,YAAc/C,EAChEsP,EAAcH,EAAOU,KAAK,KAG3B,GAAKP,EACJ,IAIC,MAHAlQ,GAAK2E,MAAOqF,EACXiG,EAAWS,iBAAkBR,IAEvBlG,EACN,MAAM2G,IACN,QACKtF,GACLzK,EAAQgQ,gBAAgB,QAQ7B,MAAOC,IAAQlQ,EAASyF,QAASlF,EAAO,MAAQN,EAASoJ,EAAS6F,GASnE,QAAS/C,MACR,GAAIgE,KAEJ,SAASC,GAAOvJ,EAAKoC,GAMpB,MAJKkH,GAAK9Q,KAAMwH,GAAO,KAAQuE,EAAKiF,mBAE5BD,GAAOD,EAAKG,SAEZF,EAAOvJ,GAAQoC,EAExB,MAAOmH,GAOR,QAASG,IAAcrQ,GAEtB,MADAA,GAAIoF,IAAY,EACTpF,EAOR,QAASsQ,IAAQtQ,GAChB,GAAIuQ,GAAMjS,EAASiJ,cAAc,MAEjC,KACC,QAASvH,EAAIuQ,GACZ,MAAO3J,GACR,OAAO,EACN,QAEI2J,EAAIzN,YACRyN,EAAIzN,WAAW0N,YAAaD,GAG7BA,EAAM,MASR,QAASE,IAAWC,EAAOC,GAC1B,GAAIzH,GAAMwH,EAAM1F,MAAM,KACrB7G,EAAIuM,EAAMxO,MAEX,OAAQiC,IACP+G,EAAK0F,WAAY1H,EAAI/E,IAAOwM,EAU9B,QAASE,IAAcvE,EAAGC,GACzB,GAAIuE,GAAMvE,GAAKD,EACdyE,EAAOD,GAAsB,IAAfxE,EAAE/J,UAAiC,IAAfgK,EAAEhK,YAChCgK,EAAEyE,aAAevE,KACjBH,EAAE0E,aAAevE,EAGtB,IAAKsE,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQvE,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAAS4E,IAAmB7P,GAC3B,MAAO,UAAUU,GAChB,GAAI+C,GAAO/C,EAAK8G,SAASC,aACzB,OAAgB,UAAThE,GAAoB/C,EAAKV,OAASA,GAQ3C,QAAS8P,IAAoB9P,GAC5B,MAAO,UAAUU,GAChB,GAAI+C,GAAO/C,EAAK8G,SAASC,aACzB,QAAiB,UAAThE,GAA6B,WAATA,IAAsB/C,EAAKV,OAASA,GAQlE,QAAS+P,IAAwBpR,GAChC,MAAOqQ,IAAa,SAAUgB,GAE7B,MADAA,IAAYA,EACLhB,GAAa,SAAUrB,EAAMpD,GACnC,GAAIvH,GACHiN,EAAetR,KAAQgP,EAAK9M,OAAQmP,GACpClN,EAAImN,EAAapP,MAGlB,OAAQiC,IACF6K,EAAO3K,EAAIiN,EAAanN,MAC5B6K,EAAK3K,KAAOuH,EAAQvH,GAAK2K,EAAK3K,SAWnC+G,EAAQ2D,GAAO3D,MAAQ,SAAUrJ,GAGhC,GAAIvD,GAAkBuD,IAASA,EAAKS,eAAiBT,GAAMvD,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgBqK,UAAsB,GAIhEhC,EAAUkI,GAAOlI,WAOjB2E,EAAcuD,GAAOvD,YAAc,SAAU+F,GAC5C,GAAIC,GAAMD,EAAOA,EAAK/O,eAAiB+O,EAAOzF,EAC7C2F,EAASD,EAAIE,WAGd,OAAKF,KAAQlT,GAA6B,IAAjBkT,EAAIjP,UAAmBiP,EAAIhT,iBAKpDF,EAAWkT,EACXjT,EAAUiT,EAAIhT,gBAGdiN,GAAkBL,EAAOoG,GAMpBC,GAAUA,EAAO9G,aAAe8G,IAAWA,EAAO7G,KACtD6G,EAAO9G,YAAa,iBAAkB,WACrCa,MASF3E,EAAQoG,WAAaqD,GAAO,SAAUC,GAErC,MADAA,GAAIoB,UAAY,KACRpB,EAAId,aAAa,eAO1B5I,EAAQ0B,qBAAuB+H,GAAO,SAAUC,GAE/C,MADAA,GAAIqB,YAAaJ,EAAIK,cAAc,MAC3BtB,EAAIhI,qBAAqB,KAAKrG,SAIvC2E,EAAQyI,uBAAyBgB,GAAO,SAAUC,GAQjD,MAPAA,GAAIuB,UAAY,+CAIhBvB,EAAIwB,WAAWJ,UAAY,IAGuB,IAA3CpB,EAAIjB,uBAAuB,KAAKpN,SAOxC2E,EAAQmL,QAAU1B,GAAO,SAAUC,GAElC,MADAhS,GAAQqT,YAAarB,GAAMxN,GAAKqC,GACxBoM,EAAIS,oBAAsBT,EAAIS,kBAAmB7M,GAAUlD,SAI/D2E,EAAQmL,SACZ9G,EAAK9I,KAAS,GAAI,SAAUW,EAAIhD,GAC/B,SAAYA,GAAQ8C,iBAAmB2J,GAAgBf,EAAiB,CACvE,GAAIwD,GAAIlP,EAAQ8C,eAAgBE,EAGhC,OAAOkM,IAAKA,EAAEnM,YAAcmM,QAG9B/D,EAAKgH,OAAW,GAAI,SAAUnP,GAC7B,GAAIoP,GAASpP,EAAGwC,QAASgJ,GAAWC,GACpC,OAAO,UAAUzM,GAChB,MAAOA,GAAK0N,aAAa,QAAU0C,YAM9BjH,GAAK9I,KAAS,GAErB8I,EAAKgH,OAAW,GAAK,SAAUnP,GAC9B,GAAIoP,GAASpP,EAAGwC,QAASgJ,GAAWC,GACpC,OAAO,UAAUzM,GAChB,GAAIwP,SAAcxP,GAAKqQ,mBAAqB5F,GAAgBzK,EAAKqQ,iBAAiB,KAClF,OAAOb,IAAQA,EAAKxI,QAAUoJ,KAMjCjH,EAAK9I,KAAU,IAAIyE,EAAQ0B,qBAC1B,SAAU8J,EAAKtS,GACd,aAAYA,GAAQwI,uBAAyBiE,EACrCzM,EAAQwI,qBAAsB8J,GADtC,GAID,SAAUA,EAAKtS,GACd,GAAIgC,GACHkG,KACA9D,EAAI,EACJgF,EAAUpJ,EAAQwI,qBAAsB8J,EAGzC,IAAa,MAARA,EAAc,CAClB,MAAStQ,EAAOoH,EAAQhF,KACA,IAAlBpC,EAAKQ,UACT0F,EAAI9I,KAAM4C,EAIZ,OAAOkG,GAER,MAAOkB,IAIT+B,EAAK9I,KAAY,MAAIyE,EAAQyI,wBAA0B,SAAUqC,EAAW5R,GAC3E,aAAYA,GAAQuP,yBAA2B9C,GAAgBf,EACvD1L,EAAQuP,uBAAwBqC,GADxC,GAWDhG,KAOAD,MAEM7E,EAAQ0I,IAAMpB,EAAQ1L,KAAM+O,EAAI3B,qBAGrCS,GAAO,SAAUC,GAMhBA,EAAIuB,UAAY,iDAIVvB,EAAIV,iBAAiB,cAAc3N,QACxCwJ,EAAUvM,KAAM,MAAQ2N,EAAa,aAAeD,EAAW,KAM1D0D,EAAIV,iBAAiB,YAAY3N,QACtCwJ,EAAUvM,KAAK,cAIjBmR,GAAO,SAAUC,GAOhB,GAAI+B,GAAQd,EAAIjK,cAAc,QAC9B+K,GAAM5C,aAAc,OAAQ,UAC5Ba,EAAIqB,YAAaU,GAAQ5C,aAAc,IAAK,IAEvCa,EAAIV,iBAAiB,WAAW3N,QACpCwJ,EAAUvM,KAAM,SAAW2N,EAAa,gBAKnCyD,EAAIV,iBAAiB,YAAY3N,QACtCwJ,EAAUvM,KAAM,WAAY,aAI7BoR,EAAIV,iBAAiB,QACrBnE,EAAUvM,KAAK,YAIX0H,EAAQ0L,gBAAkBpE,EAAQ1L,KAAOmJ,EAAUrN,EAAQiU,uBAChEjU,EAAQkU,oBACRlU,EAAQmU,kBACRnU,EAAQoU,qBAERrC,GAAO,SAAUC,GAGhB1J,EAAQ+L,kBAAoBhH,EAAQ1I,KAAMqN,EAAK,OAI/C3E,EAAQ1I,KAAMqN,EAAK,aACnB5E,EAAcxM,KAAM,KAAM+N,KAI5BxB,EAAYA,EAAUxJ,QAAciL,OAAQzB,EAAUkE,KAAK,MAC3DjE,EAAgBA,EAAczJ,QAAciL,OAAQxB,EAAciE,KAAK,MAQvE/D,EAAWsC,EAAQ1L,KAAMlE,EAAQsN,WAActN,EAAQsU,wBACtD,SAAUvG,EAAGC,GACZ,GAAIuG,GAAuB,IAAfxG,EAAE/J,SAAiB+J,EAAE9N,gBAAkB8N,EAClDyG,EAAMxG,GAAKA,EAAEzJ,UACd,OAAOwJ,KAAMyG,MAAWA,GAAwB,IAAjBA,EAAIxQ,YAClCuQ,EAAMjH,SACLiH,EAAMjH,SAAUkH,GAChBzG,EAAEuG,yBAA8D,GAAnCvG,EAAEuG,wBAAyBE,MAG3D,SAAUzG,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAEzJ,WACd,GAAKyJ,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTD,EAAY9N,EAAQsU,wBACpB,SAAUvG,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADAH,IAAe,EACR,CAGR,IAAI4G,GAAUzG,EAAEsG,yBAA2BvG,EAAEuG,yBAA2BvG,EAAEuG,wBAAyBtG,EAEnG,OAAKyG,GAEW,EAAVA,IACFnM,EAAQoM,cAAgB1G,EAAEsG,wBAAyBvG,KAAQ0G,EAGxD1G,IAAMkF,GAAO3F,EAASC,EAAcQ,GACjC,GAEHC,IAAMiF,GAAO3F,EAASC,EAAcS,GACjC,EAIDhB,EACJhM,EAAQ2D,KAAMqI,EAAWe,GAAM/M,EAAQ2D,KAAMqI,EAAWgB,GAC1D,EAGe,EAAVyG,EAAc,GAAK,EAIpB1G,EAAEuG,wBAA0B,GAAK,GAEzC,SAAUvG,EAAGC,GACZ,GAAIuE,GACH3M,EAAI,EACJ+O,EAAM5G,EAAExJ,WACRiQ,EAAMxG,EAAEzJ,WACRqQ,GAAO7G,GACP8G,GAAO7G,EAGR,IAAKD,IAAMC,EAEV,MADAH,IAAe,EACR,CAGD,KAAM8G,IAAQH,EACpB,MAAOzG,KAAMkF,EAAM,GAClBjF,IAAMiF,EAAM,EACZ0B,EAAM,GACNH,EAAM,EACNxH,EACEhM,EAAQ2D,KAAMqI,EAAWe,GAAM/M,EAAQ2D,KAAMqI,EAAWgB,GAC1D,CAGK,IAAK2G,IAAQH,EACnB,MAAOlC,IAAcvE,EAAGC,EAIzBuE,GAAMxE,CACN,OAASwE,EAAMA,EAAIhO,WAClBqQ,EAAGE,QAASvC,EAEbA,GAAMvE,CACN,OAASuE,EAAMA,EAAIhO,WAClBsQ,EAAGC,QAASvC,EAIb,OAAQqC,EAAGhP,KAAOiP,EAAGjP,GACpBA,GAGD,OAAOA,GAEN0M,GAAcsC,EAAGhP,GAAIiP,EAAGjP,IAGxBgP,EAAGhP,KAAO2H,EAAe,GACzBsH,EAAGjP,KAAO2H,EAAe,EACzB,GAGK0F,GA1UClT,GA6UTyQ,GAAOnD,QAAU,SAAU0H,EAAMC,GAChC,MAAOxE,IAAQuE,EAAM,KAAM,KAAMC,IAGlCxE,GAAOwD,gBAAkB,SAAUxQ,EAAMuR,GASxC,IAPOvR,EAAKS,eAAiBT,KAAWzD,GACvCkN,EAAazJ,GAIduR,EAAOA,EAAK/N,QAASgI,EAAkB,aAElC1G,EAAQ0L,kBAAmB9G,GAC5BE,GAAkBA,EAAclJ,KAAM6Q,IACtC5H,GAAkBA,EAAUjJ,KAAM6Q,IAErC,IACC,GAAI/P,GAAMqI,EAAQ1I,KAAMnB,EAAMuR,EAG9B,IAAK/P,GAAOsD,EAAQ+L,mBAGlB7Q,EAAKzD,UAAuC,KAA3ByD,EAAKzD,SAASiE,SAChC,MAAOgB,GAEP,MAAMqD,IAGT,MAAOmI,IAAQuE,EAAMhV,EAAU,MAAOyD,IAAQG,OAAS,GAGxD6M,GAAOlD,SAAW,SAAU9L,EAASgC,GAKpC,OAHOhC,EAAQyC,eAAiBzC,KAAczB,GAC7CkN,EAAazL,GAEP8L,EAAU9L,EAASgC,IAG3BgN,GAAOnM,KAAO,SAAUb,EAAM+C,IAEtB/C,EAAKS,eAAiBT,KAAWzD,GACvCkN,EAAazJ,EAGd,IAAI/B,GAAKkL,EAAK0F,WAAY9L,EAAKgE,eAE9B0K,EAAMxT,GAAM0M,EAAOxJ,KAAMgI,EAAK0F,WAAY9L,EAAKgE,eAC9C9I,EAAI+B,EAAM+C,GAAO2G,GACjBxN,CAEF,OAAOuV,KAAQvV,EACd4I,EAAQoG,aAAexB,EACtB1J,EAAK0N,aAAc3K,IAClB0O,EAAMzR,EAAKqQ,iBAAiBtN,KAAU0O,EAAIC,UAC1CD,EAAIzK,MACJ,KACFyK,GAGFzE,GAAO/H,MAAQ,SAAUC,GACxB,KAAUC,OAAO,0CAA4CD,IAO9D8H,GAAO2E,WAAa,SAAUvK,GAC7B,GAAIpH,GACH4R,KACAtP,EAAI,EACJF,EAAI,CAOL,IAJAiI,GAAgBvF,EAAQ+M,iBACxBrI,GAAa1E,EAAQgN,YAAc1K,EAAQ9J,MAAO,GAClD8J,EAAQ3E,KAAM6H,GAETD,EAAe,CACnB,MAASrK,EAAOoH,EAAQhF,KAClBpC,IAASoH,EAAShF,KACtBE,EAAIsP,EAAWxU,KAAMgF,GAGvB,OAAQE,IACP8E,EAAQ1E,OAAQkP,EAAYtP,GAAK,GAInC,MAAO8E,IAORgC,EAAU4D,GAAO5D,QAAU,SAAUpJ,GACpC,GAAIwP,GACHhO,EAAM,GACNY,EAAI,EACJ5B,EAAWR,EAAKQ,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArBR,GAAK+R,YAChB,MAAO/R,GAAK+R,WAGZ,KAAM/R,EAAOA,EAAKgQ,WAAYhQ,EAAMA,EAAOA,EAAKkP,YAC/C1N,GAAO4H,EAASpJ,OAGZ,IAAkB,IAAbQ,GAA+B,IAAbA,EAC7B,MAAOR,GAAKgS,cAhBZ,MAASxC,EAAOxP,EAAKoC,GAAKA,IAEzBZ,GAAO4H,EAASoG,EAkBlB,OAAOhO,IAGR2H,EAAO6D,GAAOiF,WAGb7D,YAAa,GAEb8D,aAAc5D,GAEdvO,MAAO4L,EAEPkD,cAEAxO,QAEA8R,UACCC,KAAOC,IAAK,aAAcpQ,OAAO,GACjCqQ,KAAOD,IAAK,cACZE,KAAOF,IAAK,kBAAmBpQ,OAAO,GACtCuQ,KAAOH,IAAK,oBAGbI,WACC1G,KAAQ,SAAUhM,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGyD,QAASgJ,GAAWC,IAGxC1M,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAM,IAAKyD,QAASgJ,GAAWC,IAE5C,OAAb1M,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAMzC,MAAO,EAAG,IAGxB2O,MAAS,SAAUlM,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAGgH,cAEY,QAA3BhH,EAAM,GAAGzC,MAAO,EAAG,IAEjByC,EAAM,IACXiN,GAAO/H,MAAOlF,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBiN,GAAO/H,MAAOlF,EAAM,IAGdA,GAGRiM,OAAU,SAAUjM,GACnB,GAAI2S,GACHC,GAAY5S,EAAM,IAAMA,EAAM,EAE/B,OAAK4L,GAAiB,MAAEjL,KAAMX,EAAM,IAC5B,MAIHA,EAAM,IAAMA,EAAM,KAAO7D,EAC7B6D,EAAM,GAAKA,EAAM,GAGN4S,GAAYlH,EAAQ/K,KAAMiS,KAEpCD,EAASjF,GAAUkF,GAAU,MAE7BD,EAASC,EAASnV,QAAS,IAAKmV,EAASxS,OAASuS,GAAWC,EAASxS,UAGvEJ,EAAM,GAAKA,EAAM,GAAGzC,MAAO,EAAGoV,GAC9B3S,EAAM,GAAK4S,EAASrV,MAAO,EAAGoV,IAIxB3S,EAAMzC,MAAO,EAAG,MAIzB6S,QAECrE,IAAO,SAAU8G,GAChB,GAAI9L,GAAW8L,EAAiBpP,QAASgJ,GAAWC,IAAY1F,aAChE,OAA4B,MAArB6L,EACN,WAAa,OAAO,GACpB,SAAU5S,GACT,MAAOA,GAAK8G,UAAY9G,EAAK8G,SAASC,gBAAkBD,IAI3D+E,MAAS,SAAU+D,GAClB,GAAIiD,GAAU5I,EAAY2F,EAAY,IAEtC,OAAOiD,KACLA,EAAczH,OAAQ,MAAQL,EAAa,IAAM6E,EAAY,IAAM7E,EAAa,SACjFd,EAAY2F,EAAW,SAAU5P,GAChC,MAAO6S,GAAQnS,KAAgC,gBAAnBV,GAAK4P,WAA0B5P,EAAK4P,iBAAoB5P,GAAK0N,eAAiBjD,GAAgBzK,EAAK0N,aAAa,UAAY,OAI3J3B,KAAQ,SAAUhJ,EAAM+P,EAAUC,GACjC,MAAO,UAAU/S,GAChB,GAAIgT,GAAShG,GAAOnM,KAAMb,EAAM+C,EAEhC,OAAe,OAAViQ,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOxV,QAASuV,GAChC,OAAbD,EAAoBC,GAASC,EAAOxV,QAASuV,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAO1V,OAAQyV,EAAM5S,UAAa4S,EAClD,OAAbD,GAAsB,IAAME,EAAS,KAAMxV,QAASuV,GAAU,GACjD,OAAbD,EAAoBE,IAAWD,GAASC,EAAO1V,MAAO,EAAGyV,EAAM5S,OAAS,KAAQ4S,EAAQ,KACxF,IAZO,IAgBV9G,MAAS,SAAU3M,EAAM2T,EAAM3D,EAAUrN,EAAOE,GAC/C,GAAI+Q,GAAgC,QAAvB5T,EAAKhC,MAAO,EAAG,GAC3B6V,EAA+B,SAArB7T,EAAKhC,MAAO,IACtB8V,EAAkB,YAATH,CAEV,OAAiB,KAAVhR,GAAwB,IAATE,EAGrB,SAAUnC,GACT,QAASA,EAAKe,YAGf,SAAUf,EAAMhC,EAASiI,GACxB,GAAIkI,GAAOkF,EAAY7D,EAAMR,EAAMsE,EAAWC,EAC7ClB,EAAMa,IAAWC,EAAU,cAAgB,kBAC3CzD,EAAS1P,EAAKe,WACdgC,EAAOqQ,GAAUpT,EAAK8G,SAASC,cAC/ByM,GAAYvN,IAAQmN,CAErB,IAAK1D,EAAS,CAGb,GAAKwD,EAAS,CACb,MAAQb,EAAM,CACb7C,EAAOxP,CACP,OAASwP,EAAOA,EAAM6C,GACrB,GAAKe,EAAS5D,EAAK1I,SAASC,gBAAkBhE,EAAyB,IAAlByM,EAAKhP,SACzD,OAAO,CAIT+S,GAAQlB,EAAe,SAAT/S,IAAoBiU,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUJ,EAAUzD,EAAOM,WAAaN,EAAO+D,WAG1CN,GAAWK,EAAW,CAE1BH,EAAa3D,EAAQrM,KAAcqM,EAAQrM,OAC3C8K,EAAQkF,EAAY/T,OACpBgU,EAAYnF,EAAM,KAAOnE,GAAWmE,EAAM,GAC1Ca,EAAOb,EAAM,KAAOnE,GAAWmE,EAAM,GACrCqB,EAAO8D,GAAa5D,EAAO/J,WAAY2N,EAEvC,OAAS9D,IAAS8D,GAAa9D,GAAQA,EAAM6C,KAG3CrD,EAAOsE,EAAY,IAAMC,EAAM3I,MAGhC,GAAuB,IAAlB4E,EAAKhP,YAAoBwO,GAAQQ,IAASxP,EAAO,CACrDqT,EAAY/T,IAAW0K,EAASsJ,EAAWtE,EAC3C,YAKI,IAAKwE,IAAarF,GAASnO,EAAMqD,KAAcrD,EAAMqD,QAAkB/D,KAAW6O,EAAM,KAAOnE,EACrGgF,EAAOb,EAAM,OAKb,OAASqB,IAAS8D,GAAa9D,GAAQA,EAAM6C,KAC3CrD,EAAOsE,EAAY,IAAMC,EAAM3I,MAEhC,IAAOwI,EAAS5D,EAAK1I,SAASC,gBAAkBhE,EAAyB,IAAlByM,EAAKhP,aAAsBwO,IAE5EwE,KACHhE,EAAMnM,KAAcmM,EAAMnM,QAAkB/D,IAAW0K,EAASgF,IAG7DQ,IAASxP,GACb,KAQJ,OADAgP,IAAQ7M,EACD6M,IAAS/M,GAA4B,IAAjB+M,EAAO/M,GAAe+M,EAAO/M,GAAS,KAKrE+J,OAAU,SAAU0H,EAAQpE,GAK3B,GAAI1N,GACH3D,EAAKkL,EAAKgC,QAASuI,IAAYvK,EAAKwK,WAAYD,EAAO3M,gBACtDiG,GAAO/H,MAAO,uBAAyByO,EAKzC,OAAKzV,GAAIoF,GACDpF,EAAIqR,GAIPrR,EAAGkC,OAAS,GAChByB,GAAS8R,EAAQA,EAAQ,GAAIpE,GACtBnG,EAAKwK,WAAW/V,eAAgB8V,EAAO3M,eAC7CuH,GAAa,SAAUrB,EAAMpD,GAC5B,GAAI+J,GACHC,EAAU5V,EAAIgP,EAAMqC,GACpBlN,EAAIyR,EAAQ1T,MACb,OAAQiC,IACPwR,EAAMpW,EAAQ2D,KAAM8L,EAAM4G,EAAQzR,IAClC6K,EAAM2G,KAAW/J,EAAS+J,GAAQC,EAAQzR,MAG5C,SAAUpC,GACT,MAAO/B,GAAI+B,EAAM,EAAG4B,KAIhB3D,IAITkN,SAEC2I,IAAOxF,GAAa,SAAUvQ,GAI7B,GAAIwS,MACHnJ,KACA2M,EAAUzK,EAASvL,EAASyF,QAASlF,EAAO,MAE7C,OAAOyV,GAAS1Q,GACfiL,GAAa,SAAUrB,EAAMpD,EAAS7L,EAASiI,GAC9C,GAAIjG,GACHgU,EAAYD,EAAS9G,EAAM,KAAMhH,MACjC7D,EAAI6K,EAAK9M,MAGV,OAAQiC,KACDpC,EAAOgU,EAAU5R,MACtB6K,EAAK7K,KAAOyH,EAAQzH,GAAKpC,MAI5B,SAAUA,EAAMhC,EAASiI,GAGxB,MAFAsK,GAAM,GAAKvQ,EACX+T,EAASxD,EAAO,KAAMtK,EAAKmB,IACnBA,EAAQwD,SAInBqJ,IAAO3F,GAAa,SAAUvQ,GAC7B,MAAO,UAAUiC,GAChB,MAAOgN,IAAQjP,EAAUiC,GAAOG,OAAS,KAI3C2J,SAAYwE,GAAa,SAAUpH,GAClC,MAAO,UAAUlH,GAChB,OAASA,EAAK+R,aAAe/R,EAAKkU,WAAa9K,EAASpJ,IAASxC,QAAS0J,GAAS,MAWrFiN,KAAQ7F,GAAc,SAAU6F,GAM/B,MAJMzI,GAAYhL,KAAKyT,GAAQ,KAC9BnH,GAAO/H,MAAO,qBAAuBkP,GAEtCA,EAAOA,EAAK3Q,QAASgJ,GAAWC,IAAY1F,cACrC,SAAU/G,GAChB,GAAIoU,EACJ,GACC,IAAMA,EAAW1K,EAChB1J,EAAKmU,KACLnU,EAAK0N,aAAa,aAAe1N,EAAK0N,aAAa,QAGnD,MADA0G,GAAWA,EAASrN,cACbqN,IAAaD,GAA2C,IAAnCC,EAAS5W,QAAS2W,EAAO,YAE5CnU,EAAOA,EAAKe,aAAiC,IAAlBf,EAAKQ,SAC3C,QAAO,KAKT0C,OAAU,SAAUlD,GACnB,GAAIqU,GAAOpY,EAAOK,UAAYL,EAAOK,SAAS+X,IAC9C,OAAOA,IAAQA,EAAK/W,MAAO,KAAQ0C,EAAKgB,IAGzCsT,KAAQ,SAAUtU,GACjB,MAAOA,KAASxD,GAGjB+X,MAAS,SAAUvU,GAClB,MAAOA,KAASzD,EAASiY,iBAAmBjY,EAASkY,UAAYlY,EAASkY,gBAAkBzU,EAAKV,MAAQU,EAAK0U,OAAS1U,EAAK2U,WAI7HC,QAAW,SAAU5U,GACpB,MAAOA,GAAK6U,YAAa,GAG1BA,SAAY,SAAU7U,GACrB,MAAOA,GAAK6U,YAAa,GAG1BC,QAAW,SAAU9U,GAGpB,GAAI8G,GAAW9G,EAAK8G,SAASC,aAC7B,OAAqB,UAAbD,KAA0B9G,EAAK8U,SAA0B,WAAbhO,KAA2B9G,EAAK+U,UAGrFA,SAAY,SAAU/U,GAOrB,MAJKA,GAAKe,YACTf,EAAKe,WAAWiU,cAGVhV,EAAK+U,YAAa,GAI1BE,MAAS,SAAUjV,GAMlB,IAAMA,EAAOA,EAAKgQ,WAAYhQ,EAAMA,EAAOA,EAAKkP,YAC/C,GAAKlP,EAAK8G,SAAW,KAAyB,IAAlB9G,EAAKQ,UAAoC,IAAlBR,EAAKQ,SACvD,OAAO,CAGT,QAAO,GAGRkP,OAAU,SAAU1P,GACnB,OAAQmJ,EAAKgC,QAAe,MAAGnL,IAIhCkV,OAAU,SAAUlV,GACnB,MAAOsM,IAAQ5L,KAAMV,EAAK8G,WAG3ByJ,MAAS,SAAUvQ,GAClB,MAAOqM,IAAQ3L,KAAMV,EAAK8G,WAG3BqO,OAAU,SAAUnV,GACnB,GAAI+C,GAAO/C,EAAK8G,SAASC,aACzB,OAAgB,UAAThE,GAAkC,WAAd/C,EAAKV,MAA8B,WAATyD,GAGtDmE,KAAQ,SAAUlH,GACjB,GAAIa,EAGJ,OAAuC,UAAhCb,EAAK8G,SAASC,eACN,SAAd/G,EAAKV,OACmC,OAArCuB,EAAOb,EAAK0N,aAAa,UAAoB7M,EAAKkG,gBAAkB/G,EAAKV,OAI9E2C,MAASoN,GAAuB,WAC/B,OAAS,KAGVlN,KAAQkN,GAAuB,SAAUE,EAAcpP,GACtD,OAASA,EAAS,KAGnB+B,GAAMmN,GAAuB,SAAUE,EAAcpP,EAAQmP,GAC5D,OAAoB,EAAXA,EAAeA,EAAWnP,EAASmP,KAG7C8F,KAAQ/F,GAAuB,SAAUE,EAAcpP,GACtD,GAAIiC,GAAI,CACR,MAAYjC,EAAJiC,EAAYA,GAAK,EACxBmN,EAAanS,KAAMgF,EAEpB,OAAOmN,KAGR8F,IAAOhG,GAAuB,SAAUE,EAAcpP,GACrD,GAAIiC,GAAI,CACR,MAAYjC,EAAJiC,EAAYA,GAAK,EACxBmN,EAAanS,KAAMgF,EAEpB,OAAOmN,KAGR+F,GAAMjG,GAAuB,SAAUE,EAAcpP,EAAQmP,GAC5D,GAAIlN,GAAe,EAAXkN,EAAeA,EAAWnP,EAASmP,CAC3C,QAAUlN,GAAK,GACdmN,EAAanS,KAAMgF,EAEpB,OAAOmN,KAGRgG,GAAMlG,GAAuB,SAAUE,EAAcpP,EAAQmP,GAC5D,GAAIlN,GAAe,EAAXkN,EAAeA,EAAWnP,EAASmP,CAC3C,MAAcnP,IAAJiC,GACTmN,EAAanS,KAAMgF,EAEpB,OAAOmN,OAKVpG,EAAKgC,QAAa,IAAIhC,EAAKgC,QAAY,EAGvC,KAAM/I,KAAOoT,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EzM,EAAKgC,QAAS/I,GAAM+M,GAAmB/M,EAExC,KAAMA,KAAOyT,QAAQ,EAAMC,OAAO,GACjC3M,EAAKgC,QAAS/I,GAAMgN,GAAoBhN,EAIzC,SAASuR,OACTA,GAAW/T,UAAYuJ,EAAK4M,QAAU5M,EAAKgC,QAC3ChC,EAAKwK,WAAa,GAAIA,GAEtB,SAASlG,IAAU1P,EAAUiY,GAC5B,GAAInC,GAAS9T,EAAOkW,EAAQ3W,EAC3B4W,EAAO/I,EAAQgJ,EACfC,EAASjM,EAAYpM,EAAW,IAEjC,IAAKqY,EACJ,MAAOJ,GAAY,EAAII,EAAO9Y,MAAO,EAGtC4Y,GAAQnY,EACRoP,KACAgJ,EAAahN,EAAKsJ,SAElB,OAAQyD,EAAQ,GAGTrC,IAAY9T,EAAQsL,EAAOjL,KAAM8V,OACjCnW,IAEJmW,EAAQA,EAAM5Y,MAAOyC,EAAM,GAAGI,SAAY+V,GAE3C/I,EAAO/P,KAAM6Y,OAGdpC,GAAU,GAGJ9T,EAAQuL,EAAalL,KAAM8V,MAChCrC,EAAU9T,EAAMsO,QAChB4H,EAAO7Y,MACN4J,MAAO6M,EAEPvU,KAAMS,EAAM,GAAGyD,QAASlF,EAAO,OAEhC4X,EAAQA,EAAM5Y,MAAOuW,EAAQ1T,QAI9B,KAAMb,IAAQ6J,GAAKgH,SACZpQ,EAAQ4L,EAAWrM,GAAOc,KAAM8V,KAAcC,EAAY7W,MAC9DS,EAAQoW,EAAY7W,GAAQS,MAC7B8T,EAAU9T,EAAMsO,QAChB4H,EAAO7Y,MACN4J,MAAO6M,EACPvU,KAAMA,EACNuK,QAAS9J,IAEVmW,EAAQA,EAAM5Y,MAAOuW,EAAQ1T,QAI/B,KAAM0T,EACL,MAOF,MAAOmC,GACNE,EAAM/V,OACN+V,EACClJ,GAAO/H,MAAOlH,GAEdoM,EAAYpM,EAAUoP,GAAS7P,MAAO,GAGzC,QAASsQ,IAAYqI,GACpB,GAAI7T,GAAI,EACPC,EAAM4T,EAAO9V,OACbpC,EAAW,EACZ,MAAYsE,EAAJD,EAASA,IAChBrE,GAAYkY,EAAO7T,GAAG4E,KAEvB,OAAOjJ,GAGR,QAASsY,IAAetC,EAASuC,EAAYC,GAC5C,GAAIlE,GAAMiE,EAAWjE,IACpBmE,EAAmBD,GAAgB,eAARlE,EAC3BoE,EAAW3U,GAEZ,OAAOwU,GAAWrU,MAEjB,SAAUjC,EAAMhC,EAASiI,GACxB,MAASjG,EAAOA,EAAMqS,GACrB,GAAuB,IAAlBrS,EAAKQ,UAAkBgW,EAC3B,MAAOzC,GAAS/T,EAAMhC,EAASiI,IAMlC,SAAUjG,EAAMhC,EAASiI,GACxB,GAAIb,GAAM+I,EAAOkF,EAChBqD,EAAS1M,EAAU,IAAMyM,CAG1B,IAAKxQ,GACJ,MAASjG,EAAOA,EAAMqS,GACrB,IAAuB,IAAlBrS,EAAKQ,UAAkBgW,IACtBzC,EAAS/T,EAAMhC,EAASiI,GAC5B,OAAO,MAKV,OAASjG,EAAOA,EAAMqS,GACrB,GAAuB,IAAlBrS,EAAKQ,UAAkBgW,EAE3B,GADAnD,EAAarT,EAAMqD,KAAcrD,EAAMqD,QACjC8K,EAAQkF,EAAYhB,KAAUlE,EAAM,KAAOuI,GAChD,IAAMtR,EAAO+I,EAAM,OAAQ,GAAQ/I,IAAS8D,EAC3C,MAAO9D,MAAS,MAKjB,IAFA+I,EAAQkF,EAAYhB,IAAUqE,GAC9BvI,EAAM,GAAK4F,EAAS/T,EAAMhC,EAASiI,IAASiD,EACvCiF,EAAM,MAAO,EACjB,OAAO,GASf,QAASwI,IAAgBC,GACxB,MAAOA,GAASzW,OAAS,EACxB,SAAUH,EAAMhC,EAASiI,GACxB,GAAI7D,GAAIwU,EAASzW,MACjB,OAAQiC,IACP,IAAMwU,EAASxU,GAAIpC,EAAMhC,EAASiI,GACjC,OAAO,CAGT,QAAO,GAER2Q,EAAS,GAGX,QAASC,IAAU7C,EAAWzR,EAAK4N,EAAQnS,EAASiI,GACnD,GAAIjG,GACH8W,KACA1U,EAAI,EACJC,EAAM2R,EAAU7T,OAChB4W,EAAgB,MAAPxU,CAEV,MAAYF,EAAJD,EAASA,KACVpC,EAAOgU,EAAU5R,OAChB+N,GAAUA,EAAQnQ,EAAMhC,EAASiI,MACtC6Q,EAAa1Z,KAAM4C,GACd+W,GACJxU,EAAInF,KAAMgF,GAMd,OAAO0U,GAGR,QAASE,IAAYvE,EAAW1U,EAAUgW,EAASkD,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAY5T,KAC/B4T,EAAaD,GAAYC,IAErBC,IAAeA,EAAY7T,KAC/B6T,EAAaF,GAAYE,EAAYC,IAE/B7I,GAAa,SAAUrB,EAAM7F,EAASpJ,EAASiI,GACrD,GAAImR,GAAMhV,EAAGpC,EACZqX,KACAC,KACAC,EAAcnQ,EAAQjH,OAGtBoB,EAAQ0L,GAAQuK,GAAkBzZ,GAAY,IAAKC,EAAQwC,UAAaxC,GAAYA,MAGpFyZ,GAAYhF,IAAexF,GAASlP,EAEnCwD,EADAsV,GAAUtV,EAAO8V,EAAQ5E,EAAWzU,EAASiI,GAG9CyR,EAAa3D,EAEZmD,IAAgBjK,EAAOwF,EAAY8E,GAAeN,MAMjD7P,EACDqQ,CAQF,IALK1D,GACJA,EAAS0D,EAAWC,EAAY1Z,EAASiI,GAIrCgR,EAAa,CACjBG,EAAOP,GAAUa,EAAYJ,GAC7BL,EAAYG,KAAUpZ,EAASiI,GAG/B7D,EAAIgV,EAAKjX,MACT,OAAQiC,KACDpC,EAAOoX,EAAKhV,MACjBsV,EAAYJ,EAAQlV,MAASqV,EAAWH,EAAQlV,IAAOpC,IAK1D,GAAKiN,GACJ,GAAKiK,GAAczE,EAAY,CAC9B,GAAKyE,EAAa,CAEjBE,KACAhV,EAAIsV,EAAWvX,MACf,OAAQiC,KACDpC,EAAO0X,EAAWtV,KAEvBgV,EAAKha,KAAOqa,EAAUrV,GAAKpC,EAG7BkX,GAAY,KAAOQ,KAAkBN,EAAMnR,GAI5C7D,EAAIsV,EAAWvX,MACf,OAAQiC,KACDpC,EAAO0X,EAAWtV,MACtBgV,EAAOF,EAAa1Z,EAAQ2D,KAAM8L,EAAMjN,GAASqX,EAAOjV,IAAM,KAE/D6K,EAAKmK,KAAUhQ,EAAQgQ,GAAQpX,SAOlC0X,GAAab,GACZa,IAAetQ,EACdsQ,EAAWhV,OAAQ6U,EAAaG,EAAWvX,QAC3CuX,GAEGR,EACJA,EAAY,KAAM9P,EAASsQ,EAAYzR,GAEvC7I,EAAK2E,MAAOqF,EAASsQ,KAMzB,QAASC,IAAmB1B,GAC3B,GAAI2B,GAAc7D,EAASzR,EAC1BD,EAAM4T,EAAO9V,OACb0X,EAAkB1O,EAAKgJ,SAAU8D,EAAO,GAAG3W,MAC3CwY,EAAmBD,GAAmB1O,EAAKgJ,SAAS,KACpD/P,EAAIyV,EAAkB,EAAI,EAG1BE,EAAe1B,GAAe,SAAUrW,GACvC,MAAOA,KAAS4X,GACdE,GAAkB,GACrBE,EAAkB3B,GAAe,SAAUrW,GAC1C,MAAOxC,GAAQ2D,KAAMyW,EAAc5X,GAAS,IAC1C8X,GAAkB,GACrBlB,GAAa,SAAU5W,EAAMhC,EAASiI,GACrC,OAAU4R,IAAqB5R,GAAOjI,IAAYuL,MAChDqO,EAAe5Z,GAASwC,SACxBuX,EAAc/X,EAAMhC,EAASiI,GAC7B+R,EAAiBhY,EAAMhC,EAASiI,KAGpC,MAAY5D,EAAJD,EAASA,IAChB,GAAM2R,EAAU5K,EAAKgJ,SAAU8D,EAAO7T,GAAG9C,MACxCsX,GAAaP,GAAcM,GAAgBC,GAAY7C,QACjD,CAIN,GAHAA,EAAU5K,EAAKgH,OAAQ8F,EAAO7T,GAAG9C,MAAOyC,MAAO,KAAMkU,EAAO7T,GAAGyH,SAG1DkK,EAAS1Q,GAAY,CAGzB,IADAf,IAAMF,EACMC,EAAJC,EAASA,IAChB,GAAK6G,EAAKgJ,SAAU8D,EAAO3T,GAAGhD,MAC7B,KAGF,OAAO0X,IACN5U,EAAI,GAAKuU,GAAgBC,GACzBxU,EAAI,GAAKwL,GAERqI,EAAO3Y,MAAO,EAAG8E,EAAI,GAAIlF,QAAS8J,MAAgC,MAAzBiP,EAAQ7T,EAAI,GAAI9C,KAAe,IAAM,MAC7EkE,QAASlF,EAAO,MAClByV,EACIzR,EAAJF,GAASuV,GAAmB1B,EAAO3Y,MAAO8E,EAAGE,IACzCD,EAAJC,GAAWqV,GAAoB1B,EAASA,EAAO3Y,MAAOgF,IAClDD,EAAJC,GAAWsL,GAAYqI,IAGzBW,EAASxZ,KAAM2W,GAIjB,MAAO4C,IAAgBC,GAGxB,QAASqB,IAA0BC,EAAiBC,GAEnD,GAAIC,GAAoB,EACvBC,EAAQF,EAAYhY,OAAS,EAC7BmY,EAAYJ,EAAgB/X,OAAS,EACrCoY,EAAe,SAAUtL,EAAMjP,EAASiI,EAAKmB,EAASoR,GACrD,GAAIxY,GAAMsC,EAAGyR,EACZ0E,KACAC,EAAe,EACftW,EAAI,IACJ4R,EAAY/G,MACZ0L,EAA6B,MAAjBH,EACZI,EAAgBrP,EAEhBhI,EAAQ0L,GAAQqL,GAAanP,EAAK9I,KAAU,IAAG,IAAKmY,GAAiBxa,EAAQ+C,YAAc/C,GAE3F6a,EAAiB7O,GAA4B,MAAjB4O,EAAwB,EAAItV,KAAKC,UAAY,EAS1E,KAPKoV,IACJpP,EAAmBvL,IAAYzB,GAAYyB,EAC3CkL,EAAakP,GAKe,OAApBpY,EAAOuB,EAAMa,IAAaA,IAAM,CACxC,GAAKkW,GAAatY,EAAO,CACxBsC,EAAI,CACJ,OAASyR,EAAUmE,EAAgB5V,KAClC,GAAKyR,EAAS/T,EAAMhC,EAASiI,GAAQ,CACpCmB,EAAQhK,KAAM4C,EACd,OAGG2Y,IACJ3O,EAAU6O,EACV3P,IAAekP,GAKZC,KAEErY,GAAQ+T,GAAW/T,IACxB0Y,IAIIzL,GACJ+G,EAAU5W,KAAM4C,IAOnB,GADA0Y,GAAgBtW,EACXiW,GAASjW,IAAMsW,EAAe,CAClCpW,EAAI,CACJ,OAASyR,EAAUoE,EAAY7V,KAC9ByR,EAASC,EAAWyE,EAAYza,EAASiI,EAG1C,IAAKgH,EAAO,CAEX,GAAKyL,EAAe,EACnB,MAAQtW,IACA4R,EAAU5R,IAAMqW,EAAWrW,KACjCqW,EAAWrW,GAAKwI,EAAIzJ,KAAMiG,GAM7BqR,GAAa5B,GAAU4B,GAIxBrb,EAAK2E,MAAOqF,EAASqR,GAGhBE,IAAc1L,GAAQwL,EAAWtY,OAAS,GAC5CuY,EAAeP,EAAYhY,OAAW,GAExC6M,GAAO2E,WAAYvK,GAUrB,MALKuR,KACJ3O,EAAU6O,EACVtP,EAAmBqP,GAGb5E,EAGT,OAAOqE,GACN/J,GAAciK,GACdA,EAGFjP,EAAU0D,GAAO1D,QAAU,SAAUvL,EAAU+a,GAC9C,GAAI1W,GACH+V,KACAD,KACA9B,EAAShM,EAAerM,EAAW,IAEpC,KAAMqY,EAAS,CAER0C,IACLA,EAAQrL,GAAU1P,IAEnBqE,EAAI0W,EAAM3Y,MACV,OAAQiC,IACPgU,EAASuB,GAAmBmB,EAAM1W,IAC7BgU,EAAQ/S,GACZ8U,EAAY/a,KAAMgZ,GAElB8B,EAAgB9a,KAAMgZ,EAKxBA,GAAShM,EAAerM,EAAUka,GAA0BC,EAAiBC,IAE9E,MAAO/B,GAGR,SAASoB,IAAkBzZ,EAAUgb,EAAU3R,GAC9C,GAAIhF,GAAI,EACPC,EAAM0W,EAAS5Y,MAChB,MAAYkC,EAAJD,EAASA,IAChB4K,GAAQjP,EAAUgb,EAAS3W,GAAIgF,EAEhC,OAAOA,GAGR,QAAS6G,IAAQlQ,EAAUC,EAASoJ,EAAS6F,GAC5C,GAAI7K,GAAG6T,EAAQ+C,EAAO1Z,EAAMe,EAC3BN,EAAQ0N,GAAU1P,EAEnB,KAAMkP,GAEiB,IAAjBlN,EAAMI,OAAe,CAIzB,GADA8V,EAASlW,EAAM,GAAKA,EAAM,GAAGzC,MAAO,GAC/B2Y,EAAO9V,OAAS,GAAkC,QAA5B6Y,EAAQ/C,EAAO,IAAI3W,MAC5CwF,EAAQmL,SAAgC,IAArBjS,EAAQwC,UAAkBkJ,GAC7CP,EAAKgJ,SAAU8D,EAAO,GAAG3W,MAAS,CAGnC,GADAtB,GAAYmL,EAAK9I,KAAS,GAAG2Y,EAAMnP,QAAQ,GAAGrG,QAAQgJ,GAAWC,IAAYzO,QAAkB,IACzFA,EACL,MAAOoJ,EAERrJ,GAAWA,EAAST,MAAO2Y,EAAO5H,QAAQrH,MAAM7G,QAIjDiC,EAAIuJ,EAAwB,aAAEjL,KAAM3C,GAAa,EAAIkY,EAAO9V,MAC5D,OAAQiC,IAAM,CAIb,GAHA4W,EAAQ/C,EAAO7T,GAGV+G,EAAKgJ,SAAW7S,EAAO0Z,EAAM1Z,MACjC,KAED,KAAMe,EAAO8I,EAAK9I,KAAMf,MAEjB2N,EAAO5M,EACZ2Y,EAAMnP,QAAQ,GAAGrG,QAASgJ,GAAWC,IACrClB,EAAS7K,KAAMuV,EAAO,GAAG3W,OAAUtB,EAAQ+C,YAAc/C,IACrD,CAKJ,GAFAiY,EAAOvT,OAAQN,EAAG,GAClBrE,EAAWkP,EAAK9M,QAAUyN,GAAYqI,IAChClY,EAEL,MADAX,GAAK2E,MAAOqF,EAAS6F,GACd7F,CAGR,SAgBL,MAPAkC,GAASvL,EAAUgC,GAClBkN,EACAjP,GACC0L,EACDtC,EACAmE,EAAS7K,KAAM3C,IAETqJ,EAMRtC,EAAQgN,WAAazO,EAAQ4F,MAAM,IAAIxG,KAAM6H,GAAYuD,KAAK,MAAQxK,EAItEyB,EAAQ+M,iBAAmBxH,EAG3BZ,IAIA3E,EAAQoM,aAAe3C,GAAO,SAAU0K,GAEvC,MAAuE,GAAhEA,EAAKnI,wBAAyBvU,EAASiJ,cAAc,UAMvD+I,GAAO,SAAUC,GAEtB,MADAA,GAAIuB,UAAY,mBAC+B,MAAxCvB,EAAIwB,WAAWtC,aAAa,WAEnCgB,GAAW,yBAA0B,SAAU1O,EAAM+C,EAAMsG,GAC1D,MAAMA,GAAN,EACQrJ,EAAK0N,aAAc3K,EAA6B,SAAvBA,EAAKgE,cAA2B,EAAI,KAOjEjC,EAAQoG,YAAeqD,GAAO,SAAUC,GAG7C,MAFAA,GAAIuB,UAAY,WAChBvB,EAAIwB,WAAWrC,aAAc,QAAS,IACY,KAA3Ca,EAAIwB,WAAWtC,aAAc,YAEpCgB,GAAW,QAAS,SAAU1O,EAAM+C,EAAMsG,GACzC,MAAMA,IAAyC,UAAhCrJ,EAAK8G,SAASC,cAA7B,EACQ/G,EAAKkZ,eAOT3K,GAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAId,aAAa,eAExBgB,GAAW5D,EAAU,SAAU9K,EAAM+C,EAAMsG,GAC1C,GAAIoI,EACJ,OAAMpI,GAAN,GACSoI,EAAMzR,EAAKqQ,iBAAkBtN,KAAW0O,EAAIC,UACnDD,EAAIzK,MACJhH,EAAM+C,MAAW,EAAOA,EAAKgE,cAAgB,OAKjDpK,EAAO0D,KAAO2M,GACdrQ,EAAO4U,KAAOvE,GAAOiF,UACrBtV,EAAO4U,KAAK,KAAO5U,EAAO4U,KAAKpG,QAC/BxO,EAAOwc,OAASnM,GAAO2E,WACvBhV,EAAOuK,KAAO8F,GAAO5D,QACrBzM,EAAOyc,SAAWpM,GAAO3D,MACzB1M,EAAOmN,SAAWkD,GAAOlD,UAGrB7N,EAEJ,IAAIod,KAGJ,SAASC,GAAetW,GACvB,GAAIuW,GAASF,EAAcrW,KAI3B,OAHArG,GAAO+E,KAAMsB,EAAQjD,MAAO1B,OAAwB,SAAUqO,EAAG8M,GAChED,EAAQC,IAAS,IAEXD,EAyBR5c,EAAO8c,UAAY,SAAUzW,GAI5BA,EAA6B,gBAAZA,GACdqW,EAAcrW,IAAasW,EAAetW,GAC5CrG,EAAOgG,UAAYK,EAEpB,IACC0W,GAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,KAEAC,GAASjX,EAAQkX,SAEjBC,EAAO,SAAU/U,GAOhB,IANAuU,EAAS3W,EAAQ2W,QAAUvU,EAC3BwU,GAAQ,EACRE,EAAcC,GAAe,EAC7BA,EAAc,EACdF,EAAeG,EAAK7Z,OACpBuZ,GAAS,EACDM,GAAsBH,EAAdC,EAA4BA,IAC3C,GAAKE,EAAMF,GAAc/X,MAAOqD,EAAM,GAAKA,EAAM,OAAU,GAASpC,EAAQoX,YAAc,CACzFT,GAAS,CACT,OAGFD,GAAS,EACJM,IACCC,EACCA,EAAM9Z,QACVga,EAAMF,EAAM5L,SAEFsL,EACXK,KAEAK,EAAKC,YAKRD,GAECE,IAAK,WACJ,GAAKP,EAAO,CAEX,GAAIzG,GAAQyG,EAAK7Z,QACjB,QAAUoa,GAAK3Y,GACdjF,EAAO+E,KAAME,EAAM,SAAU8K,EAAG7E,GAC/B,GAAIvI,GAAO3C,EAAO2C,KAAMuI,EACV,cAATvI,EACE0D,EAAQmW,QAAWkB,EAAKpG,IAAKpM,IAClCmS,EAAK5c,KAAMyK,GAEDA,GAAOA,EAAI1H,QAAmB,WAATb,GAEhCib,EAAK1S,OAGJ7F,WAGC0X,EACJG,EAAeG,EAAK7Z,OAGTwZ,IACXI,EAAcxG,EACd4G,EAAMR,IAGR,MAAO1Z,OAGRyF,OAAQ,WAkBP,MAjBKsU,IACJrd,EAAO+E,KAAMM,UAAW,SAAU0K,EAAG7E,GACpC,GAAI2S,EACJ,QAASA,EAAQ7d,EAAO2K,QAASO,EAAKmS,EAAMQ,IAAY,GACvDR,EAAKtX,OAAQ8X,EAAO,GAEfd,IACUG,GAATW,GACJX,IAEaC,GAATU,GACJV,OAME7Z,MAIRgU,IAAK,SAAUhW,GACd,MAAOA,GAAKtB,EAAO2K,QAASrJ,EAAI+b,GAAS,MAASA,IAAQA,EAAK7Z,SAGhE8U,MAAO,WAGN,MAFA+E,MACAH,EAAe,EACR5Z,MAGRqa,QAAS,WAER,MADAN,GAAOC,EAAQN,EAASzd,EACjB+D,MAGR4U,SAAU,WACT,OAAQmF,GAGTS,KAAM,WAKL,MAJAR,GAAQ/d,EACFyd,GACLU,EAAKC,UAECra,MAGRya,OAAQ,WACP,OAAQT,GAGTU,SAAU,SAAU3c,EAAS4D,GAU5B,OATKoY,GAAWJ,IAASK,IACxBrY,EAAOA,MACPA,GAAS5D,EAAS4D,EAAKtE,MAAQsE,EAAKtE,QAAUsE,GACzC8X,EACJO,EAAM7c,KAAMwE,GAEZuY,EAAMvY,IAGD3B,MAGRka,KAAM,WAEL,MADAE,GAAKM,SAAU1a,KAAM+B,WACd/B,MAGR2Z,MAAO,WACN,QAASA,GAIZ,OAAOS,IAER1d,EAAOgG,QAENgG,SAAU,SAAUiS,GACnB,GAAIC,KAEA,UAAW,OAAQle,EAAO8c,UAAU,eAAgB,aACpD,SAAU,OAAQ9c,EAAO8c,UAAU,eAAgB,aACnD,SAAU,WAAY9c,EAAO8c,UAAU,YAE1CqB,EAAQ,UACRjZ,GACCiZ,MAAO,WACN,MAAOA,IAERC,OAAQ,WAEP,MADAC,GAASlZ,KAAME,WAAYiZ,KAAMjZ,WAC1B/B,MAERib,KAAM,WACL,GAAIC,GAAMnZ,SACV,OAAOrF,GAAOgM,SAAS,SAAUyS,GAChCze,EAAO+E,KAAMmZ,EAAQ,SAAUzY,EAAGiZ,GACjC,GAAIC,GAASD,EAAO,GACnBpd,EAAKtB,EAAOiE,WAAYua,EAAK/Y,KAAS+Y,EAAK/Y,EAE5C4Y,GAAUK,EAAM,IAAK,WACpB,GAAIE,GAAWtd,GAAMA,EAAG8D,MAAO9B,KAAM+B,UAChCuZ,IAAY5e,EAAOiE,WAAY2a,EAAS1Z,SAC5C0Z,EAAS1Z,UACPC,KAAMsZ,EAASI,SACfP,KAAMG,EAASK,QACfC,SAAUN,EAASO,QAErBP,EAAUE,EAAS,QAAUrb,OAAS4B,EAAUuZ,EAASvZ,UAAY5B,KAAMhC,GAAOsd,GAAavZ,eAIlGmZ,EAAM,OACJtZ,WAIJA,QAAS,SAAUuC,GAClB,MAAc,OAAPA,EAAczH,EAAOgG,OAAQyB,EAAKvC,GAAYA,IAGvDmZ,IAwCD,OArCAnZ,GAAQ+Z,KAAO/Z,EAAQqZ,KAGvBve,EAAO+E,KAAMmZ,EAAQ,SAAUzY,EAAGiZ,GACjC,GAAIrB,GAAOqB,EAAO,GACjBQ,EAAcR,EAAO,EAGtBxZ,GAASwZ,EAAM,IAAOrB,EAAKO,IAGtBsB,GACJ7B,EAAKO,IAAI,WAERO,EAAQe,GAGNhB,EAAY,EAAJzY,GAAS,GAAIkY,QAASO,EAAQ,GAAK,GAAIJ,MAInDO,EAAUK,EAAM,IAAO,WAEtB,MADAL,GAAUK,EAAM,GAAK,QAAUpb,OAAS+a,EAAWnZ,EAAU5B,KAAM+B,WAC5D/B,MAER+a,EAAUK,EAAM,GAAK,QAAWrB,EAAKW,WAItC9Y,EAAQA,QAASmZ,GAGZJ,GACJA,EAAKzZ,KAAM6Z,EAAUA,GAIfA,GAIRc,KAAM,SAAUC,GACf,GAAI3Z,GAAI,EACP4Z,EAAgB3e,EAAW8D,KAAMa,WACjC7B,EAAS6b,EAAc7b,OAGvB8b,EAAuB,IAAX9b,GAAkB4b,GAAepf,EAAOiE,WAAYmb,EAAYla,SAAc1B,EAAS,EAGnG6a,EAAyB,IAAdiB,EAAkBF,EAAcpf,EAAOgM,WAGlDuT,EAAa,SAAU9Z,EAAG2W,EAAUoD,GACnC,MAAO,UAAUnV,GAChB+R,EAAU3W,GAAMnC,KAChBkc,EAAQ/Z,GAAMJ,UAAU7B,OAAS,EAAI9C,EAAW8D,KAAMa,WAAcgF,EAChEmV,IAAWC,EACdpB,EAASqB,WAAYtD,EAAUoD,KACfF,GAChBjB,EAAS/W,YAAa8U,EAAUoD,KAKnCC,EAAgBE,EAAkBC,CAGnC,IAAKpc,EAAS,EAIb,IAHAic,EAAqB/X,MAAOlE,GAC5Bmc,EAAuBjY,MAAOlE,GAC9Boc,EAAsBlY,MAAOlE,GACjBA,EAAJiC,EAAYA,IACd4Z,EAAe5Z,IAAOzF,EAAOiE,WAAYob,EAAe5Z,GAAIP,SAChEma,EAAe5Z,GAAIP,UACjBC,KAAMoa,EAAY9Z,EAAGma,EAAiBP,IACtCf,KAAMD,EAASS,QACfC,SAAUQ,EAAY9Z,EAAGka,EAAkBF,MAE3CH,CAUL,OAJMA,IACLjB,EAAS/W,YAAasY,EAAiBP,GAGjChB,EAASnZ,aAGlBlF,EAAOmI,QAAU,SAAWA,GAE3B,GAAI9F,GAAKuL,EAAGgG,EAAOtC,EAAQuO,EAAUC,EAAKC,EAAWC,EAAava,EACjEoM,EAAMjS,EAASiJ,cAAc,MAS9B,IANAgJ,EAAIb,aAAc,YAAa,KAC/Ba,EAAIuB,UAAY,qEAGhB/Q,EAAMwP,EAAIhI,qBAAqB,SAC/B+D,EAAIiE,EAAIhI,qBAAqB,KAAM,IAC7B+D,IAAMA,EAAE7B,QAAU1J,EAAImB,OAC3B,MAAO2E,EAIRmJ,GAAS1R,EAASiJ,cAAc,UAChCiX,EAAMxO,EAAO4B,YAAatT,EAASiJ,cAAc,WACjD+K,EAAQ/B,EAAIhI,qBAAqB,SAAU,GAE3C+D,EAAE7B,MAAMkU,QAAU,gCAGlB9X,EAAQ+X,gBAAoC,MAAlBrO,EAAIoB,UAG9B9K,EAAQgY,kBAAgD,IAA5BtO,EAAIwB,WAAWxP,SAI3CsE,EAAQiY,OAASvO,EAAIhI,qBAAqB,SAASrG,OAInD2E,EAAQkY,gBAAkBxO,EAAIhI,qBAAqB,QAAQrG,OAI3D2E,EAAQ4D,MAAQ,MAAMhI,KAAM6J,EAAEmD,aAAa,UAI3C5I,EAAQmY,eAA4C,OAA3B1S,EAAEmD,aAAa,QAKxC5I,EAAQoY,QAAU,OAAOxc,KAAM6J,EAAE7B,MAAMwU,SAIvCpY,EAAQqY,WAAa5S,EAAE7B,MAAMyU,SAG7BrY,EAAQsY,UAAY7M,EAAMvJ,MAI1BlC,EAAQuY,YAAcZ,EAAI1H,SAG1BjQ,EAAQwY,UAAY/gB,EAASiJ,cAAc,QAAQ8X,QAInDxY,EAAQyY,WAA2E,kBAA9DhhB,EAASiJ,cAAc,OAAOgY,WAAW,GAAOC,UAGrE3Y,EAAQ4Y,wBAAyB,EACjC5Y,EAAQ6Y,kBAAmB,EAC3B7Y,EAAQ8Y,eAAgB,EACxB9Y,EAAQ+Y,eAAgB,EACxB/Y,EAAQgZ,cAAe,EACvBhZ,EAAQiZ,qBAAsB,EAC9BjZ,EAAQkZ,mBAAoB,EAG5BzN,EAAMuE,SAAU,EAChBhQ,EAAQmZ,eAAiB1N,EAAMiN,WAAW,GAAO1I,QAIjD7G,EAAO4G,UAAW,EAClB/P,EAAQoZ,aAAezB,EAAI5H,QAG3B,WACQrG,GAAI9N,KACV,MAAOmE,GACRC,EAAQ+Y,eAAgB,EAIzBtN,EAAQhU,EAASiJ,cAAc,SAC/B+K,EAAM5C,aAAc,QAAS,IAC7B7I,EAAQyL,MAA0C,KAAlCA,EAAM7C,aAAc,SAGpC6C,EAAMvJ,MAAQ,IACduJ,EAAM5C,aAAc,OAAQ,SAC5B7I,EAAQqZ,WAA6B,MAAhB5N,EAAMvJ,MAG3BuJ,EAAM5C,aAAc,UAAW,KAC/B4C,EAAM5C,aAAc,OAAQ,KAE5B6O,EAAWjgB,EAAS6hB,yBACpB5B,EAAS3M,YAAaU,GAItBzL,EAAQuZ,cAAgB9N,EAAMuE,QAG9BhQ,EAAQwZ,WAAa9B,EAASgB,WAAW,GAAOA,WAAW,GAAO/J,UAAUqB,QAKvEtG,EAAI5F,cACR4F,EAAI5F,YAAa,UAAW,WAC3B9D,EAAQgZ,cAAe,IAGxBtP,EAAIgP,WAAW,GAAOe,QAKvB,KAAMnc,KAAOyT,QAAQ,EAAM2I,QAAQ,EAAMC,SAAS,GACjDjQ,EAAIb,aAAc+O,EAAY,KAAOta,EAAG,KAExC0C,EAAS1C,EAAI,WAAcsa,IAAazgB,IAAUuS,EAAItD,WAAYwR,GAAYrZ,WAAY,CAG3FmL,GAAI9F,MAAMgW,eAAiB,cAC3BlQ,EAAIgP,WAAW,GAAO9U,MAAMgW,eAAiB,GAC7C5Z,EAAQ6Z,gBAA+C,gBAA7BnQ,EAAI9F,MAAMgW,cAIpC,KAAMtc,IAAKzF,GAAQmI,GAClB,KAoGD,OAlGAA,GAAQC,QAAgB,MAAN3C,EAGlBzF,EAAO,WACN,GAAIiiB,GAAWC,EAAWC,EACzBC,EAAW,+HACXhb,EAAOxH,EAASiK,qBAAqB,QAAQ,EAExCzC,KAKN6a,EAAYriB,EAASiJ,cAAc,OACnCoZ,EAAUlW,MAAMkU,QAAU,gFAE1B7Y,EAAK8L,YAAa+O,GAAY/O,YAAarB,GAS3CA,EAAIuB,UAAY,8CAChB+O,EAAMtQ,EAAIhI,qBAAqB,MAC/BsY,EAAK,GAAIpW,MAAMkU,QAAU,2CACzBD,EAA0C,IAA1BmC,EAAK,GAAIE,aAEzBF,EAAK,GAAIpW,MAAMuW,QAAU,GACzBH,EAAK,GAAIpW,MAAMuW,QAAU,OAIzBna,EAAQoa,sBAAwBvC,GAA2C,IAA1BmC,EAAK,GAAIE,aAG1DxQ,EAAIuB,UAAY,GAChBvB,EAAI9F,MAAMkU,QAAU,wKAIpBjgB,EAAO6L,KAAMzE,EAAyB,MAAnBA,EAAK2E,MAAMyW,MAAiBA,KAAM,MAAU,WAC9Dra,EAAQsa,UAAgC,IAApB5Q,EAAI6Q,cAIpBpjB,EAAOqjB,mBACXxa,EAAQ8Y,cAAuE,QAArD3hB,EAAOqjB,iBAAkB9Q,EAAK,WAAe3F,IACvE/D,EAAQkZ,kBAA2F,SAArE/hB,EAAOqjB,iBAAkB9Q,EAAK,QAAY+Q,MAAO,QAAUA,MAMzFV,EAAYrQ,EAAIqB,YAAatT,EAASiJ,cAAc,QACpDqZ,EAAUnW,MAAMkU,QAAUpO,EAAI9F,MAAMkU,QAAUmC,EAC9CF,EAAUnW,MAAM8W,YAAcX,EAAUnW,MAAM6W,MAAQ,IACtD/Q,EAAI9F,MAAM6W,MAAQ,MAElBza,EAAQiZ,qBACNtZ,YAAcxI,EAAOqjB,iBAAkBT,EAAW,WAAeW,oBAGxDhR,GAAI9F,MAAMyW,OAAS9iB,IAK9BmS,EAAIuB,UAAY,GAChBvB,EAAI9F,MAAMkU,QAAUmC,EAAW,8CAC/Bja,EAAQ4Y,uBAA+C,IAApBlP,EAAI6Q,YAIvC7Q,EAAI9F,MAAMuW,QAAU,QACpBzQ,EAAIuB,UAAY,cAChBvB,EAAIwB,WAAWtH,MAAM6W,MAAQ,MAC7Bza,EAAQ6Y,iBAAyC,IAApBnP,EAAI6Q,YAE5Bva,EAAQ4Y,yBAIZ3Z,EAAK2E,MAAMyW,KAAO,IAIpBpb,EAAK0K,YAAamQ,GAGlBA,EAAYpQ,EAAMsQ,EAAMD,EAAY,QAIrC7f,EAAMiP,EAASuO,EAAWC,EAAMlS,EAAIgG,EAAQ,KAErCzL;KAGR,IAAI2a,GAAS,+BACZC,EAAa,UAEd,SAASC,GAAc3f,EAAM+C,EAAMqC,EAAMwa,GACxC,GAAMjjB,EAAOkjB,WAAY7f,GAAzB,CAIA,GAAIwB,GAAKse,EACRC,EAAcpjB,EAAO0G,QAIrB2c,EAAShgB,EAAKQ,SAId2N,EAAQ6R,EAASrjB,EAAOwR,MAAQnO,EAIhCgB,EAAKgf,EAAShgB,EAAM+f,GAAgB/f,EAAM+f,IAAiBA,CAI5D,IAAO/e,GAAOmN,EAAMnN,KAAS4e,GAAQzR,EAAMnN,GAAIoE,OAAUA,IAASlJ,GAA6B,gBAAT6G,GAgEtF,MA5DM/B,KAIJA,EADIgf,EACChgB,EAAM+f,GAAgBhjB,EAAgB6N,OAASjO,EAAOmL,OAEtDiY,GAID5R,EAAOnN,KAGZmN,EAAOnN,GAAOgf,MAAgBC,OAAQtjB,EAAO8J,QAKzB,gBAAT1D,IAAqC,kBAATA,MAClC6c,EACJzR,EAAOnN,GAAOrE,EAAOgG,OAAQwL,EAAOnN,GAAM+B,GAE1CoL,EAAOnN,GAAKoE,KAAOzI,EAAOgG,OAAQwL,EAAOnN,GAAKoE,KAAMrC,IAItD+c,EAAY3R,EAAOnN,GAKb4e,IACCE,EAAU1a,OACf0a,EAAU1a,SAGX0a,EAAYA,EAAU1a,MAGlBA,IAASlJ,IACb4jB,EAAWnjB,EAAOiK,UAAW7D,IAAWqC,GAKpB,gBAATrC,IAGXvB,EAAMse,EAAW/c,GAGL,MAAPvB,IAGJA,EAAMse,EAAWnjB,EAAOiK,UAAW7D,MAGpCvB,EAAMse,EAGAte,GAGR,QAAS0e,GAAoBlgB,EAAM+C,EAAM6c,GACxC,GAAMjjB,EAAOkjB,WAAY7f,GAAzB,CAIA,GAAI8f,GAAW1d,EACd4d,EAAShgB,EAAKQ,SAGd2N,EAAQ6R,EAASrjB,EAAOwR,MAAQnO,EAChCgB,EAAKgf,EAAShgB,EAAMrD,EAAO0G,SAAY1G,EAAO0G,OAI/C,IAAM8K,EAAOnN,GAAb,CAIA,GAAK+B,IAEJ+c,EAAYF,EAAMzR,EAAOnN,GAAOmN,EAAOnN,GAAKoE,MAE3B,CAGVzI,EAAOyG,QAASL,GAsBrBA,EAAOA,EAAK7F,OAAQP,EAAO4F,IAAKQ,EAAMpG,EAAOiK,YAnBxC7D,IAAQ+c,GACZ/c,GAASA,IAITA,EAAOpG,EAAOiK,UAAW7D,GAExBA,EADIA,IAAQ+c,IACH/c,GAEFA,EAAKkG,MAAM,MAarB7G,EAAIW,EAAK5C,MACT,OAAQiC,UACA0d,GAAW/c,EAAKX,GAKxB,IAAKwd,GAAOO,EAAkBL,IAAcnjB,EAAOqI,cAAc8a,GAChE,QAMGF,UACEzR,GAAOnN,GAAKoE,KAIb+a,EAAmBhS,EAAOnN,QAM5Bgf,EACJrjB,EAAOyjB,WAAapgB,IAAQ,GAIjBrD,EAAOmI,QAAQ+Y,eAAiB1P,GAASA,EAAMlS,aAEnDkS,GAAOnN,GAIdmN,EAAOnN,GAAO,QAIhBrE,EAAOgG,QACNwL,SAIAkS,QACCC,QAAU,EACVC,OAAS,EAEThH,OAAU,8CAGXiH,QAAS,SAAUxgB,GAElB,MADAA,GAAOA,EAAKQ,SAAW7D,EAAOwR,MAAOnO,EAAKrD,EAAO0G,UAAarD,EAAMrD,EAAO0G,WAClErD,IAASmgB,EAAmBngB,IAGtCoF,KAAM,SAAUpF,EAAM+C,EAAMqC,GAC3B,MAAOua,GAAc3f,EAAM+C,EAAMqC,IAGlCqb,WAAY,SAAUzgB,EAAM+C,GAC3B,MAAOmd,GAAoBlgB,EAAM+C,IAIlC2d,MAAO,SAAU1gB,EAAM+C,EAAMqC,GAC5B,MAAOua,GAAc3f,EAAM+C,EAAMqC,GAAM,IAGxCub,YAAa,SAAU3gB,EAAM+C,GAC5B,MAAOmd,GAAoBlgB,EAAM+C,GAAM,IAIxC8c,WAAY,SAAU7f,GAErB,GAAKA,EAAKQ,UAA8B,IAAlBR,EAAKQ,UAAoC,IAAlBR,EAAKQ,SACjD,OAAO,CAGR,IAAI6f,GAASrgB,EAAK8G,UAAYnK,EAAO0jB,OAAQrgB,EAAK8G,SAASC,cAG3D,QAAQsZ,GAAUA,KAAW,GAAQrgB,EAAK0N,aAAa,aAAe2S,KAIxE1jB,EAAOsB,GAAG0E,QACTyC,KAAM,SAAUR,EAAKoC,GACpB,GAAI2H,GAAO5L,EACVqC,EAAO,KACPhD,EAAI,EACJpC,EAAOC,KAAK,EAMb,IAAK2E,IAAQ1I,EAAY,CACxB,GAAK+D,KAAKE,SACTiF,EAAOzI,EAAOyI,KAAMpF,GAEG,IAAlBA,EAAKQ,WAAmB7D,EAAO+jB,MAAO1gB,EAAM,gBAAkB,CAElE,IADA2O,EAAQ3O,EAAKkL,WACDyD,EAAMxO,OAAViC,EAAkBA,IACzBW,EAAO4L,EAAMvM,GAAGW,KAEe,IAA1BA,EAAKvF,QAAQ,WACjBuF,EAAOpG,EAAOiK,UAAW7D,EAAKzF,MAAM,IAEpCsjB,EAAU5gB,EAAM+C,EAAMqC,EAAMrC,IAG9BpG,GAAO+jB,MAAO1gB,EAAM,eAAe,GAIrC,MAAOoF,GAIR,MAAoB,gBAARR,GACJ3E,KAAKyB,KAAK,WAChB/E,EAAOyI,KAAMnF,KAAM2E,KAId5C,UAAU7B,OAAS,EAGzBF,KAAKyB,KAAK,WACT/E,EAAOyI,KAAMnF,KAAM2E,EAAKoC,KAKzBhH,EAAO4gB,EAAU5gB,EAAM4E,EAAKjI,EAAOyI,KAAMpF,EAAM4E,IAAU,MAG3D6b,WAAY,SAAU7b,GACrB,MAAO3E,MAAKyB,KAAK,WAChB/E,EAAO8jB,WAAYxgB,KAAM2E,OAK5B,SAASgc,GAAU5gB,EAAM4E,EAAKQ,GAG7B,GAAKA,IAASlJ,GAA+B,IAAlB8D,EAAKQ,SAAiB,CAEhD,GAAIuC,GAAO,QAAU6B,EAAIpB,QAASkc,EAAY,OAAQ3Y,aAItD,IAFA3B,EAAOpF,EAAK0N,aAAc3K,GAEL,gBAATqC,GAAoB,CAC/B,IACCA,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvBqa,EAAO/e,KAAM0E,GAASzI,EAAOiJ,UAAWR,GACvCA,EACD,MAAOP,IAGTlI,EAAOyI,KAAMpF,EAAM4E,EAAKQ,OAGxBA,GAAOlJ,EAIT,MAAOkJ,GAIR,QAAS+a,GAAmB/b,GAC3B,GAAIrB,EACJ,KAAMA,IAAQqB,GAGb,IAAc,SAATrB,IAAmBpG,EAAOqI,cAAeZ,EAAIrB,MAGpC,WAATA,EACJ,OAAO,CAIT,QAAO,EAERpG,EAAOgG,QACNke,MAAO,SAAU7gB,EAAMV,EAAM8F,GAC5B,GAAIyb,EAEJ,OAAK7gB,IACJV,GAASA,GAAQ,MAAS,QAC1BuhB,EAAQlkB,EAAO+jB,MAAO1gB,EAAMV,GAGvB8F,KACEyb,GAASlkB,EAAOyG,QAAQgC,GAC7Byb,EAAQlkB,EAAO+jB,MAAO1gB,EAAMV,EAAM3C,EAAOsE,UAAUmE,IAEnDyb,EAAMzjB,KAAMgI,IAGPyb,OAZR,GAgBDC,QAAS,SAAU9gB,EAAMV,GACxBA,EAAOA,GAAQ,IAEf,IAAIuhB,GAAQlkB,EAAOkkB,MAAO7gB,EAAMV,GAC/ByhB,EAAcF,EAAM1gB,OACpBlC,EAAK4iB,EAAMxS,QACX2S,EAAQrkB,EAAOskB,YAAajhB,EAAMV,GAClC4hB,EAAO,WACNvkB,EAAOmkB,QAAS9gB,EAAMV,GAIZ,gBAAPrB,IACJA,EAAK4iB,EAAMxS,QACX0S,KAGI9iB,IAIU,OAATqB,GACJuhB,EAAMvP,QAAS,oBAIT0P,GAAMG,KACbljB,EAAGkD,KAAMnB,EAAMkhB,EAAMF,KAGhBD,GAAeC,GACpBA,EAAM/L,MAAMkF,QAKd8G,YAAa,SAAUjhB,EAAMV,GAC5B,GAAIsF,GAAMtF,EAAO,YACjB,OAAO3C,GAAO+jB,MAAO1gB,EAAM4E,IAASjI,EAAO+jB,MAAO1gB,EAAM4E,GACvDqQ,MAAOtY,EAAO8c,UAAU,eAAec,IAAI,WAC1C5d,EAAOgkB,YAAa3gB,EAAMV,EAAO,SACjC3C,EAAOgkB,YAAa3gB,EAAM4E,UAM9BjI,EAAOsB,GAAG0E,QACTke,MAAO,SAAUvhB,EAAM8F,GACtB,GAAIgc,GAAS,CAQb,OANqB,gBAAT9hB,KACX8F,EAAO9F,EACPA,EAAO,KACP8hB,KAGuBA,EAAnBpf,UAAU7B,OACPxD,EAAOkkB,MAAO5gB,KAAK,GAAIX,GAGxB8F,IAASlJ,EACf+D,KACAA,KAAKyB,KAAK,WACT,GAAImf,GAAQlkB,EAAOkkB,MAAO5gB,KAAMX,EAAM8F,EAGtCzI,GAAOskB,YAAahhB,KAAMX,GAEZ,OAATA,GAA8B,eAAbuhB,EAAM,IAC3BlkB,EAAOmkB,QAAS7gB,KAAMX,MAI1BwhB,QAAS,SAAUxhB,GAClB,MAAOW,MAAKyB,KAAK,WAChB/E,EAAOmkB,QAAS7gB,KAAMX,MAKxB+hB,MAAO,SAAUC,EAAMhiB,GAItB,MAHAgiB,GAAO3kB,EAAO4kB,GAAK5kB,EAAO4kB,GAAGC,OAAQF,IAAUA,EAAOA,EACtDhiB,EAAOA,GAAQ,KAERW,KAAK4gB,MAAOvhB,EAAM,SAAU4hB,EAAMF,GACxC,GAAIS,GAAUzd,WAAYkd,EAAMI,EAChCN,GAAMG,KAAO,WACZO,aAAcD,OAIjBE,WAAY,SAAUriB,GACrB,MAAOW,MAAK4gB,MAAOvhB,GAAQ,UAI5BuC,QAAS,SAAUvC,EAAM8E,GACxB,GAAI8B,GACH0b,EAAQ,EACRC,EAAQllB,EAAOgM,WACf6I,EAAWvR,KACXmC,EAAInC,KAAKE,OACTqb,EAAU,aACCoG,GACTC,EAAM5d,YAAauN,GAAYA,IAIb,iBAATlS,KACX8E,EAAM9E,EACNA,EAAOpD,GAERoD,EAAOA,GAAQ,IAEf,OAAO8C,IACN8D,EAAMvJ,EAAO+jB,MAAOlP,EAAUpP,GAAK9C,EAAO,cACrC4G,GAAOA,EAAI+O,QACf2M,IACA1b,EAAI+O,MAAMsF,IAAKiB,GAIjB,OADAA,KACOqG,EAAMhgB,QAASuC,KAGxB,IAAI0d,GAAUC,EACbC,EAAS,cACTC,EAAU,MACVC,EAAa,6CACbC,EAAa,gBACbC,EAAc,0BACdvF,EAAkBlgB,EAAOmI,QAAQ+X,gBACjCwF,EAAc1lB,EAAOmI,QAAQyL,KAE9B5T,GAAOsB,GAAG0E,QACT9B,KAAM,SAAUkC,EAAMiE,GACrB,MAAOrK,GAAOqL,OAAQ/H,KAAMtD,EAAOkE,KAAMkC,EAAMiE,EAAOhF,UAAU7B,OAAS,IAG1EmiB,WAAY,SAAUvf,GACrB,MAAO9C,MAAKyB,KAAK,WAChB/E,EAAO2lB,WAAYriB,KAAM8C,MAI3Bwf,KAAM,SAAUxf,EAAMiE,GACrB,MAAOrK,GAAOqL,OAAQ/H,KAAMtD,EAAO4lB,KAAMxf,EAAMiE,EAAOhF,UAAU7B,OAAS,IAG1EqiB,WAAY,SAAUzf,GAErB,MADAA,GAAOpG,EAAO8lB,QAAS1f,IAAUA,EAC1B9C,KAAKyB,KAAK,WAEhB,IACCzB,KAAM8C,GAAS7G,QACR+D,MAAM8C,GACZ,MAAO8B,QAIX6d,SAAU,SAAU1b,GACnB,GAAI2b,GAAS3iB,EAAM+O,EAAK6T,EAAOtgB,EAC9BF,EAAI,EACJC,EAAMpC,KAAKE,OACX0iB,EAA2B,gBAAV7b,IAAsBA,CAExC,IAAKrK,EAAOiE,WAAYoG,GACvB,MAAO/G,MAAKyB,KAAK,SAAUY,GAC1B3F,EAAQsD,MAAOyiB,SAAU1b,EAAM7F,KAAMlB,KAAMqC,EAAGrC,KAAK2P,aAIrD,IAAKiT,EAIJ,IAFAF,GAAY3b,GAAS,IAAKjH,MAAO1B,OAErBgE,EAAJD,EAASA,IAOhB,GANApC,EAAOC,KAAMmC,GACb2M,EAAwB,IAAlB/O,EAAKQ,WAAoBR,EAAK4P,WACjC,IAAM5P,EAAK4P,UAAY,KAAMpM,QAASwe,EAAQ,KAChD,KAGU,CACV1f,EAAI,CACJ,OAASsgB,EAAQD,EAAQrgB,KACgB,EAAnCyM,EAAIvR,QAAS,IAAMolB,EAAQ,OAC/B7T,GAAO6T,EAAQ,IAGjB5iB,GAAK4P,UAAYjT,EAAOmB,KAAMiR,GAMjC,MAAO9O,OAGR6iB,YAAa,SAAU9b,GACtB,GAAI2b,GAAS3iB,EAAM+O,EAAK6T,EAAOtgB,EAC9BF,EAAI,EACJC,EAAMpC,KAAKE,OACX0iB,EAA+B,IAArB7gB,UAAU7B,QAAiC,gBAAV6G,IAAsBA,CAElE,IAAKrK,EAAOiE,WAAYoG,GACvB,MAAO/G,MAAKyB,KAAK,SAAUY,GAC1B3F,EAAQsD,MAAO6iB,YAAa9b,EAAM7F,KAAMlB,KAAMqC,EAAGrC,KAAK2P,aAGxD,IAAKiT,EAGJ,IAFAF,GAAY3b,GAAS,IAAKjH,MAAO1B,OAErBgE,EAAJD,EAASA,IAQhB,GAPApC,EAAOC,KAAMmC,GAEb2M,EAAwB,IAAlB/O,EAAKQ,WAAoBR,EAAK4P,WACjC,IAAM5P,EAAK4P,UAAY,KAAMpM,QAASwe,EAAQ,KAChD,IAGU,CACV1f,EAAI,CACJ,OAASsgB,EAAQD,EAAQrgB,KAExB,MAAQyM,EAAIvR,QAAS,IAAMolB,EAAQ,MAAS,EAC3C7T,EAAMA,EAAIvL,QAAS,IAAMof,EAAQ,IAAK,IAGxC5iB,GAAK4P,UAAY5I,EAAQrK,EAAOmB,KAAMiR,GAAQ,GAKjD,MAAO9O,OAGR8iB,YAAa,SAAU/b,EAAOgc,GAC7B,GAAI1jB,SAAc0H,EAElB,OAAyB,iBAAbgc,IAAmC,WAAT1jB,EAC9B0jB,EAAW/iB,KAAKyiB,SAAU1b,GAAU/G,KAAK6iB,YAAa9b,GAGzDrK,EAAOiE,WAAYoG,GAChB/G,KAAKyB,KAAK,SAAUU,GAC1BzF,EAAQsD,MAAO8iB,YAAa/b,EAAM7F,KAAKlB,KAAMmC,EAAGnC,KAAK2P,UAAWoT,GAAWA,KAItE/iB,KAAKyB,KAAK,WAChB,GAAc,WAATpC,EAAoB,CAExB,GAAIsQ,GACHxN,EAAI,EACJiY,EAAO1d,EAAQsD,MACfgjB,EAAajc,EAAMjH,MAAO1B,MAE3B,OAASuR,EAAYqT,EAAY7gB,KAE3BiY,EAAK6I,SAAUtT,GACnByK,EAAKyI,YAAalT,GAElByK,EAAKqI,SAAU9S,QAKNtQ,IAASjD,GAA8B,YAATiD,KACpCW,KAAK2P,WAETjT,EAAO+jB,MAAOzgB,KAAM,gBAAiBA,KAAK2P,WAO3C3P,KAAK2P,UAAY3P,KAAK2P,WAAa5I,KAAU,EAAQ,GAAKrK,EAAO+jB,MAAOzgB,KAAM,kBAAqB,OAKtGijB,SAAU,SAAUnlB,GACnB,GAAI6R,GAAY,IAAM7R,EAAW,IAChCqE,EAAI,EACJqF,EAAIxH,KAAKE,MACV,MAAYsH,EAAJrF,EAAOA,IACd,GAA0B,IAArBnC,KAAKmC,GAAG5B,WAAmB,IAAMP,KAAKmC,GAAGwN,UAAY,KAAKpM,QAAQwe,EAAQ,KAAKxkB,QAASoS,IAAe,EAC3G,OAAO,CAIT,QAAO,GAGR6B,IAAK,SAAUzK,GACd,GAAIxF,GAAKwf,EAAOpgB,EACfZ,EAAOC,KAAK,EAEb,EAAA,GAAM+B,UAAU7B,OAsBhB,MAFAS,GAAajE,EAAOiE,WAAYoG,GAEzB/G,KAAKyB,KAAK,SAAUU,GAC1B,GAAIqP,EAEmB,KAAlBxR,KAAKO,WAKTiR,EADI7Q,EACEoG,EAAM7F,KAAMlB,KAAMmC,EAAGzF,EAAQsD,MAAOwR,OAEpCzK,EAIK,MAAPyK,EACJA,EAAM,GACoB,gBAARA,GAClBA,GAAO,GACI9U,EAAOyG,QAASqO,KAC3BA,EAAM9U,EAAO4F,IAAIkP,EAAK,SAAWzK,GAChC,MAAgB,OAATA,EAAgB,GAAKA,EAAQ,MAItCga,EAAQrkB,EAAOwmB,SAAUljB,KAAKX,OAAU3C,EAAOwmB,SAAUljB,KAAK6G,SAASC,eAGjEia,GAAW,OAASA,IAAUA,EAAMoC,IAAKnjB,KAAMwR,EAAK,WAAcvV,IACvE+D,KAAK+G,MAAQyK,KAjDd,IAAKzR,EAGJ,MAFAghB,GAAQrkB,EAAOwmB,SAAUnjB,EAAKV,OAAU3C,EAAOwmB,SAAUnjB,EAAK8G,SAASC,eAElEia,GAAS,OAASA,KAAUxf,EAAMwf,EAAM5f,IAAKpB,EAAM,YAAe9D,EAC/DsF,GAGRA,EAAMxB,EAAKgH,MAEW,gBAARxF,GAEbA,EAAIgC,QAAQye,EAAS,IAEd,MAAPzgB,EAAc,GAAKA,OA0CxB7E,EAAOgG,QACNwgB,UACCE,QACCjiB,IAAK,SAAUpB,GAEd,GAAIyR,GAAM9U,EAAO0D,KAAKQ,KAAMb,EAAM,QAClC,OAAc,OAAPyR,EACNA,EACAzR,EAAKkH,OAGR+G,QACC7M,IAAK,SAAUpB,GACd,GAAIgH,GAAOqc,EACVrgB,EAAUhD,EAAKgD,QACfwX,EAAQxa,EAAKgV,cACbsO,EAAoB,eAAdtjB,EAAKV,MAAiC,EAARkb,EACpC2B,EAASmH,EAAM,QACf/b,EAAM+b,EAAM9I,EAAQ,EAAIxX,EAAQ7C,OAChCiC,EAAY,EAARoY,EACHjT,EACA+b,EAAM9I,EAAQ,CAGhB,MAAYjT,EAAJnF,EAASA,IAIhB,GAHAihB,EAASrgB,EAASZ,MAGXihB,EAAOtO,UAAY3S,IAAMoY,IAE5B7d,EAAOmI,QAAQoZ,YAAemF,EAAOxO,SAA+C,OAApCwO,EAAO3V,aAAa,cACnE2V,EAAOtiB,WAAW8T,UAAalY,EAAOmK,SAAUuc,EAAOtiB,WAAY,aAAiB,CAMxF,GAHAiG,EAAQrK,EAAQ0mB,GAAS5R,MAGpB6R,EACJ,MAAOtc,EAIRmV,GAAO/e,KAAM4J,GAIf,MAAOmV,IAGRiH,IAAK,SAAUpjB,EAAMgH,GACpB,GAAIuc,GAAWF,EACdrgB,EAAUhD,EAAKgD,QACfmZ,EAASxf,EAAOsE,UAAW+F,GAC3B5E,EAAIY,EAAQ7C,MAEb,OAAQiC,IACPihB,EAASrgB,EAASZ,IACZihB,EAAOtO,SAAWpY,EAAO2K,QAAS3K,EAAO0mB,GAAQ5R,MAAO0K,IAAY,KACzEoH,GAAY,EAQd,OAHMA,KACLvjB,EAAKgV,cAAgB,IAEfmH,KAKVtb,KAAM,SAAUb,EAAM+C,EAAMiE,GAC3B,GAAIga,GAAOxf,EACVgiB,EAAQxjB,EAAKQ,QAGd,IAAMR,GAAkB,IAAVwjB,GAAyB,IAAVA,GAAyB,IAAVA,EAK5C,aAAYxjB,GAAK0N,eAAiBrR,EAC1BM,EAAO4lB,KAAMviB,EAAM+C,EAAMiE,IAKlB,IAAVwc,GAAgB7mB,EAAOyc,SAAUpZ,KACrC+C,EAAOA,EAAKgE,cACZia,EAAQrkB,EAAO8mB,UAAW1gB,KACvBpG,EAAO4U,KAAKxR,MAAMmM,KAAKxL,KAAMqC,GAASgf,EAAWD,IAGhD9a,IAAU9K,EAaH8kB,GAAS,OAASA,IAA6C,QAAnCxf,EAAMwf,EAAM5f,IAAKpB,EAAM+C,IACvDvB,GAGPA,EAAM7E,EAAO0D,KAAKQ,KAAMb,EAAM+C,GAGhB,MAAPvB,EACNtF,EACAsF,GApBc,OAAVwF,EAGOga,GAAS,OAASA,KAAUxf,EAAMwf,EAAMoC,IAAKpjB,EAAMgH,EAAOjE,MAAY7G,EAC1EsF,GAGPxB,EAAK2N,aAAc5K,EAAMiE,EAAQ,IAC1BA,IAPPrK,EAAO2lB,WAAYtiB,EAAM+C,GAAzBpG,KAuBH2lB,WAAY,SAAUtiB,EAAMgH,GAC3B,GAAIjE,GAAM2gB,EACTthB,EAAI,EACJuhB,EAAY3c,GAASA,EAAMjH,MAAO1B,EAEnC,IAAKslB,GAA+B,IAAlB3jB,EAAKQ,SACtB,MAASuC,EAAO4gB,EAAUvhB,KACzBshB,EAAW/mB,EAAO8lB,QAAS1f,IAAUA,EAGhCpG,EAAO4U,KAAKxR,MAAMmM,KAAKxL,KAAMqC,GAE5Bsf,GAAexF,IAAoBuF,EAAY1hB,KAAMqC,GACzD/C,EAAM0jB,IAAa,EAInB1jB,EAAMrD,EAAOiK,UAAW,WAAa7D,IACpC/C,EAAM0jB,IAAa,EAKrB/mB,EAAOkE,KAAMb,EAAM+C,EAAM,IAG1B/C,EAAKgO,gBAAiB6O,EAAkB9Z,EAAO2gB,IAKlDD,WACCnkB,MACC8jB,IAAK,SAAUpjB,EAAMgH,GACpB,IAAMrK,EAAOmI,QAAQqZ,YAAwB,UAAVnX,GAAqBrK,EAAOmK,SAAS9G,EAAM,SAAW,CAGxF,GAAIyR,GAAMzR,EAAKgH,KAKf,OAJAhH,GAAK2N,aAAc,OAAQ3G,GACtByK,IACJzR,EAAKgH,MAAQyK,GAEPzK,MAMXyb,SACCmB,MAAO,UACPC,QAAS,aAGVtB,KAAM,SAAUviB,EAAM+C,EAAMiE,GAC3B,GAAIxF,GAAKwf,EAAO8C,EACfN,EAAQxjB,EAAKQ,QAGd,IAAMR,GAAkB,IAAVwjB,GAAyB,IAAVA,GAAyB,IAAVA,EAY5C,MARAM,GAAmB,IAAVN,IAAgB7mB,EAAOyc,SAAUpZ,GAErC8jB,IAEJ/gB,EAAOpG,EAAO8lB,QAAS1f,IAAUA,EACjCie,EAAQrkB,EAAOonB,UAAWhhB,IAGtBiE,IAAU9K,EACP8kB,GAAS,OAASA,KAAUxf,EAAMwf,EAAMoC,IAAKpjB,EAAMgH,EAAOjE,MAAY7G,EAC5EsF,EACExB,EAAM+C,GAASiE,EAGXga,GAAS,OAASA,IAA6C,QAAnCxf,EAAMwf,EAAM5f,IAAKpB,EAAM+C,IACzDvB,EACAxB,EAAM+C,IAITghB,WACCpP,UACCvT,IAAK,SAAUpB,GAId,GAAIgkB,GAAWrnB,EAAO0D,KAAKQ,KAAMb,EAAM,WAEvC,OAAOgkB,GACNC,SAAUD,EAAU,IACpB9B,EAAWxhB,KAAMV,EAAK8G,WAAcqb,EAAWzhB,KAAMV,EAAK8G,WAAc9G,EAAK0U,KAC5E,EACA,QAONqN,GACCqB,IAAK,SAAUpjB,EAAMgH,EAAOjE,GAa3B,MAZKiE,MAAU,EAEdrK,EAAO2lB,WAAYtiB,EAAM+C,GACdsf,GAAexF,IAAoBuF,EAAY1hB,KAAMqC,GAEhE/C,EAAK2N,cAAekP,GAAmBlgB,EAAO8lB,QAAS1f,IAAUA,EAAMA,GAIvE/C,EAAMrD,EAAOiK,UAAW,WAAa7D,IAAW/C,EAAM+C,IAAS,EAGzDA,IAGTpG,EAAO+E,KAAM/E,EAAO4U,KAAKxR,MAAMmM,KAAK9N,OAAO2B,MAAO,QAAU,SAAUqC,EAAGW,GACxE,GAAImhB,GAASvnB,EAAO4U,KAAK1C,WAAY9L,IAAUpG,EAAO0D,KAAKQ,IAE3DlE,GAAO4U,KAAK1C,WAAY9L,GAASsf,GAAexF,IAAoBuF,EAAY1hB,KAAMqC,GACrF,SAAU/C,EAAM+C,EAAMsG,GACrB,GAAIpL,GAAKtB,EAAO4U,KAAK1C,WAAY9L,GAChCvB,EAAM6H,EACLnN,GAECS,EAAO4U,KAAK1C,WAAY9L,GAAS7G,IACjCgoB,EAAQlkB,EAAM+C,EAAMsG,GAEpBtG,EAAKgE,cACL,IAEH,OADApK,GAAO4U,KAAK1C,WAAY9L,GAAS9E,EAC1BuD,GAER,SAAUxB,EAAM+C,EAAMsG,GACrB,MAAOA,GACNnN,EACA8D,EAAMrD,EAAOiK,UAAW,WAAa7D,IACpCA,EAAKgE,cACL,QAKCsb,GAAgBxF,IACrBlgB,EAAO8mB,UAAUzc,OAChBoc,IAAK,SAAUpjB,EAAMgH,EAAOjE,GAC3B,MAAKpG,GAAOmK,SAAU9G,EAAM,UAE3BA,EAAKkZ,aAAelS,EAApBhH,GAGO8hB,GAAYA,EAASsB,IAAKpjB,EAAMgH,EAAOjE,MAO5C8Z,IAILiF,GACCsB,IAAK,SAAUpjB,EAAMgH,EAAOjE,GAE3B,GAAIvB,GAAMxB,EAAKqQ,iBAAkBtN,EAUjC,OATMvB,IACLxB,EAAKmkB,iBACH3iB,EAAMxB,EAAKS,cAAc2jB,gBAAiBrhB,IAI7CvB,EAAIwF,MAAQA,GAAS,GAGL,UAATjE,GAAoBiE,IAAUhH,EAAK0N,aAAc3K,GACvDiE,EACA9K,IAGHS,EAAO4U,KAAK1C,WAAW7N,GAAKrE,EAAO4U,KAAK1C,WAAW9L,KAAOpG,EAAO4U,KAAK1C,WAAWwV,OAEhF,SAAUrkB,EAAM+C,EAAMsG,GACrB,GAAI7H,EACJ,OAAO6H,GACNnN,GACCsF,EAAMxB,EAAKqQ,iBAAkBtN,KAAyB,KAAdvB,EAAIwF,MAC5CxF,EAAIwF,MACJ,MAEJrK,EAAOwmB,SAAShO,QACf/T,IAAK,SAAUpB,EAAM+C,GACpB,GAAIvB,GAAMxB,EAAKqQ,iBAAkBtN,EACjC,OAAOvB,IAAOA,EAAIkQ,UACjBlQ,EAAIwF,MACJ9K,GAEFknB,IAAKtB,EAASsB,KAKfzmB,EAAO8mB,UAAUa,iBAChBlB,IAAK,SAAUpjB,EAAMgH,EAAOjE,GAC3B+e,EAASsB,IAAKpjB,EAAgB,KAAVgH,GAAe,EAAQA,EAAOjE,KAMpDpG,EAAO+E,MAAO,QAAS,UAAY,SAAUU,EAAGW,GAC/CpG,EAAO8mB,UAAW1gB,IACjBqgB,IAAK,SAAUpjB,EAAMgH,GACpB,MAAe,KAAVA,GACJhH,EAAK2N,aAAc5K,EAAM,QAClBiE,GAFR,OAYErK,EAAOmI,QAAQmY,gBAEpBtgB,EAAO+E,MAAO,OAAQ,OAAS,SAAUU,EAAGW,GAC3CpG,EAAOonB,UAAWhhB,IACjB3B,IAAK,SAAUpB,GACd,MAAOA,GAAK0N,aAAc3K,EAAM,OAM9BpG,EAAOmI,QAAQ4D,QACpB/L,EAAO8mB,UAAU/a,OAChBtH,IAAK,SAAUpB,GAId,MAAOA,GAAK0I,MAAMkU,SAAW1gB,GAE9BknB,IAAK,SAAUpjB,EAAMgH,GACpB,MAAShH,GAAK0I,MAAMkU,QAAU5V,EAAQ,MAOnCrK,EAAOmI,QAAQuY,cACpB1gB,EAAOonB,UAAUhP,UAChB3T,IAAK,SAAUpB,GACd,GAAI0P,GAAS1P,EAAKe,UAUlB,OARK2O,KACJA,EAAOsF,cAGFtF,EAAO3O,YACX2O,EAAO3O,WAAWiU,eAGb,QAKVrY,EAAO+E,MACN,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACF/E,EAAO8lB,QAASxiB,KAAK8G,eAAkB9G,OAIlCtD,EAAOmI,QAAQwY,UACpB3gB,EAAO8lB,QAAQnF,QAAU,YAI1B3gB,EAAO+E,MAAO,QAAS,YAAc,WACpC/E,EAAOwmB,SAAUljB,OAChBmjB,IAAK,SAAUpjB,EAAMgH,GACpB,MAAKrK,GAAOyG,QAAS4D,GACXhH,EAAK8U,QAAUnY,EAAO2K,QAAS3K,EAAOqD,GAAMyR,MAAOzK,IAAW,EADxE,IAKIrK,EAAOmI,QAAQsY,UACpBzgB,EAAOwmB,SAAUljB,MAAOmB,IAAM,SAAUpB,GAGvC,MAAsC,QAA/BA,EAAK0N,aAAa,SAAoB,KAAO1N,EAAKgH,SAI5D,IAAIud,GAAa,+BAChBC,GAAY,OACZC,GAAc,+BACdC,GAAc,kCACdC,GAAiB,sBAElB,SAASC,MACR,OAAO,EAGR,QAASC,MACR,OAAO,EAGR,QAASC,MACR,IACC,MAAOvoB,GAASiY,cACf,MAAQuQ,KAOXpoB,EAAOyC,OAEN4lB,UAEAzK,IAAK,SAAUva,EAAMilB,EAAOrW,EAASxJ,EAAMrH,GAC1C,GAAImI,GAAKgf,EAAQC,EAAGC,EACnBC,EAASC,EAAaC,EACtBC,EAAUlmB,EAAMmmB,EAAYC,EAC5BC,EAAWhpB,EAAO+jB,MAAO1gB,EAG1B,IAAM2lB,EAAN,CAKK/W,EAAQA,UACZwW,EAAcxW,EACdA,EAAUwW,EAAYxW,QACtB7Q,EAAWqnB,EAAYrnB,UAIlB6Q,EAAQ9G,OACb8G,EAAQ9G,KAAOnL,EAAOmL,SAIhBod,EAASS,EAAST,UACxBA,EAASS,EAAST,YAEZI,EAAcK,EAASC,UAC7BN,EAAcK,EAASC,OAAS,SAAU/gB,GAGzC,aAAclI,KAAWN,GAAuBwI,GAAKlI,EAAOyC,MAAMymB,YAAchhB,EAAEvF,KAEjFpD,EADAS,EAAOyC,MAAM0mB,SAAS/jB,MAAOujB,EAAYtlB,KAAMgC,YAIjDsjB,EAAYtlB,KAAOA,GAIpBilB,GAAUA,GAAS,IAAKllB,MAAO1B,KAAqB,IACpD8mB,EAAIF,EAAM9kB,MACV,OAAQglB,IACPjf,EAAMye,GAAevkB,KAAM6kB,EAAME,QACjC7lB,EAAOomB,EAAWxf,EAAI,GACtBuf,GAAevf,EAAI,IAAM,IAAK+C,MAAO,KAAMxG,OAGrCnD,IAKN+lB,EAAU1oB,EAAOyC,MAAMimB,QAAS/lB,OAGhCA,GAASvB,EAAWsnB,EAAQU,aAAeV,EAAQW,WAAc1mB,EAGjE+lB,EAAU1oB,EAAOyC,MAAMimB,QAAS/lB,OAGhCimB,EAAY5oB,EAAOgG,QAClBrD,KAAMA,EACNomB,SAAUA,EACVtgB,KAAMA,EACNwJ,QAASA,EACT9G,KAAM8G,EAAQ9G,KACd/J,SAAUA,EACVoO,aAAcpO,GAAYpB,EAAO4U,KAAKxR,MAAMoM,aAAazL,KAAM3C,GAC/DkoB,UAAWR,EAAW5X,KAAK,MACzBuX,IAGII,EAAWN,EAAQ5lB,MACzBkmB,EAAWN,EAAQ5lB,MACnBkmB,EAASU,cAAgB,EAGnBb,EAAQc,OAASd,EAAQc,MAAMhlB,KAAMnB,EAAMoF,EAAMqgB,EAAYH,MAAkB,IAE/EtlB,EAAKX,iBACTW,EAAKX,iBAAkBC,EAAMgmB,GAAa,GAE/BtlB,EAAK4I,aAChB5I,EAAK4I,YAAa,KAAOtJ,EAAMgmB,KAK7BD,EAAQ9K,MACZ8K,EAAQ9K,IAAIpZ,KAAMnB,EAAMulB,GAElBA,EAAU3W,QAAQ9G,OACvByd,EAAU3W,QAAQ9G,KAAO8G,EAAQ9G,OAK9B/J,EACJynB,EAAS9iB,OAAQ8iB,EAASU,gBAAiB,EAAGX,GAE9CC,EAASpoB,KAAMmoB,GAIhB5oB,EAAOyC,MAAM4lB,OAAQ1lB,IAAS,EAI/BU,GAAO,OAIR0F,OAAQ,SAAU1F,EAAMilB,EAAOrW,EAAS7Q,EAAUqoB,GACjD,GAAI9jB,GAAGijB,EAAWrf,EACjBmgB,EAAWlB,EAAGD,EACdG,EAASG,EAAUlmB,EACnBmmB,EAAYC,EACZC,EAAWhpB,EAAO6jB,QAASxgB,IAAUrD,EAAO+jB,MAAO1gB,EAEpD,IAAM2lB,IAAcT,EAASS,EAAST,QAAtC,CAKAD,GAAUA,GAAS,IAAKllB,MAAO1B,KAAqB,IACpD8mB,EAAIF,EAAM9kB,MACV,OAAQglB,IAMP,GALAjf,EAAMye,GAAevkB,KAAM6kB,EAAME,QACjC7lB,EAAOomB,EAAWxf,EAAI,GACtBuf,GAAevf,EAAI,IAAM,IAAK+C,MAAO,KAAMxG,OAGrCnD,EAAN,CAOA+lB,EAAU1oB,EAAOyC,MAAMimB,QAAS/lB,OAChCA,GAASvB,EAAWsnB,EAAQU,aAAeV,EAAQW,WAAc1mB,EACjEkmB,EAAWN,EAAQ5lB,OACnB4G,EAAMA,EAAI,IAAUkF,OAAQ,UAAYqa,EAAW5X,KAAK,iBAAmB,WAG3EwY,EAAY/jB,EAAIkjB,EAASrlB,MACzB,OAAQmC,IACPijB,EAAYC,EAAUljB,IAEf8jB,GAAeV,IAAaH,EAAUG,UACzC9W,GAAWA,EAAQ9G,OAASyd,EAAUzd,MACtC5B,IAAOA,EAAIxF,KAAM6kB,EAAUU,YAC3BloB,GAAYA,IAAawnB,EAAUxnB,WAAyB,OAAbA,IAAqBwnB,EAAUxnB,YACjFynB,EAAS9iB,OAAQJ,EAAG,GAEfijB,EAAUxnB,UACdynB,EAASU,gBAELb,EAAQ3f,QACZ2f,EAAQ3f,OAAOvE,KAAMnB,EAAMulB,GAOzBc,KAAcb,EAASrlB,SACrBklB,EAAQiB,UAAYjB,EAAQiB,SAASnlB,KAAMnB,EAAMylB,EAAYE,EAASC,WAAa,GACxFjpB,EAAO4pB,YAAavmB,EAAMV,EAAMqmB,EAASC,cAGnCV,GAAQ5lB,QAtCf,KAAMA,IAAQ4lB,GACbvoB,EAAOyC,MAAMsG,OAAQ1F,EAAMV,EAAO2lB,EAAOE,GAAKvW,EAAS7Q,GAAU,EA0C/DpB,GAAOqI,cAAekgB,WACnBS,GAASC,OAIhBjpB,EAAOgkB,YAAa3gB,EAAM,aAI5BkE,QAAS,SAAU9E,EAAOgG,EAAMpF,EAAMwmB,GACrC,GAAIZ,GAAQa,EAAQ1X,EACnB2X,EAAYrB,EAASnf,EAAK9D,EAC1BukB,GAAc3mB,GAAQzD,GACtB+C,EAAO3B,EAAYwD,KAAM/B,EAAO,QAAWA,EAAME,KAAOF,EACxDqmB,EAAa9nB,EAAYwD,KAAM/B,EAAO,aAAgBA,EAAM6mB,UAAUhd,MAAM,OAK7E,IAHA8F,EAAM7I,EAAMlG,EAAOA,GAAQzD,EAGJ,IAAlByD,EAAKQ,UAAoC,IAAlBR,EAAKQ,WAK5BkkB,GAAYhkB,KAAMpB,EAAO3C,EAAOyC,MAAMymB,aAItCvmB,EAAK9B,QAAQ,MAAQ,IAEzBioB,EAAanmB,EAAK2J,MAAM,KACxB3J,EAAOmmB,EAAWpX,QAClBoX,EAAWhjB,QAEZgkB,EAA6B,EAApBnnB,EAAK9B,QAAQ,MAAY,KAAO8B,EAGzCF,EAAQA,EAAOzC,EAAO0G,SACrBjE,EACA,GAAIzC,GAAOiqB,MAAOtnB,EAAuB,gBAAVF,IAAsBA,GAGtDA,EAAMynB,UAAYL,EAAe,EAAI,EACrCpnB,EAAM6mB,UAAYR,EAAW5X,KAAK,KAClCzO,EAAM0nB,aAAe1nB,EAAM6mB,UACtB7a,OAAQ,UAAYqa,EAAW5X,KAAK,iBAAmB,WAC3D,KAGDzO,EAAM4T,OAAS9W,EACTkD,EAAM8D,SACX9D,EAAM8D,OAASlD,GAIhBoF,EAAe,MAARA,GACJhG,GACFzC,EAAOsE,UAAWmE,GAAQhG,IAG3BimB,EAAU1oB,EAAOyC,MAAMimB,QAAS/lB,OAC1BknB,IAAgBnB,EAAQnhB,SAAWmhB,EAAQnhB,QAAQnC,MAAO/B,EAAMoF,MAAW,GAAjF,CAMA,IAAMohB,IAAiBnB,EAAQ0B,WAAapqB,EAAO2H,SAAUtE,GAAS,CAMrE,IAJA0mB,EAAarB,EAAQU,cAAgBzmB,EAC/BolB,GAAYhkB,KAAMgmB,EAAapnB,KACpCyP,EAAMA,EAAIhO,YAEHgO,EAAKA,EAAMA,EAAIhO,WACtB4lB,EAAUvpB,KAAM2R,GAChB7I,EAAM6I,CAIF7I,MAASlG,EAAKS,eAAiBlE,IACnCoqB,EAAUvpB,KAAM8I,EAAIyJ,aAAezJ,EAAI8gB,cAAgB/qB,GAKzDmG,EAAI,CACJ,QAAS2M,EAAM4X,EAAUvkB,QAAUhD,EAAM6nB,uBAExC7nB,EAAME,KAAO8C,EAAI,EAChBskB,EACArB,EAAQW,UAAY1mB,EAGrBsmB,GAAWjpB,EAAO+jB,MAAO3R,EAAK,eAAoB3P,EAAME,OAAU3C,EAAO+jB,MAAO3R,EAAK,UAChF6W,GACJA,EAAO7jB,MAAOgN,EAAK3J,GAIpBwgB,EAASa,GAAU1X,EAAK0X,GACnBb,GAAUjpB,EAAOkjB,WAAY9Q,IAAS6W,EAAO7jB,OAAS6jB,EAAO7jB,MAAOgN,EAAK3J,MAAW,GACxFhG,EAAM8nB,gBAMR,IAHA9nB,EAAME,KAAOA,GAGPknB,IAAiBpnB,EAAM+nB,wBAErB9B,EAAQ+B,UAAY/B,EAAQ+B,SAASrlB,MAAO4kB,EAAU/b,MAAOxF,MAAW,IAC9EzI,EAAOkjB,WAAY7f,IAKdymB,GAAUzmB,EAAMV,KAAW3C,EAAO2H,SAAUtE,GAAS,CAGzDkG,EAAMlG,EAAMymB,GAEPvgB,IACJlG,EAAMymB,GAAW,MAIlB9pB,EAAOyC,MAAMymB,UAAYvmB,CACzB,KACCU,EAAMV,KACL,MAAQuF,IAIVlI,EAAOyC,MAAMymB,UAAY3pB,EAEpBgK,IACJlG,EAAMymB,GAAWvgB,GAMrB,MAAO9G,GAAM4T,SAGd8S,SAAU,SAAU1mB,GAGnBA,EAAQzC,EAAOyC,MAAMioB,IAAKjoB,EAE1B,IAAIgD,GAAGZ,EAAK+jB,EAAW1R,EAASvR,EAC/BglB,KACA1lB,EAAOvE,EAAW8D,KAAMa,WACxBwjB,GAAa7oB,EAAO+jB,MAAOzgB,KAAM,eAAoBb,EAAME,UAC3D+lB,EAAU1oB,EAAOyC,MAAMimB,QAASjmB,EAAME,SAOvC,IAJAsC,EAAK,GAAKxC,EACVA,EAAMmoB,eAAiBtnB,MAGlBolB,EAAQmC,aAAenC,EAAQmC,YAAYrmB,KAAMlB,KAAMb,MAAY,EAAxE,CAKAkoB,EAAe3qB,EAAOyC,MAAMomB,SAASrkB,KAAMlB,KAAMb,EAAOomB,GAGxDpjB,EAAI,CACJ,QAASyR,EAAUyT,EAAcllB,QAAWhD,EAAM6nB,uBAAyB,CAC1E7nB,EAAMqoB,cAAgB5T,EAAQ7T,KAE9BsC,EAAI,CACJ,QAASijB,EAAY1R,EAAQ2R,SAAUljB,QAAWlD,EAAMsoB,kCAIjDtoB,EAAM0nB,cAAgB1nB,EAAM0nB,aAAapmB,KAAM6kB,EAAUU,cAE9D7mB,EAAMmmB,UAAYA,EAClBnmB,EAAMgG,KAAOmgB,EAAUngB,KAEvB5D,IAAS7E,EAAOyC,MAAMimB,QAASE,EAAUG,eAAkBE,QAAUL,EAAU3W,SAC5E7M,MAAO8R,EAAQ7T,KAAM4B,GAEnBJ,IAAQtF,IACNkD,EAAM4T,OAASxR,MAAS,IAC7BpC,EAAM8nB,iBACN9nB,EAAMuoB,oBAYX,MAJKtC,GAAQuC,cACZvC,EAAQuC,aAAazmB,KAAMlB,KAAMb,GAG3BA,EAAM4T,SAGdwS,SAAU,SAAUpmB,EAAOomB,GAC1B,GAAIqC,GAAKtC,EAAW1b,EAASzH,EAC5BklB,KACApB,EAAgBV,EAASU,cACzBnX,EAAM3P,EAAM8D,MAKb,IAAKgjB,GAAiBnX,EAAIvO,YAAcpB,EAAM+V,QAAyB,UAAf/V,EAAME,MAG7D,KAAQyP,GAAO9O,KAAM8O,EAAMA,EAAIhO,YAAcd,KAK5C,GAAsB,IAAjB8O,EAAIvO,WAAmBuO,EAAI8F,YAAa,GAAuB,UAAfzV,EAAME,MAAoB,CAE9E,IADAuK,KACMzH,EAAI,EAAO8jB,EAAJ9jB,EAAmBA,IAC/BmjB,EAAYC,EAAUpjB,GAGtBylB,EAAMtC,EAAUxnB,SAAW,IAEtB8L,EAASge,KAAU3rB,IACvB2N,EAASge,GAAQtC,EAAUpZ,aAC1BxP,EAAQkrB,EAAK5nB,MAAOua,MAAOzL,IAAS,EACpCpS,EAAO0D,KAAMwnB,EAAK5nB,KAAM,MAAQ8O,IAAQ5O,QAErC0J,EAASge,IACbhe,EAAQzM,KAAMmoB,EAGX1b,GAAQ1J,QACZmnB,EAAalqB,MAAO4C,KAAM+O,EAAKyW,SAAU3b,IAW7C,MAJqB2b,GAASrlB,OAAzB+lB,GACJoB,EAAalqB,MAAO4C,KAAMC,KAAMulB,SAAUA,EAASloB,MAAO4oB,KAGpDoB,GAGRD,IAAK,SAAUjoB,GACd,GAAKA,EAAOzC,EAAO0G,SAClB,MAAOjE,EAIR,IAAIgD,GAAGmgB,EAAMzf,EACZxD,EAAOF,EAAME,KACbwoB,EAAgB1oB,EAChB2oB,EAAU9nB,KAAK+nB,SAAU1oB,EAEpByoB,KACL9nB,KAAK+nB,SAAU1oB,GAASyoB,EACvBtD,GAAY/jB,KAAMpB,GAASW,KAAKgoB,WAChCzD,GAAU9jB,KAAMpB,GAASW,KAAKioB,aAGhCplB,EAAOilB,EAAQI,MAAQloB,KAAKkoB,MAAMjrB,OAAQ6qB,EAAQI,OAAUloB,KAAKkoB,MAEjE/oB,EAAQ,GAAIzC,GAAOiqB,MAAOkB,GAE1B1lB,EAAIU,EAAK3C,MACT,OAAQiC,IACPmgB,EAAOzf,EAAMV,GACbhD,EAAOmjB,GAASuF,EAAevF,EAmBhC,OAdMnjB,GAAM8D,SACX9D,EAAM8D,OAAS4kB,EAAcM,YAAc7rB,GAKb,IAA1B6C,EAAM8D,OAAO1C,WACjBpB,EAAM8D,OAAS9D,EAAM8D,OAAOnC,YAK7B3B,EAAMipB,UAAYjpB,EAAMipB,QAEjBN,EAAQ5X,OAAS4X,EAAQ5X,OAAQ/Q,EAAO0oB,GAAkB1oB,GAIlE+oB,MAAO,wHAAwHlf,MAAM,KAErI+e,YAEAE,UACCC,MAAO,4BAA4Blf,MAAM,KACzCkH,OAAQ,SAAU/Q,EAAOkpB,GAOxB,MAJoB,OAAflpB,EAAMmpB,QACVnpB,EAAMmpB,MAA6B,MAArBD,EAASE,SAAmBF,EAASE,SAAWF,EAASG,SAGjErpB,IAIT6oB,YACCE,MAAO,mGAAmGlf,MAAM,KAChHkH,OAAQ,SAAU/Q,EAAOkpB,GACxB,GAAIvkB,GAAM2kB,EAAUjZ,EACnB0F,EAASmT,EAASnT,OAClBwT,EAAcL,EAASK,WAuBxB,OApBoB,OAAfvpB,EAAMwpB,OAAqC,MAApBN,EAASO,UACpCH,EAAWtpB,EAAM8D,OAAOzC,eAAiBlE,EACzCkT,EAAMiZ,EAASjsB,gBACfsH,EAAO2kB,EAAS3kB,KAEhB3E,EAAMwpB,MAAQN,EAASO,SAAYpZ,GAAOA,EAAIqZ,YAAc/kB,GAAQA,EAAK+kB,YAAc,IAAQrZ,GAAOA,EAAIsZ,YAAchlB,GAAQA,EAAKglB,YAAc,GACnJ3pB,EAAM4pB,MAAQV,EAASW,SAAYxZ,GAAOA,EAAIyZ,WAAcnlB,GAAQA,EAAKmlB,WAAc,IAAQzZ,GAAOA,EAAI0Z,WAAcplB,GAAQA,EAAKolB,WAAc,KAI9I/pB,EAAMgqB,eAAiBT,IAC5BvpB,EAAMgqB,cAAgBT,IAAgBvpB,EAAM8D,OAASolB,EAASe,UAAYV,GAKrEvpB,EAAMmpB,OAASpT,IAAWjZ,IAC/BkD,EAAMmpB,MAAmB,EAATpT,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjE/V,IAITimB,SACCiE,MAECvC,UAAU,GAEXxS,OAECrQ,QAAS,WACR,GAAKjE,OAAS6kB,MAAuB7kB,KAAKsU,MACzC,IAEC,MADAtU,MAAKsU,SACE,EACN,MAAQ1P,MAOZkhB,aAAc,WAEfwD,MACCrlB,QAAS,WACR,MAAKjE,QAAS6kB,MAAuB7kB,KAAKspB,MACzCtpB,KAAKspB,QACE,GAFR,GAKDxD,aAAc,YAEfxH,OAECra,QAAS,WACR,MAAKvH,GAAOmK,SAAU7G,KAAM,UAA2B,aAAdA,KAAKX,MAAuBW,KAAKse,OACzEte,KAAKse,SACE,GAFR,GAOD6I,SAAU,SAAUhoB,GACnB,MAAOzC,GAAOmK,SAAU1H,EAAM8D,OAAQ,OAIxCsmB,cACC5B,aAAc,SAAUxoB,GAGlBA,EAAM4T,SAAW9W,IACrBkD,EAAM0oB,cAAc2B,YAAcrqB,EAAM4T,WAM5C0W,SAAU,SAAUpqB,EAAMU,EAAMZ,EAAOuqB,GAItC,GAAI9kB,GAAIlI,EAAOgG,OACd,GAAIhG,GAAOiqB,MACXxnB,GAECE,KAAMA,EACNsqB,aAAa,EACb9B,kBAGG6B,GACJhtB,EAAOyC,MAAM8E,QAASW,EAAG,KAAM7E,GAE/BrD,EAAOyC,MAAM0mB,SAAS3kB,KAAMnB,EAAM6E,GAE9BA,EAAEsiB,sBACN/nB,EAAM8nB,mBAKTvqB,EAAO4pB,YAAchqB,EAASmD,oBAC7B,SAAUM,EAAMV,EAAMsmB,GAChB5lB,EAAKN,qBACTM,EAAKN,oBAAqBJ,EAAMsmB,GAAQ,IAG1C,SAAU5lB,EAAMV,EAAMsmB,GACrB,GAAI7iB,GAAO,KAAOzD,CAEbU,GAAKL,oBAIGK,GAAM+C,KAAW1G,IAC5B2D,EAAM+C,GAAS,MAGhB/C,EAAKL,YAAaoD,EAAM6iB,KAI3BjpB,EAAOiqB,MAAQ,SAAUhkB,EAAKulB,GAE7B,MAAOloB,gBAAgBtD,GAAOiqB,OAKzBhkB,GAAOA,EAAItD,MACfW,KAAK6nB,cAAgBllB,EACrB3C,KAAKX,KAAOsD,EAAItD,KAIhBW,KAAKknB,mBAAuBvkB,EAAIinB,kBAAoBjnB,EAAI6mB,eAAgB,GACvE7mB,EAAIknB,mBAAqBlnB,EAAIknB,oBAAwBlF,GAAaC,IAInE5kB,KAAKX,KAAOsD,EAIRulB,GACJxrB,EAAOgG,OAAQ1C,KAAMkoB,GAItBloB,KAAK8pB,UAAYnnB,GAAOA,EAAImnB,WAAaptB,EAAO0L,MAGhDpI,KAAMtD,EAAO0G,UAAY,EAvBzB,GAJQ,GAAI1G,GAAOiqB,MAAOhkB,EAAKulB,IAgChCxrB,EAAOiqB,MAAMhnB,WACZunB,mBAAoBtC,GACpBoC,qBAAsBpC,GACtB6C,8BAA+B7C,GAE/BqC,eAAgB,WACf,GAAIriB,GAAI5E,KAAK6nB,aAEb7nB,MAAKknB,mBAAqBvC,GACpB/f,IAKDA,EAAEqiB,eACNriB,EAAEqiB,iBAKFriB,EAAE4kB,aAAc,IAGlB9B,gBAAiB,WAChB,GAAI9iB,GAAI5E,KAAK6nB,aAEb7nB,MAAKgnB,qBAAuBrC,GACtB/f,IAIDA,EAAE8iB,iBACN9iB,EAAE8iB,kBAKH9iB,EAAEmlB,cAAe,IAElBC,yBAA0B,WACzBhqB,KAAKynB,8BAAgC9C,GACrC3kB,KAAK0nB,oBAKPhrB,EAAO+E,MACNwoB,WAAY,YACZC,WAAY,YACV,SAAUC,EAAM/C,GAClB1qB,EAAOyC,MAAMimB,QAAS+E,IACrBrE,aAAcsB,EACdrB,SAAUqB,EAEVzB,OAAQ,SAAUxmB,GACjB,GAAIoC,GACH0B,EAASjD,KACToqB,EAAUjrB,EAAMgqB,cAChB7D,EAAYnmB,EAAMmmB,SASnB,SALM8E,GAAYA,IAAYnnB,IAAWvG,EAAOmN,SAAU5G,EAAQmnB,MACjEjrB,EAAME,KAAOimB,EAAUG,SACvBlkB,EAAM+jB,EAAU3W,QAAQ7M,MAAO9B,KAAM+B,WACrC5C,EAAME,KAAO+nB,GAEP7lB,MAMJ7E,EAAOmI,QAAQwlB,gBAEpB3tB,EAAOyC,MAAMimB,QAAQxP,QACpBsQ,MAAO,WAEN,MAAKxpB,GAAOmK,SAAU7G,KAAM,SACpB,GAIRtD,EAAOyC,MAAMmb,IAAKta,KAAM,iCAAkC,SAAU4E,GAEnE,GAAI7E,GAAO6E,EAAE3B,OACZqnB,EAAO5tB,EAAOmK,SAAU9G,EAAM,UAAarD,EAAOmK,SAAU9G,EAAM,UAAaA,EAAKuqB,KAAOruB,CACvFquB,KAAS5tB,EAAO+jB,MAAO6J,EAAM,mBACjC5tB,EAAOyC,MAAMmb,IAAKgQ,EAAM,iBAAkB,SAAUnrB,GACnDA,EAAMorB,gBAAiB,IAExB7tB,EAAO+jB,MAAO6J,EAAM,iBAAiB,MARvC5tB,IAcDirB,aAAc,SAAUxoB,GAElBA,EAAMorB,uBACHprB,GAAMorB,eACRvqB,KAAKc,aAAe3B,EAAMynB,WAC9BlqB,EAAOyC,MAAMsqB,SAAU,SAAUzpB,KAAKc,WAAY3B,GAAO,KAK5DknB,SAAU,WAET,MAAK3pB,GAAOmK,SAAU7G,KAAM,SACpB,GAIRtD,EAAOyC,MAAMsG,OAAQzF,KAAM,YAA3BtD,MAMGA,EAAOmI,QAAQ2lB,gBAEpB9tB,EAAOyC,MAAMimB,QAAQ7G,QAEpB2H,MAAO,WAEN,MAAK5B,GAAW7jB,KAAMT,KAAK6G,YAIP,aAAd7G,KAAKX,MAAqC,UAAdW,KAAKX,QACrC3C,EAAOyC,MAAMmb,IAAKta,KAAM,yBAA0B,SAAUb,GACjB,YAArCA,EAAM0oB,cAAc4C,eACxBzqB,KAAK0qB,eAAgB,KAGvBhuB,EAAOyC,MAAMmb,IAAKta,KAAM,gBAAiB,SAAUb,GAC7Ca,KAAK0qB,gBAAkBvrB,EAAMynB,YACjC5mB,KAAK0qB,eAAgB,GAGtBhuB,EAAOyC,MAAMsqB,SAAU,SAAUzpB,KAAMb,GAAO,OAGzC,IAGRzC,EAAOyC,MAAMmb,IAAKta,KAAM,yBAA0B,SAAU4E,GAC3D,GAAI7E,GAAO6E,EAAE3B,MAERqhB,GAAW7jB,KAAMV,EAAK8G,YAAenK,EAAO+jB,MAAO1gB,EAAM,mBAC7DrD,EAAOyC,MAAMmb,IAAKva,EAAM,iBAAkB,SAAUZ,IAC9Ca,KAAKc,YAAe3B,EAAMwqB,aAAgBxqB,EAAMynB,WACpDlqB,EAAOyC,MAAMsqB,SAAU,SAAUzpB,KAAKc,WAAY3B,GAAO,KAG3DzC,EAAO+jB,MAAO1gB,EAAM,iBAAiB,MATvCrD,IAcDipB,OAAQ,SAAUxmB,GACjB,GAAIY,GAAOZ,EAAM8D,MAGjB,OAAKjD,QAASD,GAAQZ,EAAMwqB,aAAexqB,EAAMynB,WAA4B,UAAd7mB,EAAKV,MAAkC,aAAdU,EAAKV,KACrFF,EAAMmmB,UAAU3W,QAAQ7M,MAAO9B,KAAM+B,WAD7C,GAKDskB,SAAU,WAGT,MAFA3pB,GAAOyC,MAAMsG,OAAQzF,KAAM,aAEnBskB,EAAW7jB,KAAMT,KAAK6G,aAM3BnK,EAAOmI,QAAQ8lB,gBACpBjuB,EAAO+E,MAAO6S,MAAO,UAAWgV,KAAM,YAAc,SAAUa,EAAM/C,GAGnE,GAAIwD,GAAW,EACdjc,EAAU,SAAUxP,GACnBzC,EAAOyC,MAAMsqB,SAAUrC,EAAKjoB,EAAM8D,OAAQvG,EAAOyC,MAAMioB,IAAKjoB,IAAS,GAGvEzC,GAAOyC,MAAMimB,QAASgC,IACrBlB,MAAO,WACc,IAAf0E,KACJtuB,EAAS8C,iBAAkB+qB,EAAMxb,GAAS,IAG5C0X,SAAU,WACW,MAAbuE,GACNtuB,EAASmD,oBAAqB0qB,EAAMxb,GAAS,OAOlDjS,EAAOsB,GAAG0E,QAETmoB,GAAI,SAAU7F,EAAOlnB,EAAUqH,EAAMnH,EAAiBqlB,GACrD,GAAIhkB,GAAMyrB,CAGV,IAAsB,gBAAV9F,GAAqB,CAEP,gBAAblnB,KAEXqH,EAAOA,GAAQrH,EACfA,EAAW7B,EAEZ,KAAMoD,IAAQ2lB,GACbhlB,KAAK6qB,GAAIxrB,EAAMvB,EAAUqH,EAAM6f,EAAO3lB,GAAQgkB,EAE/C,OAAOrjB,MAmBR,GAhBa,MAARmF,GAAsB,MAANnH,GAEpBA,EAAKF,EACLqH,EAAOrH,EAAW7B,GACD,MAAN+B,IACc,gBAAbF,IAEXE,EAAKmH,EACLA,EAAOlJ,IAGP+B,EAAKmH,EACLA,EAAOrH,EACPA,EAAW7B,IAGR+B,KAAO,EACXA,EAAK4mB,OACC,KAAM5mB,EACZ,MAAOgC,KAaR,OAVa,KAARqjB,IACJyH,EAAS9sB,EACTA,EAAK,SAAUmB,GAGd,MADAzC,KAASwH,IAAK/E,GACP2rB,EAAOhpB,MAAO9B,KAAM+B,YAG5B/D,EAAG6J,KAAOijB,EAAOjjB,OAAUijB,EAAOjjB,KAAOnL,EAAOmL,SAE1C7H,KAAKyB,KAAM,WACjB/E,EAAOyC,MAAMmb,IAAKta,KAAMglB,EAAOhnB,EAAImH,EAAMrH,MAG3CulB,IAAK,SAAU2B,EAAOlnB,EAAUqH,EAAMnH,GACrC,MAAOgC,MAAK6qB,GAAI7F,EAAOlnB,EAAUqH,EAAMnH,EAAI,IAE5CkG,IAAK,SAAU8gB,EAAOlnB,EAAUE,GAC/B,GAAIsnB,GAAWjmB,CACf,IAAK2lB,GAASA,EAAMiC,gBAAkBjC,EAAMM,UAQ3C,MANAA,GAAYN,EAAMM,UAClB5oB,EAAQsoB,EAAMsC,gBAAiBpjB,IAC9BohB,EAAUU,UAAYV,EAAUG,SAAW,IAAMH,EAAUU,UAAYV,EAAUG,SACjFH,EAAUxnB,SACVwnB,EAAU3W,SAEJ3O,IAER,IAAsB,gBAAVglB,GAAqB,CAEhC,IAAM3lB,IAAQ2lB,GACbhlB,KAAKkE,IAAK7E,EAAMvB,EAAUknB,EAAO3lB,GAElC,OAAOW,MAUR,OARKlC,KAAa,GAA6B,kBAAbA,MAEjCE,EAAKF,EACLA,EAAW7B,GAEP+B,KAAO,IACXA,EAAK4mB,IAEC5kB,KAAKyB,KAAK,WAChB/E,EAAOyC,MAAMsG,OAAQzF,KAAMglB,EAAOhnB,EAAIF,MAIxCmG,QAAS,SAAU5E,EAAM8F,GACxB,MAAOnF,MAAKyB,KAAK,WAChB/E,EAAOyC,MAAM8E,QAAS5E,EAAM8F,EAAMnF,SAGpC+qB,eAAgB,SAAU1rB,EAAM8F,GAC/B,GAAIpF,GAAOC,KAAK,EAChB,OAAKD,GACGrD,EAAOyC,MAAM8E,QAAS5E,EAAM8F,EAAMpF,GAAM,GADhD,IAKF,IAAIirB,IAAW,iBACdC,GAAe,iCACfC,GAAgBxuB,EAAO4U,KAAKxR,MAAMoM,aAElCif,IACCC,UAAU,EACVC,UAAU,EACVpK,MAAM,EACNqK,MAAM,EAGR5uB,GAAOsB,GAAG0E,QACTtC,KAAM,SAAUtC,GACf,GAAIqE,GACHZ,KACA6Y,EAAOpa,KACPoC,EAAMgY,EAAKla,MAEZ,IAAyB,gBAAbpC,GACX,MAAOkC,MAAKqB,UAAW3E,EAAQoB,GAAWoS,OAAO,WAChD,IAAM/N,EAAI,EAAOC,EAAJD,EAASA,IACrB,GAAKzF,EAAOmN,SAAUuQ,EAAMjY,GAAKnC,MAChC,OAAO,IAMX,KAAMmC,EAAI,EAAOC,EAAJD,EAASA,IACrBzF,EAAO0D,KAAMtC,EAAUsc,EAAMjY,GAAKZ,EAMnC,OAFAA,GAAMvB,KAAKqB,UAAWe,EAAM,EAAI1F,EAAOwc,OAAQ3X,GAAQA,GACvDA,EAAIzD,SAAWkC,KAAKlC,SAAWkC,KAAKlC,SAAW,IAAMA,EAAWA,EACzDyD,GAGRyS,IAAK,SAAU/Q,GACd,GAAId,GACHopB,EAAU7uB,EAAQuG,EAAQjD,MAC1BoC,EAAMmpB,EAAQrrB,MAEf,OAAOF,MAAKkQ,OAAO,WAClB,IAAM/N,EAAI,EAAOC,EAAJD,EAASA,IACrB,GAAKzF,EAAOmN,SAAU7J,KAAMurB,EAAQppB,IACnC,OAAO,KAMX0R,IAAK,SAAU/V,GACd,MAAOkC,MAAKqB,UAAWmqB,GAAOxrB,KAAMlC,OAAgB,KAGrDoS,OAAQ,SAAUpS,GACjB,MAAOkC,MAAKqB,UAAWmqB,GAAOxrB,KAAMlC,OAAgB,KAGrD2tB,GAAI,SAAU3tB,GACb,QAAS0tB,GACRxrB,KAIoB,gBAAblC,IAAyBotB,GAAczqB,KAAM3C,GACnDpB,EAAQoB,GACRA,OACD,GACCoC,QAGHwrB,QAAS,SAAU1Z,EAAWjU,GAC7B,GAAI+Q,GACH3M,EAAI,EACJqF,EAAIxH,KAAKE,OACTqB,KACAoqB,EAAMT,GAAczqB,KAAMuR,IAAoC,gBAAdA,GAC/CtV,EAAQsV,EAAWjU,GAAWiC,KAAKjC,SACnC,CAEF,MAAYyJ,EAAJrF,EAAOA,IACd,IAAM2M,EAAM9O,KAAKmC,GAAI2M,GAAOA,IAAQ/Q,EAAS+Q,EAAMA,EAAIhO,WAEtD,GAAoB,GAAfgO,EAAIvO,WAAkBorB,EAC1BA,EAAIpR,MAAMzL,GAAO,GAGA,IAAjBA,EAAIvO,UACH7D,EAAO0D,KAAKmQ,gBAAgBzB,EAAKkD,IAAc,CAEhDlD,EAAMvN,EAAIpE,KAAM2R,EAChB,OAKH,MAAO9O,MAAKqB,UAAWE,EAAIrB,OAAS,EAAIxD,EAAOwc,OAAQ3X,GAAQA,IAKhEgZ,MAAO,SAAUxa,GAGhB,MAAMA,GAKe,gBAATA,GACJrD,EAAO2K,QAASrH,KAAK,GAAItD,EAAQqD,IAIlCrD,EAAO2K,QAEbtH,EAAKH,OAASG,EAAK,GAAKA,EAAMC,MAXrBA,KAAK,IAAMA,KAAK,GAAGc,WAAed,KAAKgC,QAAQ4pB,UAAU1rB,OAAS,IAc7Eoa,IAAK,SAAUxc,EAAUC,GACxB,GAAIolB,GAA0B,gBAAbrlB,GACfpB,EAAQoB,EAAUC,GAClBrB,EAAOsE,UAAWlD,GAAYA,EAASyC,UAAazC,GAAaA,GAClEiB,EAAMrC,EAAO2D,MAAOL,KAAKmB,MAAOgiB,EAEjC,OAAOnjB,MAAKqB,UAAW3E,EAAOwc,OAAOna,KAGtC8sB,QAAS,SAAU/tB,GAClB,MAAOkC,MAAKsa,IAAiB,MAAZxc,EAChBkC,KAAKwB,WAAaxB,KAAKwB,WAAW0O,OAAOpS,MAK5C,SAASguB,IAAShd,EAAKsD,GACtB,EACCtD,GAAMA,EAAKsD,SACFtD,GAAwB,IAAjBA,EAAIvO,SAErB,OAAOuO,GAGRpS,EAAO+E,MACNgO,OAAQ,SAAU1P,GACjB,GAAI0P,GAAS1P,EAAKe,UAClB,OAAO2O,IAA8B,KAApBA,EAAOlP,SAAkBkP,EAAS,MAEpDsc,QAAS,SAAUhsB,GAClB,MAAOrD,GAAO0V,IAAKrS,EAAM,eAE1BisB,aAAc,SAAUjsB,EAAMoC,EAAG8pB,GAChC,MAAOvvB,GAAO0V,IAAKrS,EAAM,aAAcksB,IAExChL,KAAM,SAAUlhB,GACf,MAAO+rB,IAAS/rB,EAAM,gBAEvBurB,KAAM,SAAUvrB,GACf,MAAO+rB,IAAS/rB,EAAM,oBAEvBmsB,QAAS,SAAUnsB,GAClB,MAAOrD,GAAO0V,IAAKrS,EAAM,gBAE1B6rB,QAAS,SAAU7rB,GAClB,MAAOrD,GAAO0V,IAAKrS,EAAM,oBAE1BosB,UAAW,SAAUpsB,EAAMoC,EAAG8pB,GAC7B,MAAOvvB,GAAO0V,IAAKrS,EAAM,cAAeksB,IAEzCG,UAAW,SAAUrsB,EAAMoC,EAAG8pB,GAC7B,MAAOvvB,GAAO0V,IAAKrS,EAAM,kBAAmBksB,IAE7CI,SAAU,SAAUtsB,GACnB,MAAOrD,GAAOovB,SAAW/rB,EAAKe,gBAAmBiP,WAAYhQ,IAE9DqrB,SAAU,SAAUrrB,GACnB,MAAOrD,GAAOovB,QAAS/rB,EAAKgQ,aAE7Bsb,SAAU,SAAUtrB,GACnB,MAAOrD,GAAOmK,SAAU9G,EAAM,UAC7BA,EAAKusB,iBAAmBvsB,EAAKwsB,cAAcjwB,SAC3CI,EAAO2D,SAAWN,EAAK2F,cAEvB,SAAU5C,EAAM9E,GAClBtB,EAAOsB,GAAI8E,GAAS,SAAUmpB,EAAOnuB,GACpC,GAAIyD,GAAM7E,EAAO4F,IAAKtC,KAAMhC,EAAIiuB,EAsBhC,OApB0B,UAArBnpB,EAAKzF,MAAO,MAChBS,EAAWmuB,GAGPnuB,GAAgC,gBAAbA,KACvByD,EAAM7E,EAAOwT,OAAQpS,EAAUyD,IAG3BvB,KAAKE,OAAS,IAEZirB,GAAkBroB,KACvBvB,EAAM7E,EAAOwc,OAAQ3X,IAIjB0pB,GAAaxqB,KAAMqC,KACvBvB,EAAMA,EAAIirB,YAILxsB,KAAKqB,UAAWE,MAIzB7E,EAAOgG,QACNwN,OAAQ,SAAUoB,EAAMhQ,EAAOuS,GAC9B,GAAI9T,GAAOuB,EAAO,EAMlB,OAJKuS,KACJvC,EAAO,QAAUA,EAAO,KAGD,IAAjBhQ,EAAMpB,QAAkC,IAAlBH,EAAKQ,SACjC7D,EAAO0D,KAAKmQ,gBAAiBxQ,EAAMuR,IAAWvR,MAC9CrD,EAAO0D,KAAKwJ,QAAS0H,EAAM5U,EAAO+K,KAAMnG,EAAO,SAAUvB,GACxD,MAAyB,KAAlBA,EAAKQ,aAIf6R,IAAK,SAAUrS,EAAMqS,EAAK6Z,GACzB,GAAIrY,MACH9E,EAAM/O,EAAMqS,EAEb,OAAQtD,GAAwB,IAAjBA,EAAIvO,WAAmB0rB,IAAUhwB,GAA8B,IAAjB6S,EAAIvO,WAAmB7D,EAAQoS,GAAM2c,GAAIQ,IAC/E,IAAjBnd,EAAIvO,UACRqT,EAAQzW,KAAM2R,GAEfA,EAAMA,EAAIsD,EAEX,OAAOwB,IAGRkY,QAAS,SAAUW,EAAG1sB,GACrB,GAAI2sB,KAEJ,MAAQD,EAAGA,EAAIA,EAAExd,YACI,IAAfwd,EAAElsB,UAAkBksB,IAAM1sB,GAC9B2sB,EAAEvvB,KAAMsvB,EAIV,OAAOC,KAKT,SAASlB,IAAQja,EAAUob,EAAW9Y,GACrC,GAAKnX,EAAOiE,WAAYgsB,GACvB,MAAOjwB,GAAO+K,KAAM8J,EAAU,SAAUxR,EAAMoC,GAE7C,QAASwqB,EAAUzrB,KAAMnB,EAAMoC,EAAGpC,KAAW8T,GAK/C,IAAK8Y,EAAUpsB,SACd,MAAO7D,GAAO+K,KAAM8J,EAAU,SAAUxR,GACvC,MAASA,KAAS4sB,IAAgB9Y,GAKpC,IAA0B,gBAAd8Y,GAAyB,CACpC,GAAK3B,GAASvqB,KAAMksB,GACnB,MAAOjwB,GAAOwT,OAAQyc,EAAWpb,EAAUsC,EAG5C8Y,GAAYjwB,EAAOwT,OAAQyc,EAAWpb,GAGvC,MAAO7U,GAAO+K,KAAM8J,EAAU,SAAUxR,GACvC,MAASrD,GAAO2K,QAAStH,EAAM4sB,IAAe,IAAQ9Y,IAGxD,QAAS+Y,IAAoBtwB,GAC5B,GAAIyd,GAAO8S,GAAU7jB,MAAO,KAC3B8jB,EAAWxwB,EAAS6hB,wBAErB,IAAK2O,EAASvnB,cACb,MAAQwU,EAAK7Z,OACZ4sB,EAASvnB,cACRwU,EAAKpP,MAIR,OAAOmiB,GAGR,GAAID,IAAY,6JAEfE,GAAgB,6BAChBC,GAAmB7hB,OAAO,OAAS0hB,GAAY,WAAY,KAC3DI,GAAqB,OACrBC,GAAY,0EACZC,GAAW,YACXC,GAAS,UACTC,GAAQ,YACRC,GAAe,0BACfC,GAA8B,wBAE9BC,GAAW,oCACXC,GAAc,4BACdC,GAAoB,cACpBC,GAAe,2CAGfC,IACCxK,QAAU,EAAG,+BAAgC,aAC7CyK,QAAU,EAAG,aAAc,eAC3BC,MAAQ,EAAG,QAAS,UACpBC,OAAS,EAAG,WAAY,aACxBC,OAAS,EAAG,UAAW,YACvBC,IAAM,EAAG,iBAAkB,oBAC3BC,KAAO,EAAG,mCAAoC,uBAC9CC,IAAM,EAAG,qBAAsB,yBAI/BhH,SAAUzqB,EAAOmI,QAAQkY,eAAkB,EAAG,GAAI,KAAS,EAAG,SAAU,WAEzEqR,GAAexB,GAAoBtwB,GACnC+xB,GAAcD,GAAaxe,YAAatT,EAASiJ,cAAc,OAEhEqoB,IAAQU,SAAWV,GAAQxK,OAC3BwK,GAAQ9Q,MAAQ8Q,GAAQW,MAAQX,GAAQY,SAAWZ,GAAQa,QAAUb,GAAQI,MAC7EJ,GAAQc,GAAKd,GAAQO,GAErBzxB,EAAOsB,GAAG0E,QACTuE,KAAM,SAAUF,GACf,MAAOrK,GAAOqL,OAAQ/H,KAAM,SAAU+G,GACrC,MAAOA,KAAU9K,EAChBS,EAAOuK,KAAMjH,MACbA,KAAKgV,QAAQ2Z,QAAU3uB,KAAK,IAAMA,KAAK,GAAGQ,eAAiBlE,GAAWsyB,eAAgB7nB,KACrF,KAAMA,EAAOhF,UAAU7B,SAG3ByuB,OAAQ,WACP,MAAO3uB,MAAK6uB,SAAU9sB,UAAW,SAAUhC,GAC1C,GAAuB,IAAlBC,KAAKO,UAAoC,KAAlBP,KAAKO,UAAqC,IAAlBP,KAAKO,SAAiB,CACzE,GAAI0C,GAAS6rB,GAAoB9uB,KAAMD,EACvCkD,GAAO2M,YAAa7P,OAKvBgvB,QAAS,WACR,MAAO/uB,MAAK6uB,SAAU9sB,UAAW,SAAUhC,GAC1C,GAAuB,IAAlBC,KAAKO,UAAoC,KAAlBP,KAAKO,UAAqC,IAAlBP,KAAKO,SAAiB,CACzE,GAAI0C,GAAS6rB,GAAoB9uB,KAAMD,EACvCkD,GAAO+rB,aAAcjvB,EAAMkD,EAAO8M,gBAKrCkf,OAAQ,WACP,MAAOjvB,MAAK6uB,SAAU9sB,UAAW,SAAUhC,GACrCC,KAAKc,YACTd,KAAKc,WAAWkuB,aAAcjvB,EAAMC,SAKvCkvB,MAAO,WACN,MAAOlvB,MAAK6uB,SAAU9sB,UAAW,SAAUhC,GACrCC,KAAKc,YACTd,KAAKc,WAAWkuB,aAAcjvB,EAAMC,KAAKiP,gBAM5CxJ,OAAQ,SAAU3H,EAAUqxB,GAC3B,GAAIpvB,GACHuB,EAAQxD,EAAWpB,EAAOwT,OAAQpS,EAAUkC,MAASA,KACrDmC,EAAI,CAEL,MAA6B,OAApBpC,EAAOuB,EAAMa,IAAaA,IAE5BgtB,GAA8B,IAAlBpvB,EAAKQ,UACtB7D,EAAOyjB,UAAWiP,GAAQrvB,IAGtBA,EAAKe,aACJquB,GAAYzyB,EAAOmN,SAAU9J,EAAKS,cAAeT,IACrDsvB,GAAeD,GAAQrvB,EAAM,WAE9BA,EAAKe,WAAW0N,YAAazO,GAI/B,OAAOC,OAGRgV,MAAO,WACN,GAAIjV,GACHoC,EAAI,CAEL,MAA4B,OAAnBpC,EAAOC,KAAKmC,IAAaA,IAAM,CAEhB,IAAlBpC,EAAKQ,UACT7D,EAAOyjB,UAAWiP,GAAQrvB,GAAM,GAIjC,OAAQA,EAAKgQ,WACZhQ,EAAKyO,YAAazO,EAAKgQ,WAKnBhQ,GAAKgD,SAAWrG,EAAOmK,SAAU9G,EAAM,YAC3CA,EAAKgD,QAAQ7C,OAAS,GAIxB,MAAOF,OAGRgD,MAAO,SAAUssB,EAAeC,GAI/B,MAHAD,GAAiC,MAAjBA,GAAwB,EAAQA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDvvB,KAAKsC,IAAK,WAChB,MAAO5F,GAAOsG,MAAOhD,KAAMsvB,EAAeC,MAI5CC,KAAM,SAAUzoB,GACf,MAAOrK,GAAOqL,OAAQ/H,KAAM,SAAU+G,GACrC,GAAIhH,GAAOC,KAAK,OACfmC,EAAI,EACJqF,EAAIxH,KAAKE,MAEV,IAAK6G,IAAU9K,EACd,MAAyB,KAAlB8D,EAAKQ,SACXR,EAAK+P,UAAUvM,QAASwpB,GAAe,IACvC9wB,CAIF,MAAsB,gBAAV8K,IAAuBumB,GAAa7sB,KAAMsG,KACnDrK,EAAOmI,QAAQkY,eAAkBiQ,GAAavsB,KAAMsG,KACpDrK,EAAOmI,QAAQgY,mBAAsBoQ,GAAmBxsB,KAAMsG,IAC/D6mB,IAAWT,GAAShtB,KAAM4G,KAAY,GAAI,KAAM,GAAGD,gBAAkB,CAEtEC,EAAQA,EAAMxD,QAAS2pB,GAAW,YAElC,KACC,KAAW1lB,EAAJrF,EAAOA,IAEbpC,EAAOC,KAAKmC,OACW,IAAlBpC,EAAKQ,WACT7D,EAAOyjB,UAAWiP,GAAQrvB,GAAM,IAChCA,EAAK+P,UAAY/I,EAInBhH,GAAO,EAGN,MAAM6E,KAGJ7E,GACJC,KAAKgV,QAAQ2Z,OAAQ5nB,IAEpB,KAAMA,EAAOhF,UAAU7B,SAG3BuvB,YAAa,WACZ,GAEC9tB,GAAOjF,EAAO4F,IAAKtC,KAAM,SAAUD,GAClC,OAASA,EAAKkP,YAAalP,EAAKe,cAEjCqB,EAAI,CAmBL,OAhBAnC,MAAK6uB,SAAU9sB,UAAW,SAAUhC,GACnC,GAAIkhB,GAAOtf,EAAMQ,KAChBsN,EAAS9N,EAAMQ,IAEXsN,KAECwR,GAAQA,EAAKngB,aAAe2O,IAChCwR,EAAOjhB,KAAKiP,aAEbvS,EAAQsD,MAAOyF,SACfgK,EAAOuf,aAAcjvB,EAAMkhB,MAG1B,GAGI9e,EAAInC,KAAOA,KAAKyF,UAGxBlG,OAAQ,SAAUzB,GACjB,MAAOkC,MAAKyF,OAAQ3H,GAAU,IAG/B+wB,SAAU,SAAUltB,EAAMD,EAAUguB,GAGnC/tB,EAAO3E,EAAY8E,SAAWH,EAE9B,IAAIK,GAAOuN,EAAMogB,EAChBrqB,EAASkK,EAAK+M,EACdpa,EAAI,EACJqF,EAAIxH,KAAKE,OACTijB,EAAMnjB,KACN4vB,EAAWpoB,EAAI,EACfT,EAAQpF,EAAK,GACbhB,EAAajE,EAAOiE,WAAYoG,EAGjC,IAAKpG,KAAsB,GAAL6G,GAA2B,gBAAVT,IAAsBrK,EAAOmI,QAAQwZ,aAAemP,GAAS/sB,KAAMsG,GACzG,MAAO/G,MAAKyB,KAAK,SAAU8Y,GAC1B,GAAIH,GAAO+I,EAAIlhB,GAAIsY,EACd5Z,KACJgB,EAAK,GAAKoF,EAAM7F,KAAMlB,KAAMua,EAAOH,EAAKoV,SAEzCpV,EAAKyU,SAAUltB,EAAMD,EAAUguB,IAIjC,IAAKloB,IACJ+U,EAAW7f,EAAO8I,cAAe7D,EAAM3B,KAAM,GAAIQ,eAAe,GAAQkvB,GAAqB1vB,MAC7FgC,EAAQua,EAASxM,WAEmB,IAA/BwM,EAAS7W,WAAWxF,SACxBqc,EAAWva,GAGPA,GAAQ,CAMZ,IALAsD,EAAU5I,EAAO4F,IAAK8sB,GAAQ7S,EAAU,UAAYsT,IACpDF,EAAarqB,EAAQpF,OAITsH,EAAJrF,EAAOA,IACdoN,EAAOgN,EAEFpa,IAAMytB,IACVrgB,EAAO7S,EAAOsG,MAAOuM,GAAM,GAAM,GAG5BogB,GACJjzB,EAAO2D,MAAOiF,EAAS8pB,GAAQ7f,EAAM,YAIvC7N,EAASR,KAAMlB,KAAKmC,GAAIoN,EAAMpN,EAG/B,IAAKwtB,EAOJ,IANAngB,EAAMlK,EAASA,EAAQpF,OAAS,GAAIM,cAGpC9D,EAAO4F,IAAKgD,EAASwqB,IAGf3tB,EAAI,EAAOwtB,EAAJxtB,EAAgBA,IAC5BoN,EAAOjK,EAASnD,GACXsrB,GAAYhtB,KAAM8O,EAAKlQ,MAAQ,MAClC3C,EAAO+jB,MAAOlR,EAAM,eAAkB7S,EAAOmN,SAAU2F,EAAKD,KAExDA,EAAK5M,IAETjG,EAAOqzB,SAAUxgB,EAAK5M,KAEtBjG,EAAO+J,YAAc8I,EAAKtI,MAAQsI,EAAKuC,aAAevC,EAAKO,WAAa,IAAKvM,QAASoqB,GAAc,KAOxGpR,GAAWva,EAAQ,KAIrB,MAAOhC,QAMT,SAAS8uB,IAAoB/uB,EAAMiwB,GAClC,MAAOtzB,GAAOmK,SAAU9G,EAAM,UAC7BrD,EAAOmK,SAA+B,IAArBmpB,EAAQzvB,SAAiByvB,EAAUA,EAAQjgB,WAAY,MAExEhQ,EAAKwG,qBAAqB,SAAS,IAClCxG,EAAK6P,YAAa7P,EAAKS,cAAc+E,cAAc,UACpDxF,EAIF,QAAS8vB,IAAe9vB,GAEvB,MADAA,GAAKV,MAA6C,OAArC3C,EAAO0D,KAAKQ,KAAMb,EAAM,SAAqB,IAAMA,EAAKV,KAC9DU,EAER,QAAS+vB,IAAe/vB,GACvB,GAAID,GAAQ4tB,GAAkBvtB,KAAMJ,EAAKV,KAMzC,OALKS,GACJC,EAAKV,KAAOS,EAAM,GAElBC,EAAKgO,gBAAgB,QAEfhO,EAIR,QAASsvB,IAAe/tB,EAAO2uB,GAC9B,GAAIlwB,GACHoC,EAAI,CACL,MAA6B,OAApBpC,EAAOuB,EAAMa,IAAaA,IAClCzF,EAAO+jB,MAAO1gB,EAAM,cAAekwB,GAAevzB,EAAO+jB,MAAOwP,EAAY9tB,GAAI,eAIlF,QAAS+tB,IAAgBvtB,EAAKwtB,GAE7B,GAAuB,IAAlBA,EAAK5vB,UAAmB7D,EAAO6jB,QAAS5d,GAA7C,CAIA,GAAItD,GAAM8C,EAAGqF,EACZ4oB,EAAU1zB,EAAO+jB,MAAO9d,GACxB0tB,EAAU3zB,EAAO+jB,MAAO0P,EAAMC,GAC9BnL,EAASmL,EAAQnL,MAElB,IAAKA,EAAS,OACNoL,GAAQ1K,OACf0K,EAAQpL,SAER,KAAM5lB,IAAQ4lB,GACb,IAAM9iB,EAAI,EAAGqF,EAAIyd,EAAQ5lB,GAAOa,OAAYsH,EAAJrF,EAAOA,IAC9CzF,EAAOyC,MAAMmb,IAAK6V,EAAM9wB,EAAM4lB,EAAQ5lB,GAAQ8C,IAM5CkuB,EAAQlrB,OACZkrB,EAAQlrB,KAAOzI,EAAOgG,UAAY2tB,EAAQlrB,QAI5C,QAASmrB,IAAoB3tB,EAAKwtB,GACjC,GAAItpB,GAAUjC,EAAGO,CAGjB,IAAuB,IAAlBgrB,EAAK5vB,SAAV,CAOA,GAHAsG,EAAWspB,EAAKtpB,SAASC,eAGnBpK,EAAOmI,QAAQgZ,cAAgBsS,EAAMzzB,EAAO0G,SAAY,CAC7D+B,EAAOzI,EAAO+jB,MAAO0P,EAErB,KAAMvrB,IAAKO,GAAK8f,OACfvoB,EAAO4pB,YAAa6J,EAAMvrB,EAAGO,EAAKwgB,OAInCwK,GAAKpiB,gBAAiBrR,EAAO0G,SAIZ,WAAbyD,GAAyBspB,EAAKlpB,OAAStE,EAAIsE,MAC/C4oB,GAAeM,GAAOlpB,KAAOtE,EAAIsE,KACjC6oB,GAAeK,IAIS,WAAbtpB,GACNspB,EAAKrvB,aACTqvB,EAAK3S,UAAY7a,EAAI6a,WAOjB9gB,EAAOmI,QAAQyY,YAAgB3a,EAAImN,YAAcpT,EAAOmB,KAAKsyB,EAAKrgB,aACtEqgB,EAAKrgB,UAAYnN,EAAImN,YAGE,UAAbjJ,GAAwB0mB,GAA4B9sB,KAAMkC,EAAItD,OAKzE8wB,EAAKI,eAAiBJ,EAAKtb,QAAUlS,EAAIkS,QAIpCsb,EAAKppB,QAAUpE,EAAIoE,QACvBopB,EAAKppB,MAAQpE,EAAIoE,QAKM,WAAbF,EACXspB,EAAKK,gBAAkBL,EAAKrb,SAAWnS,EAAI6tB,iBAInB,UAAb3pB,GAAqC,aAAbA,KACnCspB,EAAKlX,aAAetW,EAAIsW,eAI1Bvc,EAAO+E,MACNgvB,SAAU,SACVC,UAAW,UACX1B,aAAc,SACd2B,YAAa,QACbC,WAAY,eACV,SAAU9tB,EAAMulB,GAClB3rB,EAAOsB,GAAI8E,GAAS,SAAUhF,GAC7B,GAAIwD,GACHa,EAAI,EACJZ,KACAsvB,EAASn0B,EAAQoB,GACjBoE,EAAO2uB,EAAO3wB,OAAS,CAExB,MAAagC,GAALC,EAAWA,IAClBb,EAAQa,IAAMD,EAAOlC,KAAOA,KAAKgD,OAAM,GACvCtG,EAAQm0B,EAAO1uB,IAAMkmB,GAAY/mB,GAGjCpE,EAAU4E,MAAOP,EAAKD,EAAMH,MAG7B,OAAOnB,MAAKqB,UAAWE,KAIzB,SAAS6tB,IAAQrxB,EAASsS,GACzB,GAAI/O,GAAOvB,EACVoC,EAAI,EACJ2uB,QAAe/yB,GAAQwI,uBAAyBnK,EAAoB2B,EAAQwI,qBAAsB8J,GAAO,WACjGtS,GAAQ8P,mBAAqBzR,EAAoB2B,EAAQ8P,iBAAkBwC,GAAO,KACzFpU,CAEF,KAAM60B,EACL,IAAMA,KAAYxvB,EAAQvD,EAAQ2H,YAAc3H,EAA8B,OAApBgC,EAAOuB,EAAMa,IAAaA,KAC7EkO,GAAO3T,EAAOmK,SAAU9G,EAAMsQ,GACnCygB,EAAM3zB,KAAM4C,GAEZrD,EAAO2D,MAAOywB,EAAO1B,GAAQrvB,EAAMsQ,GAKtC,OAAOA,KAAQpU,GAAaoU,GAAO3T,EAAOmK,SAAU9I,EAASsS,GAC5D3T,EAAO2D,OAAStC,GAAW+yB,GAC3BA,EAIF,QAASC,IAAmBhxB,GACtBwtB,GAA4B9sB,KAAMV,EAAKV,QAC3CU,EAAKwwB,eAAiBxwB,EAAK8U,SAI7BnY,EAAOgG,QACNM,MAAO,SAAUjD,EAAMuvB,EAAeC,GACrC,GAAIyB,GAAczhB,EAAMvM,EAAOb,EAAG8uB,EACjCC,EAASx0B,EAAOmN,SAAU9J,EAAKS,cAAeT,EAW/C,IATKrD,EAAOmI,QAAQyY,YAAc5gB,EAAOyc,SAASpZ,KAAUitB,GAAavsB,KAAM,IAAMV,EAAK8G,SAAW,KACpG7D,EAAQjD,EAAKwd,WAAW,IAIxB8Q,GAAYve,UAAY/P,EAAKyd,UAC7B6Q,GAAY7f,YAAaxL,EAAQqrB,GAAYte,eAGvCrT,EAAOmI,QAAQgZ,cAAiBnhB,EAAOmI,QAAQmZ,gBACjC,IAAlBje,EAAKQ,UAAoC,KAAlBR,EAAKQ,UAAqB7D,EAAOyc,SAASpZ,IAOnE,IAJAixB,EAAe5B,GAAQpsB,GACvBiuB,EAAc7B,GAAQrvB,GAGhBoC,EAAI,EAA8B,OAA1BoN,EAAO0hB,EAAY9uB,MAAeA,EAE1C6uB,EAAa7uB,IACjBmuB,GAAoB/gB,EAAMyhB,EAAa7uB,GAM1C,IAAKmtB,EACJ,GAAKC,EAIJ,IAHA0B,EAAcA,GAAe7B,GAAQrvB,GACrCixB,EAAeA,GAAgB5B,GAAQpsB,GAEjCb,EAAI,EAA8B,OAA1BoN,EAAO0hB,EAAY9uB,IAAaA,IAC7C+tB,GAAgB3gB,EAAMyhB,EAAa7uB,QAGpC+tB,IAAgBnwB,EAAMiD,EAaxB,OARAguB,GAAe5B,GAAQpsB,EAAO,UACzBguB,EAAa9wB,OAAS,GAC1BmvB,GAAe2B,GAAeE,GAAU9B,GAAQrvB,EAAM,WAGvDixB,EAAeC,EAAc1hB,EAAO,KAG7BvM,GAGRwC,cAAe,SAAUlE,EAAOvD,EAASuH,EAAS6rB,GACjD,GAAI9uB,GAAGtC,EAAM8J,EACZ5D,EAAKoK,EAAKyM,EAAOsU,EACjB5pB,EAAIlG,EAAMpB,OAGVmxB,EAAOzE,GAAoB7uB,GAE3BuzB,KACAnvB,EAAI,CAEL,MAAYqF,EAAJrF,EAAOA,IAGd,GAFApC,EAAOuB,EAAOa,GAETpC,GAAiB,IAATA,EAGZ,GAA6B,WAAxBrD,EAAO2C,KAAMU,GACjBrD,EAAO2D,MAAOixB,EAAOvxB,EAAKQ,UAAaR,GAASA,OAG1C,IAAMstB,GAAM5sB,KAAMV,GAIlB,CACNkG,EAAMA,GAAOorB,EAAKzhB,YAAa7R,EAAQwH,cAAc,QAGrD8K,GAAQ8c,GAAShtB,KAAMJ,KAAW,GAAI,KAAM,GAAG+G,cAC/CsqB,EAAOxD,GAASvd,IAASud,GAAQzG,SAEjClhB,EAAI6J,UAAYshB,EAAK,GAAKrxB,EAAKwD,QAAS2pB,GAAW,aAAgBkE,EAAK,GAGxE/uB,EAAI+uB,EAAK,EACT,OAAQ/uB,IACP4D,EAAMA,EAAIuN,SASX,KALM9W,EAAOmI,QAAQgY,mBAAqBoQ,GAAmBxsB,KAAMV,IAClEuxB,EAAMn0B,KAAMY,EAAQ6wB,eAAgB3B,GAAmB9sB,KAAMJ,GAAO,MAI/DrD,EAAOmI,QAAQiY,MAAQ,CAG5B/c,EAAe,UAARsQ,GAAoB+c,GAAO3sB,KAAMV,GAI3B,YAAZqxB,EAAK,IAAqBhE,GAAO3sB,KAAMV,GAEtC,EADAkG,EAJDA,EAAI8J,WAOL1N,EAAItC,GAAQA,EAAK2F,WAAWxF,MAC5B,OAAQmC,IACF3F,EAAOmK,SAAWiW,EAAQ/c,EAAK2F,WAAWrD,GAAK,WAAcya,EAAMpX,WAAWxF,QAClFH,EAAKyO,YAAasO,GAKrBpgB,EAAO2D,MAAOixB,EAAOrrB,EAAIP,YAGzBO,EAAI6L,YAAc,EAGlB,OAAQ7L,EAAI8J,WACX9J,EAAIuI,YAAavI,EAAI8J,WAItB9J,GAAMorB,EAAK7d,cAtDX8d,GAAMn0B,KAAMY,EAAQ6wB,eAAgB7uB,GA4DlCkG,IACJorB,EAAK7iB,YAAavI,GAKbvJ,EAAOmI,QAAQuZ,eACpB1hB,EAAO+K,KAAM2nB,GAAQkC,EAAO,SAAWP,IAGxC5uB,EAAI,CACJ,OAASpC,EAAOuxB,EAAOnvB,KAItB,KAAKgvB,GAAmD,KAAtCz0B,EAAO2K,QAAStH,EAAMoxB,MAIxCtnB,EAAWnN,EAAOmN,SAAU9J,EAAKS,cAAeT,GAGhDkG,EAAMmpB,GAAQiC,EAAKzhB,YAAa7P,GAAQ,UAGnC8J,GACJwlB,GAAeppB,GAIXX,GAAU,CACdjD,EAAI,CACJ,OAAStC,EAAOkG,EAAK5D,KACforB,GAAYhtB,KAAMV,EAAKV,MAAQ,KACnCiG,EAAQnI,KAAM4C,GAQlB,MAFAkG,GAAM,KAECorB,GAGRlR,UAAW,SAAU7e,EAAsBse,GAC1C,GAAI7f,GAAMV,EAAM0B,EAAIoE,EACnBhD,EAAI,EACJ2d,EAAcpjB,EAAO0G,QACrB8K,EAAQxR,EAAOwR,MACf0P,EAAgBlhB,EAAOmI,QAAQ+Y,cAC/BwH,EAAU1oB,EAAOyC,MAAMimB,OAExB,MAA6B,OAApBrlB,EAAOuB,EAAMa,IAAaA,IAElC,IAAKyd,GAAcljB,EAAOkjB,WAAY7f,MAErCgB,EAAKhB,EAAM+f,GACX3a,EAAOpE,GAAMmN,EAAOnN,IAER,CACX,GAAKoE,EAAK8f,OACT,IAAM5lB,IAAQ8F,GAAK8f,OACbG,EAAS/lB,GACb3C,EAAOyC,MAAMsG,OAAQ1F,EAAMV,GAI3B3C,EAAO4pB,YAAavmB,EAAMV,EAAM8F,EAAKwgB,OAMnCzX;EAAOnN,WAEJmN,GAAOnN,GAKT6c,QACG7d,GAAM+f,SAEK/f,GAAKgO,kBAAoB3R,EAC3C2D,EAAKgO,gBAAiB+R,GAGtB/f,EAAM+f,GAAgB,KAGvBhjB,EAAgBK,KAAM4D,MAO3BgvB,SAAU,SAAUwB,GACnB,MAAO70B,GAAO80B,MACbD,IAAKA,EACLlyB,KAAM,MACNoyB,SAAU,SACVprB,OAAO,EACP0e,QAAQ,EACR2M,UAAU,OAIbh1B,EAAOsB,GAAG0E,QACTivB,QAAS,SAAUnC,GAClB,GAAK9yB,EAAOiE,WAAY6uB,GACvB,MAAOxvB,MAAKyB,KAAK,SAASU,GACzBzF,EAAOsD,MAAM2xB,QAASnC,EAAKtuB,KAAKlB,KAAMmC,KAIxC,IAAKnC,KAAK,GAAK,CAEd,GAAIoxB,GAAO10B,EAAQ8yB,EAAMxvB,KAAK,GAAGQ,eAAgByB,GAAG,GAAGe,OAAM,EAExDhD,MAAK,GAAGc,YACZswB,EAAKpC,aAAchvB,KAAK,IAGzBoxB,EAAK9uB,IAAI,WACR,GAAIvC,GAAOC,IAEX,OAAQD,EAAKgQ,YAA2C,IAA7BhQ,EAAKgQ,WAAWxP,SAC1CR,EAAOA,EAAKgQ,UAGb,OAAOhQ,KACL4uB,OAAQ3uB,MAGZ,MAAOA,OAGR4xB,UAAW,SAAUpC,GACpB,MAAK9yB,GAAOiE,WAAY6uB,GAChBxvB,KAAKyB,KAAK,SAASU,GACzBzF,EAAOsD,MAAM4xB,UAAWpC,EAAKtuB,KAAKlB,KAAMmC,MAInCnC,KAAKyB,KAAK,WAChB,GAAI2Y,GAAO1d,EAAQsD,MAClBqrB,EAAWjR,EAAKiR,UAEZA,GAASnrB,OACbmrB,EAASsG,QAASnC,GAGlBpV,EAAKuU,OAAQa,MAKhB4B,KAAM,SAAU5B,GACf,GAAI7uB,GAAajE,EAAOiE,WAAY6uB,EAEpC,OAAOxvB,MAAKyB,KAAK,SAASU,GACzBzF,EAAQsD,MAAO2xB,QAAShxB,EAAa6uB,EAAKtuB,KAAKlB,KAAMmC,GAAKqtB,MAI5DqC,OAAQ,WACP,MAAO7xB,MAAKyP,SAAShO,KAAK,WACnB/E,EAAOmK,SAAU7G,KAAM,SAC5BtD,EAAQsD,MAAOyvB,YAAazvB,KAAK0F,cAEhCnD,QAGL,IAAIuvB,IAAQC,GAAWC,GACtBC,GAAS,kBACTC,GAAW,wBACXC,GAAY,4BAGZC,GAAe,4BACfC,GAAU,UACVC,GAAgBnnB,OAAQ,KAAOjN,EAAY,SAAU,KACrDq0B,GAAgBpnB,OAAQ,KAAOjN,EAAY,kBAAmB,KAC9Ds0B,GAAcrnB,OAAQ,YAAcjN,EAAY,IAAK,KACrDu0B,IAAgBC,KAAM,SAEtBC,IAAYC,SAAU,WAAYC,WAAY,SAAU7T,QAAS,SACjE8T,IACCC,cAAe,EACfC,WAAY,KAGbC,IAAc,MAAO,QAAS,SAAU,QACxCC,IAAgB,SAAU,IAAK,MAAO,KAGvC,SAASC,IAAgB1qB,EAAO3F,GAG/B,GAAKA,IAAQ2F,GACZ,MAAO3F,EAIR,IAAIswB,GAAUtwB,EAAK7C,OAAO,GAAGhB,cAAgB6D,EAAKzF,MAAM,GACvDg2B,EAAWvwB,EACXX,EAAI+wB,GAAYhzB,MAEjB,OAAQiC,IAEP,GADAW,EAAOowB,GAAa/wB,GAAMixB,EACrBtwB,IAAQ2F,GACZ,MAAO3F,EAIT,OAAOuwB,GAGR,QAASC,IAAUvzB,EAAMwzB,GAIxB,MADAxzB,GAAOwzB,GAAMxzB,EAC4B,SAAlCrD,EAAO82B,IAAKzzB,EAAM,aAA2BrD,EAAOmN,SAAU9J,EAAKS,cAAeT,GAG1F,QAAS0zB,IAAUliB,EAAUmiB,GAC5B,GAAI1U,GAASjf,EAAM4zB,EAClBzX,KACA3B,EAAQ,EACRra,EAASqR,EAASrR,MAEnB,MAAgBA,EAARqa,EAAgBA,IACvBxa,EAAOwR,EAAUgJ,GACXxa,EAAK0I,QAIXyT,EAAQ3B,GAAU7d,EAAO+jB,MAAO1gB,EAAM,cACtCif,EAAUjf,EAAK0I,MAAMuW,QAChB0U,GAGExX,EAAQ3B,IAAuB,SAAZyE,IACxBjf,EAAK0I,MAAMuW,QAAU,IAMM,KAAvBjf,EAAK0I,MAAMuW,SAAkBsU,GAAUvzB,KAC3Cmc,EAAQ3B,GAAU7d,EAAO+jB,MAAO1gB,EAAM,aAAc6zB,GAAmB7zB,EAAK8G,aAIvEqV,EAAQ3B,KACboZ,EAASL,GAAUvzB,IAEdif,GAAuB,SAAZA,IAAuB2U,IACtCj3B,EAAO+jB,MAAO1gB,EAAM,aAAc4zB,EAAS3U,EAAUtiB,EAAO82B,IAAKzzB,EAAM,aAQ3E,KAAMwa,EAAQ,EAAWra,EAARqa,EAAgBA,IAChCxa,EAAOwR,EAAUgJ,GACXxa,EAAK0I,QAGLirB,GAA+B,SAAvB3zB,EAAK0I,MAAMuW,SAA6C,KAAvBjf,EAAK0I,MAAMuW,UACzDjf,EAAK0I,MAAMuW,QAAU0U,EAAOxX,EAAQ3B,IAAW,GAAK,QAItD,OAAOhJ,GAGR7U,EAAOsB,GAAG0E,QACT8wB,IAAK,SAAU1wB,EAAMiE,GACpB,MAAOrK,GAAOqL,OAAQ/H,KAAM,SAAUD,EAAM+C,EAAMiE,GACjD,GAAI3E,GAAKyxB,EACRvxB,KACAH,EAAI,CAEL,IAAKzF,EAAOyG,QAASL,GAAS,CAI7B,IAHA+wB,EAAS9B,GAAWhyB,GACpBqC,EAAMU,EAAK5C,OAECkC,EAAJD,EAASA,IAChBG,EAAKQ,EAAMX,IAAQzF,EAAO82B,IAAKzzB,EAAM+C,EAAMX,IAAK,EAAO0xB,EAGxD,OAAOvxB,GAGR,MAAOyE,KAAU9K,EAChBS,EAAO+L,MAAO1I,EAAM+C,EAAMiE,GAC1BrK,EAAO82B,IAAKzzB,EAAM+C,IACjBA,EAAMiE,EAAOhF,UAAU7B,OAAS,IAEpCwzB,KAAM,WACL,MAAOD,IAAUzzB,MAAM,IAExB8zB,KAAM,WACL,MAAOL,IAAUzzB,OAElB+zB,OAAQ,SAAUlZ,GACjB,MAAsB,iBAAVA,GACJA,EAAQ7a,KAAK0zB,OAAS1zB,KAAK8zB,OAG5B9zB,KAAKyB,KAAK,WACX6xB,GAAUtzB,MACdtD,EAAQsD,MAAO0zB,OAEfh3B,EAAQsD,MAAO8zB,YAMnBp3B,EAAOgG,QAGNsxB,UACC/W,SACC9b,IAAK,SAAUpB,EAAMk0B,GACpB,GAAKA,EAAW,CAEf,GAAI1yB,GAAMywB,GAAQjyB,EAAM,UACxB,OAAe,KAARwB,EAAa,IAAMA,MAO9B2yB,WACCC,aAAe,EACfC,aAAe,EACfpB,YAAc,EACdqB,YAAc,EACdpX,SAAW,EACXqX,OAAS,EACTC,SAAW,EACXC,QAAU,EACVC,QAAU,EACVvV,MAAQ,GAKTwV,UAECC,QAASj4B,EAAOmI,QAAQqY,SAAW,WAAa,cAIjDzU,MAAO,SAAU1I,EAAM+C,EAAMiE,EAAO6tB,GAEnC,GAAM70B,GAA0B,IAAlBA,EAAKQ,UAAoC,IAAlBR,EAAKQ,UAAmBR,EAAK0I,MAAlE,CAKA,GAAIlH,GAAKlC,EAAM0hB,EACdsS,EAAW32B,EAAOiK,UAAW7D,GAC7B2F,EAAQ1I,EAAK0I,KASd,IAPA3F,EAAOpG,EAAOg4B,SAAUrB,KAAgB32B,EAAOg4B,SAAUrB,GAAaF,GAAgB1qB,EAAO4qB,IAI7FtS,EAAQrkB,EAAOs3B,SAAUlxB,IAAUpG,EAAOs3B,SAAUX,GAG/CtsB,IAAU9K,EAsCd,MAAK8kB,IAAS,OAASA,KAAUxf,EAAMwf,EAAM5f,IAAKpB,GAAM,EAAO60B,MAAa34B,EACpEsF,EAIDkH,EAAO3F,EAhCd,IAVAzD,QAAc0H,GAGA,WAAT1H,IAAsBkC,EAAMixB,GAAQryB,KAAM4G,MAC9CA,GAAUxF,EAAI,GAAK,GAAMA,EAAI,GAAKiD,WAAY9H,EAAO82B,IAAKzzB,EAAM+C,IAEhEzD,EAAO,YAIM,MAAT0H,GAA0B,WAAT1H,GAAqBkF,MAAOwC,KAKpC,WAAT1H,GAAsB3C,EAAOw3B,UAAWb,KAC5CtsB,GAAS,MAKJrK,EAAOmI,QAAQ6Z,iBAA6B,KAAV3X,GAA+C,IAA/BjE,EAAKvF,QAAQ,gBACpEkL,EAAO3F,GAAS,WAIXie,GAAW,OAASA,KAAWha,EAAQga,EAAMoC,IAAKpjB,EAAMgH,EAAO6tB,MAAa34B,IAIjF,IACCwM,EAAO3F,GAASiE,EACf,MAAMnC,OAcX4uB,IAAK,SAAUzzB,EAAM+C,EAAM8xB,EAAOf,GACjC,GAAIzyB,GAAKoQ,EAAKuP,EACbsS,EAAW32B,EAAOiK,UAAW7D,EAyB9B,OAtBAA,GAAOpG,EAAOg4B,SAAUrB,KAAgB32B,EAAOg4B,SAAUrB,GAAaF,GAAgBpzB,EAAK0I,MAAO4qB,IAIlGtS,EAAQrkB,EAAOs3B,SAAUlxB,IAAUpG,EAAOs3B,SAAUX,GAG/CtS,GAAS,OAASA,KACtBvP,EAAMuP,EAAM5f,IAAKpB,GAAM,EAAM60B,IAIzBpjB,IAAQvV,IACZuV,EAAMwgB,GAAQjyB,EAAM+C,EAAM+wB,IAId,WAARriB,GAAoB1O,IAAQgwB,MAChCthB,EAAMshB,GAAoBhwB,IAIZ,KAAV8xB,GAAgBA,GACpBxzB,EAAMoD,WAAYgN,GACXojB,KAAU,GAAQl4B,EAAO4H,UAAWlD,GAAQA,GAAO,EAAIoQ,GAExDA,KAMJxV,EAAOqjB,kBACX0S,GAAY,SAAUhyB,GACrB,MAAO/D,GAAOqjB,iBAAkBtf,EAAM,OAGvCiyB,GAAS,SAAUjyB,EAAM+C,EAAM+xB,GAC9B,GAAIvV,GAAOwV,EAAUC,EACpBd,EAAWY,GAAa9C,GAAWhyB,GAGnCwB,EAAM0yB,EAAWA,EAASe,iBAAkBlyB,IAAUmxB,EAAUnxB,GAAS7G,EACzEwM,EAAQ1I,EAAK0I,KA8Bd,OA5BKwrB,KAES,KAAR1yB,GAAe7E,EAAOmN,SAAU9J,EAAKS,cAAeT,KACxDwB,EAAM7E,EAAO+L,MAAO1I,EAAM+C,IAOtByvB,GAAU9xB,KAAMc,IAAS8wB,GAAQ5xB,KAAMqC,KAG3Cwc,EAAQ7W,EAAM6W,MACdwV,EAAWrsB,EAAMqsB,SACjBC,EAAWtsB,EAAMssB,SAGjBtsB,EAAMqsB,SAAWrsB,EAAMssB,SAAWtsB,EAAM6W,MAAQ/d,EAChDA,EAAM0yB,EAAS3U,MAGf7W,EAAM6W,MAAQA,EACd7W,EAAMqsB,SAAWA,EACjBrsB,EAAMssB,SAAWA,IAIZxzB,IAEGjF,EAASE,gBAAgBy4B,eACpClD,GAAY,SAAUhyB,GACrB,MAAOA,GAAKk1B,cAGbjD,GAAS,SAAUjyB,EAAM+C,EAAM+xB,GAC9B,GAAIK,GAAMC,EAAIC,EACbnB,EAAWY,GAAa9C,GAAWhyB,GACnCwB,EAAM0yB,EAAWA,EAAUnxB,GAAS7G,EACpCwM,EAAQ1I,EAAK0I,KAoCd,OAhCY,OAAPlH,GAAekH,GAASA,EAAO3F,KACnCvB,EAAMkH,EAAO3F,IAUTyvB,GAAU9xB,KAAMc,KAAU4wB,GAAU1xB,KAAMqC,KAG9CoyB,EAAOzsB,EAAMysB,KACbC,EAAKp1B,EAAKs1B,aACVD,EAASD,GAAMA,EAAGD,KAGbE,IACJD,EAAGD,KAAOn1B,EAAKk1B,aAAaC,MAE7BzsB,EAAMysB,KAAgB,aAATpyB,EAAsB,MAAQvB,EAC3CA,EAAMkH,EAAM6sB,UAAY,KAGxB7sB,EAAMysB,KAAOA,EACRE,IACJD,EAAGD,KAAOE,IAIG,KAAR7zB,EAAa,OAASA,GAI/B,SAASg0B,IAAmBx1B,EAAMgH,EAAOyuB,GACxC,GAAI5rB,GAAU0oB,GAAUnyB,KAAM4G,EAC9B,OAAO6C,GAENvG,KAAKiE,IAAK,EAAGsC,EAAS,IAAQ4rB,GAAY,KAAU5rB,EAAS,IAAO,MACpE7C,EAGF,QAAS0uB,IAAsB11B,EAAM+C,EAAM8xB,EAAOc,EAAa7B,GAC9D,GAAI1xB,GAAIyyB,KAAYc,EAAc,SAAW,WAE5C,EAES,UAAT5yB,EAAmB,EAAI,EAEvB0O,EAAM,CAEP,MAAY,EAAJrP,EAAOA,GAAK,EAEJ,WAAVyyB,IACJpjB,GAAO9U,EAAO82B,IAAKzzB,EAAM60B,EAAQ3B,GAAW9wB,IAAK,EAAM0xB,IAGnD6B,GAEW,YAAVd,IACJpjB,GAAO9U,EAAO82B,IAAKzzB,EAAM,UAAYkzB,GAAW9wB,IAAK,EAAM0xB,IAI7C,WAAVe,IACJpjB,GAAO9U,EAAO82B,IAAKzzB,EAAM,SAAWkzB,GAAW9wB,GAAM,SAAS,EAAM0xB,MAIrEriB,GAAO9U,EAAO82B,IAAKzzB,EAAM,UAAYkzB,GAAW9wB,IAAK,EAAM0xB,GAG5C,YAAVe,IACJpjB,GAAO9U,EAAO82B,IAAKzzB,EAAM,SAAWkzB,GAAW9wB,GAAM,SAAS,EAAM0xB,IAKvE,OAAOriB,GAGR,QAASmkB,IAAkB51B,EAAM+C,EAAM8xB,GAGtC,GAAIgB,IAAmB,EACtBpkB,EAAe,UAAT1O,EAAmB/C,EAAKqf,YAAcrf,EAAKgf,aACjD8U,EAAS9B,GAAWhyB,GACpB21B,EAAch5B,EAAOmI,QAAQsa,WAAgE,eAAnDziB,EAAO82B,IAAKzzB,EAAM,aAAa,EAAO8zB,EAKjF,IAAY,GAAPriB,GAAmB,MAAPA,EAAc,CAQ9B,GANAA,EAAMwgB,GAAQjyB,EAAM+C,EAAM+wB,IACf,EAANriB,GAAkB,MAAPA,KACfA,EAAMzR,EAAK0I,MAAO3F,IAIdyvB,GAAU9xB,KAAK+Q,GACnB,MAAOA,EAKRokB,GAAmBF,IAAiBh5B,EAAOmI,QAAQkZ,mBAAqBvM,IAAQzR,EAAK0I,MAAO3F,IAG5F0O,EAAMhN,WAAYgN,IAAS,EAI5B,MAASA,GACRikB,GACC11B,EACA+C,EACA8xB,IAAWc,EAAc,SAAW,WACpCE,EACA/B,GAEE,KAIL,QAASD,IAAoB/sB,GAC5B,GAAI2I,GAAMlT,EACT0iB,EAAUyT,GAAa5rB,EA0BxB,OAxBMmY,KACLA,EAAU6W,GAAehvB,EAAU2I,GAGlB,SAAZwP,GAAuBA,IAE3B8S,IAAWA,IACVp1B,EAAO,kDACN82B,IAAK,UAAW,6BAChB/C,SAAUjhB,EAAIhT,iBAGhBgT,GAAQsiB,GAAO,GAAGvF,eAAiBuF,GAAO,GAAGxF,iBAAkBhwB,SAC/DkT,EAAIsmB,MAAM,+BACVtmB,EAAIumB,QAEJ/W,EAAU6W,GAAehvB,EAAU2I,GACnCsiB,GAAOvyB,UAIRkzB,GAAa5rB,GAAamY,GAGpBA,EAIR,QAAS6W,IAAe/yB,EAAM0M,GAC7B,GAAIzP,GAAOrD,EAAQ8S,EAAIjK,cAAezC,IAAS2tB,SAAUjhB,EAAI1L,MAC5Dkb,EAAUtiB,EAAO82B,IAAKzzB,EAAK,GAAI,UAEhC,OADAA,GAAK0F,SACEuZ,EAGRtiB,EAAO+E,MAAO,SAAU,SAAW,SAAUU,EAAGW,GAC/CpG,EAAOs3B,SAAUlxB,IAChB3B,IAAK,SAAUpB,EAAMk0B,EAAUW,GAC9B,MAAKX,GAGwB,IAArBl0B,EAAKqf,aAAqBgT,GAAa3xB,KAAM/D,EAAO82B,IAAKzzB,EAAM,YACrErD,EAAO6L,KAAMxI,EAAM4yB,GAAS,WAC3B,MAAOgD,IAAkB51B,EAAM+C,EAAM8xB,KAEtCe,GAAkB51B,EAAM+C,EAAM8xB,GAPhC,GAWDzR,IAAK,SAAUpjB,EAAMgH,EAAO6tB,GAC3B,GAAIf,GAASe,GAAS7C,GAAWhyB,EACjC,OAAOw1B,IAAmBx1B,EAAMgH,EAAO6tB,EACtCa,GACC11B,EACA+C,EACA8xB,EACAl4B,EAAOmI,QAAQsa,WAAgE,eAAnDziB,EAAO82B,IAAKzzB,EAAM,aAAa,EAAO8zB,GAClEA,GACG,OAMFn3B,EAAOmI,QAAQoY,UACpBvgB,EAAOs3B,SAAS/W,SACf9b,IAAK,SAAUpB,EAAMk0B,GAEpB,MAAO/B,IAASzxB,MAAOwzB,GAAYl0B,EAAKk1B,aAAel1B,EAAKk1B,aAAa/kB,OAASnQ,EAAK0I,MAAMyH,SAAW,IACrG,IAAO1L,WAAY2G,OAAO6qB,IAAS,GACrC/B,EAAW,IAAM,IAGnB9Q,IAAK,SAAUpjB,EAAMgH,GACpB,GAAI0B,GAAQ1I,EAAK0I,MAChBwsB,EAAel1B,EAAKk1B,aACpBhY,EAAUvgB,EAAO4H,UAAWyC,GAAU,iBAA2B,IAARA,EAAc,IAAM,GAC7EmJ,EAAS+kB,GAAgBA,EAAa/kB,QAAUzH,EAAMyH,QAAU,EAIjEzH,GAAMyW,KAAO,GAINnY,GAAS,GAAe,KAAVA,IAC6B,KAAhDrK,EAAOmB,KAAMqS,EAAO3M,QAAS0uB,GAAQ,MACrCxpB,EAAMsF,kBAKPtF,EAAMsF,gBAAiB,UAGR,KAAVhH,GAAgBkuB,IAAiBA,EAAa/kB,UAMpDzH,EAAMyH,OAAS+hB,GAAOxxB,KAAMyP,GAC3BA,EAAO3M,QAAS0uB,GAAQhV,GACxB/M,EAAS,IAAM+M,MAOnBvgB,EAAO,WACAA,EAAOmI,QAAQiZ,sBACpBphB,EAAOs3B,SAASzU,aACfpe,IAAK,SAAUpB,EAAMk0B,GACpB,MAAKA,GAGGv3B,EAAO6L,KAAMxI,GAAQif,QAAW,gBACtCgT,IAAUjyB,EAAM,gBAJlB,MAaGrD,EAAOmI,QAAQ8Y,eAAiBjhB,EAAOsB,GAAG40B,UAC/Cl2B,EAAO+E,MAAQ,MAAO,QAAU,SAAUU,EAAGmgB,GAC5C5lB,EAAOs3B,SAAU1R,IAChBnhB,IAAK,SAAUpB,EAAMk0B,GACpB,MAAKA,IACJA,EAAWjC,GAAQjyB,EAAMuiB,GAElBiQ,GAAU9xB,KAAMwzB,GACtBv3B,EAAQqD,GAAO6yB,WAAYtQ,GAAS,KACpC2R,GALF,QAcAv3B,EAAO4U,MAAQ5U,EAAO4U,KAAKwE,UAC/BpZ,EAAO4U,KAAKwE,QAAQ6d,OAAS,SAAU5zB,GAGtC,MAA2B,IAApBA,EAAKqf,aAAyC,GAArBrf,EAAKgf,eAClCriB,EAAOmI,QAAQoa,uBAAmG,UAAxElf,EAAK0I,OAAS1I,EAAK0I,MAAMuW,SAAYtiB,EAAO82B,IAAKzzB,EAAM,aAGrGrD,EAAO4U,KAAKwE,QAAQmgB,QAAU,SAAUl2B,GACvC,OAAQrD,EAAO4U,KAAKwE,QAAQ6d,OAAQ5zB,KAKtCrD,EAAO+E,MACNy0B,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUC,EAAQC,GACpB55B,EAAOs3B,SAAUqC,EAASC,IACzBC,OAAQ,SAAUxvB,GACjB,GAAI5E,GAAI,EACPq0B,KAGAC,EAAyB,gBAAV1vB,GAAqBA,EAAMiC,MAAM,MAASjC,EAE1D,MAAY,EAAJ5E,EAAOA,IACdq0B,EAAUH,EAASpD,GAAW9wB,GAAMm0B,GACnCG,EAAOt0B,IAAOs0B,EAAOt0B,EAAI,IAAOs0B,EAAO,EAGzC,OAAOD,KAIHnE,GAAQ5xB,KAAM41B,KACnB35B,EAAOs3B,SAAUqC,EAASC,GAASnT,IAAMoS,KAG3C,IAAImB,IAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,oCAEhBp6B,GAAOsB,GAAG0E,QACTq0B,UAAW,WACV,MAAOr6B,GAAOqxB,MAAO/tB,KAAKg3B,mBAE3BA,eAAgB,WACf,MAAOh3B,MAAKsC,IAAI,WAEf,GAAIiP,GAAW7U,EAAO4lB,KAAMtiB,KAAM,WAClC,OAAOuR,GAAW7U,EAAOsE,UAAWuQ,GAAavR,OAEjDkQ,OAAO,WACP,GAAI7Q,GAAOW,KAAKX,IAEhB,OAAOW,MAAK8C,OAASpG,EAAQsD,MAAOyrB,GAAI,cACvCqL,GAAar2B,KAAMT,KAAK6G,YAAegwB,GAAgBp2B,KAAMpB,KAC3DW,KAAK6U,UAAY0Y,GAA4B9sB,KAAMpB,MAEtDiD,IAAI,SAAUH,EAAGpC,GACjB,GAAIyR,GAAM9U,EAAQsD,MAAOwR,KAEzB,OAAc,OAAPA,EACN,KACA9U,EAAOyG,QAASqO,GACf9U,EAAO4F,IAAKkP,EAAK,SAAUA,GAC1B,OAAS1O,KAAM/C,EAAK+C,KAAMiE,MAAOyK,EAAIjO,QAASqzB,GAAO,YAEpD9zB,KAAM/C,EAAK+C,KAAMiE,MAAOyK,EAAIjO,QAASqzB,GAAO,WAC9Cz1B,SAMLzE,EAAOqxB,MAAQ,SAAUzjB,EAAG2sB,GAC3B,GAAIZ,GACHa,KACA5c,EAAM,SAAU3V,EAAKoC,GAEpBA,EAAQrK,EAAOiE,WAAYoG,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEmwB,EAAGA,EAAEh3B,QAAWi3B,mBAAoBxyB,GAAQ,IAAMwyB,mBAAoBpwB,GASxE,IALKkwB,IAAgBh7B,IACpBg7B,EAAcv6B,EAAO06B,cAAgB16B,EAAO06B,aAAaH,aAIrDv6B,EAAOyG,QAASmH,IAASA,EAAE1K,SAAWlD,EAAOgE,cAAe4J,GAEhE5N,EAAO+E,KAAM6I,EAAG,WACfgQ,EAAKta,KAAK8C,KAAM9C,KAAK+G,aAMtB,KAAMsvB,IAAU/rB,GACf+sB,GAAahB,EAAQ/rB,EAAG+rB,GAAUY,EAAa3c,EAKjD,OAAO4c,GAAEtpB,KAAM,KAAMrK,QAASmzB,GAAK,KAGpC,SAASW,IAAahB,EAAQlyB,EAAK8yB,EAAa3c,GAC/C,GAAIxX,EAEJ,IAAKpG,EAAOyG,QAASgB,GAEpBzH,EAAO+E,KAAM0C,EAAK,SAAUhC,EAAGm1B,GACzBL,GAAeN,GAASl2B,KAAM41B,GAElC/b,EAAK+b,EAAQiB,GAIbD,GAAahB,EAAS,KAAqB,gBAANiB,GAAiBn1B,EAAI,IAAO,IAAKm1B,EAAGL,EAAa3c,SAIlF,IAAM2c,GAAsC,WAAvBv6B,EAAO2C,KAAM8E,GAQxCmW,EAAK+b,EAAQlyB,OANb,KAAMrB,IAAQqB,GACbkzB,GAAahB,EAAS,IAAMvzB,EAAO,IAAKqB,EAAKrB,GAAQm0B,EAAa3c,GAQrE5d,EAAO+E,KAAM,0MAEqDuH,MAAM,KAAM,SAAU7G,EAAGW,GAG1FpG,EAAOsB,GAAI8E,GAAS,SAAUqC,EAAMnH,GACnC,MAAO+D,WAAU7B,OAAS,EACzBF,KAAK6qB,GAAI/nB,EAAM,KAAMqC,EAAMnH,GAC3BgC,KAAKiE,QAASnB,MAIjBpG,EAAOsB,GAAG0E,QACT60B,MAAO,SAAUC,EAAQC,GACxB,MAAOz3B,MAAKiqB,WAAYuN,GAAStN,WAAYuN,GAASD,IAGvDE,KAAM,SAAU1S,EAAO7f,EAAMnH,GAC5B,MAAOgC,MAAK6qB,GAAI7F,EAAO,KAAM7f,EAAMnH,IAEpC25B,OAAQ,SAAU3S,EAAOhnB,GACxB,MAAOgC,MAAKkE,IAAK8gB,EAAO,KAAMhnB,IAG/B45B,SAAU,SAAU95B,EAAUknB,EAAO7f,EAAMnH,GAC1C,MAAOgC,MAAK6qB,GAAI7F,EAAOlnB,EAAUqH,EAAMnH,IAExC65B,WAAY,SAAU/5B,EAAUknB,EAAOhnB,GAEtC,MAA4B,KAArB+D,UAAU7B,OAAeF,KAAKkE,IAAKpG,EAAU,MAASkC,KAAKkE,IAAK8gB,EAAOlnB,GAAY,KAAME,KAGlG,IAEC85B,IACAC,GACAC,GAAat7B,EAAO0L,MAEpB6vB,GAAc,KACdC,GAAQ,OACRC,GAAM,gBACNC,GAAW,gCAEXC,GAAiB,4DACjBC,GAAa,iBACbC,GAAY,QACZC,GAAO,8CAGPC,GAAQ/7B,EAAOsB,GAAGqrB,KAWlBqP,MAOAC,MAGAC,GAAW,KAAK37B,OAAO,IAIxB,KACC86B,GAAe17B,EAASoY,KACvB,MAAO7P,IAGRmzB,GAAez7B,EAASiJ,cAAe,KACvCwyB,GAAatjB,KAAO,GACpBsjB,GAAeA,GAAatjB,KAI7BqjB,GAAeU,GAAKr4B,KAAM43B,GAAajxB,kBAGvC,SAAS+xB,IAA6BC,GAGrC,MAAO,UAAUC,EAAoBpe,GAED,gBAAvBoe,KACXpe,EAAOoe,EACPA,EAAqB,IAGtB,IAAItH,GACHtvB,EAAI,EACJ62B,EAAYD,EAAmBjyB,cAAchH,MAAO1B,MAErD,IAAK1B,EAAOiE,WAAYga,GAEvB,MAAS8W,EAAWuH,EAAU72B,KAER,MAAhBsvB,EAAS,IACbA,EAAWA,EAASp0B,MAAO,IAAO,KACjCy7B,EAAWrH,GAAaqH,EAAWrH,QAAkBpgB,QAASsJ,KAI9Dme,EAAWrH,GAAaqH,EAAWrH,QAAkBt0B,KAAMwd,IAQjE,QAASse,IAA+BH,EAAW/1B,EAASm2B,EAAiBC,GAE5E,GAAIC,MACHC,EAAqBP,IAAcH,EAEpC,SAASW,GAAS7H,GACjB,GAAI3c,EAYJ,OAXAskB,GAAW3H,IAAa,EACxB/0B,EAAO+E,KAAMq3B,EAAWrH,OAAkB,SAAUhlB,EAAG8sB,GACtD,GAAIC,GAAsBD,EAAoBx2B,EAASm2B,EAAiBC,EACxE,OAAmC,gBAAxBK,IAAqCH,GAAqBD,EAAWI,GAIpEH,IACDvkB,EAAW0kB,GADf,GAHNz2B,EAAQi2B,UAAU3nB,QAASmoB,GAC3BF,EAASE,IACF,KAKF1kB,EAGR,MAAOwkB,GAASv2B,EAAQi2B,UAAW,MAAUI,EAAW,MAASE,EAAS,KAM3E,QAASG,IAAYx2B,EAAQN,GAC5B,GAAIO,GAAMyB,EACT+0B,EAAch9B,EAAO06B,aAAasC,eAEnC,KAAM/0B,IAAOhC,GACPA,EAAKgC,KAAU1I,KACjBy9B,EAAa/0B,GAAQ1B,EAAWC,IAASA,OAAgByB,GAAQhC,EAAKgC,GAO1E,OAJKzB,IACJxG,EAAOgG,QAAQ,EAAMO,EAAQC,GAGvBD,EAGRvG,EAAOsB,GAAGqrB,KAAO,SAAUkI,EAAKoI,EAAQj4B,GACvC,GAAoB,gBAAR6vB,IAAoBkH,GAC/B,MAAOA,IAAM32B,MAAO9B,KAAM+B,UAG3B,IAAIjE,GAAU87B,EAAUv6B,EACvB+a,EAAOpa,KACPkE,EAAMqtB,EAAIh0B,QAAQ,IA+CnB,OA7CK2G,IAAO,IACXpG,EAAWyzB,EAAIl0B,MAAO6G,EAAKqtB,EAAIrxB,QAC/BqxB,EAAMA,EAAIl0B,MAAO,EAAG6G,IAIhBxH,EAAOiE,WAAYg5B,IAGvBj4B,EAAWi4B,EACXA,EAAS19B,GAGE09B,GAA4B,gBAAXA,KAC5Bt6B,EAAO,QAIH+a,EAAKla,OAAS,GAClBxD,EAAO80B,MACND,IAAKA,EAGLlyB,KAAMA,EACNoyB,SAAU,OACVtsB,KAAMw0B,IACJ93B,KAAK,SAAUg4B,GAGjBD,EAAW73B,UAEXqY,EAAKoV,KAAM1xB,EAIVpB,EAAO,SAASiyB,OAAQjyB,EAAO4D,UAAWu5B,IAAiBz5B,KAAMtC,GAGjE+7B,KAECC,SAAUp4B,GAAY,SAAUy3B,EAAOY,GACzC3f,EAAK3Y,KAAMC,EAAUk4B,IAAcT,EAAMU,aAAcE,EAAQZ,MAI1Dn5B,MAIRtD,EAAO+E,MAAQ,YAAa,WAAY,eAAgB,YAAa,cAAe,YAAc,SAAUU,EAAG9C,GAC9G3C,EAAOsB,GAAIqB,GAAS,SAAUrB,GAC7B,MAAOgC,MAAK6qB,GAAIxrB,EAAMrB,MAIxBtB,EAAOgG,QAGNs3B,OAAQ,EAGRC,gBACAC,QAEA9C,cACC7F,IAAKwG,GACL14B,KAAM,MACN86B,QAAS9B,GAAe53B,KAAMq3B,GAAc,IAC5C/S,QAAQ,EACRqV,aAAa,EACb/zB,OAAO,EACPg0B,YAAa,mDAabC,SACCC,IAAK3B,GACL3xB,KAAM,aACNuoB,KAAM,YACNxpB,IAAK,4BACLw0B,KAAM,qCAGPnP,UACCrlB,IAAK,MACLwpB,KAAM,OACNgL,KAAM,QAGPC,gBACCz0B,IAAK,cACLiB,KAAM,eACNuzB,KAAM,gBAKPE,YAGCC,SAAUj2B,OAGVk2B,aAAa,EAGbC,YAAan+B,EAAOiJ,UAGpBm1B,WAAYp+B,EAAOqJ,UAOpB2zB,aACCnI,KAAK,EACLxzB,SAAS,IAOXg9B,UAAW,SAAU93B,EAAQ+3B,GAC5B,MAAOA,GAGNvB,GAAYA,GAAYx2B,EAAQvG,EAAO06B,cAAgB4D,GAGvDvB,GAAY/8B,EAAO06B,aAAcn0B,IAGnCg4B,cAAepC,GAA6BH,IAC5CwC,cAAerC,GAA6BF,IAG5CnH,KAAM,SAAUD,EAAKxuB,GAGA,gBAARwuB,KACXxuB,EAAUwuB,EACVA,EAAMt1B,GAIP8G,EAAUA,KAEV,IACC0zB,GAEAt0B,EAEAg5B,EAEAC,EAEAC,EAGAC,EAEAC,EAEAC,EAEAtE,EAAIx6B,EAAOq+B,aAAeh4B,GAE1B04B,EAAkBvE,EAAEn5B,SAAWm5B,EAE/BwE,EAAqBxE,EAAEn5B,UAAa09B,EAAgBl7B,UAAYk7B,EAAgB77B,QAC/ElD,EAAQ++B,GACR/+B,EAAOyC,MAER4b,EAAWre,EAAOgM,WAClBizB,EAAmBj/B,EAAO8c,UAAU,eAEpCoiB,EAAa1E,EAAE0E,eAEfC,KACAC,KAEAjhB,EAAQ,EAERkhB,EAAW,WAEX5C,GACC75B,WAAY,EAGZ08B,kBAAmB,SAAUr3B,GAC5B,GAAI7E,EACJ,IAAe,IAAV+a,EAAc,CAClB,IAAM2gB,EAAkB,CACvBA,IACA,OAAS17B,EAAQs4B,GAASj4B,KAAMi7B,GAC/BI,EAAiB17B,EAAM,GAAGgH,eAAkBhH,EAAO,GAGrDA,EAAQ07B,EAAiB72B,EAAImC,eAE9B,MAAgB,OAAThH,EAAgB,KAAOA,GAI/Bm8B,sBAAuB,WACtB,MAAiB,KAAVphB,EAAcugB,EAAwB,MAI9Cc,iBAAkB,SAAUp5B,EAAMiE,GACjC,GAAIo1B,GAAQr5B,EAAKgE,aAKjB,OAJM+T,KACL/X,EAAOg5B,EAAqBK,GAAUL,EAAqBK,IAAWr5B,EACtE+4B,EAAgB/4B,GAASiE,GAEnB/G,MAIRo8B,iBAAkB,SAAU/8B,GAI3B,MAHMwb,KACLqc,EAAEmF,SAAWh9B,GAEPW,MAIR47B,WAAY,SAAUt5B,GACrB,GAAIg6B,EACJ,IAAKh6B,EACJ,GAAa,EAARuY,EACJ,IAAMyhB,IAAQh6B,GAEbs5B,EAAYU,IAAWV,EAAYU,GAAQh6B,EAAKg6B,QAIjDnD,GAAMre,OAAQxY,EAAK62B,EAAMY,QAG3B,OAAO/5B,OAIRu8B,MAAO,SAAUC,GAChB,GAAIC,GAAYD,GAAcT,CAK9B,OAJKR,IACJA,EAAUgB,MAAOE,GAElB56B,EAAM,EAAG46B,GACFz8B,MAwCV,IAnCA+a,EAASnZ,QAASu3B,GAAQW,SAAW6B,EAAiBrhB,IACtD6e,EAAMuD,QAAUvD,EAAMt3B,KACtBs3B,EAAMn0B,MAAQm0B,EAAMne,KAMpBkc,EAAE3F,MAAUA,GAAO2F,EAAE3F,KAAOwG,IAAiB,IAAKx0B,QAAS20B,GAAO,IAAK30B,QAASg1B,GAAWT,GAAc,GAAM,MAG/GZ,EAAE73B,KAAO0D,EAAQ45B,QAAU55B,EAAQ1D,MAAQ63B,EAAEyF,QAAUzF,EAAE73B,KAGzD63B,EAAE8B,UAAYt8B,EAAOmB,KAAMq5B,EAAEzF,UAAY,KAAM3qB,cAAchH,MAAO1B,KAAqB,IAGnE,MAAjB84B,EAAE0F,cACNnG,EAAQ+B,GAAKr4B,KAAM+2B,EAAE3F,IAAIzqB,eACzBowB,EAAE0F,eAAkBnG,GACjBA,EAAO,KAAQqB,GAAc,IAAOrB,EAAO,KAAQqB,GAAc,KAChErB,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/CqB,GAAc,KAA+B,UAAtBA,GAAc,GAAkB,KAAO,UAK/DZ,EAAE/xB,MAAQ+xB,EAAEkD,aAAiC,gBAAXlD,GAAE/xB,OACxC+xB,EAAE/xB,KAAOzI,EAAOqxB,MAAOmJ,EAAE/xB,KAAM+xB,EAAED,cAIlCgC,GAA+BP,GAAYxB,EAAGn0B,EAASo2B,GAGxC,IAAVte,EACJ,MAAOse,EAIRmC,GAAcpE,EAAEnS,OAGXuW,GAAmC,IAApB5+B,EAAOs9B,UAC1Bt9B,EAAOyC,MAAM8E,QAAQ,aAItBizB,EAAE73B,KAAO63B,EAAE73B,KAAKJ,cAGhBi4B,EAAE2F,YAAcvE,GAAW73B,KAAMy2B,EAAE73B,MAInC87B,EAAWjE,EAAE3F,IAGP2F,EAAE2F,aAGF3F,EAAE/xB,OACNg2B,EAAajE,EAAE3F,MAAS0G,GAAYx3B,KAAM06B,GAAa,IAAM,KAAQjE,EAAE/xB,WAEhE+xB,GAAE/xB,MAIL+xB,EAAEhpB,SAAU,IAChBgpB,EAAE3F,IAAM4G,GAAI13B,KAAM06B,GAGjBA,EAAS53B,QAAS40B,GAAK,OAASH,MAGhCmD,GAAalD,GAAYx3B,KAAM06B,GAAa,IAAM,KAAQ,KAAOnD,OAK/Dd,EAAE4F,aACDpgC,EAAOu9B,aAAckB,IACzBhC,EAAM+C,iBAAkB,oBAAqBx/B,EAAOu9B,aAAckB,IAE9Dz+B,EAAOw9B,KAAMiB,IACjBhC,EAAM+C,iBAAkB,gBAAiBx/B,EAAOw9B,KAAMiB,MAKnDjE,EAAE/xB,MAAQ+xB,EAAE2F,YAAc3F,EAAEmD,eAAgB,GAASt3B,EAAQs3B,cACjElB,EAAM+C,iBAAkB,eAAgBhF,EAAEmD,aAI3ClB,EAAM+C,iBACL,SACAhF,EAAE8B,UAAW,IAAO9B,EAAEoD,QAASpD,EAAE8B,UAAU,IAC1C9B,EAAEoD,QAASpD,EAAE8B,UAAU,KAA8B,MAArB9B,EAAE8B,UAAW,GAAc,KAAOJ,GAAW,WAAa,IAC1F1B,EAAEoD,QAAS,KAIb,KAAMn4B,IAAK+0B,GAAE6F,QACZ5D,EAAM+C,iBAAkB/5B,EAAG+0B,EAAE6F,QAAS56B,GAIvC,IAAK+0B,EAAE8F,aAAgB9F,EAAE8F,WAAW97B,KAAMu6B,EAAiBtC,EAAOjC,MAAQ,GAAmB,IAAVrc,GAElF,MAAOse,GAAMoD,OAIdR,GAAW,OAGX,KAAM55B,KAAOu6B,QAAS,EAAG13B,MAAO,EAAG80B,SAAU,GAC5CX,EAAOh3B,GAAK+0B,EAAG/0B,GAOhB,IAHAo5B,EAAYtC,GAA+BN,GAAYzB,EAAGn0B,EAASo2B,GAK5D,CACNA,EAAM75B,WAAa,EAGdg8B,GACJI,EAAmBz3B,QAAS,YAAck1B,EAAOjC,IAG7CA,EAAE7wB,OAAS6wB,EAAE1V,QAAU,IAC3B6Z,EAAet3B,WAAW,WACzBo1B,EAAMoD,MAAM,YACVrF,EAAE1V,SAGN,KACC3G,EAAQ,EACR0gB,EAAU0B,KAAMpB,EAAgBh6B,GAC/B,MAAQ+C,GAET,KAAa,EAARiW,GAIJ,KAAMjW,EAHN/C,GAAM,GAAI+C,QArBZ/C,GAAM,GAAI,eA8BX,SAASA,GAAMk4B,EAAQmD,EAAkBC,EAAWJ,GACnD,GAAIK,GAAWV,EAAS13B,EAAO40B,EAAUyD,EACxCb,EAAaU,CAGC,KAAVriB,IAKLA,EAAQ,EAGHwgB,GACJ5Z,aAAc4Z,GAKfE,EAAYt/B,EAGZm/B,EAAwB2B,GAAW,GAGnC5D,EAAM75B,WAAay6B,EAAS,EAAI,EAAI,EAGpCqD,EAAYrD,GAAU,KAAgB,IAATA,GAA2B,MAAXA,EAGxCoD,IACJvD,EAAW0D,GAAqBpG,EAAGiC,EAAOgE,IAI3CvD,EAAW2D,GAAarG,EAAG0C,EAAUT,EAAOiE,GAGvCA,GAGClG,EAAE4F,aACNO,EAAWlE,EAAM6C,kBAAkB,iBAC9BqB,IACJ3gC,EAAOu9B,aAAckB,GAAakC,GAEnCA,EAAWlE,EAAM6C,kBAAkB,QAC9BqB,IACJ3gC,EAAOw9B,KAAMiB,GAAakC,IAKZ,MAAXtD,GAA6B,SAAX7C,EAAE73B,KACxBm9B,EAAa,YAGS,MAAXzC,EACXyC,EAAa,eAIbA,EAAa5C,EAAS/e,MACtB6hB,EAAU9C,EAASz0B,KACnBH,EAAQ40B,EAAS50B,MACjBo4B,GAAap4B,KAKdA,EAAQw3B,GACHzC,IAAWyC,KACfA,EAAa,QACC,EAATzC,IACJA,EAAS,KAMZZ,EAAMY,OAASA,EACfZ,EAAMqD,YAAeU,GAAoBV,GAAe,GAGnDY,EACJriB,EAAS/W,YAAay3B,GAAmBiB,EAASF,EAAYrD,IAE9Dpe,EAASyiB,WAAY/B,GAAmBtC,EAAOqD,EAAYx3B,IAI5Dm0B,EAAMyC,WAAYA,GAClBA,EAAa3/B,EAERq/B,GACJI,EAAmBz3B,QAASm5B,EAAY,cAAgB,aACrDjE,EAAOjC,EAAGkG,EAAYV,EAAU13B,IAIpC22B,EAAiBjhB,SAAU+gB,GAAmBtC,EAAOqD,IAEhDlB,IACJI,EAAmBz3B,QAAS,gBAAkBk1B,EAAOjC,MAE3Cx6B,EAAOs9B,QAChBt9B,EAAOyC,MAAM8E,QAAQ,cAKxB,MAAOk1B,IAGRsE,QAAS,SAAUlM,EAAKpsB,EAAMzD,GAC7B,MAAOhF,GAAOyE,IAAKowB,EAAKpsB,EAAMzD,EAAU,SAGzCg8B,UAAW,SAAUnM,EAAK7vB,GACzB,MAAOhF,GAAOyE,IAAKowB,EAAKt1B,EAAWyF,EAAU,aAI/ChF,EAAO+E,MAAQ,MAAO,QAAU,SAAUU,EAAGw6B,GAC5CjgC,EAAQigC,GAAW,SAAUpL,EAAKpsB,EAAMzD,EAAUrC,GAQjD,MANK3C,GAAOiE,WAAYwE,KACvB9F,EAAOA,GAAQqC,EACfA,EAAWyD,EACXA,EAAOlJ,GAGDS,EAAO80B,MACbD,IAAKA,EACLlyB,KAAMs9B,EACNlL,SAAUpyB,EACV8F,KAAMA,EACNu3B,QAASh7B,MASZ,SAAS47B,IAAqBpG,EAAGiC,EAAOgE,GACvC,GAAIQ,GAAeC,EAAIC,EAAex+B,EACrCgsB,EAAW6L,EAAE7L,SACb2N,EAAY9B,EAAE8B,SAGf,OAA0B,MAAnBA,EAAW,GACjBA,EAAU5qB,QACLwvB,IAAO3hC,IACX2hC,EAAK1G,EAAEmF,UAAYlD,EAAM6C,kBAAkB,gBAK7C,IAAK4B,EACJ,IAAMv+B,IAAQgsB,GACb,GAAKA,EAAUhsB,IAAUgsB,EAAUhsB,GAAOoB,KAAMm9B,GAAO,CACtD5E,EAAU3nB,QAAShS,EACnB,OAMH,GAAK25B,EAAW,IAAOmE,GACtBU,EAAgB7E,EAAW,OACrB,CAEN,IAAM35B,IAAQ89B,GAAY,CACzB,IAAMnE,EAAW,IAAO9B,EAAEwD,WAAYr7B,EAAO,IAAM25B,EAAU,IAAO,CACnE6E,EAAgBx+B,CAChB,OAEKs+B,IACLA,EAAgBt+B,GAIlBw+B,EAAgBA,GAAiBF,EAMlC,MAAKE,IACCA,IAAkB7E,EAAW,IACjCA,EAAU3nB,QAASwsB,GAEbV,EAAWU,IAJnB,EAWD,QAASN,IAAarG,EAAG0C,EAAUT,EAAOiE,GACzC,GAAIU,GAAOC,EAASC,EAAM/3B,EAAKqlB,EAC9BoP,KAEA1B,EAAY9B,EAAE8B,UAAU37B,OAGzB,IAAK27B,EAAW,GACf,IAAMgF,IAAQ9G,GAAEwD,WACfA,EAAYsD,EAAKl3B,eAAkBowB,EAAEwD,WAAYsD,EAInDD,GAAU/E,EAAU5qB,OAGpB,OAAQ2vB,EAcP,GAZK7G,EAAEuD,eAAgBsD,KACtB5E,EAAOjC,EAAEuD,eAAgBsD,IAAcnE,IAIlCtO,GAAQ8R,GAAalG,EAAE+G,aAC5BrE,EAAW1C,EAAE+G,WAAYrE,EAAU1C,EAAEzF,WAGtCnG,EAAOyS,EACPA,EAAU/E,EAAU5qB,QAKnB,GAAiB,MAAZ2vB,EAEJA,EAAUzS,MAGJ,IAAc,MAATA,GAAgBA,IAASyS,EAAU,CAM9C,GAHAC,EAAOtD,EAAYpP,EAAO,IAAMyS,IAAarD,EAAY,KAAOqD,IAG1DC,EACL,IAAMF,IAASpD,GAId,GADAz0B,EAAM63B,EAAM90B,MAAO,KACd/C,EAAK,KAAQ83B,IAGjBC,EAAOtD,EAAYpP,EAAO,IAAMrlB,EAAK,KACpCy0B,EAAY,KAAOz0B,EAAK,KACb,CAEN+3B,KAAS,EACbA,EAAOtD,EAAYoD,GAGRpD,EAAYoD,MAAY,IACnCC,EAAU93B,EAAK,GACf+yB,EAAU3nB,QAASpL,EAAK,IAEzB,OAOJ,GAAK+3B,KAAS,EAGb,GAAKA,GAAQ9G,EAAG,UACf0C,EAAWoE,EAAMpE,OAEjB,KACCA,EAAWoE,EAAMpE,GAChB,MAAQh1B,GACT,OAASiW,MAAO,cAAe7V,MAAOg5B,EAAOp5B,EAAI,sBAAwB0mB,EAAO,OAASyS,IAQ/F,OAASljB,MAAO,UAAW1V,KAAMy0B,GAGlCl9B,EAAOq+B,WACNT,SACC4D,OAAQ,6FAET7S,UACC6S,OAAQ,uBAETxD,YACCyD,cAAe,SAAUl3B,GAExB,MADAvK,GAAO+J,WAAYQ,GACZA,MAMVvK,EAAOu+B,cAAe,SAAU,SAAU/D,GACpCA,EAAEhpB,QAAUjS,IAChBi7B,EAAEhpB,OAAQ,GAENgpB,EAAE0F,cACN1F,EAAE73B,KAAO,MACT63B,EAAEnS,QAAS,KAKbroB,EAAOw+B,cAAe,SAAU,SAAShE,GAGxC,GAAKA,EAAE0F,YAAc,CAEpB,GAAIsB,GACHE,EAAO9hC,EAAS8hC,MAAQ1hC,EAAO,QAAQ,IAAMJ,EAASE,eAEvD,QAECygC,KAAM,SAAUxwB,EAAG/K,GAElBw8B,EAAS5hC,EAASiJ,cAAc,UAEhC24B,EAAO73B,OAAQ,EAEV6wB,EAAEmH,gBACNH,EAAOI,QAAUpH,EAAEmH,eAGpBH,EAAOv7B,IAAMu0B,EAAE3F,IAGf2M,EAAOK,OAASL,EAAOM,mBAAqB,SAAU/xB,EAAGgyB,IAEnDA,IAAYP,EAAO5+B,YAAc,kBAAkBmB,KAAMy9B,EAAO5+B,eAGpE4+B,EAAOK,OAASL,EAAOM,mBAAqB,KAGvCN,EAAOp9B,YACXo9B,EAAOp9B,WAAW0N,YAAa0vB,GAIhCA,EAAS,KAGHO,GACL/8B,EAAU,IAAK,aAOlB08B,EAAKpP,aAAckP,EAAQE,EAAKruB,aAGjCwsB,MAAO,WACD2B,GACJA,EAAOK,OAAQtiC,GAAW,OAM/B,IAAIyiC,OACHC,GAAS,mBAGVjiC,GAAOq+B,WACN6D,MAAO,WACPC,cAAe,WACd,GAAIn9B,GAAWg9B,GAAa/zB,OAAWjO,EAAO0G,QAAU,IAAQ40B,IAEhE,OADAh4B,MAAM0B,IAAa,EACZA,KAKThF,EAAOu+B,cAAe,aAAc,SAAU/D,EAAG4H,EAAkB3F,GAElE,GAAI4F,GAAcC,EAAaC,EAC9BC,EAAWhI,EAAE0H,SAAU,IAAWD,GAAOl+B,KAAMy2B,EAAE3F,KAChD,MACkB,gBAAX2F,GAAE/xB,QAAwB+xB,EAAEmD,aAAe,IAAK98B,QAAQ,sCAAwCohC,GAAOl+B,KAAMy2B,EAAE/xB,OAAU,OAIlI,OAAK+5B,IAAiC,UAArBhI,EAAE8B,UAAW,IAG7B+F,EAAe7H,EAAE2H,cAAgBniC,EAAOiE,WAAYu2B,EAAE2H,eACrD3H,EAAE2H,gBACF3H,EAAE2H,cAGEK,EACJhI,EAAGgI,GAAahI,EAAGgI,GAAW37B,QAASo7B,GAAQ,KAAOI,GAC3C7H,EAAE0H,SAAU,IACvB1H,EAAE3F,MAAS0G,GAAYx3B,KAAMy2B,EAAE3F,KAAQ,IAAM,KAAQ2F,EAAE0H,MAAQ,IAAMG,GAItE7H,EAAEwD,WAAW,eAAiB,WAI7B,MAHMuE,IACLviC,EAAOsI,MAAO+5B,EAAe,mBAEvBE,EAAmB,IAI3B/H,EAAE8B,UAAW,GAAM,OAGnBgG,EAAchjC,EAAQ+iC,GACtB/iC,EAAQ+iC,GAAiB,WACxBE,EAAoBl9B,WAIrBo3B,EAAMre,OAAO,WAEZ9e,EAAQ+iC,GAAiBC,EAGpB9H,EAAG6H,KAEP7H,EAAE2H,cAAgBC,EAAiBD,cAGnCH,GAAavhC,KAAM4hC,IAIfE,GAAqBviC,EAAOiE,WAAYq+B,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,EAAc/iC,IAI5B,UAtDR,GAyDD,IAAIkjC,IAAcC,GACjBC,GAAQ,EAERC,GAAmBtjC,EAAOoK,eAAiB,WAE1C,GAAIzB,EACJ,KAAMA,IAAOw6B,IACZA,GAAcx6B,GAAO1I,GAAW,GAKnC,SAASsjC,MACR,IACC,MAAO,IAAIvjC,GAAOwjC,eACjB,MAAO56B,KAGV,QAAS66B,MACR,IACC,MAAO,IAAIzjC,GAAOoK,cAAc,qBAC/B,MAAOxB,KAKVlI,EAAO06B,aAAasI,IAAM1jC,EAAOoK,cAOhC,WACC,OAAQpG,KAAKm6B,SAAWoF,MAAuBE,MAGhDF,GAGDH,GAAe1iC,EAAO06B,aAAasI,MACnChjC,EAAOmI,QAAQ86B,OAASP,IAAkB,mBAAqBA,IAC/DA,GAAe1iC,EAAOmI,QAAQ2sB,OAAS4N,GAGlCA,IAEJ1iC,EAAOw+B,cAAc,SAAUhE,GAE9B,IAAMA,EAAE0F,aAAelgC,EAAOmI,QAAQ86B,KAAO,CAE5C,GAAIj+B,EAEJ,QACCu7B,KAAM,SAAUF,EAASjD,GAGxB,GAAInU,GAAQxjB,EACXu9B,EAAMxI,EAAEwI,KAWT,IAPKxI,EAAE0I,SACNF,EAAIG,KAAM3I,EAAE73B,KAAM63B,EAAE3F,IAAK2F,EAAE7wB,MAAO6wB,EAAE0I,SAAU1I,EAAExhB,UAEhDgqB,EAAIG,KAAM3I,EAAE73B,KAAM63B,EAAE3F,IAAK2F,EAAE7wB,OAIvB6wB,EAAE4I,UACN,IAAM39B,IAAK+0B,GAAE4I,UACZJ,EAAKv9B,GAAM+0B,EAAE4I,UAAW39B,EAKrB+0B,GAAEmF,UAAYqD,EAAItD,kBACtBsD,EAAItD,iBAAkBlF,EAAEmF,UAQnBnF,EAAE0F,aAAgBG,EAAQ,sBAC/BA,EAAQ,oBAAsB,iBAI/B,KACC,IAAM56B,IAAK46B,GACV2C,EAAIxD,iBAAkB/5B,EAAG46B,EAAS56B,IAElC,MAAO2iB,IAKT4a,EAAIzC,KAAQ/F,EAAE2F,YAAc3F,EAAE/xB,MAAU,MAGxCzD,EAAW,SAAU+K,EAAGgyB,GACvB,GAAI1E,GAAQyB,EAAiBgB,EAAYW,CAKzC,KAGC,GAAKz7B,IAAc+8B,GAA8B,IAAnBiB,EAAIpgC,YAcjC,GAXAoC,EAAWzF,EAGN0pB,IACJ+Z,EAAIlB,mBAAqB9hC,EAAO8J,KAC3B84B,UACGH,IAAcxZ,IAKlB8Y,EAEoB,IAAnBiB,EAAIpgC,YACRogC,EAAInD,YAEC,CACNY,KACApD,EAAS2F,EAAI3F,OACbyB,EAAkBkE,EAAIzD,wBAIW,gBAArByD,GAAI7F,eACfsD,EAAUl2B,KAAOy4B,EAAI7F,aAKtB,KACC2C,EAAakD,EAAIlD,WAChB,MAAO53B,GAER43B,EAAa,GAQRzC,IAAU7C,EAAEiD,SAAYjD,EAAE0F,YAGT,OAAX7C,IACXA,EAAS,KAHTA,EAASoD,EAAUl2B,KAAO,IAAM,KAOlC,MAAO84B,GACFtB,GACL3E,EAAU,GAAIiG,GAKX5C,GACJrD,EAAUC,EAAQyC,EAAYW,EAAW3B,IAIrCtE,EAAE7wB,MAGuB,IAAnBq5B,EAAIpgC,WAGfyE,WAAYrC,IAEZikB,IAAW0Z,GACNC,KAGEH,KACLA,MACAziC,EAAQV,GAASgkC,OAAQV,KAG1BH,GAAcxZ,GAAWjkB,GAE1Bg+B,EAAIlB,mBAAqB98B,GAjBzBA,KAqBF66B,MAAO,WACD76B,GACJA,EAAUzF,GAAW,OAO3B,IAAIgkC,IAAOC,GACVC,GAAW,yBACXC,GAAaj1B,OAAQ,iBAAmBjN,EAAY,cAAe,KACnEmiC,GAAO,cACPC,IAAwBC,IACxBC,IACCjG,KAAM,SAAUjY,EAAMvb,GACrB,GAAI05B,GAAQzgC,KAAK0gC,YAAape,EAAMvb,GACnC9D,EAASw9B,EAAM3xB,MACf2nB,EAAQ2J,GAAOjgC,KAAM4G,GACrB45B,EAAOlK,GAASA,EAAO,KAAS/5B,EAAOw3B,UAAW5R,GAAS,GAAK,MAGhEhP,GAAU5W,EAAOw3B,UAAW5R,IAAmB,OAATqe,IAAkB19B,IACvDm9B,GAAOjgC,KAAMzD,EAAO82B,IAAKiN,EAAM1gC,KAAMuiB,IACtCse,EAAQ,EACRC,EAAgB,EAEjB,IAAKvtB,GAASA,EAAO,KAAQqtB,EAAO,CAEnCA,EAAOA,GAAQrtB,EAAO,GAGtBmjB,EAAQA,MAGRnjB,GAASrQ,GAAU,CAEnB,GAGC29B,GAAQA,GAAS,KAGjBttB,GAAgBstB,EAChBlkC,EAAO+L,MAAOg4B,EAAM1gC,KAAMuiB,EAAMhP,EAAQqtB,SAI/BC,KAAWA,EAAQH,EAAM3xB,MAAQ7L,IAAqB,IAAV29B,KAAiBC,GAaxE,MATKpK,KACJnjB,EAAQmtB,EAAMntB,OAASA,IAAUrQ,GAAU,EAC3Cw9B,EAAME,KAAOA,EAEbF,EAAMl+B,IAAMk0B,EAAO,GAClBnjB,GAAUmjB,EAAO,GAAM,GAAMA,EAAO,IACnCA,EAAO,IAGHgK,IAKV,SAASK,MAIR,MAHA/8B,YAAW,WACVk8B,GAAQhkC,IAEAgkC,GAAQvjC,EAAO0L,MAGzB,QAASs4B,IAAa35B,EAAOub,EAAMye,GAClC,GAAIN,GACHO,GAAeR,GAAUle,QAAerlB,OAAQujC,GAAU,MAC1DjmB,EAAQ,EACRra,EAAS8gC,EAAW9gC,MACrB,MAAgBA,EAARqa,EAAgBA,IACvB,GAAMkmB,EAAQO,EAAYzmB,GAAQrZ,KAAM6/B,EAAWze,EAAMvb,GAGxD,MAAO05B,GAKV,QAASQ,IAAWlhC,EAAMmhC,EAAYn+B,GACrC,GAAIgQ,GACHouB,EACA5mB,EAAQ,EACRra,EAASogC,GAAoBpgC,OAC7B6a,EAAWre,EAAOgM,WAAWoS,OAAQ,iBAE7BsmB,GAAKrhC,OAEbqhC,EAAO,WACN,GAAKD,EACJ,OAAO,CAER,IAAIE,GAAcpB,IAASa,KAC1B9kB,EAAY3Y,KAAKiE,IAAK,EAAGy5B,EAAUO,UAAYP,EAAUQ,SAAWF,GAEpElqB,EAAO6E,EAAY+kB,EAAUQ,UAAY,EACzCC,EAAU,EAAIrqB,EACdoD,EAAQ,EACRra,EAAS6gC,EAAUU,OAAOvhC,MAE3B,MAAgBA,EAARqa,EAAiBA,IACxBwmB,EAAUU,OAAQlnB,GAAQmnB,IAAKF,EAKhC,OAFAzmB,GAASqB,WAAYrc,GAAQghC,EAAWS,EAASxlB,IAElC,EAAVwlB,GAAethC,EACZ8b,GAEPjB,EAAS/W,YAAajE,GAAQghC,KACvB,IAGTA,EAAYhmB,EAASnZ,SACpB7B,KAAMA,EACNmoB,MAAOxrB,EAAOgG,UAAYw+B,GAC1BS,KAAMjlC,EAAOgG,QAAQ,GAAQk/B,kBAAqB7+B,GAClD8+B,mBAAoBX,EACpBhI,gBAAiBn2B,EACjBu+B,UAAWrB,IAASa,KACpBS,SAAUx+B,EAAQw+B,SAClBE,UACAf,YAAa,SAAUpe,EAAM/f,GAC5B,GAAIk+B,GAAQ/jC,EAAOolC,MAAO/hC,EAAMghC,EAAUY,KAAMrf,EAAM/f,EACpDw+B,EAAUY,KAAKC,cAAetf,IAAUye,EAAUY,KAAKI,OAEzD,OADAhB,GAAUU,OAAOtkC,KAAMsjC,GAChBA,GAERvf,KAAM,SAAU8gB,GACf,GAAIznB,GAAQ,EAGXra,EAAS8hC,EAAUjB,EAAUU,OAAOvhC,OAAS,CAC9C,IAAKihC,EACJ,MAAOnhC,KAGR,KADAmhC,GAAU,EACMjhC,EAARqa,EAAiBA,IACxBwmB,EAAUU,OAAQlnB,GAAQmnB,IAAK,EAUhC,OALKM,GACJjnB,EAAS/W,YAAajE,GAAQghC,EAAWiB,IAEzCjnB,EAASyiB,WAAYz9B,GAAQghC,EAAWiB,IAElChiC,QAGTkoB,EAAQ6Y,EAAU7Y,KAInB,KAFA+Z,GAAY/Z,EAAO6Y,EAAUY,KAAKC,eAElB1hC,EAARqa,EAAiBA,IAExB,GADAxH,EAASutB,GAAqB/lB,GAAQrZ,KAAM6/B,EAAWhhC,EAAMmoB,EAAO6Y,EAAUY,MAE7E,MAAO5uB,EAmBT,OAfArW,GAAO4F,IAAK4lB,EAAOwY,GAAaK,GAE3BrkC,EAAOiE,WAAYogC,EAAUY,KAAKruB,QACtCytB,EAAUY,KAAKruB,MAAMpS,KAAMnB,EAAMghC,GAGlCrkC,EAAO4kB,GAAG4gB,MACTxlC,EAAOgG,OAAQ0+B,GACdrhC,KAAMA,EACNoiC,KAAMpB,EACNngB,MAAOmgB,EAAUY,KAAK/gB,SAKjBmgB,EAAUtlB,SAAUslB,EAAUY,KAAKlmB,UACxC5Z,KAAMk/B,EAAUY,KAAK9/B,KAAMk/B,EAAUY,KAAK7H,UAC1C9e,KAAM+lB,EAAUY,KAAK3mB,MACrBF,OAAQimB,EAAUY,KAAK7mB,QAG1B,QAASmnB,IAAY/Z,EAAO0Z,GAC3B,GAAIrnB,GAAOzX,EAAMi/B,EAAQh7B,EAAOga,CAGhC,KAAMxG,IAAS2N,GAed,GAdAplB,EAAOpG,EAAOiK,UAAW4T,GACzBwnB,EAASH,EAAe9+B,GACxBiE,EAAQmhB,EAAO3N,GACV7d,EAAOyG,QAAS4D,KACpBg7B,EAASh7B,EAAO,GAChBA,EAAQmhB,EAAO3N,GAAUxT,EAAO,IAG5BwT,IAAUzX,IACdolB,EAAOplB,GAASiE,QACTmhB,GAAO3N,IAGfwG,EAAQrkB,EAAOs3B,SAAUlxB,GACpBie,GAAS,UAAYA,GAAQ,CACjCha,EAAQga,EAAMwV,OAAQxvB,SACfmhB,GAAOplB,EAId,KAAMyX,IAASxT,GACNwT,IAAS2N,KAChBA,EAAO3N,GAAUxT,EAAOwT,GACxBqnB,EAAernB,GAAUwnB,OAI3BH,GAAe9+B,GAASi/B,EAK3BrlC,EAAOukC,UAAYvkC,EAAOgG,OAAQu+B,IAEjCmB,QAAS,SAAUla,EAAOxmB,GACpBhF,EAAOiE,WAAYunB,IACvBxmB,EAAWwmB,EACXA,GAAU,MAEVA,EAAQA,EAAMlf,MAAM,IAGrB,IAAIsZ,GACH/H,EAAQ,EACRra,EAASgoB,EAAMhoB,MAEhB,MAAgBA,EAARqa,EAAiBA,IACxB+H,EAAO4F,EAAO3N,GACdimB,GAAUle,GAASke,GAAUle,OAC7Bke,GAAUle,GAAOjR,QAAS3P,IAI5B2gC,UAAW,SAAU3gC,EAAUqtB,GACzBA,EACJuR,GAAoBjvB,QAAS3P,GAE7B4+B,GAAoBnjC,KAAMuE,KAK7B,SAAS6+B,IAAkBxgC,EAAMmoB,EAAOyZ,GAEvC,GAAIrf,GAAMvb,EAAOgtB,EAAQ0M,EAAO1f,EAAOuhB,EACtCH,EAAOniC,KACPmqB,KACA1hB,EAAQ1I,EAAK0I,MACbkrB,EAAS5zB,EAAKQ,UAAY+yB,GAAUvzB,GACpCwiC,EAAW7lC,EAAO+jB,MAAO1gB,EAAM,SAG1B4hC,GAAK/gB,QACVG,EAAQrkB,EAAOskB,YAAajhB,EAAM,MACX,MAAlBghB,EAAMyhB,WACVzhB,EAAMyhB,SAAW,EACjBF,EAAUvhB,EAAM/L,MAAMkF,KACtB6G,EAAM/L,MAAMkF,KAAO,WACZ6G,EAAMyhB,UACXF,MAIHvhB,EAAMyhB,WAENL,EAAKrnB,OAAO,WAGXqnB,EAAKrnB,OAAO,WACXiG,EAAMyhB,WACA9lC,EAAOkkB,MAAO7gB,EAAM,MAAOG,QAChC6gB,EAAM/L,MAAMkF,YAOO,IAAlBna,EAAKQ,WAAoB,UAAY2nB,IAAS,SAAWA,MAK7DyZ,EAAKc,UAAah6B,EAAMg6B,SAAUh6B,EAAMi6B,UAAWj6B,EAAMk6B,WAIlB,WAAlCjmC,EAAO82B,IAAKzzB,EAAM,YACW,SAAhCrD,EAAO82B,IAAKzzB,EAAM,WAIbrD,EAAOmI,QAAQ4Y,wBAAkE,WAAxCmW,GAAoB7zB,EAAK8G,UAIvE4B,EAAMyW,KAAO,EAHbzW,EAAMuW,QAAU,iBAQd2iB,EAAKc,WACTh6B,EAAMg6B,SAAW,SACX/lC,EAAOmI,QAAQ6Y,kBACpBykB,EAAKrnB,OAAO,WACXrS,EAAMg6B,SAAWd,EAAKc,SAAU,GAChCh6B,EAAMi6B,UAAYf,EAAKc,SAAU,GACjCh6B,EAAMk6B,UAAYhB,EAAKc,SAAU,KAOpC,KAAMngB,IAAQ4F,GAEb,GADAnhB,EAAQmhB,EAAO5F,GACV6d,GAAShgC,KAAM4G,GAAU,CAG7B,SAFOmhB,GAAO5F,GACdyR,EAASA,GAAoB,WAAVhtB,EACdA,KAAY4sB,EAAS,OAAS,QAClC,QAEDxJ,GAAM7H,GAASigB,GAAYA,EAAUjgB,IAAU5lB,EAAO+L,MAAO1I,EAAMuiB,GAIrE,IAAM5lB,EAAOqI,cAAeolB,GAAS,CAC/BoY,EACC,UAAYA,KAChB5O,EAAS4O,EAAS5O,QAGnB4O,EAAW7lC,EAAO+jB,MAAO1gB,EAAM,aAI3Bg0B,IACJwO,EAAS5O,QAAUA,GAEfA,EACJj3B,EAAQqD,GAAO2zB,OAEfyO,EAAKtgC,KAAK,WACTnF,EAAQqD,GAAO+zB,SAGjBqO,EAAKtgC,KAAK,WACT,GAAIygB,EACJ5lB,GAAOgkB,YAAa3gB,EAAM,SAC1B,KAAMuiB,IAAQ6H,GACbztB,EAAO+L,MAAO1I,EAAMuiB,EAAM6H,EAAM7H,KAGlC,KAAMA,IAAQ6H,GACbsW,EAAQC,GAAa/M,EAAS4O,EAAUjgB,GAAS,EAAGA,EAAM6f,GAElD7f,IAAQigB,KACfA,EAAUjgB,GAASme,EAAMntB,MACpBqgB,IACJ8M,EAAMl+B,IAAMk+B,EAAMntB,MAClBmtB,EAAMntB,MAAiB,UAATgP,GAA6B,WAATA,EAAoB,EAAI,KAO/D,QAASwf,IAAO/hC,EAAMgD,EAASuf,EAAM/f,EAAKw/B,GACzC,MAAO,IAAID,IAAMniC,UAAU1B,KAAM8B,EAAMgD,EAASuf,EAAM/f,EAAKw/B,GAE5DrlC,EAAOolC,MAAQA,GAEfA,GAAMniC,WACLE,YAAaiiC,GACb7jC,KAAM,SAAU8B,EAAMgD,EAASuf,EAAM/f,EAAKw/B,EAAQpB,GACjD3gC,KAAKD,KAAOA,EACZC,KAAKsiB,KAAOA,EACZtiB,KAAK+hC,OAASA,GAAU,QACxB/hC,KAAK+C,QAAUA,EACf/C,KAAKsT,MAAQtT,KAAKoI,IAAMpI,KAAK8O,MAC7B9O,KAAKuC,IAAMA,EACXvC,KAAK2gC,KAAOA,IAAUjkC,EAAOw3B,UAAW5R,GAAS,GAAK,OAEvDxT,IAAK,WACJ,GAAIiS,GAAQ+gB,GAAMhe,UAAW9jB,KAAKsiB,KAElC,OAAOvB,IAASA,EAAM5f,IACrB4f,EAAM5f,IAAKnB,MACX8hC,GAAMhe,UAAUqD,SAAShmB,IAAKnB,OAEhC0hC,IAAK,SAAUF,GACd,GAAIoB,GACH7hB,EAAQ+gB,GAAMhe,UAAW9jB,KAAKsiB,KAoB/B,OAjBCtiB,MAAK2rB,IAAMiX,EADP5iC,KAAK+C,QAAQw+B,SACE7kC,EAAOqlC,OAAQ/hC,KAAK+hC,QACtCP,EAASxhC,KAAK+C,QAAQw+B,SAAWC,EAAS,EAAG,EAAGxhC,KAAK+C,QAAQw+B,UAG3CC,EAEpBxhC,KAAKoI,KAAQpI,KAAKuC,IAAMvC,KAAKsT,OAAUsvB,EAAQ5iC,KAAKsT,MAE/CtT,KAAK+C,QAAQ8/B,MACjB7iC,KAAK+C,QAAQ8/B,KAAK3hC,KAAMlB,KAAKD,KAAMC,KAAKoI,IAAKpI,MAGzC+gB,GAASA,EAAMoC,IACnBpC,EAAMoC,IAAKnjB,MAEX8hC,GAAMhe,UAAUqD,SAAShE,IAAKnjB,MAExBA,OAIT8hC,GAAMniC,UAAU1B,KAAK0B,UAAYmiC,GAAMniC,UAEvCmiC,GAAMhe,WACLqD,UACChmB,IAAK,SAAUs/B,GACd,GAAI1tB,EAEJ,OAAiC,OAA5B0tB,EAAM1gC,KAAM0gC,EAAMne,OACpBme,EAAM1gC,KAAK0I,OAA2C,MAAlCg4B,EAAM1gC,KAAK0I,MAAOg4B,EAAMne,OAQ/CvP,EAASrW,EAAO82B,IAAKiN,EAAM1gC,KAAM0gC,EAAMne,KAAM,IAErCvP,GAAqB,SAAXA,EAAwBA,EAAJ,GAT9B0tB,EAAM1gC,KAAM0gC,EAAMne,OAW3Ba,IAAK,SAAUsd,GAGT/jC,EAAO4kB,GAAGuhB,KAAMpC,EAAMne,MAC1B5lB,EAAO4kB,GAAGuhB,KAAMpC,EAAMne,MAAQme,GACnBA,EAAM1gC,KAAK0I,QAAgE,MAArDg4B,EAAM1gC,KAAK0I,MAAO/L,EAAOg4B,SAAU+L,EAAMne,QAAoB5lB,EAAOs3B,SAAUyM,EAAMne,OACrH5lB,EAAO+L,MAAOg4B,EAAM1gC,KAAM0gC,EAAMne,KAAMme,EAAMr4B,IAAMq4B,EAAME,MAExDF,EAAM1gC,KAAM0gC,EAAMne,MAASme,EAAMr4B,OASrC05B,GAAMhe,UAAUmF,UAAY6Y,GAAMhe,UAAU+E,YAC3C1F,IAAK,SAAUsd,GACTA,EAAM1gC,KAAKQ,UAAYkgC,EAAM1gC,KAAKe,aACtC2/B,EAAM1gC,KAAM0gC,EAAMne,MAASme,EAAMr4B,OAKpC1L,EAAO+E,MAAO,SAAU,OAAQ,QAAU,SAAUU,EAAGW,GACtD,GAAIggC,GAAQpmC,EAAOsB,GAAI8E,EACvBpG,GAAOsB,GAAI8E,GAAS,SAAUigC,EAAOhB,EAAQrgC,GAC5C,MAAgB,OAATqhC,GAAkC,iBAAVA,GAC9BD,EAAMhhC,MAAO9B,KAAM+B,WACnB/B,KAAKgjC,QAASC,GAAOngC,GAAM,GAAQigC,EAAOhB,EAAQrgC,MAIrDhF,EAAOsB,GAAG0E,QACTwgC,OAAQ,SAAUH,EAAOI,EAAIpB,EAAQrgC,GAGpC,MAAO1B,MAAKkQ,OAAQojB,IAAWE,IAAK,UAAW,GAAIE,OAGjDnxB,MAAMygC,SAAU/lB,QAASkmB,GAAMJ,EAAOhB,EAAQrgC,IAEjDshC,QAAS,SAAU1gB,EAAMygB,EAAOhB,EAAQrgC,GACvC,GAAIsT,GAAQtY,EAAOqI,cAAeud,GACjC8gB,EAAS1mC,EAAOqmC,MAAOA,EAAOhB,EAAQrgC,GACtC2hC,EAAc,WAEb,GAAIlB,GAAOlB,GAAWjhC,KAAMtD,EAAOgG,UAAY4f,GAAQ8gB,IAGlDpuB,GAAStY,EAAO+jB,MAAOzgB,KAAM,YACjCmiC,EAAKjhB,MAAM,GAKd,OAFCmiB,GAAYC,OAASD,EAEfruB,GAASouB,EAAOxiB,SAAU,EAChC5gB,KAAKyB,KAAM4hC,GACXrjC,KAAK4gB,MAAOwiB,EAAOxiB,MAAOyiB,IAE5BniB,KAAM,SAAU7hB,EAAMqiB,EAAYsgB,GACjC,GAAIuB,GAAY,SAAUxiB,GACzB,GAAIG,GAAOH,EAAMG,WACVH,GAAMG,KACbA,EAAM8gB,GAYP,OATqB,gBAAT3iC,KACX2iC,EAAUtgB,EACVA,EAAariB,EACbA,EAAOpD,GAEHylB,GAAcriB,KAAS,GAC3BW,KAAK4gB,MAAOvhB,GAAQ,SAGdW,KAAKyB,KAAK,WAChB,GAAIof,IAAU,EACbtG,EAAgB,MAARlb,GAAgBA,EAAO,aAC/BmkC,EAAS9mC,EAAO8mC,OAChBr+B,EAAOzI,EAAO+jB,MAAOzgB,KAEtB,IAAKua,EACCpV,EAAMoV,IAAWpV,EAAMoV,GAAQ2G,MACnCqiB,EAAWp+B,EAAMoV,QAGlB,KAAMA,IAASpV,GACTA,EAAMoV,IAAWpV,EAAMoV,GAAQ2G,MAAQmf,GAAK5/B,KAAM8Z,IACtDgpB,EAAWp+B,EAAMoV,GAKpB,KAAMA,EAAQipB,EAAOtjC,OAAQqa,KACvBipB,EAAQjpB,GAAQxa,OAASC,MAAiB,MAARX,GAAgBmkC,EAAQjpB,GAAQqG,QAAUvhB,IAChFmkC,EAAQjpB,GAAQ4nB,KAAKjhB,KAAM8gB,GAC3BnhB,GAAU,EACV2iB,EAAO/gC,OAAQ8X,EAAO,KAOnBsG,IAAYmhB,IAChBtlC,EAAOmkB,QAAS7gB,KAAMX,MAIzBikC,OAAQ,SAAUjkC,GAIjB,MAHKA,MAAS,IACbA,EAAOA,GAAQ,MAETW,KAAKyB,KAAK,WAChB,GAAI8Y,GACHpV,EAAOzI,EAAO+jB,MAAOzgB,MACrB4gB,EAAQzb,EAAM9F,EAAO,SACrB0hB,EAAQ5b,EAAM9F,EAAO,cACrBmkC,EAAS9mC,EAAO8mC,OAChBtjC,EAAS0gB,EAAQA,EAAM1gB,OAAS,CAajC,KAVAiF,EAAKm+B,QAAS,EAGd5mC,EAAOkkB,MAAO5gB,KAAMX,MAEf0hB,GAASA,EAAMG,MACnBH,EAAMG,KAAKhgB,KAAMlB,MAAM,GAIlBua,EAAQipB,EAAOtjC,OAAQqa,KACvBipB,EAAQjpB,GAAQxa,OAASC,MAAQwjC,EAAQjpB,GAAQqG,QAAUvhB,IAC/DmkC,EAAQjpB,GAAQ4nB,KAAKjhB,MAAM,GAC3BsiB,EAAO/gC,OAAQ8X,EAAO,GAKxB,KAAMA,EAAQ,EAAWra,EAARqa,EAAgBA,IAC3BqG,EAAOrG,IAAWqG,EAAOrG,GAAQ+oB,QACrC1iB,EAAOrG,GAAQ+oB,OAAOpiC,KAAMlB,YAKvBmF,GAAKm+B,WAMf,SAASL,IAAO5jC,EAAMokC,GACrB,GAAInb,GACH5Z,GAAUg1B,OAAQrkC,GAClB8C,EAAI,CAKL,KADAshC,EAAeA,EAAc,EAAI,EACtB,EAAJthC,EAAQA,GAAK,EAAIshC,EACvBnb,EAAQ2K,GAAW9wB,GACnBuM,EAAO,SAAW4Z,GAAU5Z,EAAO,UAAY4Z,GAAUjpB,CAO1D,OAJKokC,KACJ/0B,EAAMuO,QAAUvO,EAAM4Q,MAAQjgB,GAGxBqP,EAIRhS,EAAO+E,MACNkiC,UAAWV,GAAM,QACjBW,QAASX,GAAM,QACfY,YAAaZ,GAAM,UACnBa,QAAU7mB,QAAS,QACnB8mB,SAAW9mB,QAAS,QACpB+mB,YAAc/mB,QAAS,WACrB,SAAUna,EAAMolB,GAClBxrB,EAAOsB,GAAI8E,GAAS,SAAUigC,EAAOhB,EAAQrgC,GAC5C,MAAO1B,MAAKgjC,QAAS9a,EAAO6a,EAAOhB,EAAQrgC,MAI7ChF,EAAOqmC,MAAQ,SAAUA,EAAOhB,EAAQ/jC,GACvC,GAAIwe,GAAMumB,GAA0B,gBAAVA,GAAqBrmC,EAAOgG,UAAYqgC,IACjEjJ,SAAU97B,IAAOA,GAAM+jC,GACtBrlC,EAAOiE,WAAYoiC,IAAWA,EAC/BxB,SAAUwB,EACVhB,OAAQ/jC,GAAM+jC,GAAUA,IAAWrlC,EAAOiE,WAAYohC,IAAYA,EAwBnE,OArBAvlB,GAAI+kB,SAAW7kC,EAAO4kB,GAAGpd,IAAM,EAA4B,gBAAjBsY,GAAI+kB,SAAwB/kB,EAAI+kB,SACzE/kB,EAAI+kB,WAAY7kC,GAAO4kB,GAAGC,OAAS7kB,EAAO4kB,GAAGC,OAAQ/E,EAAI+kB,UAAa7kC,EAAO4kB,GAAGC,OAAO4F,UAGtE,MAAb3K,EAAIoE,OAAiBpE,EAAIoE,SAAU,KACvCpE,EAAIoE,MAAQ,MAIbpE,EAAIhU,IAAMgU,EAAIsd,SAEdtd,EAAIsd,SAAW,WACTp9B,EAAOiE,WAAY6b,EAAIhU,MAC3BgU,EAAIhU,IAAItH,KAAMlB,MAGVwc,EAAIoE,OACRlkB,EAAOmkB,QAAS7gB,KAAMwc,EAAIoE,QAIrBpE,GAGR9f,EAAOqlC,QACNkC,OAAQ,SAAUC,GACjB,MAAOA,IAERC,MAAO,SAAUD,GAChB,MAAO,GAAM7gC,KAAK+gC,IAAKF,EAAE7gC,KAAKghC,IAAO,IAIvC3nC,EAAO8mC,UACP9mC,EAAO4kB,GAAKwgB,GAAMniC,UAAU1B,KAC5BvB,EAAO4kB,GAAG8f,KAAO,WAChB,GAAIc,GACHsB,EAAS9mC,EAAO8mC,OAChBrhC,EAAI,CAIL,KAFA89B,GAAQvjC,EAAO0L,MAEHo7B,EAAOtjC,OAAXiC,EAAmBA,IAC1B+/B,EAAQsB,EAAQrhC,GAEV+/B,KAAWsB,EAAQrhC,KAAQ+/B,GAChCsB,EAAO/gC,OAAQN,IAAK,EAIhBqhC,GAAOtjC,QACZxD,EAAO4kB,GAAGJ,OAEX+e,GAAQhkC,GAGTS,EAAO4kB,GAAG4gB,MAAQ,SAAUA,GACtBA,KAAWxlC,EAAO8mC,OAAOrmC,KAAM+kC,IACnCxlC,EAAO4kB,GAAGhO,SAIZ5W,EAAO4kB,GAAGgjB,SAAW,GAErB5nC,EAAO4kB,GAAGhO,MAAQ,WACX4sB,KACLA,GAAUqE,YAAa7nC,EAAO4kB,GAAG8f,KAAM1kC,EAAO4kB,GAAGgjB,YAInD5nC,EAAO4kB,GAAGJ,KAAO,WAChBsjB,cAAetE,IACfA,GAAU,MAGXxjC,EAAO4kB,GAAGC,QACTkjB,KAAM,IACNC,KAAM,IAENvd,SAAU,KAIXzqB,EAAO4kB,GAAGuhB,QAELnmC,EAAO4U,MAAQ5U,EAAO4U,KAAKwE,UAC/BpZ,EAAO4U,KAAKwE,QAAQ6uB,SAAW,SAAU5kC,GACxC,MAAOrD,GAAO+K,KAAK/K,EAAO8mC,OAAQ,SAAUxlC,GAC3C,MAAO+B,KAAS/B,EAAG+B,OACjBG,SAGLxD,EAAOsB,GAAG4mC,OAAS,SAAU7hC,GAC5B,GAAKhB,UAAU7B,OACd,MAAO6C,KAAY9G,EAClB+D,KACAA,KAAKyB,KAAK,SAAUU,GACnBzF,EAAOkoC,OAAOC,UAAW7kC,KAAM+C,EAASZ,IAI3C,IAAI5F,GAASuoC,EACZC,GAAQn8B,IAAK,EAAGssB,KAAM,GACtBn1B,EAAOC,KAAM,GACbwP,EAAMzP,GAAQA,EAAKS,aAEpB,IAAMgP,EAON,MAHAjT,GAAUiT,EAAIhT,gBAGRE,EAAOmN,SAAUtN,EAASwD,UAMpBA,GAAKilC,wBAA0B5oC,IAC1C2oC,EAAMhlC,EAAKilC,yBAEZF,EAAMG,GAAWz1B,IAEhB5G,IAAKm8B,EAAIn8B,KAASk8B,EAAII,aAAe3oC,EAAQ0sB,YAAiB1sB,EAAQ2sB,WAAc,GACpFgM,KAAM6P,EAAI7P,MAAS4P,EAAIK,aAAe5oC,EAAQssB,aAAiBtsB,EAAQusB,YAAc,KAX9Eic,GAeTroC,EAAOkoC,QAENC,UAAW,SAAU9kC,EAAMgD,EAASZ,GACnC,GAAIywB,GAAWl2B,EAAO82B,IAAKzzB,EAAM,WAGf,YAAb6yB,IACJ7yB,EAAK0I,MAAMmqB,SAAW,WAGvB,IAAIwS,GAAU1oC,EAAQqD,GACrBslC,EAAYD,EAAQR,SACpBU,EAAY5oC,EAAO82B,IAAKzzB,EAAM,OAC9BwlC,EAAa7oC,EAAO82B,IAAKzzB,EAAM,QAC/BylC,GAAmC,aAAb5S,GAAwC,UAAbA,IAA0Bl2B,EAAO2K,QAAQ,QAASi+B,EAAWC,IAAe,GAC7Hrd,KAAYud,KAAkBC,EAAQC,CAGlCH,IACJC,EAAcL,EAAQxS,WACtB8S,EAASD,EAAY78B,IACrB+8B,EAAUF,EAAYvQ,OAEtBwQ,EAASlhC,WAAY8gC,IAAe,EACpCK,EAAUnhC,WAAY+gC,IAAgB,GAGlC7oC,EAAOiE,WAAYoC,KACvBA,EAAUA,EAAQ7B,KAAMnB,EAAMoC,EAAGkjC,IAGd,MAAftiC,EAAQ6F,MACZsf,EAAMtf,IAAQ7F,EAAQ6F,IAAMy8B,EAAUz8B,IAAQ88B,GAE1B,MAAhB3iC,EAAQmyB,OACZhN,EAAMgN,KAASnyB,EAAQmyB,KAAOmQ,EAAUnQ,KAASyQ,GAG7C,SAAW5iC,GACfA,EAAQ6iC,MAAM1kC,KAAMnB,EAAMmoB,GAE1Bkd,EAAQ5R,IAAKtL,KAMhBxrB,EAAOsB,GAAG0E,QAETkwB,SAAU,WACT,GAAM5yB,KAAM,GAAZ,CAIA,GAAI6lC,GAAcjB,EACjBkB,GAAiBl9B,IAAK,EAAGssB,KAAM,GAC/Bn1B,EAAOC,KAAM,EAwBd,OArBwC,UAAnCtD,EAAO82B,IAAKzzB,EAAM,YAEtB6kC,EAAS7kC,EAAKilC,yBAGda,EAAe7lC,KAAK6lC,eAGpBjB,EAAS5kC,KAAK4kC,SACRloC,EAAOmK,SAAUg/B,EAAc,GAAK,UACzCC,EAAeD,EAAajB,UAI7BkB,EAAal9B,KAAQlM,EAAO82B,IAAKqS,EAAc,GAAK,kBAAkB,GACtEC,EAAa5Q,MAAQx4B,EAAO82B,IAAKqS,EAAc,GAAK,mBAAmB,KAOvEj9B,IAAMg8B,EAAOh8B,IAAOk9B,EAAal9B,IAAMlM,EAAO82B,IAAKzzB,EAAM,aAAa,GACtEm1B,KAAM0P,EAAO1P,KAAO4Q,EAAa5Q,KAAOx4B,EAAO82B,IAAKzzB,EAAM,cAAc,MAI1E8lC,aAAc,WACb,MAAO7lC,MAAKsC,IAAI,WACf,GAAIujC,GAAe7lC,KAAK6lC,cAAgBtpC,CACxC,OAAQspC,IAAmBnpC,EAAOmK,SAAUg/B,EAAc,SAAsD,WAA1CnpC,EAAO82B,IAAKqS,EAAc,YAC/FA,EAAeA,EAAaA,YAE7B,OAAOA,IAAgBtpC,OAO1BG,EAAO+E,MAAOonB,WAAY,cAAeI,UAAW,eAAgB,SAAU0T,EAAQra,GACrF,GAAI1Z,GAAM,IAAInI,KAAM6hB,EAEpB5lB,GAAOsB,GAAI2+B,GAAW,SAAUnrB,GAC/B,MAAO9U,GAAOqL,OAAQ/H,KAAM,SAAUD,EAAM48B,EAAQnrB,GACnD,GAAIszB,GAAMG,GAAWllC,EAErB,OAAKyR,KAAQvV,EACL6oC,EAAOxiB,IAAQwiB,GAAOA,EAAKxiB,GACjCwiB,EAAIxoC,SAASE,gBAAiBmgC,GAC9B58B,EAAM48B,IAGHmI,EACJA,EAAIiB,SACFn9B,EAAYlM,EAAQooC,GAAMjc,aAApBrX,EACP5I,EAAM4I,EAAM9U,EAAQooC,GAAM7b,aAI3BlpB,EAAM48B,GAAWnrB,EAPlB,IASEmrB,EAAQnrB,EAAKzP,UAAU7B,OAAQ,QAIpC,SAAS+kC,IAAWllC,GACnB,MAAOrD,GAAO2H,SAAUtE,GACvBA,EACkB,IAAlBA,EAAKQ,SACJR,EAAK2P,aAAe3P,EAAKgnB,cACzB,EAGHrqB,EAAO+E,MAAQukC,OAAQ,SAAUC,MAAO,SAAW,SAAUnjC,EAAMzD,GAClE3C,EAAO+E,MAAQ00B,QAAS,QAAUrzB,EAAMktB,QAAS3wB,EAAM,GAAI,QAAUyD,GAAQ,SAAUojC,EAAcC,GAEpGzpC,EAAOsB,GAAImoC,GAAa,SAAUjQ,EAAQnvB,GACzC,GAAIiB,GAAYjG,UAAU7B,SAAYgmC,GAAkC,iBAAXhQ,IAC5DtB,EAAQsR,IAAkBhQ,KAAW,GAAQnvB,KAAU,EAAO,SAAW,SAE1E,OAAOrK,GAAOqL,OAAQ/H,KAAM,SAAUD,EAAMV,EAAM0H,GACjD,GAAIyI,EAEJ,OAAK9S,GAAO2H,SAAUtE,GAIdA,EAAKzD,SAASE,gBAAiB,SAAWsG,GAI3B,IAAlB/C,EAAKQ,UACTiP,EAAMzP,EAAKvD,gBAIJ6G,KAAKiE,IACXvH,EAAK+D,KAAM,SAAWhB,GAAQ0M,EAAK,SAAW1M,GAC9C/C,EAAK+D,KAAM,SAAWhB,GAAQ0M,EAAK,SAAW1M,GAC9C0M,EAAK,SAAW1M,KAIXiE,IAAU9K,EAEhBS,EAAO82B,IAAKzzB,EAAMV,EAAMu1B,GAGxBl4B,EAAO+L,MAAO1I,EAAMV,EAAM0H,EAAO6tB,IAChCv1B,EAAM2I,EAAYkuB,EAASj6B,EAAW+L,EAAW,WAQvDtL,EAAOsB,GAAGooC,KAAO,WAChB,MAAOpmC,MAAKE,QAGbxD,EAAOsB,GAAGqoC,QAAU3pC,EAAOsB,GAAG6tB,QAGP,gBAAXya,SAAuBA,QAAoC,gBAAnBA,QAAOC,QAK1DD,OAAOC,QAAU7pC,GAGjBV,EAAOU,OAASV,EAAOY,EAAIF,EASJ,kBAAX8pC,SAAyBA,OAAOC,KAC3CD,OAAQ,YAAc,WAAc,MAAO9pC,QAIzCV"} \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate-vsdoc.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate-vsdoc.js new file mode 100644 index 0000000..fd91257 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate-vsdoc.js @@ -0,0 +1,1302 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/* +* This file has been commented to support Visual Studio Intellisense. +* You should not use this file at runtime inside the browser--it is only +* intended to be used only for design-time IntelliSense. Please use the +* standard jQuery library for all production use. +* +* Comment version: 1.11.1 +*/ + +/* +* Note: While Microsoft is not the author of this file, Microsoft is +* offering you a license subject to the terms of the Microsoft Software +* License Terms for Microsoft ASP.NET Model View Controller 3. +* Microsoft reserves all other rights. The notices below are provided +* for informational purposes only and are not the license terms under +* which Microsoft distributed this file. +* +* jQuery Validation Plugin - v1.11.1 - 2/4/2013 +* https://github.com/jzaefferer/jquery-validation +* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT +* +*/ + +(function($) { + +$.extend($.fn, { + // http://docs.jquery.com/Plugins/Validation/validate + validate: function( options ) { + /// <summary> + /// Validates the selected form. This method sets up event handlers for submit, focus, + /// keyup, blur and click to trigger validation of the entire form or individual + /// elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout, + /// onkeyup, onclick). focusInvalid focuses elements when submitting a invalid form. + /// </summary> + /// <param name="options" type="Object"> + /// A set of key/value pairs that configure the validate. All options are optional. + /// </param> + + // if nothing is selected, return nothing; can't chain anyway + if (!this.length) { + options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" ); + return; + } + + // check if a validator for this form was already created + var validator = $.data(this[0], 'validator'); + if ( validator ) { + return validator; + } + + validator = new $.validator( options, this[0] ); + $.data(this[0], 'validator', validator); + + if ( validator.settings.onsubmit ) { + + // allow suppresing validation by adding a cancel class to the submit button + this.find("input, button").filter(".cancel").click(function() { + validator.cancelSubmit = true; + }); + + // when a submitHandler is used, capture the submitting button + if (validator.settings.submitHandler) { + this.find("input, button").filter(":submit").click(function() { + validator.submitButton = this; + }); + } + + // validate the form on submit + this.submit( function( event ) { + if ( validator.settings.debug ) + // prevent form submit to be able to see console output + event.preventDefault(); + + function handle() { + if ( validator.settings.submitHandler ) { + if (validator.submitButton) { + // insert a hidden input as a replacement for the missing submit button + var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm); + } + validator.settings.submitHandler.call( validator, validator.currentForm ); + if (validator.submitButton) { + // and clean up afterwards; thanks to no-block-scope, hidden can be referenced + hidden.remove(); + } + return false; + } + return true; + } + + // prevent submit for invalid forms or custom submit handlers + if ( validator.cancelSubmit ) { + validator.cancelSubmit = false; + return handle(); + } + if ( validator.form() ) { + if ( validator.pendingRequest ) { + validator.formSubmitted = true; + return false; + } + return handle(); + } else { + validator.focusInvalid(); + return false; + } + }); + } + + return validator; + }, + // http://docs.jquery.com/Plugins/Validation/valid + valid: function() { + /// <summary> + /// Checks if the selected form is valid or if all selected elements are valid. + /// validate() needs to be called on the form before checking it using this method. + /// </summary> + /// <returns type="Boolean" /> + + if ( $(this[0]).is('form')) { + return this.validate().form(); + } else { + var valid = true; + var validator = $(this[0].form).validate(); + this.each(function() { + valid &= validator.element(this); + }); + return valid; + } + }, + // attributes: space seperated list of attributes to retrieve and remove + removeAttrs: function(attributes) { + /// <summary> + /// Remove the specified attributes from the first matched element and return them. + /// </summary> + /// <param name="attributes" type="String"> + /// A space-seperated list of attribute names to remove. + /// </param> + + var result = {}, + $element = this; + $.each(attributes.split(/\s/), function(index, value) { + result[value] = $element.attr(value); + $element.removeAttr(value); + }); + return result; + }, + // http://docs.jquery.com/Plugins/Validation/rules + rules: function(command, argument) { + /// <summary> + /// Return the validations rules for the first selected element. + /// </summary> + /// <param name="command" type="String"> + /// Can be either "add" or "remove". + /// </param> + /// <param name="argument" type=""> + /// A list of rules to add or remove. + /// </param> + + var element = this[0]; + + if (command) { + var settings = $.data(element.form, 'validator').settings; + var staticRules = settings.rules; + var existingRules = $.validator.staticRules(element); + switch(command) { + case "add": + $.extend(existingRules, $.validator.normalizeRule(argument)); + staticRules[element.name] = existingRules; + if (argument.messages) + settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages ); + break; + case "remove": + if (!argument) { + delete staticRules[element.name]; + return existingRules; + } + var filtered = {}; + $.each(argument.split(/\s/), function(index, method) { + filtered[method] = existingRules[method]; + delete existingRules[method]; + }); + return filtered; + } + } + + var data = $.validator.normalizeRules( + $.extend( + {}, + $.validator.metadataRules(element), + $.validator.classRules(element), + $.validator.attributeRules(element), + $.validator.staticRules(element) + ), element); + + // make sure required is at front + if (data.required) { + var param = data.required; + delete data.required; + data = $.extend({required: param}, data); + } + + return data; + } +}); + +// Custom selectors +$.extend($.expr[":"], { + // http://docs.jquery.com/Plugins/Validation/blank + blank: function(a) {return !$.trim("" + a.value);}, + // http://docs.jquery.com/Plugins/Validation/filled + filled: function(a) {return !!$.trim("" + a.value);}, + // http://docs.jquery.com/Plugins/Validation/unchecked + unchecked: function(a) {return !a.checked;} +}); + +// constructor for validator +$.validator = function( options, form ) { + this.settings = $.extend( true, {}, $.validator.defaults, options ); + this.currentForm = form; + this.init(); +}; + +$.validator.format = function(source, params) { + /// <summary> + /// Replaces {n} placeholders with arguments. + /// One or more arguments can be passed, in addition to the string template itself, to insert + /// into the string. + /// </summary> + /// <param name="source" type="String"> + /// The string to format. + /// </param> + /// <param name="params" type="String"> + /// The first argument to insert, or an array of Strings to insert + /// </param> + /// <returns type="String" /> + + if ( arguments.length == 1 ) + return function() { + var args = $.makeArray(arguments); + args.unshift(source); + return $.validator.format.apply( this, args ); + }; + if ( arguments.length > 2 && params.constructor != Array ) { + params = $.makeArray(arguments).slice(1); + } + if ( params.constructor != Array ) { + params = [ params ]; + } + $.each(params, function(i, n) { + source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n); + }); + return source; +}; + +$.extend($.validator, { + + defaults: { + messages: {}, + groups: {}, + rules: {}, + errorClass: "error", + validClass: "valid", + errorElement: "label", + focusInvalid: true, + errorContainer: $( [] ), + errorLabelContainer: $( [] ), + onsubmit: true, + ignore: [], + ignoreTitle: false, + onfocusin: function(element) { + this.lastActive = element; + + // hide error label and remove error class on focus if enabled + if ( this.settings.focusCleanup && !this.blockFocusCleanup ) { + this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); + this.addWrapper(this.errorsFor(element)).hide(); + } + }, + onfocusout: function(element) { + if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) { + this.element(element); + } + }, + onkeyup: function(element) { + if ( element.name in this.submitted || element == this.lastElement ) { + this.element(element); + } + }, + onclick: function(element) { + // click on selects, radiobuttons and checkboxes + if ( element.name in this.submitted ) + this.element(element); + // or option elements, check parent select in that case + else if (element.parentNode.name in this.submitted) + this.element(element.parentNode); + }, + highlight: function( element, errorClass, validClass ) { + $(element).addClass(errorClass).removeClass(validClass); + }, + unhighlight: function( element, errorClass, validClass ) { + $(element).removeClass(errorClass).addClass(validClass); + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults + setDefaults: function(settings) { + /// <summary> + /// Modify default settings for validation. + /// Accepts everything that Plugins/Validation/validate accepts. + /// </summary> + /// <param name="settings" type="Options"> + /// Options to set as default. + /// </param> + + $.extend( $.validator.defaults, settings ); + }, + + messages: { + required: "This field is required.", + remote: "Please fix this field.", + email: "Please enter a valid email address.", + url: "Please enter a valid URL.", + date: "Please enter a valid date.", + dateISO: "Please enter a valid date (ISO).", + number: "Please enter a valid number.", + digits: "Please enter only digits.", + creditcard: "Please enter a valid credit card number.", + equalTo: "Please enter the same value again.", + accept: "Please enter a value with a valid extension.", + maxlength: $.validator.format("Please enter no more than {0} characters."), + minlength: $.validator.format("Please enter at least {0} characters."), + rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), + range: $.validator.format("Please enter a value between {0} and {1}."), + max: $.validator.format("Please enter a value less than or equal to {0}."), + min: $.validator.format("Please enter a value greater than or equal to {0}.") + }, + + autoCreateRanges: false, + + prototype: { + + init: function() { + this.labelContainer = $(this.settings.errorLabelContainer); + this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm); + this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer ); + this.submitted = {}; + this.valueCache = {}; + this.pendingRequest = 0; + this.pending = {}; + this.invalid = {}; + this.reset(); + + var groups = (this.groups = {}); + $.each(this.settings.groups, function(key, value) { + $.each(value.split(/\s/), function(index, name) { + groups[name] = key; + }); + }); + var rules = this.settings.rules; + $.each(rules, function(key, value) { + rules[key] = $.validator.normalizeRule(value); + }); + + function delegate(event) { + var validator = $.data(this[0].form, "validator"), + eventType = "on" + event.type.replace(/^validate/, ""); + validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] ); + } + $(this.currentForm) + .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate) + .validateDelegate(":radio, :checkbox, select, option", "click", delegate); + + if (this.settings.invalidHandler) + $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/form + form: function() { + /// <summary> + /// Validates the form, returns true if it is valid, false otherwise. + /// This behaves as a normal submit event, but returns the result. + /// </summary> + /// <returns type="Boolean" /> + + this.checkForm(); + $.extend(this.submitted, this.errorMap); + this.invalid = $.extend({}, this.errorMap); + if (!this.valid()) + $(this.currentForm).triggerHandler("invalid-form", [this]); + this.showErrors(); + return this.valid(); + }, + + checkForm: function() { + this.prepareForm(); + for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) { + this.check( elements[i] ); + } + return this.valid(); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/element + element: function( element ) { + /// <summary> + /// Validates a single element, returns true if it is valid, false otherwise. + /// This behaves as validation on blur or keyup, but returns the result. + /// </summary> + /// <param name="element" type="Selector"> + /// An element to validate, must be inside the validated form. + /// </param> + /// <returns type="Boolean" /> + + element = this.clean( element ); + this.lastElement = element; + this.prepareElement( element ); + this.currentElements = $(element); + var result = this.check( element ); + if ( result ) { + delete this.invalid[element.name]; + } else { + this.invalid[element.name] = true; + } + if ( !this.numberOfInvalids() ) { + // Hide error containers on last error + this.toHide = this.toHide.add( this.containers ); + } + this.showErrors(); + return result; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/showErrors + showErrors: function(errors) { + /// <summary> + /// Show the specified messages. + /// Keys have to refer to the names of elements, values are displayed for those elements, using the configured error placement. + /// </summary> + /// <param name="errors" type="Object"> + /// One or more key/value pairs of input names and messages. + /// </param> + + if(errors) { + // add items to error list and map + $.extend( this.errorMap, errors ); + this.errorList = []; + for ( var name in errors ) { + this.errorList.push({ + message: errors[name], + element: this.findByName(name)[0] + }); + } + // remove items from success list + this.successList = $.grep( this.successList, function(element) { + return !(element.name in errors); + }); + } + this.settings.showErrors + ? this.settings.showErrors.call( this, this.errorMap, this.errorList ) + : this.defaultShowErrors(); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/resetForm + resetForm: function() { + /// <summary> + /// Resets the controlled form. + /// Resets input fields to their original value (requires form plugin), removes classes + /// indicating invalid elements and hides error messages. + /// </summary> + + if ( $.fn.resetForm ) + $( this.currentForm ).resetForm(); + this.submitted = {}; + this.prepareForm(); + this.hideErrors(); + this.elements().removeClass( this.settings.errorClass ); + }, + + numberOfInvalids: function() { + /// <summary> + /// Returns the number of invalid fields. + /// This depends on the internal validator state. It covers all fields only after + /// validating the complete form (on submit or via $("form").valid()). After validating + /// a single element, only that element is counted. Most useful in combination with the + /// invalidHandler-option. + /// </summary> + /// <returns type="Number" /> + + return this.objectLength(this.invalid); + }, + + objectLength: function( obj ) { + var count = 0; + for ( var i in obj ) + count++; + return count; + }, + + hideErrors: function() { + this.addWrapper( this.toHide ).hide(); + }, + + valid: function() { + return this.size() == 0; + }, + + size: function() { + return this.errorList.length; + }, + + focusInvalid: function() { + if( this.settings.focusInvalid ) { + try { + $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []) + .filter(":visible") + .focus() + // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find + .trigger("focusin"); + } catch(e) { + // ignore IE throwing errors when focusing hidden elements + } + } + }, + + findLastActive: function() { + var lastActive = this.lastActive; + return lastActive && $.grep(this.errorList, function(n) { + return n.element.name == lastActive.name; + }).length == 1 && lastActive; + }, + + elements: function() { + var validator = this, + rulesCache = {}; + + // select all valid inputs inside the form (no submit or reset buttons) + // workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved + return $([]).add(this.currentForm.elements) + .filter(":input") + .not(":submit, :reset, :image, [disabled]") + .not( this.settings.ignore ) + .filter(function() { + !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this); + + // select only the first element for each name, and only those with rules specified + if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) + return false; + + rulesCache[this.name] = true; + return true; + }); + }, + + clean: function( selector ) { + return $( selector )[0]; + }, + + errors: function() { + return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext ); + }, + + reset: function() { + this.successList = []; + this.errorList = []; + this.errorMap = {}; + this.toShow = $([]); + this.toHide = $([]); + this.currentElements = $([]); + }, + + prepareForm: function() { + this.reset(); + this.toHide = this.errors().add( this.containers ); + }, + + prepareElement: function( element ) { + this.reset(); + this.toHide = this.errorsFor(element); + }, + + check: function( element ) { + element = this.clean( element ); + + // if radio/checkbox, validate first element in group instead + if (this.checkable(element)) { + element = this.findByName(element.name).not(this.settings.ignore)[0]; + } + + var rules = $(element).rules(); + var dependencyMismatch = false; + for (var method in rules) { + var rule = { method: method, parameters: rules[method] }; + try { + var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters ); + + // if a method indicates that the field is optional and therefore valid, + // don't mark it as valid when there are no other rules + if ( result == "dependency-mismatch" ) { + dependencyMismatch = true; + continue; + } + dependencyMismatch = false; + + if ( result == "pending" ) { + this.toHide = this.toHide.not( this.errorsFor(element) ); + return; + } + + if( !result ) { + this.formatAndAdd( element, rule ); + return false; + } + } catch(e) { + this.settings.debug && window.console && console.log("exception occured when checking element " + element.id + + ", check the '" + rule.method + "' method", e); + throw e; + } + } + if (dependencyMismatch) + return; + if ( this.objectLength(rules) ) + this.successList.push(element); + return true; + }, + + // return the custom message for the given element and validation method + // specified in the element's "messages" metadata + customMetaMessage: function(element, method) { + if (!$.metadata) + return; + + var meta = this.settings.meta + ? $(element).metadata()[this.settings.meta] + : $(element).metadata(); + + return meta && meta.messages && meta.messages[method]; + }, + + // return the custom message for the given element name and validation method + customMessage: function( name, method ) { + var m = this.settings.messages[name]; + return m && (m.constructor == String + ? m + : m[method]); + }, + + // return the first defined argument, allowing empty strings + findDefined: function() { + for(var i = 0; i < arguments.length; i++) { + if (arguments[i] !== undefined) + return arguments[i]; + } + return undefined; + }, + + defaultMessage: function( element, method) { + return this.findDefined( + this.customMessage( element.name, method ), + this.customMetaMessage( element, method ), + // title is never undefined, so handle empty string as undefined + !this.settings.ignoreTitle && element.title || undefined, + $.validator.messages[method], + "<strong>Warning: No message defined for " + element.name + "</strong>" + ); + }, + + formatAndAdd: function( element, rule ) { + var message = this.defaultMessage( element, rule.method ), + theregex = /\$?\{(\d+)\}/g; + if ( typeof message == "function" ) { + message = message.call(this, rule.parameters, element); + } else if (theregex.test(message)) { + message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters); + } + this.errorList.push({ + message: message, + element: element + }); + + this.errorMap[element.name] = message; + this.submitted[element.name] = message; + }, + + addWrapper: function(toToggle) { + if ( this.settings.wrapper ) + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); + return toToggle; + }, + + defaultShowErrors: function() { + for ( var i = 0; this.errorList[i]; i++ ) { + var error = this.errorList[i]; + this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); + this.showLabel( error.element, error.message ); + } + if( this.errorList.length ) { + this.toShow = this.toShow.add( this.containers ); + } + if (this.settings.success) { + for ( var i = 0; this.successList[i]; i++ ) { + this.showLabel( this.successList[i] ); + } + } + if (this.settings.unhighlight) { + for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) { + this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass ); + } + } + this.toHide = this.toHide.not( this.toShow ); + this.hideErrors(); + this.addWrapper( this.toShow ).show(); + }, + + validElements: function() { + return this.currentElements.not(this.invalidElements()); + }, + + invalidElements: function() { + return $(this.errorList).map(function() { + return this.element; + }); + }, + + showLabel: function(element, message) { + var label = this.errorsFor( element ); + if ( label.length ) { + // refresh error/success class + label.removeClass().addClass( this.settings.errorClass ); + + // check if we have a generated label, replace the message then + label.attr("generated") && label.html(message); + } else { + // create label + label = $("<" + this.settings.errorElement + "/>") + .attr({"for": this.idOrName(element), generated: true}) + .addClass(this.settings.errorClass) + .html(message || ""); + if ( this.settings.wrapper ) { + // make sure the element is visible, even in IE + // actually showing the wrapped element is handled elsewhere + label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent(); + } + if ( !this.labelContainer.append(label).length ) + this.settings.errorPlacement + ? this.settings.errorPlacement(label, $(element) ) + : label.insertAfter(element); + } + if ( !message && this.settings.success ) { + label.text(""); + typeof this.settings.success == "string" + ? label.addClass( this.settings.success ) + : this.settings.success( label ); + } + this.toShow = this.toShow.add(label); + }, + + errorsFor: function(element) { + var name = this.idOrName(element); + return this.errors().filter(function() { + return $(this).attr('for') == name; + }); + }, + + idOrName: function(element) { + return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name); + }, + + checkable: function( element ) { + return /radio|checkbox/i.test(element.type); + }, + + findByName: function( name ) { + // select by name and filter by form for performance over form.find("[name=...]") + var form = this.currentForm; + return $(document.getElementsByName(name)).map(function(index, element) { + return element.form == form && element.name == name && element || null; + }); + }, + + getLength: function(value, element) { + switch( element.nodeName.toLowerCase() ) { + case 'select': + return $("option:selected", element).length; + case 'input': + if( this.checkable( element) ) + return this.findByName(element.name).filter(':checked').length; + } + return value.length; + }, + + depend: function(param, element) { + return this.dependTypes[typeof param] + ? this.dependTypes[typeof param](param, element) + : true; + }, + + dependTypes: { + "boolean": function(param, element) { + return param; + }, + "string": function(param, element) { + return !!$(param, element.form).length; + }, + "function": function(param, element) { + return param(element); + } + }, + + optional: function(element) { + return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch"; + }, + + startRequest: function(element) { + if (!this.pending[element.name]) { + this.pendingRequest++; + this.pending[element.name] = true; + } + }, + + stopRequest: function(element, valid) { + this.pendingRequest--; + // sometimes synchronization fails, make sure pendingRequest is never < 0 + if (this.pendingRequest < 0) + this.pendingRequest = 0; + delete this.pending[element.name]; + if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) { + $(this.currentForm).submit(); + this.formSubmitted = false; + } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) { + $(this.currentForm).triggerHandler("invalid-form", [this]); + this.formSubmitted = false; + } + }, + + previousValue: function(element) { + return $.data(element, "previousValue") || $.data(element, "previousValue", { + old: null, + valid: true, + message: this.defaultMessage( element, "remote" ) + }); + } + + }, + + classRuleSettings: { + required: {required: true}, + email: {email: true}, + url: {url: true}, + date: {date: true}, + dateISO: {dateISO: true}, + dateDE: {dateDE: true}, + number: {number: true}, + numberDE: {numberDE: true}, + digits: {digits: true}, + creditcard: {creditcard: true} + }, + + addClassRules: function(className, rules) { + /// <summary> + /// Add a compound class method - useful to refactor common combinations of rules into a single + /// class. + /// </summary> + /// <param name="name" type="String"> + /// The name of the class rule to add + /// </param> + /// <param name="rules" type="Options"> + /// The compound rules + /// </param> + + className.constructor == String ? + this.classRuleSettings[className] = rules : + $.extend(this.classRuleSettings, className); + }, + + classRules: function(element) { + var rules = {}; + var classes = $(element).attr('class'); + classes && $.each(classes.split(' '), function() { + if (this in $.validator.classRuleSettings) { + $.extend(rules, $.validator.classRuleSettings[this]); + } + }); + return rules; + }, + + attributeRules: function(element) { + var rules = {}; + var $element = $(element); + + for (var method in $.validator.methods) { + var value = $element.attr(method); + if (value) { + rules[method] = value; + } + } + + // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs + if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) { + delete rules.maxlength; + } + + return rules; + }, + + metadataRules: function(element) { + if (!$.metadata) return {}; + + var meta = $.data(element.form, 'validator').settings.meta; + return meta ? + $(element).metadata()[meta] : + $(element).metadata(); + }, + + staticRules: function(element) { + var rules = {}; + var validator = $.data(element.form, 'validator'); + if (validator.settings.rules) { + rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {}; + } + return rules; + }, + + normalizeRules: function(rules, element) { + // handle dependency check + $.each(rules, function(prop, val) { + // ignore rule when param is explicitly false, eg. required:false + if (val === false) { + delete rules[prop]; + return; + } + if (val.param || val.depends) { + var keepRule = true; + switch (typeof val.depends) { + case "string": + keepRule = !!$(val.depends, element.form).length; + break; + case "function": + keepRule = val.depends.call(element, element); + break; + } + if (keepRule) { + rules[prop] = val.param !== undefined ? val.param : true; + } else { + delete rules[prop]; + } + } + }); + + // evaluate parameters + $.each(rules, function(rule, parameter) { + rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter; + }); + + // clean number parameters + $.each(['minlength', 'maxlength', 'min', 'max'], function() { + if (rules[this]) { + rules[this] = Number(rules[this]); + } + }); + $.each(['rangelength', 'range'], function() { + if (rules[this]) { + rules[this] = [Number(rules[this][0]), Number(rules[this][1])]; + } + }); + + if ($.validator.autoCreateRanges) { + // auto-create ranges + if (rules.min && rules.max) { + rules.range = [rules.min, rules.max]; + delete rules.min; + delete rules.max; + } + if (rules.minlength && rules.maxlength) { + rules.rangelength = [rules.minlength, rules.maxlength]; + delete rules.minlength; + delete rules.maxlength; + } + } + + // To support custom messages in metadata ignore rule methods titled "messages" + if (rules.messages) { + delete rules.messages; + } + + return rules; + }, + + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} + normalizeRule: function(data) { + if( typeof data == "string" ) { + var transformed = {}; + $.each(data.split(/\s/), function() { + transformed[this] = true; + }); + data = transformed; + } + return data; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/addMethod + addMethod: function(name, method, message) { + /// <summary> + /// Add a custom validation method. It must consist of a name (must be a legal javascript + /// identifier), a javascript based function and a default string message. + /// </summary> + /// <param name="name" type="String"> + /// The name of the method, used to identify and referencing it, must be a valid javascript + /// identifier + /// </param> + /// <param name="method" type="Function"> + /// The actual method implementation, returning true if an element is valid + /// </param> + /// <param name="message" type="String" optional="true"> + /// (Optional) The default message to display for this method. Can be a function created by + /// jQuery.validator.format(value). When undefined, an already existing message is used + /// (handy for localization), otherwise the field-specific messages have to be defined. + /// </param> + + $.validator.methods[name] = method; + $.validator.messages[name] = message != undefined ? message : $.validator.messages[name]; + if (method.length < 3) { + $.validator.addClassRules(name, $.validator.normalizeRule(name)); + } + }, + + methods: { + + // http://docs.jquery.com/Plugins/Validation/Methods/required + required: function(value, element, param) { + // check if dependency is met + if ( !this.depend(param, element) ) + return "dependency-mismatch"; + switch( element.nodeName.toLowerCase() ) { + case 'select': + // could be an array for select-multiple or a string, both are fine this way + var val = $(element).val(); + return val && val.length > 0; + case 'input': + if ( this.checkable(element) ) + return this.getLength(value, element) > 0; + default: + return $.trim(value).length > 0; + } + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/remote + remote: function(value, element, param) { + if ( this.optional(element) ) + return "dependency-mismatch"; + + var previous = this.previousValue(element); + if (!this.settings.messages[element.name] ) + this.settings.messages[element.name] = {}; + previous.originalMessage = this.settings.messages[element.name].remote; + this.settings.messages[element.name].remote = previous.message; + + param = typeof param == "string" && {url:param} || param; + + if ( this.pending[element.name] ) { + return "pending"; + } + if ( previous.old === value ) { + return previous.valid; + } + + previous.old = value; + var validator = this; + this.startRequest(element); + var data = {}; + data[element.name] = value; + $.ajax($.extend(true, { + url: param, + mode: "abort", + port: "validate" + element.name, + dataType: "json", + data: data, + success: function(response) { + validator.settings.messages[element.name].remote = previous.originalMessage; + var valid = response === true; + if ( valid ) { + var submitted = validator.formSubmitted; + validator.prepareElement(element); + validator.formSubmitted = submitted; + validator.successList.push(element); + validator.showErrors(); + } else { + var errors = {}; + var message = response || validator.defaultMessage(element, "remote"); + errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message; + validator.showErrors(errors); + } + previous.valid = valid; + validator.stopRequest(element, valid); + } + }, param)); + return "pending"; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/minlength + minlength: function(value, element, param) { + return this.optional(element) || this.getLength($.trim(value), element) >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/maxlength + maxlength: function(value, element, param) { + return this.optional(element) || this.getLength($.trim(value), element) <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/rangelength + rangelength: function(value, element, param) { + var length = this.getLength($.trim(value), element); + return this.optional(element) || ( length >= param[0] && length <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/min + min: function( value, element, param ) { + return this.optional(element) || value >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/max + max: function( value, element, param ) { + return this.optional(element) || value <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/range + range: function( value, element, param ) { + return this.optional(element) || ( value >= param[0] && value <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/email + email: function(value, element) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ + return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/url + url: function(value, element) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ + return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/date + date: function(value, element) { + return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/dateISO + dateISO: function(value, element) { + return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/number + number: function(value, element) { + return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/digits + digits: function(value, element) { + return this.optional(element) || /^\d+$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/creditcard + // based on http://en.wikipedia.org/wiki/Luhn + creditcard: function(value, element) { + if ( this.optional(element) ) + return "dependency-mismatch"; + // accept only digits and dashes + if (/[^0-9-]+/.test(value)) + return false; + var nCheck = 0, + nDigit = 0, + bEven = false; + + value = value.replace(/\D/g, ""); + + for (var n = value.length - 1; n >= 0; n--) { + var cDigit = value.charAt(n); + var nDigit = parseInt(cDigit, 10); + if (bEven) { + if ((nDigit *= 2) > 9) + nDigit -= 9; + } + nCheck += nDigit; + bEven = !bEven; + } + + return (nCheck % 10) == 0; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/accept + accept: function(value, element, param) { + param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif"; + return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/equalTo + equalTo: function(value, element, param) { + // bind to the blur event of the target in order to revalidate whenever the target field is updated + // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead + var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() { + $(element).valid(); + }); + return value == target.val(); + } + + } + +}); + +// deprecated, use $.validator.format instead +$.format = $.validator.format; + +})(jQuery); + +// ajax mode: abort +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() +;(function($) { + var pendingRequests = {}; + // Use a prefilter if available (1.5+) + if ( $.ajaxPrefilter ) { + $.ajaxPrefilter(function(settings, _, xhr) { + var port = settings.port; + if (settings.mode == "abort") { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } pendingRequests[port] = xhr; + } + }); + } else { + // Proxy ajax + var ajax = $.ajax; + $.ajax = function(settings) { + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, + port = ( "port" in settings ? settings : $.ajaxSettings ).port; + if (mode == "abort") { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } + + return (pendingRequests[port] = ajax.apply(this, arguments)); + } + return ajax.apply(this, arguments); + }; + } +})(jQuery); + +// provides cross-browser focusin and focusout events +// IE has native support, in other browsers, use event caputuring (neither bubbles) + +// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation +// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target +;(function($) { + // only implement if not provided by jQuery core (since 1.4) + // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs + if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) { + $.each({ + focus: 'focusin', + blur: 'focusout' + }, function( original, fix ){ + $.event.special[fix] = { + setup:function() { + this.addEventListener( original, handler, true ); + }, + teardown:function() { + this.removeEventListener( original, handler, true ); + }, + handler: function(e) { + arguments[0] = $.event.fix(e); + arguments[0].type = fix; + return $.event.handle.apply(this, arguments); + } + }; + function handler(e) { + e = $.event.fix(e); + e.type = fix; + return $.event.handle.call(this, e); + } + }); + }; + $.extend($.fn, { + validateDelegate: function(delegate, type, handler) { + return this.bind(type, function(event) { + var target = $(event.target); + if (target.is(delegate)) { + return handler.apply(target, arguments); + } + }); + } + }); +})(jQuery); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.js new file mode 100644 index 0000000..d0a9bc9 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.js @@ -0,0 +1,1245 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! + * jQuery Validation Plugin 1.11.1 + * + * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ + * http://docs.jquery.com/Plugins/Validation + * + * Copyright 2013 Jörn Zaefferer + * Released under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +(function($) { + +$.extend($.fn, { + // http://docs.jquery.com/Plugins/Validation/validate + validate: function( options ) { + + // if nothing is selected, return nothing; can't chain anyway + if ( !this.length ) { + if ( options && options.debug && window.console ) { + console.warn( "Nothing selected, can't validate, returning nothing." ); + } + return; + } + + // check if a validator for this form was already created + var validator = $.data( this[0], "validator" ); + if ( validator ) { + return validator; + } + + // Add novalidate tag if HTML5. + this.attr( "novalidate", "novalidate" ); + + validator = new $.validator( options, this[0] ); + $.data( this[0], "validator", validator ); + + if ( validator.settings.onsubmit ) { + + this.validateDelegate( ":submit", "click", function( event ) { + if ( validator.settings.submitHandler ) { + validator.submitButton = event.target; + } + // allow suppressing validation by adding a cancel class to the submit button + if ( $(event.target).hasClass("cancel") ) { + validator.cancelSubmit = true; + } + + // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button + if ( $(event.target).attr("formnovalidate") !== undefined ) { + validator.cancelSubmit = true; + } + }); + + // validate the form on submit + this.submit( function( event ) { + if ( validator.settings.debug ) { + // prevent form submit to be able to see console output + event.preventDefault(); + } + function handle() { + var hidden; + if ( validator.settings.submitHandler ) { + if ( validator.submitButton ) { + // insert a hidden input as a replacement for the missing submit button + hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val( $(validator.submitButton).val() ).appendTo(validator.currentForm); + } + validator.settings.submitHandler.call( validator, validator.currentForm, event ); + if ( validator.submitButton ) { + // and clean up afterwards; thanks to no-block-scope, hidden can be referenced + hidden.remove(); + } + return false; + } + return true; + } + + // prevent submit for invalid forms or custom submit handlers + if ( validator.cancelSubmit ) { + validator.cancelSubmit = false; + return handle(); + } + if ( validator.form() ) { + if ( validator.pendingRequest ) { + validator.formSubmitted = true; + return false; + } + return handle(); + } else { + validator.focusInvalid(); + return false; + } + }); + } + + return validator; + }, + // http://docs.jquery.com/Plugins/Validation/valid + valid: function() { + if ( $(this[0]).is("form")) { + return this.validate().form(); + } else { + var valid = true; + var validator = $(this[0].form).validate(); + this.each(function() { + valid = valid && validator.element(this); + }); + return valid; + } + }, + // attributes: space seperated list of attributes to retrieve and remove + removeAttrs: function( attributes ) { + var result = {}, + $element = this; + $.each(attributes.split(/\s/), function( index, value ) { + result[value] = $element.attr(value); + $element.removeAttr(value); + }); + return result; + }, + // http://docs.jquery.com/Plugins/Validation/rules + rules: function( command, argument ) { + var element = this[0]; + + if ( command ) { + var settings = $.data(element.form, "validator").settings; + var staticRules = settings.rules; + var existingRules = $.validator.staticRules(element); + switch(command) { + case "add": + $.extend(existingRules, $.validator.normalizeRule(argument)); + // remove messages from rules, but allow them to be set separetely + delete existingRules.messages; + staticRules[element.name] = existingRules; + if ( argument.messages ) { + settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages ); + } + break; + case "remove": + if ( !argument ) { + delete staticRules[element.name]; + return existingRules; + } + var filtered = {}; + $.each(argument.split(/\s/), function( index, method ) { + filtered[method] = existingRules[method]; + delete existingRules[method]; + }); + return filtered; + } + } + + var data = $.validator.normalizeRules( + $.extend( + {}, + $.validator.classRules(element), + $.validator.attributeRules(element), + $.validator.dataRules(element), + $.validator.staticRules(element) + ), element); + + // make sure required is at front + if ( data.required ) { + var param = data.required; + delete data.required; + data = $.extend({required: param}, data); + } + + return data; + } +}); + +// Custom selectors +$.extend($.expr[":"], { + // http://docs.jquery.com/Plugins/Validation/blank + blank: function( a ) { return !$.trim("" + $(a).val()); }, + // http://docs.jquery.com/Plugins/Validation/filled + filled: function( a ) { return !!$.trim("" + $(a).val()); }, + // http://docs.jquery.com/Plugins/Validation/unchecked + unchecked: function( a ) { return !$(a).prop("checked"); } +}); + +// constructor for validator +$.validator = function( options, form ) { + this.settings = $.extend( true, {}, $.validator.defaults, options ); + this.currentForm = form; + this.init(); +}; + +$.validator.format = function( source, params ) { + if ( arguments.length === 1 ) { + return function() { + var args = $.makeArray(arguments); + args.unshift(source); + return $.validator.format.apply( this, args ); + }; + } + if ( arguments.length > 2 && params.constructor !== Array ) { + params = $.makeArray(arguments).slice(1); + } + if ( params.constructor !== Array ) { + params = [ params ]; + } + $.each(params, function( i, n ) { + source = source.replace( new RegExp("\\{" + i + "\\}", "g"), function() { + return n; + }); + }); + return source; +}; + +$.extend($.validator, { + + defaults: { + messages: {}, + groups: {}, + rules: {}, + errorClass: "error", + validClass: "valid", + errorElement: "label", + focusInvalid: true, + errorContainer: $([]), + errorLabelContainer: $([]), + onsubmit: true, + ignore: ":hidden", + ignoreTitle: false, + onfocusin: function( element, event ) { + this.lastActive = element; + + // hide error label and remove error class on focus if enabled + if ( this.settings.focusCleanup && !this.blockFocusCleanup ) { + if ( this.settings.unhighlight ) { + this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); + } + this.addWrapper(this.errorsFor(element)).hide(); + } + }, + onfocusout: function( element, event ) { + if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) { + this.element(element); + } + }, + onkeyup: function( element, event ) { + if ( event.which === 9 && this.elementValue(element) === "" ) { + return; + } else if ( element.name in this.submitted || element === this.lastElement ) { + this.element(element); + } + }, + onclick: function( element, event ) { + // click on selects, radiobuttons and checkboxes + if ( element.name in this.submitted ) { + this.element(element); + } + // or option elements, check parent select in that case + else if ( element.parentNode.name in this.submitted ) { + this.element(element.parentNode); + } + }, + highlight: function( element, errorClass, validClass ) { + if ( element.type === "radio" ) { + this.findByName(element.name).addClass(errorClass).removeClass(validClass); + } else { + $(element).addClass(errorClass).removeClass(validClass); + } + }, + unhighlight: function( element, errorClass, validClass ) { + if ( element.type === "radio" ) { + this.findByName(element.name).removeClass(errorClass).addClass(validClass); + } else { + $(element).removeClass(errorClass).addClass(validClass); + } + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults + setDefaults: function( settings ) { + $.extend( $.validator.defaults, settings ); + }, + + messages: { + required: "This field is required.", + remote: "Please fix this field.", + email: "Please enter a valid email address.", + url: "Please enter a valid URL.", + date: "Please enter a valid date.", + dateISO: "Please enter a valid date (ISO).", + number: "Please enter a valid number.", + digits: "Please enter only digits.", + creditcard: "Please enter a valid credit card number.", + equalTo: "Please enter the same value again.", + maxlength: $.validator.format("Please enter no more than {0} characters."), + minlength: $.validator.format("Please enter at least {0} characters."), + rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), + range: $.validator.format("Please enter a value between {0} and {1}."), + max: $.validator.format("Please enter a value less than or equal to {0}."), + min: $.validator.format("Please enter a value greater than or equal to {0}.") + }, + + autoCreateRanges: false, + + prototype: { + + init: function() { + this.labelContainer = $(this.settings.errorLabelContainer); + this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm); + this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer ); + this.submitted = {}; + this.valueCache = {}; + this.pendingRequest = 0; + this.pending = {}; + this.invalid = {}; + this.reset(); + + var groups = (this.groups = {}); + $.each(this.settings.groups, function( key, value ) { + if ( typeof value === "string" ) { + value = value.split(/\s/); + } + $.each(value, function( index, name ) { + groups[name] = key; + }); + }); + var rules = this.settings.rules; + $.each(rules, function( key, value ) { + rules[key] = $.validator.normalizeRule(value); + }); + + function delegate(event) { + var validator = $.data(this[0].form, "validator"), + eventType = "on" + event.type.replace(/^validate/, ""); + if ( validator.settings[eventType] ) { + validator.settings[eventType].call(validator, this[0], event); + } + } + $(this.currentForm) + .validateDelegate(":text, [type='password'], [type='file'], select, textarea, " + + "[type='number'], [type='search'] ,[type='tel'], [type='url'], " + + "[type='email'], [type='datetime'], [type='date'], [type='month'], " + + "[type='week'], [type='time'], [type='datetime-local'], " + + "[type='range'], [type='color'] ", + "focusin focusout keyup", delegate) + .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate); + + if ( this.settings.invalidHandler ) { + $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler); + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/form + form: function() { + this.checkForm(); + $.extend(this.submitted, this.errorMap); + this.invalid = $.extend({}, this.errorMap); + if ( !this.valid() ) { + $(this.currentForm).triggerHandler("invalid-form", [this]); + } + this.showErrors(); + return this.valid(); + }, + + checkForm: function() { + this.prepareForm(); + for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) { + this.check( elements[i] ); + } + return this.valid(); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/element + element: function( element ) { + element = this.validationTargetFor( this.clean( element ) ); + this.lastElement = element; + this.prepareElement( element ); + this.currentElements = $(element); + var result = this.check( element ) !== false; + if ( result ) { + delete this.invalid[element.name]; + } else { + this.invalid[element.name] = true; + } + if ( !this.numberOfInvalids() ) { + // Hide error containers on last error + this.toHide = this.toHide.add( this.containers ); + } + this.showErrors(); + return result; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/showErrors + showErrors: function( errors ) { + if ( errors ) { + // add items to error list and map + $.extend( this.errorMap, errors ); + this.errorList = []; + for ( var name in errors ) { + this.errorList.push({ + message: errors[name], + element: this.findByName(name)[0] + }); + } + // remove items from success list + this.successList = $.grep( this.successList, function( element ) { + return !(element.name in errors); + }); + } + if ( this.settings.showErrors ) { + this.settings.showErrors.call( this, this.errorMap, this.errorList ); + } else { + this.defaultShowErrors(); + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/resetForm + resetForm: function() { + if ( $.fn.resetForm ) { + $(this.currentForm).resetForm(); + } + this.submitted = {}; + this.lastElement = null; + this.prepareForm(); + this.hideErrors(); + this.elements().removeClass( this.settings.errorClass ).removeData( "previousValue" ); + }, + + numberOfInvalids: function() { + return this.objectLength(this.invalid); + }, + + objectLength: function( obj ) { + var count = 0; + for ( var i in obj ) { + count++; + } + return count; + }, + + hideErrors: function() { + this.addWrapper( this.toHide ).hide(); + }, + + valid: function() { + return this.size() === 0; + }, + + size: function() { + return this.errorList.length; + }, + + focusInvalid: function() { + if ( this.settings.focusInvalid ) { + try { + $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []) + .filter(":visible") + .focus() + // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find + .trigger("focusin"); + } catch(e) { + // ignore IE throwing errors when focusing hidden elements + } + } + }, + + findLastActive: function() { + var lastActive = this.lastActive; + return lastActive && $.grep(this.errorList, function( n ) { + return n.element.name === lastActive.name; + }).length === 1 && lastActive; + }, + + elements: function() { + var validator = this, + rulesCache = {}; + + // select all valid inputs inside the form (no submit or reset buttons) + return $(this.currentForm) + .find("input, select, textarea") + .not(":submit, :reset, :image, [disabled]") + .not( this.settings.ignore ) + .filter(function() { + if ( !this.name && validator.settings.debug && window.console ) { + console.error( "%o has no name assigned", this); + } + + // select only the first element for each name, and only those with rules specified + if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) { + return false; + } + + rulesCache[this.name] = true; + return true; + }); + }, + + clean: function( selector ) { + return $(selector)[0]; + }, + + errors: function() { + var errorClass = this.settings.errorClass.replace(" ", "."); + return $(this.settings.errorElement + "." + errorClass, this.errorContext); + }, + + reset: function() { + this.successList = []; + this.errorList = []; + this.errorMap = {}; + this.toShow = $([]); + this.toHide = $([]); + this.currentElements = $([]); + }, + + prepareForm: function() { + this.reset(); + this.toHide = this.errors().add( this.containers ); + }, + + prepareElement: function( element ) { + this.reset(); + this.toHide = this.errorsFor(element); + }, + + elementValue: function( element ) { + var type = $(element).attr("type"), + val = $(element).val(); + + if ( type === "radio" || type === "checkbox" ) { + return $("input[name='" + $(element).attr("name") + "']:checked").val(); + } + + if ( typeof val === "string" ) { + return val.replace(/\r/g, ""); + } + return val; + }, + + check: function( element ) { + element = this.validationTargetFor( this.clean( element ) ); + + var rules = $(element).rules(); + var dependencyMismatch = false; + var val = this.elementValue(element); + var result; + + for (var method in rules ) { + var rule = { method: method, parameters: rules[method] }; + try { + + result = $.validator.methods[method].call( this, val, element, rule.parameters ); + + // if a method indicates that the field is optional and therefore valid, + // don't mark it as valid when there are no other rules + if ( result === "dependency-mismatch" ) { + dependencyMismatch = true; + continue; + } + dependencyMismatch = false; + + if ( result === "pending" ) { + this.toHide = this.toHide.not( this.errorsFor(element) ); + return; + } + + if ( !result ) { + this.formatAndAdd( element, rule ); + return false; + } + } catch(e) { + if ( this.settings.debug && window.console ) { + console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e ); + } + throw e; + } + } + if ( dependencyMismatch ) { + return; + } + if ( this.objectLength(rules) ) { + this.successList.push(element); + } + return true; + }, + + // return the custom message for the given element and validation method + // specified in the element's HTML5 data attribute + customDataMessage: function( element, method ) { + return $(element).data("msg-" + method.toLowerCase()) || (element.attributes && $(element).attr("data-msg-" + method.toLowerCase())); + }, + + // return the custom message for the given element name and validation method + customMessage: function( name, method ) { + var m = this.settings.messages[name]; + return m && (m.constructor === String ? m : m[method]); + }, + + // return the first defined argument, allowing empty strings + findDefined: function() { + for(var i = 0; i < arguments.length; i++) { + if ( arguments[i] !== undefined ) { + return arguments[i]; + } + } + return undefined; + }, + + defaultMessage: function( element, method ) { + return this.findDefined( + this.customMessage( element.name, method ), + this.customDataMessage( element, method ), + // title is never undefined, so handle empty string as undefined + !this.settings.ignoreTitle && element.title || undefined, + $.validator.messages[method], + "<strong>Warning: No message defined for " + element.name + "</strong>" + ); + }, + + formatAndAdd: function( element, rule ) { + var message = this.defaultMessage( element, rule.method ), + theregex = /\$?\{(\d+)\}/g; + if ( typeof message === "function" ) { + message = message.call(this, rule.parameters, element); + } else if (theregex.test(message)) { + message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters); + } + this.errorList.push({ + message: message, + element: element + }); + + this.errorMap[element.name] = message; + this.submitted[element.name] = message; + }, + + addWrapper: function( toToggle ) { + if ( this.settings.wrapper ) { + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); + } + return toToggle; + }, + + defaultShowErrors: function() { + var i, elements; + for ( i = 0; this.errorList[i]; i++ ) { + var error = this.errorList[i]; + if ( this.settings.highlight ) { + this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); + } + this.showLabel( error.element, error.message ); + } + if ( this.errorList.length ) { + this.toShow = this.toShow.add( this.containers ); + } + if ( this.settings.success ) { + for ( i = 0; this.successList[i]; i++ ) { + this.showLabel( this.successList[i] ); + } + } + if ( this.settings.unhighlight ) { + for ( i = 0, elements = this.validElements(); elements[i]; i++ ) { + this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass ); + } + } + this.toHide = this.toHide.not( this.toShow ); + this.hideErrors(); + this.addWrapper( this.toShow ).show(); + }, + + validElements: function() { + return this.currentElements.not(this.invalidElements()); + }, + + invalidElements: function() { + return $(this.errorList).map(function() { + return this.element; + }); + }, + + showLabel: function( element, message ) { + var label = this.errorsFor( element ); + if ( label.length ) { + // refresh error/success class + label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); + // replace message on existing label + label.html(message); + } else { + // create label + label = $("<" + this.settings.errorElement + ">") + .attr("for", this.idOrName(element)) + .addClass(this.settings.errorClass) + .html(message || ""); + if ( this.settings.wrapper ) { + // make sure the element is visible, even in IE + // actually showing the wrapped element is handled elsewhere + label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent(); + } + if ( !this.labelContainer.append(label).length ) { + if ( this.settings.errorPlacement ) { + this.settings.errorPlacement(label, $(element) ); + } else { + label.insertAfter(element); + } + } + } + if ( !message && this.settings.success ) { + label.text(""); + if ( typeof this.settings.success === "string" ) { + label.addClass( this.settings.success ); + } else { + this.settings.success( label, element ); + } + } + this.toShow = this.toShow.add(label); + }, + + errorsFor: function( element ) { + var name = this.idOrName(element); + return this.errors().filter(function() { + return $(this).attr("for") === name; + }); + }, + + idOrName: function( element ) { + return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name); + }, + + validationTargetFor: function( element ) { + // if radio/checkbox, validate first element in group instead + if ( this.checkable(element) ) { + element = this.findByName( element.name ).not(this.settings.ignore)[0]; + } + return element; + }, + + checkable: function( element ) { + return (/radio|checkbox/i).test(element.type); + }, + + findByName: function( name ) { + return $(this.currentForm).find("[name='" + name + "']"); + }, + + getLength: function( value, element ) { + switch( element.nodeName.toLowerCase() ) { + case "select": + return $("option:selected", element).length; + case "input": + if ( this.checkable( element) ) { + return this.findByName(element.name).filter(":checked").length; + } + } + return value.length; + }, + + depend: function( param, element ) { + return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true; + }, + + dependTypes: { + "boolean": function( param, element ) { + return param; + }, + "string": function( param, element ) { + return !!$(param, element.form).length; + }, + "function": function( param, element ) { + return param(element); + } + }, + + optional: function( element ) { + var val = this.elementValue(element); + return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch"; + }, + + startRequest: function( element ) { + if ( !this.pending[element.name] ) { + this.pendingRequest++; + this.pending[element.name] = true; + } + }, + + stopRequest: function( element, valid ) { + this.pendingRequest--; + // sometimes synchronization fails, make sure pendingRequest is never < 0 + if ( this.pendingRequest < 0 ) { + this.pendingRequest = 0; + } + delete this.pending[element.name]; + if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) { + $(this.currentForm).submit(); + this.formSubmitted = false; + } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) { + $(this.currentForm).triggerHandler("invalid-form", [this]); + this.formSubmitted = false; + } + }, + + previousValue: function( element ) { + return $.data(element, "previousValue") || $.data(element, "previousValue", { + old: null, + valid: true, + message: this.defaultMessage( element, "remote" ) + }); + } + + }, + + classRuleSettings: { + required: {required: true}, + email: {email: true}, + url: {url: true}, + date: {date: true}, + dateISO: {dateISO: true}, + number: {number: true}, + digits: {digits: true}, + creditcard: {creditcard: true} + }, + + addClassRules: function( className, rules ) { + if ( className.constructor === String ) { + this.classRuleSettings[className] = rules; + } else { + $.extend(this.classRuleSettings, className); + } + }, + + classRules: function( element ) { + var rules = {}; + var classes = $(element).attr("class"); + if ( classes ) { + $.each(classes.split(" "), function() { + if ( this in $.validator.classRuleSettings ) { + $.extend(rules, $.validator.classRuleSettings[this]); + } + }); + } + return rules; + }, + + attributeRules: function( element ) { + var rules = {}; + var $element = $(element); + var type = $element[0].getAttribute("type"); + + for (var method in $.validator.methods) { + var value; + + // support for <input required> in both html5 and older browsers + if ( method === "required" ) { + value = $element.get(0).getAttribute(method); + // Some browsers return an empty string for the required attribute + // and non-HTML5 browsers might have required="" markup + if ( value === "" ) { + value = true; + } + // force non-HTML5 browsers to return bool + value = !!value; + } else { + value = $element.attr(method); + } + + // convert the value to a number for number inputs, and for text for backwards compability + // allows type="date" and others to be compared as strings + if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) { + value = Number(value); + } + + if ( value ) { + rules[method] = value; + } else if ( type === method && type !== 'range' ) { + // exception: the jquery validate 'range' method + // does not test for the html5 'range' type + rules[method] = true; + } + } + + // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs + if ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) { + delete rules.maxlength; + } + + return rules; + }, + + dataRules: function( element ) { + var method, value, + rules = {}, $element = $(element); + for (method in $.validator.methods) { + value = $element.data("rule-" + method.toLowerCase()); + if ( value !== undefined ) { + rules[method] = value; + } + } + return rules; + }, + + staticRules: function( element ) { + var rules = {}; + var validator = $.data(element.form, "validator"); + if ( validator.settings.rules ) { + rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {}; + } + return rules; + }, + + normalizeRules: function( rules, element ) { + // handle dependency check + $.each(rules, function( prop, val ) { + // ignore rule when param is explicitly false, eg. required:false + if ( val === false ) { + delete rules[prop]; + return; + } + if ( val.param || val.depends ) { + var keepRule = true; + switch (typeof val.depends) { + case "string": + keepRule = !!$(val.depends, element.form).length; + break; + case "function": + keepRule = val.depends.call(element, element); + break; + } + if ( keepRule ) { + rules[prop] = val.param !== undefined ? val.param : true; + } else { + delete rules[prop]; + } + } + }); + + // evaluate parameters + $.each(rules, function( rule, parameter ) { + rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter; + }); + + // clean number parameters + $.each(['minlength', 'maxlength'], function() { + if ( rules[this] ) { + rules[this] = Number(rules[this]); + } + }); + $.each(['rangelength', 'range'], function() { + var parts; + if ( rules[this] ) { + if ( $.isArray(rules[this]) ) { + rules[this] = [Number(rules[this][0]), Number(rules[this][1])]; + } else if ( typeof rules[this] === "string" ) { + parts = rules[this].split(/[\s,]+/); + rules[this] = [Number(parts[0]), Number(parts[1])]; + } + } + }); + + if ( $.validator.autoCreateRanges ) { + // auto-create ranges + if ( rules.min && rules.max ) { + rules.range = [rules.min, rules.max]; + delete rules.min; + delete rules.max; + } + if ( rules.minlength && rules.maxlength ) { + rules.rangelength = [rules.minlength, rules.maxlength]; + delete rules.minlength; + delete rules.maxlength; + } + } + + return rules; + }, + + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} + normalizeRule: function( data ) { + if ( typeof data === "string" ) { + var transformed = {}; + $.each(data.split(/\s/), function() { + transformed[this] = true; + }); + data = transformed; + } + return data; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/addMethod + addMethod: function( name, method, message ) { + $.validator.methods[name] = method; + $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name]; + if ( method.length < 3 ) { + $.validator.addClassRules(name, $.validator.normalizeRule(name)); + } + }, + + methods: { + + // http://docs.jquery.com/Plugins/Validation/Methods/required + required: function( value, element, param ) { + // check if dependency is met + if ( !this.depend(param, element) ) { + return "dependency-mismatch"; + } + if ( element.nodeName.toLowerCase() === "select" ) { + // could be an array for select-multiple or a string, both are fine this way + var val = $(element).val(); + return val && val.length > 0; + } + if ( this.checkable(element) ) { + return this.getLength(value, element) > 0; + } + return $.trim(value).length > 0; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/email + email: function( value, element ) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ + return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/url + url: function( value, element ) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ + return this.optional(element) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/date + date: function( value, element ) { + return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString()); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/dateISO + dateISO: function( value, element ) { + return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/number + number: function( value, element ) { + return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/digits + digits: function( value, element ) { + return this.optional(element) || /^\d+$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/creditcard + // based on http://en.wikipedia.org/wiki/Luhn + creditcard: function( value, element ) { + if ( this.optional(element) ) { + return "dependency-mismatch"; + } + // accept only spaces, digits and dashes + if ( /[^0-9 \-]+/.test(value) ) { + return false; + } + var nCheck = 0, + nDigit = 0, + bEven = false; + + value = value.replace(/\D/g, ""); + + for (var n = value.length - 1; n >= 0; n--) { + var cDigit = value.charAt(n); + nDigit = parseInt(cDigit, 10); + if ( bEven ) { + if ( (nDigit *= 2) > 9 ) { + nDigit -= 9; + } + } + nCheck += nDigit; + bEven = !bEven; + } + + return (nCheck % 10) === 0; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/minlength + minlength: function( value, element, param ) { + var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element); + return this.optional(element) || length >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/maxlength + maxlength: function( value, element, param ) { + var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element); + return this.optional(element) || length <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/rangelength + rangelength: function( value, element, param ) { + var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element); + return this.optional(element) || ( length >= param[0] && length <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/min + min: function( value, element, param ) { + return this.optional(element) || value >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/max + max: function( value, element, param ) { + return this.optional(element) || value <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/range + range: function( value, element, param ) { + return this.optional(element) || ( value >= param[0] && value <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/equalTo + equalTo: function( value, element, param ) { + // bind to the blur event of the target in order to revalidate whenever the target field is updated + // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead + var target = $(param); + if ( this.settings.onfocusout ) { + target.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() { + $(element).valid(); + }); + } + return value === target.val(); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/remote + remote: function( value, element, param ) { + if ( this.optional(element) ) { + return "dependency-mismatch"; + } + + var previous = this.previousValue(element); + if (!this.settings.messages[element.name] ) { + this.settings.messages[element.name] = {}; + } + previous.originalMessage = this.settings.messages[element.name].remote; + this.settings.messages[element.name].remote = previous.message; + + param = typeof param === "string" && {url:param} || param; + + if ( previous.old === value ) { + return previous.valid; + } + + previous.old = value; + var validator = this; + this.startRequest(element); + var data = {}; + data[element.name] = value; + $.ajax($.extend(true, { + url: param, + mode: "abort", + port: "validate" + element.name, + dataType: "json", + data: data, + success: function( response ) { + validator.settings.messages[element.name].remote = previous.originalMessage; + var valid = response === true || response === "true"; + if ( valid ) { + var submitted = validator.formSubmitted; + validator.prepareElement(element); + validator.formSubmitted = submitted; + validator.successList.push(element); + delete validator.invalid[element.name]; + validator.showErrors(); + } else { + var errors = {}; + var message = response || validator.defaultMessage( element, "remote" ); + errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message; + validator.invalid[element.name] = true; + validator.showErrors(errors); + } + previous.valid = valid; + validator.stopRequest(element, valid); + } + }, param)); + return "pending"; + } + + } + +}); + +// deprecated, use $.validator.format instead +$.format = $.validator.format; + +}(jQuery)); + +// ajax mode: abort +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() +(function($) { + var pendingRequests = {}; + // Use a prefilter if available (1.5+) + if ( $.ajaxPrefilter ) { + $.ajaxPrefilter(function( settings, _, xhr ) { + var port = settings.port; + if ( settings.mode === "abort" ) { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } + pendingRequests[port] = xhr; + } + }); + } else { + // Proxy ajax + var ajax = $.ajax; + $.ajax = function( settings ) { + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, + port = ( "port" in settings ? settings : $.ajaxSettings ).port; + if ( mode === "abort" ) { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } + pendingRequests[port] = ajax.apply(this, arguments); + return pendingRequests[port]; + } + return ajax.apply(this, arguments); + }; + } +}(jQuery)); + +// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation +// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target +(function($) { + $.extend($.fn, { + validateDelegate: function( delegate, type, handler ) { + return this.bind(type, function( event ) { + var target = $(event.target); + if ( target.is(delegate) ) { + return handler.apply(target, arguments); + } + }); + } + }); +}(jQuery)); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.min.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.min.js new file mode 100644 index 0000000..3efb648 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.min.js @@ -0,0 +1,16 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation +* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."),void 0;var i=t.data(this[0],"validator");return i?i:(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.validateDelegate(":submit","click",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t("<input type='hidden'/>").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&s.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is("form"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},s=this;return t.each(e.split(/\s/),function(t,e){i[e]=s.attr(e),s.removeAttr(e)}),i},rules:function(e,i){var s=this[0];if(e){var r=t.data(s.form,"validator").settings,n=r.rules,a=t.validator.staticRules(s);switch(e){case"add":t.extend(a,t.validator.normalizeRule(i)),delete a.messages,n[s.name]=a,i.messages&&(r.messages[s.name]=t.extend(r.messages[s.name],i.messages));break;case"remove":if(!i)return delete n[s.name],a;var u={};return t.each(i.split(/\s/),function(t,e){u[e]=a[e],delete a[e]}),u}}var o=t.validator.normalizeRules(t.extend({},t.validator.classRules(s),t.validator.attributeRules(s),t.validator.dataRules(s),t.validator.staticRules(s)),s);if(o.required){var l=o.required;delete o.required,o=t.extend({required:l},o)}return o}}),t.extend(t.expr[":"],{blank:function(e){return!t.trim(""+t(e).val())},filled:function(e){return!!t.trim(""+t(e).val())},unchecked:function(e){return!t(e).prop("checked")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(RegExp("\\{"+t+"\\}","g"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||""!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:t.validator.format("Please enter no more than {0} characters."),minlength:t.validator.format("Please enter at least {0} characters."),rangelength:t.validator.format("Please enter a value between {0} and {1} characters long."),range:t.validator.format("Please enter a value between {0} and {1}."),max:t.validator.format("Please enter a value less than or equal to {0}."),min:t.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,"validator"),s="on"+e.type.replace(/^validate/,"");i.settings[s]&&i.settings[s].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,s){"string"==typeof s&&(s=s.split(/\s/)),t.each(s,function(t,s){i[s]=e})});var s=this.settings.rules;t.each(s,function(e,i){s[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",e).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",e),this.settings.invalidHandler&&t(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(" ",".");return t(this.settings.errorElement+"."+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr("type"),s=t(e).val();return"radio"===i||"checkbox"===i?t("input[name='"+t(e).attr("name")+"']:checked").val():"string"==typeof s?s.replace(/\r/g,""):s},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s=t(e).rules(),r=!1,n=this.elementValue(e);for(var a in s){var u={method:a,parameters:s[a]};try{if(i=t.validator.methods[a].call(this,n,e,u.parameters),"dependency-mismatch"===i){r=!0;continue}if(r=!1,"pending"===i)return this.toHide=this.toHide.not(this.errorsFor(e)),void 0;if(!i)return this.formatAndAdd(e,u),!1}catch(o){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+u.method+"' method.",o),o}}return r?void 0:(this.objectLength(s)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data("msg-"+i.toLowerCase())||e.attributes&&t(e).attr("data-msg-"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],"<strong>Warning: No message defined for "+e.name+"</strong>")},formatAndAdd:function(e,i){var s=this.defaultMessage(e,i.method),r=/\$?\{(\d+)\}/g;"function"==typeof s?s=s.call(this,i.parameters,e):r.test(s)&&(s=t.validator.format(s.replace(r,"{$1}"),i.parameters)),this.errorList.push({message:s,element:e}),this.errorMap[e.name]=s,this.submitted[e.name]=s},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s=this.errorsFor(e);s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(i)):(s=t("<"+this.settings.errorElement+">").attr("for",this.idOrName(e)).addClass(this.settings.errorClass).html(i||""),this.settings.wrapper&&(s=s.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(s).length||(this.settings.errorPlacement?this.settings.errorPlacement(s,t(e)):s.insertAfter(e))),!i&&this.settings.success&&(s.text(""),"string"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,e)),this.toShow=this.toShow.add(s)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr("for")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find("[name='"+e+"']")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case"select":return t("option:selected",i).length;case"input":if(this.checkable(i))return this.findByName(i.name).filter(":checked").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{"boolean":function(t){return t},string:function(e,i){return!!t(e,i.form).length},"function":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,0>this.pendingRequest&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,"previousValue")||t.data(e,"previousValue",{old:null,valid:!0,message:this.defaultMessage(e,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr("class");return s&&t.each(s.split(" "),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},s=t(e),r=s[0].getAttribute("type");for(var n in t.validator.methods){var a;"required"===n?(a=s.get(0).getAttribute(n),""===a&&(a=!0),a=!!a):a=s.attr(n),/min|max/.test(n)&&(null===r||/number|range|text/.test(r))&&(a=Number(a)),a?i[n]=a:r===n&&"range"!==r&&(i[n]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,s,r={},n=t(e);for(i in t.validator.methods)s=n.data("rule-"+i.toLowerCase()),void 0!==s&&(r[i]=s);return r},staticRules:function(e){var i={},s=t.data(e.form,"validator");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,r){if(r===!1)return delete e[s],void 0;if(r.param||r.depends){var n=!0;switch(typeof r.depends){case"string":n=!!t(r.depends,i.form).length;break;case"function":n=r.depends.call(i,i)}n?e[s]=void 0!==r.param?r.param:!0:delete e[s]}}),t.each(e,function(s,r){e[s]=t.isFunction(r)?r(i):r}),t.each(["minlength","maxlength"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each(["rangelength","range"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:"string"==typeof e[this]&&(i=e[this].split(/[\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if("string"==typeof e){var i={};t.each(e.split(/\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],3>i.length&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return"dependency-mismatch";if("select"===i.nodeName.toLowerCase()){var r=t(i).val();return r&&r.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(""+new Date(t))},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return"dependency-mismatch";if(/[^0-9 \-]+/.test(t))return!1;var i=0,s=0,r=!1;t=t.replace(/\D/g,"");for(var n=t.length-1;n>=0;n--){var a=t.charAt(n);s=parseInt(a,10),r&&(s*=2)>9&&(s-=9),i+=s,r=!r}return 0===i%10},minlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s},maxlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||s>=r},rangelength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s[0]&&s[1]>=r},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&i[1]>=t},equalTo:function(e,i,s){var r=t(s);return this.settings.onfocusout&&r.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){t(i).valid()}),e===r.val()},remote:function(e,i,s){if(this.optional(i))return"dependency-mismatch";var r=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),r.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=r.message,s="string"==typeof s&&{url:s}||s,r.old===e)return r.valid;r.old=e;var n=this;this.startRequest(i);var a={};return a[i.name]=e,t.ajax(t.extend(!0,{url:s,mode:"abort",port:"validate"+i.name,dataType:"json",data:a,success:function(s){n.settings.messages[i.name].remote=r.originalMessage;var a=s===!0||"true"===s;if(a){var u=n.formSubmitted;n.prepareElement(i),n.formSubmitted=u,n.successList.push(i),delete n.invalid[i.name],n.showErrors()}else{var o={},l=s||n.defaultMessage(i,"remote");o[i.name]=r.message=t.isFunction(l)?l(e):l,n.invalid[i.name]=!0,n.showErrors(o)}r.valid=a,n.stopRequest(i,a)}},s)),"pending"}}}),t.format=t.validator.format})(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,s){var r=t.port;"abort"===t.mode&&(e[r]&&e[r].abort(),e[r]=s)});else{var i=t.ajax;t.ajax=function(s){var r=("mode"in s?s:t.ajaxSettings).mode,n=("port"in s?s:t.ajaxSettings).port;return"abort"===r?(e[n]&&e[n].abort(),e[n]=i.apply(this,arguments),e[n]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,s){return this.bind(i,function(i){var r=t(i.target);return r.is(e)?s.apply(r,arguments):void 0})}})}(jQuery); \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.unobtrusive.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.unobtrusive.js new file mode 100644 index 0000000..0503334 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.unobtrusive.js @@ -0,0 +1,429 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! +** Unobtrusive validation support library for jQuery and jQuery Validate +** Copyright (C) Microsoft Corporation. All rights reserved. +*/ + +/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ +/*global document: false, jQuery: false */ + +(function ($) { + var $jQval = $.validator, + adapters, + data_validation = "unobtrusiveValidation"; + + function setValidationValues(options, ruleName, value) { + options.rules[ruleName] = value; + if (options.message) { + options.messages[ruleName] = options.message; + } + } + + function splitAndTrim(value) { + return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g); + } + + function escapeAttributeValue(value) { + // As mentioned on http://api.jquery.com/category/selectors/ + return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); + } + + function getModelPrefix(fieldName) { + return fieldName.substr(0, fieldName.lastIndexOf(".") + 1); + } + + function appendModelPrefix(value, prefix) { + if (value.indexOf("*.") === 0) { + value = value.replace("*.", prefix); + } + return value; + } + + function onError(error, inputElement) { // 'this' is the form element + var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"), + replaceAttrValue = container.attr("data-valmsg-replace"), + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null; + + container.removeClass("field-validation-valid").addClass("field-validation-error"); + error.data("unobtrusiveContainer", container); + + if (replace) { + container.empty(); + error.removeClass("input-validation-error").appendTo(container); + } + else { + error.hide(); + } + } + + function onErrors(event, validator) { // 'this' is the form element + var container = $(this).find("[data-valmsg-summary=true]"), + list = container.find("ul"); + + if (list && list.length && validator.errorList.length) { + list.empty(); + container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); + + $.each(validator.errorList, function () { + $("<li />").html(this.message).appendTo(list); + }); + } + } + + function onSuccess(error) { // 'this' is the form element + var container = error.data("unobtrusiveContainer"), + replaceAttrValue = container.attr("data-valmsg-replace"), + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null; + + if (container) { + container.addClass("field-validation-valid").removeClass("field-validation-error"); + error.removeData("unobtrusiveContainer"); + + if (replace) { + container.empty(); + } + } + } + + function onReset(event) { // 'this' is the form element + var $form = $(this), + key = '__jquery_unobtrusive_validation_form_reset'; + if ($form.data(key)) { + return; + } + // Set a flag that indicates we're currently resetting the form. + $form.data(key, true); + try { + $form.data("validator").resetForm(); + } finally { + $form.removeData(key); + } + + $form.find(".validation-summary-errors") + .addClass("validation-summary-valid") + .removeClass("validation-summary-errors"); + $form.find(".field-validation-error") + .addClass("field-validation-valid") + .removeClass("field-validation-error") + .removeData("unobtrusiveContainer") + .find(">*") // If we were using valmsg-replace, get the underlying error + .removeData("unobtrusiveContainer"); + } + + function validationInfo(form) { + var $form = $(form), + result = $form.data(data_validation), + onResetProxy = $.proxy(onReset, form), + defaultOptions = $jQval.unobtrusive.options || {}, + execInContext = function (name, args) { + var func = defaultOptions[name]; + func && $.isFunction(func) && func.apply(form, args); + } + + if (!result) { + result = { + options: { // options structure passed to jQuery Validate's validate() method + errorClass: defaultOptions.errorClass || "input-validation-error", + errorElement: defaultOptions.errorElement || "span", + errorPlacement: function () { + onError.apply(form, arguments); + execInContext("errorPlacement", arguments); + }, + invalidHandler: function () { + onErrors.apply(form, arguments); + execInContext("invalidHandler", arguments); + }, + messages: {}, + rules: {}, + success: function () { + onSuccess.apply(form, arguments); + execInContext("success", arguments); + } + }, + attachValidation: function () { + $form + .off("reset." + data_validation, onResetProxy) + .on("reset." + data_validation, onResetProxy) + .validate(this.options); + }, + validate: function () { // a validation function that is called by unobtrusive Ajax + $form.validate(); + return $form.valid(); + } + }; + $form.data(data_validation, result); + } + + return result; + } + + $jQval.unobtrusive = { + adapters: [], + + parseElement: function (element, skipAttach) { + /// <summary> + /// Parses a single HTML element for unobtrusive validation attributes. + /// </summary> + /// <param name="element" domElement="true">The HTML element to be parsed.</param> + /// <param name="skipAttach" type="Boolean">[Optional] true to skip attaching the + /// validation to the form. If parsing just this single element, you should specify true. + /// If parsing several elements, you should specify false, and manually attach the validation + /// to the form when you are finished. The default is false.</param> + var $element = $(element), + form = $element.parents("form")[0], + valInfo, rules, messages; + + if (!form) { // Cannot do client-side validation without a form + return; + } + + valInfo = validationInfo(form); + valInfo.options.rules[element.name] = rules = {}; + valInfo.options.messages[element.name] = messages = {}; + + $.each(this.adapters, function () { + var prefix = "data-val-" + this.name, + message = $element.attr(prefix), + paramValues = {}; + + if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy) + prefix += "-"; + + $.each(this.params, function () { + paramValues[this] = $element.attr(prefix + this); + }); + + this.adapt({ + element: element, + form: form, + message: message, + params: paramValues, + rules: rules, + messages: messages + }); + } + }); + + $.extend(rules, { "__dummy__": true }); + + if (!skipAttach) { + valInfo.attachValidation(); + } + }, + + parse: function (selector) { + /// <summary> + /// Parses all the HTML elements in the specified selector. It looks for input elements decorated + /// with the [data-val=true] attribute value and enables validation according to the data-val-* + /// attribute values. + /// </summary> + /// <param name="selector" type="String">Any valid jQuery selector.</param> + + // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one + // element with data-val=true + var $selector = $(selector), + $forms = $selector.parents() + .addBack() + .filter("form") + .add($selector.find("form")) + .has("[data-val=true]"); + + $selector.find("[data-val=true]").each(function () { + $jQval.unobtrusive.parseElement(this, true); + }); + + $forms.each(function () { + var info = validationInfo(this); + if (info) { + info.attachValidation(); + } + }); + } + }; + + adapters = $jQval.unobtrusive.adapters; + + adapters.add = function (adapterName, params, fn) { + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary> + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param> + /// <param name="params" type="Array" optional="true">[Optional] An array of parameter names (strings) that will + /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and + /// mmmm is the parameter name).</param> + /// <param name="fn" type="Function">The function to call, which adapts the values from the HTML + /// attributes into jQuery Validate rules and/or messages.</param> + /// <returns type="jQuery.validator.unobtrusive.adapters" /> + if (!fn) { // Called with no params, just a function + fn = params; + params = []; + } + this.push({ name: adapterName, params: params, adapt: fn }); + return this; + }; + + adapters.addBool = function (adapterName, ruleName) { + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where + /// the jQuery Validate validation rule has no parameter values.</summary> + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param> + /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value + /// of adapterName will be used instead.</param> + /// <returns type="jQuery.validator.unobtrusive.adapters" /> + return this.add(adapterName, function (options) { + setValidationValues(options, ruleName || adapterName, true); + }); + }; + + adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) { + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where + /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and + /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary> + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param> + /// <param name="minRuleName" type="String">The name of the jQuery Validate rule to be used when you only + /// have a minimum value.</param> + /// <param name="maxRuleName" type="String">The name of the jQuery Validate rule to be used when you only + /// have a maximum value.</param> + /// <param name="minMaxRuleName" type="String">The name of the jQuery Validate rule to be used when you + /// have both a minimum and maximum value.</param> + /// <param name="minAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that + /// contains the minimum value. The default is "min".</param> + /// <param name="maxAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that + /// contains the maximum value. The default is "max".</param> + /// <returns type="jQuery.validator.unobtrusive.adapters" /> + return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) { + var min = options.params.min, + max = options.params.max; + + if (min && max) { + setValidationValues(options, minMaxRuleName, [min, max]); + } + else if (min) { + setValidationValues(options, minRuleName, min); + } + else if (max) { + setValidationValues(options, maxRuleName, max); + } + }); + }; + + adapters.addSingleVal = function (adapterName, attribute, ruleName) { + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where + /// the jQuery Validate validation rule has a single value.</summary> + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param> + /// <param name="attribute" type="String">[Optional] The name of the HTML attribute that contains the value. + /// The default is "val".</param> + /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value + /// of adapterName will be used instead.</param> + /// <returns type="jQuery.validator.unobtrusive.adapters" /> + return this.add(adapterName, [attribute || "val"], function (options) { + setValidationValues(options, ruleName || adapterName, options.params[attribute]); + }); + }; + + $jQval.addMethod("__dummy__", function (value, element, params) { + return true; + }); + + $jQval.addMethod("regex", function (value, element, params) { + var match; + if (this.optional(element)) { + return true; + } + + match = new RegExp(params).exec(value); + return (match && (match.index === 0) && (match[0].length === value.length)); + }); + + $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) { + var match; + if (nonalphamin) { + match = value.match(/\W/g); + match = match && match.length >= nonalphamin; + } + return match; + }); + + if ($jQval.methods.extension) { + adapters.addSingleVal("accept", "mimtype"); + adapters.addSingleVal("extension", "extension"); + } else { + // for backward compatibility, when the 'extension' validation method does not exist, such as with versions + // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for + // validating the extension, and ignore mime-type validations as they are not supported. + adapters.addSingleVal("extension", "extension", "accept"); + } + + adapters.addSingleVal("regex", "pattern"); + adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"); + adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range"); + adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength"); + adapters.add("equalto", ["other"], function (options) { + var prefix = getModelPrefix(options.element.name), + other = options.params.other, + fullOtherName = appendModelPrefix(other, prefix), + element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0]; + + setValidationValues(options, "equalTo", element); + }); + adapters.add("required", function (options) { + // jQuery Validate equates "required" with "mandatory" for checkbox elements + if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") { + setValidationValues(options, "required", true); + } + }); + adapters.add("remote", ["url", "type", "additionalfields"], function (options) { + var value = { + url: options.params.url, + type: options.params.type || "GET", + data: {} + }, + prefix = getModelPrefix(options.element.name); + + $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) { + var paramName = appendModelPrefix(fieldName, prefix); + value.data[paramName] = function () { + var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']"); + // For checkboxes and radio buttons, only pick up values from checked fields. + if (field.is(":checkbox")) { + return field.filter(":checked").val() || field.filter(":hidden").val() || ''; + } + else if (field.is(":radio")) { + return field.filter(":checked").val() || ''; + } + return field.val(); + }; + }); + + setValidationValues(options, "remote", value); + }); + adapters.add("password", ["min", "nonalphamin", "regex"], function (options) { + if (options.params.min) { + setValidationValues(options, "minlength", options.params.min); + } + if (options.params.nonalphamin) { + setValidationValues(options, "nonalphamin", options.params.nonalphamin); + } + if (options.params.regex) { + setValidationValues(options, "regex", options.params.regex); + } + }); + + $(function () { + $jQval.unobtrusive.parse(document); + }); +}(jQuery)); \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.unobtrusive.min.js b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.unobtrusive.min.js new file mode 100644 index 0000000..dfeaf38 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/jquery.validate.unobtrusive.min.js @@ -0,0 +1,19 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/* +** Unobtrusive validation support library for jQuery and jQuery Validate +** Copyright (C) Microsoft Corporation. All rights reserved. +*/ +(function(a){var d=a.validator,b,e="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,e){var b=a(this).find("[data-valmsg-for='"+f(e[0].name)+"']"),d=b.attr("data-valmsg-replace"),g=d?a.parseJSON(d)!==false:null;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(g){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("<li />").html(this.message).appendTo(b)})}}function k(d){var b=d.data("unobtrusiveContainer"),c=b.attr("data-valmsg-replace"),e=c?a.parseJSON(c):null;if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");d.removeData("unobtrusiveContainer");e&&b.empty()}}function n(){var b=a(this),c="__jquery_unobtrusive_validation_form_reset";if(b.data(c))return;b.data(c,true);try{b.data("validator").resetForm()}finally{b.removeData(c)}b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(b){var c=a(b),f=c.data(e),i=a.proxy(n,b),g=d.unobtrusive.options||{},h=function(e,d){var c=g[e];c&&a.isFunction(c)&&c.apply(b,d)};if(!f){f={options:{errorClass:g.errorClass||"input-validation-error",errorElement:g.errorElement||"span",errorPlacement:function(){m.apply(b,arguments);h("errorPlacement",arguments)},invalidHandler:function(){l.apply(b,arguments);h("invalidHandler",arguments)},messages:{},rules:{},success:function(){k.apply(b,arguments);h("success",arguments)}},attachValidation:function(){c.off("reset."+e,i).on("reset."+e,i).validate(this.options)},validate:function(){c.validate();return c.valid()}};c.data(e,f)}return f}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(c){var b=a(c),e=b.parents().addBack().filter("form").add(b.find("form")).has("[data-val=true]");b.find("[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});e.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod("nonalphamin",function(c,d,b){var a;if(b){a=c.match(/\W/g);a=a&&a.length>=b}return a});if(d.methods.extension){b.addSingleVal("accept","mimtype");b.addSingleVal("extension","extension")}else b.addSingleVal("extension","extension","accept");b.addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input").filter("[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){var d=a(b.form).find(":input").filter("[name='"+f(c)+"']");return d.is(":checkbox")?d.filter(":checked").val()||d.filter(":hidden").val()||"":d.is(":radio")?d.filter(":checked").val()||"":d.val()}});c(b,"remote",d)});b.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&c(a,"minlength",a.params.min);a.params.nonalphamin&&c(a,"nonalphamin",a.params.nonalphamin);a.params.regex&&c(a,"regex",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery); \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/modernizr-2.6.2.js b/src/examples/JR.DevFw.Web.Example/Scripts/modernizr-2.6.2.js new file mode 100644 index 0000000..cbfe1f3 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/modernizr-2.6.2.js @@ -0,0 +1,1416 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton; http://www.modernizr.com/license/ + * + * Includes matchMedia polyfill; Copyright (c) 2010 Filament Group, Inc; http://opensource.org/licenses/MIT + * + * Includes material adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js; Copyright 2009-2012 by contributors; http://opensource.org/licenses/MIT + * + * Includes material from css-support; Copyright (c) 2005-2012 Diego Perini; https://github.com/dperini/css-support/blob/master/LICENSE + * + * NUGET: END LICENSE TEXT */ + +/*! + * Modernizr v2.6.2 + * www.modernizr.com + * + * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton + * Available under the BSD and MIT licenses: www.modernizr.com/license/ + */ + +/* + * Modernizr tests which native CSS3 and HTML5 features are available in + * the current UA and makes the results available to you in two ways: + * as properties on a global Modernizr object, and as classes on the + * <html> element. This information allows you to progressively enhance + * your pages with a granular level of control over the experience. + * + * Modernizr has an optional (not included) conditional resource loader + * called Modernizr.load(), based on Yepnope.js (yepnopejs.com). + * To get a build that includes Modernizr.load(), as well as choosing + * which tests to include, go to www.modernizr.com/download/ + * + * Authors Faruk Ates, Paul Irish, Alex Sexton + * Contributors Ryan Seddon, Ben Alman + */ + +window.Modernizr = (function( window, document, undefined ) { + + var version = '2.6.2', + + Modernizr = {}, + + /*>>cssclasses*/ + // option for enabling the HTML classes to be added + enableClasses = true, + /*>>cssclasses*/ + + docElement = document.documentElement, + + /** + * Create our "modernizr" element that we do most feature tests on. + */ + mod = 'modernizr', + modElem = document.createElement(mod), + mStyle = modElem.style, + + /** + * Create the input element for various Web Forms feature tests. + */ + inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ , + + /*>>smile*/ + smile = ':)', + /*>>smile*/ + + toString = {}.toString, + + // TODO :: make the prefixes more granular + /*>>prefixes*/ + // List of property values to set for css tests. See ticket #21 + prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), + /*>>prefixes*/ + + /*>>domprefixes*/ + // Following spec is to expose vendor-specific style properties as: + // elem.style.WebkitBorderRadius + // and the following would be incorrect: + // elem.style.webkitBorderRadius + + // Webkit ghosts their properties in lowercase but Opera & Moz do not. + // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+ + // erik.eae.net/archives/2008/03/10/21.48.10/ + + // More here: github.com/Modernizr/Modernizr/issues/issue/21 + omPrefixes = 'Webkit Moz O ms', + + cssomPrefixes = omPrefixes.split(' '), + + domPrefixes = omPrefixes.toLowerCase().split(' '), + /*>>domprefixes*/ + + /*>>ns*/ + ns = {'svg': 'http://www.w3.org/2000/svg'}, + /*>>ns*/ + + tests = {}, + inputs = {}, + attrs = {}, + + classes = [], + + slice = classes.slice, + + featureName, // used in testing loop + + + /*>>teststyles*/ + // Inject element with style element and some CSS rules + injectElementWithStyles = function( rule, callback, nodes, testnames ) { + + var style, ret, node, docOverflow, + div = document.createElement('div'), + // After page load injecting a fake body doesn't work so check if body exists + body = document.body, + // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it. + fakeBody = body || document.createElement('body'); + + if ( parseInt(nodes, 10) ) { + // In order not to give false positives we create a node for each test + // This also allows the method to scale for unspecified uses + while ( nodes-- ) { + node = document.createElement('div'); + node.id = testnames ? testnames[nodes] : mod + (nodes + 1); + div.appendChild(node); + } + } + + // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed + // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element + // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements. + // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx + // Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277 + style = ['­','<style id="s', mod, '">', rule, '</style>'].join(''); + div.id = mod; + // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody. + // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270 + (body ? div : fakeBody).innerHTML += style; + fakeBody.appendChild(div); + if ( !body ) { + //avoid crashing IE8, if background image is used + fakeBody.style.background = ''; + //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible + fakeBody.style.overflow = 'hidden'; + docOverflow = docElement.style.overflow; + docElement.style.overflow = 'hidden'; + docElement.appendChild(fakeBody); + } + + ret = callback(div, rule); + // If this is done after page load we don't want to remove the body so check if body exists + if ( !body ) { + fakeBody.parentNode.removeChild(fakeBody); + docElement.style.overflow = docOverflow; + } else { + div.parentNode.removeChild(div); + } + + return !!ret; + + }, + /*>>teststyles*/ + + /*>>mq*/ + // adapted from matchMedia polyfill + // by Scott Jehl and Paul Irish + // gist.github.com/786768 + testMediaQuery = function( mq ) { + + var matchMedia = window.matchMedia || window.msMatchMedia; + if ( matchMedia ) { + return matchMedia(mq).matches; + } + + var bool; + + injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { + bool = (window.getComputedStyle ? + getComputedStyle(node, null) : + node.currentStyle)['position'] == 'absolute'; + }); + + return bool; + + }, + /*>>mq*/ + + + /*>>hasevent*/ + // + // isEventSupported determines if a given element supports the given event + // kangax.github.com/iseventsupported/ + // + // The following results are known incorrects: + // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative + // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333 + // ... + isEventSupported = (function() { + + var TAGNAMES = { + 'select': 'input', 'change': 'input', + 'submit': 'form', 'reset': 'form', + 'error': 'img', 'load': 'img', 'abort': 'img' + }; + + function isEventSupported( eventName, element ) { + + element = element || document.createElement(TAGNAMES[eventName] || 'div'); + eventName = 'on' + eventName; + + // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those + var isSupported = eventName in element; + + if ( !isSupported ) { + // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element + if ( !element.setAttribute ) { + element = document.createElement('div'); + } + if ( element.setAttribute && element.removeAttribute ) { + element.setAttribute(eventName, ''); + isSupported = is(element[eventName], 'function'); + + // If property was created, "remove it" (by setting value to `undefined`) + if ( !is(element[eventName], 'undefined') ) { + element[eventName] = undefined; + } + element.removeAttribute(eventName); + } + } + + element = null; + return isSupported; + } + return isEventSupported; + })(), + /*>>hasevent*/ + + // TODO :: Add flag for hasownprop ? didn't last time + + // hasOwnProperty shim by kangax needed for Safari 2.0 support + _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; + + if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { + hasOwnProp = function (object, property) { + return _hasOwnProperty.call(object, property); + }; + } + else { + hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */ + return ((property in object) && is(object.constructor.prototype[property], 'undefined')); + }; + } + + // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js + // es5.github.com/#x15.3.4.5 + + if (!Function.prototype.bind) { + Function.prototype.bind = function bind(that) { + + var target = this; + + if (typeof target != "function") { + throw new TypeError(); + } + + var args = slice.call(arguments, 1), + bound = function () { + + if (this instanceof bound) { + + var F = function(){}; + F.prototype = target.prototype; + var self = new F(); + + var result = target.apply( + self, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return self; + + } else { + + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + + } + + }; + + return bound; + }; + } + + /** + * setCss applies given styles to the Modernizr DOM node. + */ + function setCss( str ) { + mStyle.cssText = str; + } + + /** + * setCssAll extrapolates all vendor-specific css strings. + */ + function setCssAll( str1, str2 ) { + return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); + } + + /** + * is returns a boolean for if typeof obj is exactly type. + */ + function is( obj, type ) { + return typeof obj === type; + } + + /** + * contains returns a boolean for if substr is found within str. + */ + function contains( str, substr ) { + return !!~('' + str).indexOf(substr); + } + + /*>>testprop*/ + + // testProps is a generic CSS / DOM property test. + + // In testing support for a given CSS property, it's legit to test: + // `elem.style[styleName] !== undefined` + // If the property is supported it will return an empty string, + // if unsupported it will return undefined. + + // We'll take advantage of this quick test and skip setting a style + // on our modernizr element, but instead just testing undefined vs + // empty string. + + // Because the testing of the CSS property names (with "-", as + // opposed to the camelCase DOM properties) is non-portable and + // non-standard but works in WebKit and IE (but not Gecko or Opera), + // we explicitly reject properties with dashes so that authors + // developing in WebKit or IE first don't end up with + // browser-specific content by accident. + + function testProps( props, prefixed ) { + for ( var i in props ) { + var prop = props[i]; + if ( !contains(prop, "-") && mStyle[prop] !== undefined ) { + return prefixed == 'pfx' ? prop : true; + } + } + return false; + } + /*>>testprop*/ + + // TODO :: add testDOMProps + /** + * testDOMProps is a generic DOM property test; if a browser supports + * a certain property, it won't return undefined for it. + */ + function testDOMProps( props, obj, elem ) { + for ( var i in props ) { + var item = obj[props[i]]; + if ( item !== undefined) { + + // return the property name as a string + if (elem === false) return props[i]; + + // let's bind a function + if (is(item, 'function')){ + // default to autobind unless override + return item.bind(elem || obj); + } + + // return the unbound function or obj or value + return item; + } + } + return false; + } + + /*>>testallprops*/ + /** + * testPropsAll tests a list of DOM properties we want to check against. + * We specify literally ALL possible (known and/or likely) properties on + * the element including the non-vendor prefixed one, for forward- + * compatibility. + */ + function testPropsAll( prop, prefixed, elem ) { + + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), + props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); + + // did they call .prefixed('boxSizing') or are we just testing a prop? + if(is(prefixed, "string") || is(prefixed, "undefined")) { + return testProps(props, prefixed); + + // otherwise, they called .prefixed('requestAnimationFrame', window[, elem]) + } else { + props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); + return testDOMProps(props, prefixed, elem); + } + } + /*>>testallprops*/ + + + /** + * Tests + * ----- + */ + + // The *new* flexbox + // dev.w3.org/csswg/css3-flexbox + + tests['flexbox'] = function() { + return testPropsAll('flexWrap'); + }; + + // The *old* flexbox + // www.w3.org/TR/2009/WD-css3-flexbox-20090723/ + + tests['flexboxlegacy'] = function() { + return testPropsAll('boxDirection'); + }; + + // On the S60 and BB Storm, getContext exists, but always returns undefined + // so we actually have to call getContext() to verify + // github.com/Modernizr/Modernizr/issues/issue/97/ + + tests['canvas'] = function() { + var elem = document.createElement('canvas'); + return !!(elem.getContext && elem.getContext('2d')); + }; + + tests['canvastext'] = function() { + return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function')); + }; + + // webk.it/70117 is tracking a legit WebGL feature detect proposal + + // We do a soft detect which may false positive in order to avoid + // an expensive context creation: bugzil.la/732441 + + tests['webgl'] = function() { + return !!window.WebGLRenderingContext; + }; + + /* + * The Modernizr.touch test only indicates if the browser supports + * touch events, which does not necessarily reflect a touchscreen + * device, as evidenced by tablets running Windows 7 or, alas, + * the Palm Pre / WebOS (touch) phones. + * + * Additionally, Chrome (desktop) used to lie about its support on this, + * but that has since been rectified: crbug.com/36415 + * + * We also test for Firefox 4 Multitouch Support. + * + * For more info, see: modernizr.github.com/Modernizr/touch.html + */ + + tests['touch'] = function() { + var bool; + + if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { + bool = true; + } else { + injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) { + bool = node.offsetTop === 9; + }); + } + + return bool; + }; + + + // geolocation is often considered a trivial feature detect... + // Turns out, it's quite tricky to get right: + // + // Using !!navigator.geolocation does two things we don't want. It: + // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513 + // 2. Disables page caching in WebKit: webk.it/43956 + // + // Meanwhile, in Firefox < 8, an about:config setting could expose + // a false positive that would throw an exception: bugzil.la/688158 + + tests['geolocation'] = function() { + return 'geolocation' in navigator; + }; + + + tests['postmessage'] = function() { + return !!window.postMessage; + }; + + + // Chrome incognito mode used to throw an exception when using openDatabase + // It doesn't anymore. + tests['websqldatabase'] = function() { + return !!window.openDatabase; + }; + + // Vendors had inconsistent prefixing with the experimental Indexed DB: + // - Webkit's implementation is accessible through webkitIndexedDB + // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB + // For speed, we don't test the legacy (and beta-only) indexedDB + tests['indexedDB'] = function() { + return !!testPropsAll("indexedDB", window); + }; + + // documentMode logic from YUI to filter out IE8 Compat Mode + // which false positives. + tests['hashchange'] = function() { + return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); + }; + + // Per 1.6: + // This used to be Modernizr.historymanagement but the longer + // name has been deprecated in favor of a shorter and property-matching one. + // The old API is still available in 1.6, but as of 2.0 will throw a warning, + // and in the first release thereafter disappear entirely. + tests['history'] = function() { + return !!(window.history && history.pushState); + }; + + tests['draganddrop'] = function() { + var div = document.createElement('div'); + return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); + }; + + // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10 + // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17. + // FF10 still uses prefixes, so check for it until then. + // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/ + tests['websockets'] = function() { + return 'WebSocket' in window || 'MozWebSocket' in window; + }; + + + // css-tricks.com/rgba-browser-support/ + tests['rgba'] = function() { + // Set an rgba() color and check the returned value + + setCss('background-color:rgba(150,255,150,.5)'); + + return contains(mStyle.backgroundColor, 'rgba'); + }; + + tests['hsla'] = function() { + // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally, + // except IE9 who retains it as hsla + + setCss('background-color:hsla(120,40%,100%,.5)'); + + return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla'); + }; + + tests['multiplebgs'] = function() { + // Setting multiple images AND a color on the background shorthand property + // and then querying the style.background property value for the number of + // occurrences of "url(" is a reliable method for detecting ACTUAL support for this! + + setCss('background:url(https://),url(https://),red url(https://)'); + + // If the UA supports multiple backgrounds, there should be three occurrences + // of the string "url(" in the return value for elemStyle.background + + return (/(url\s*\(.*?){3}/).test(mStyle.background); + }; + + + + // this will false positive in Opera Mini + // github.com/Modernizr/Modernizr/issues/396 + + tests['backgroundsize'] = function() { + return testPropsAll('backgroundSize'); + }; + + tests['borderimage'] = function() { + return testPropsAll('borderImage'); + }; + + + // Super comprehensive table about all the unique implementations of + // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance + + tests['borderradius'] = function() { + return testPropsAll('borderRadius'); + }; + + // WebOS unfortunately false positives on this test. + tests['boxshadow'] = function() { + return testPropsAll('boxShadow'); + }; + + // FF3.0 will false positive on this test + tests['textshadow'] = function() { + return document.createElement('div').style.textShadow === ''; + }; + + + tests['opacity'] = function() { + // Browsers that actually have CSS Opacity implemented have done so + // according to spec, which means their return values are within the + // range of [0.0,1.0] - including the leading zero. + + setCssAll('opacity:.55'); + + // The non-literal . in this regex is intentional: + // German Chrome returns this value as 0,55 + // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632 + return (/^0.55$/).test(mStyle.opacity); + }; + + + // Note, Android < 4 will pass this test, but can only animate + // a single property at a time + // daneden.me/2011/12/putting-up-with-androids-bullshit/ + tests['cssanimations'] = function() { + return testPropsAll('animationName'); + }; + + + tests['csscolumns'] = function() { + return testPropsAll('columnCount'); + }; + + + tests['cssgradients'] = function() { + /** + * For CSS Gradients syntax, please see: + * webkit.org/blog/175/introducing-css-gradients/ + * developer.mozilla.org/en/CSS/-moz-linear-gradient + * developer.mozilla.org/en/CSS/-moz-radial-gradient + * dev.w3.org/csswg/css3-images/#gradients- + */ + + var str1 = 'background-image:', + str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));', + str3 = 'linear-gradient(left top,#9f9, white);'; + + setCss( + // legacy webkit syntax (FIXME: remove when syntax not in use anymore) + (str1 + '-webkit- '.split(' ').join(str2 + str1) + + // standard syntax // trailing 'background-image:' + prefixes.join(str3 + str1)).slice(0, -str1.length) + ); + + return contains(mStyle.backgroundImage, 'gradient'); + }; + + + tests['cssreflections'] = function() { + return testPropsAll('boxReflect'); + }; + + + tests['csstransforms'] = function() { + return !!testPropsAll('transform'); + }; + + + tests['csstransforms3d'] = function() { + + var ret = !!testPropsAll('perspective'); + + // Webkit's 3D transforms are passed off to the browser's own graphics renderer. + // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in + // some conditions. As a result, Webkit typically recognizes the syntax but + // will sometimes throw a false positive, thus we must do a more thorough check: + if ( ret && 'webkitPerspective' in docElement.style ) { + + // Webkit allows this media query to succeed only if the feature is enabled. + // `@media (transform-3d),(-webkit-transform-3d){ ... }` + injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) { + ret = node.offsetLeft === 9 && node.offsetHeight === 3; + }); + } + return ret; + }; + + + tests['csstransitions'] = function() { + return testPropsAll('transition'); + }; + + + /*>>fontface*/ + // @font-face detection routine by Diego Perini + // javascript.nwbox.com/CSSSupport/ + + // false positives: + // WebOS github.com/Modernizr/Modernizr/issues/342 + // WP7 github.com/Modernizr/Modernizr/issues/538 + tests['fontface'] = function() { + var bool; + + injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) { + var style = document.getElementById('smodernizr'), + sheet = style.sheet || style.styleSheet, + cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; + + bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; + }); + + return bool; + }; + /*>>fontface*/ + + // CSS generated content detection + tests['generatedcontent'] = function() { + var bool; + + injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) { + bool = node.offsetHeight >= 3; + }); + + return bool; + }; + + + + // These tests evaluate support of the video/audio elements, as well as + // testing what types of content they support. + // + // We're using the Boolean constructor here, so that we can extend the value + // e.g. Modernizr.video // true + // Modernizr.video.ogg // 'probably' + // + // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845 + // thx to NielsLeenheer and zcorpan + + // Note: in some older browsers, "no" was a return value instead of empty string. + // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2 + // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5 + + tests['video'] = function() { + var elem = document.createElement('video'), + bool = false; + + // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224 + try { + if ( bool = !!elem.canPlayType ) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,''); + + // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546 + bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); + + bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); + } + + } catch(e) { } + + return bool; + }; + + tests['audio'] = function() { + var elem = document.createElement('audio'), + bool = false; + + try { + if ( bool = !!elem.canPlayType ) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,''); + bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,''); + + // Mimetypes accepted: + // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements + // bit.ly/iphoneoscodecs + bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,''); + bool.m4a = ( elem.canPlayType('audio/x-m4a;') || + elem.canPlayType('audio/aac;')) .replace(/^no$/,''); + } + } catch(e) { } + + return bool; + }; + + + // In FF4, if disabled, window.localStorage should === null. + + // Normally, we could not test that directly and need to do a + // `('localStorage' in window) && ` test first because otherwise Firefox will + // throw bugzil.la/365772 if cookies are disabled + + // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem + // will throw the exception: + // QUOTA_EXCEEDED_ERRROR DOM Exception 22. + // Peculiarly, getItem and removeItem calls do not throw. + + // Because we are forced to try/catch this, we'll go aggressive. + + // Just FWIW: IE8 Compat mode supports these features completely: + // www.quirksmode.org/dom/html5.html + // But IE8 doesn't support either with local files + + tests['localstorage'] = function() { + try { + localStorage.setItem(mod, mod); + localStorage.removeItem(mod); + return true; + } catch(e) { + return false; + } + }; + + tests['sessionstorage'] = function() { + try { + sessionStorage.setItem(mod, mod); + sessionStorage.removeItem(mod); + return true; + } catch(e) { + return false; + } + }; + + + tests['webworkers'] = function() { + return !!window.Worker; + }; + + + tests['applicationcache'] = function() { + return !!window.applicationCache; + }; + + + // Thanks to Erik Dahlstrom + tests['svg'] = function() { + return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect; + }; + + // specifically for SVG inline in HTML, not within XHTML + // test page: paulirish.com/demo/inline-svg + tests['inlinesvg'] = function() { + var div = document.createElement('div'); + div.innerHTML = '<svg/>'; + return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; + }; + + // SVG SMIL animation + tests['smil'] = function() { + return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate'))); + }; + + // This test is only for clip paths in SVG proper, not clip paths on HTML content + // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg + + // However read the comments to dig into applying SVG clippaths to HTML content here: + // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491 + tests['svgclippaths'] = function() { + return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath'))); + }; + + /*>>webforms*/ + // input features and input types go directly onto the ret object, bypassing the tests loop. + // Hold this guy to execute in a moment. + function webforms() { + /*>>input*/ + // Run through HTML5's new input attributes to see if the UA understands any. + // We're using f which is the <input> element created early on + // Mike Taylr has created a comprehensive resource for testing these attributes + // when applied to all input types: + // miketaylr.com/code/input-type-attr.html + // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary + + // Only input placeholder is tested while textarea's placeholder is not. + // Currently Safari 4 and Opera 11 have support only for the input placeholder + // Both tests are available in feature-detects/forms-placeholder.js + Modernizr['input'] = (function( props ) { + for ( var i = 0, len = props.length; i < len; i++ ) { + attrs[ props[i] ] = !!(props[i] in inputElem); + } + if (attrs.list){ + // safari false positive's on datalist: webk.it/74252 + // see also github.com/Modernizr/Modernizr/issues/146 + attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); + } + return attrs; + })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); + /*>>input*/ + + /*>>inputtypes*/ + // Run through HTML5's new input types to see if the UA understands any. + // This is put behind the tests runloop because it doesn't return a + // true/false like all the other tests; instead, it returns an object + // containing each input type with its corresponding true/false value + + // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/ + Modernizr['inputtypes'] = (function(props) { + + for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) { + + inputElem.setAttribute('type', inputElemType = props[i]); + bool = inputElem.type !== 'text'; + + // We first check to see if the type we give it sticks.. + // If the type does, we feed it a textual value, which shouldn't be valid. + // If the value doesn't stick, we know there's input sanitization which infers a custom UI + if ( bool ) { + + inputElem.value = smile; + inputElem.style.cssText = 'position:absolute;visibility:hidden;'; + + if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) { + + docElement.appendChild(inputElem); + defaultView = document.defaultView; + + // Safari 2-4 allows the smiley as a value, despite making a slider + bool = defaultView.getComputedStyle && + defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && + // Mobile android web browser has false positive, so must + // check the height to see if the widget is actually there. + (inputElem.offsetHeight !== 0); + + docElement.removeChild(inputElem); + + } else if ( /^(search|tel)$/.test(inputElemType) ){ + // Spec doesn't define any special parsing or detectable UI + // behaviors so we pass these through as true + + // Interestingly, opera fails the earlier test, so it doesn't + // even make it here. + + } else if ( /^(url|email)$/.test(inputElemType) ) { + // Real url and email support comes with prebaked validation. + bool = inputElem.checkValidity && inputElem.checkValidity() === false; + + } else { + // If the upgraded input compontent rejects the :) text, we got a winner + bool = inputElem.value != smile; + } + } + + inputs[ props[i] ] = !!bool; + } + return inputs; + })('search tel url email datetime date month week time datetime-local number range color'.split(' ')); + /*>>inputtypes*/ + } + /*>>webforms*/ + + + // End of test definitions + // ----------------------- + + + + // Run through all tests and detect their support in the current UA. + // todo: hypothetically we could be doing an array of tests and use a basic loop here. + for ( var feature in tests ) { + if ( hasOwnProp(tests, feature) ) { + // run the test, throw the return value into the Modernizr, + // then based on that boolean, define an appropriate className + // and push it into an array of classes we'll join later. + featureName = feature.toLowerCase(); + Modernizr[featureName] = tests[feature](); + + classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); + } + } + + /*>>webforms*/ + // input tests need to run. + Modernizr.input || webforms(); + /*>>webforms*/ + + + /** + * addTest allows the user to define their own feature tests + * the result will be added onto the Modernizr object, + * as well as an appropriate className set on the html element + * + * @param feature - String naming the feature + * @param test - Function returning true if feature is supported, false if not + */ + Modernizr.addTest = function ( feature, test ) { + if ( typeof feature == 'object' ) { + for ( var key in feature ) { + if ( hasOwnProp( feature, key ) ) { + Modernizr.addTest( key, feature[ key ] ); + } + } + } else { + + feature = feature.toLowerCase(); + + if ( Modernizr[feature] !== undefined ) { + // we're going to quit if you're trying to overwrite an existing test + // if we were to allow it, we'd do this: + // var re = new RegExp("\\b(no-)?" + feature + "\\b"); + // docElement.className = docElement.className.replace( re, '' ); + // but, no rly, stuff 'em. + return Modernizr; + } + + test = typeof test == 'function' ? test() : test; + + if (typeof enableClasses !== "undefined" && enableClasses) { + docElement.className += ' ' + (test ? '' : 'no-') + feature; + } + Modernizr[feature] = test; + + } + + return Modernizr; // allow chaining. + }; + + + // Reset modElem.cssText to nothing to reduce memory footprint. + setCss(''); + modElem = inputElem = null; + + /*>>shiv*/ + /*! HTML5 Shiv v3.6.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */ + ;(function(window, document) { + /*jshint evil:true */ + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = '<xyz></xyz>'; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x<style>' + cssText + '</style>'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i<l;i++){ + clone.createElement(elems[i]); + } + return clone; + } + + /** + * Shivs the `createElement` and `createDocumentFragment` methods of the document. + * @private + * @param {Document|DocumentFragment} ownerDocument The document. + * @param {Object} data of the document. + */ + function shivMethods(ownerDocument, data) { + if (!data.cache) { + data.cache = {}; + data.createElem = ownerDocument.createElement; + data.createFrag = ownerDocument.createDocumentFragment; + data.frag = data.createFrag(); + } + + + ownerDocument.createElement = function(nodeName) { + //abort shiv + if (!html5.shivMethods) { + return data.createElem(nodeName); + } + return createElement(nodeName, ownerDocument, data); + }; + + ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + + 'var n=f.cloneNode(),c=n.createElement;' + + 'h.shivMethods&&(' + + // unroll the `createElement` calls + getElements().join().replace(/\w+/g, function(nodeName) { + data.createElem(nodeName); + data.frag.createElement(nodeName); + return 'c("' + nodeName + '")'; + }) + + ');return n}' + )(html5, data.frag); + } + + /*--------------------------------------------------------------------------*/ + + /** + * Shivs the given document. + * @memberOf html5 + * @param {Document} ownerDocument The document to shiv. + * @returns {Document} The shived document. + */ + function shivDocument(ownerDocument) { + if (!ownerDocument) { + ownerDocument = document; + } + var data = getExpandoData(ownerDocument); + + if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { + data.hasCSS = !!addStyleSheet(ownerDocument, + // corrects block display not defined in IE6/7/8/9 + 'article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}' + + // adds styling not present in IE6/7/8/9 + 'mark{background:#FF0;color:#000}' + ); + } + if (!supportsUnknownElements) { + shivMethods(ownerDocument, data); + } + return ownerDocument; + } + + /*--------------------------------------------------------------------------*/ + + /** + * The `html5` object is exposed so that more elements can be shived and + * existing shiving can be detected on iframes. + * @type Object + * @example + * + * // options can be changed before the script is included + * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false }; + */ + var html5 = { + + /** + * An array or space separated string of node names of the elements to shiv. + * @memberOf html5 + * @type Array|String + */ + 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video', + + /** + * A flag to indicate that the HTML5 style sheet should be inserted. + * @memberOf html5 + * @type Boolean + */ + 'shivCSS': (options.shivCSS !== false), + + /** + * Is equal to true if a browser supports creating unknown/HTML5 elements + * @memberOf html5 + * @type boolean + */ + 'supportsUnknownElements': supportsUnknownElements, + + /** + * A flag to indicate that the document's `createElement` and `createDocumentFragment` + * methods should be overwritten. + * @memberOf html5 + * @type Boolean + */ + 'shivMethods': (options.shivMethods !== false), + + /** + * A string to describe the type of `html5` object ("default" or "default print"). + * @memberOf html5 + * @type String + */ + 'type': 'default', + + // shivs the document according to the specified `html5` object options + 'shivDocument': shivDocument, + + //creates a shived element + createElement: createElement, + + //creates a shived documentFragment + createDocumentFragment: createDocumentFragment + }; + + /*--------------------------------------------------------------------------*/ + + // expose html5 + window.html5 = html5; + + // shiv the document + shivDocument(document); + + }(this, document)); + /*>>shiv*/ + + // Assign private properties to the return object with prefix + Modernizr._version = version; + + // expose these for the plugin API. Look in the source for how to join() them against your input + /*>>prefixes*/ + Modernizr._prefixes = prefixes; + /*>>prefixes*/ + /*>>domprefixes*/ + Modernizr._domPrefixes = domPrefixes; + Modernizr._cssomPrefixes = cssomPrefixes; + /*>>domprefixes*/ + + /*>>mq*/ + // Modernizr.mq tests a given media query, live against the current state of the window + // A few important notes: + // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false + // * A max-width or orientation query will be evaluated against the current state, which may change later. + // * You must specify values. Eg. If you are testing support for the min-width media query use: + // Modernizr.mq('(min-width:0)') + // usage: + // Modernizr.mq('only screen and (max-width:768)') + Modernizr.mq = testMediaQuery; + /*>>mq*/ + + /*>>hasevent*/ + // Modernizr.hasEvent() detects support for a given event, with an optional element to test on + // Modernizr.hasEvent('gesturestart', elem) + Modernizr.hasEvent = isEventSupported; + /*>>hasevent*/ + + /*>>testprop*/ + // Modernizr.testProp() investigates whether a given style property is recognized + // Note that the property names must be provided in the camelCase variant. + // Modernizr.testProp('pointerEvents') + Modernizr.testProp = function(prop){ + return testProps([prop]); + }; + /*>>testprop*/ + + /*>>testallprops*/ + // Modernizr.testAllProps() investigates whether a given style property, + // or any of its vendor-prefixed variants, is recognized + // Note that the property names must be provided in the camelCase variant. + // Modernizr.testAllProps('boxSizing') + Modernizr.testAllProps = testPropsAll; + /*>>testallprops*/ + + + /*>>teststyles*/ + // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards + // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... }) + Modernizr.testStyles = injectElementWithStyles; + /*>>teststyles*/ + + + /*>>prefixed*/ + // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input + // Modernizr.prefixed('boxSizing') // 'MozBoxSizing' + + // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style. + // Return values will also be the camelCase variant, if you need to translate that to hypenated style use: + // + // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); + + // If you're trying to ascertain which transition end event to bind to, you might do something like... + // + // var transEndEventNames = { + // 'WebkitTransition' : 'webkitTransitionEnd', + // 'MozTransition' : 'transitionend', + // 'OTransition' : 'oTransitionEnd', + // 'msTransition' : 'MSTransitionEnd', + // 'transition' : 'transitionend' + // }, + // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ]; + + Modernizr.prefixed = function(prop, obj, elem){ + if(!obj) { + return testPropsAll(prop, 'pfx'); + } else { + // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame' + return testPropsAll(prop, obj, elem); + } + }; + /*>>prefixed*/ + + + /*>>cssclasses*/ + // Remove "no-js" class from <html> element, if it exists: + docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') + + + // Add the new classes to the <html> element. + (enableClasses ? ' js ' + classes.join(' ') : ''); + /*>>cssclasses*/ + + return Modernizr; + +})(this, this.document); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/respond.js b/src/examples/JR.DevFw.Web.Example/Scripts/respond.js new file mode 100644 index 0000000..378d773 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/respond.js @@ -0,0 +1,340 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ +/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ +window.matchMedia = window.matchMedia || (function(doc, undefined){ + + var bool, + docElem = doc.documentElement, + refNode = docElem.firstElementChild || docElem.firstChild, + // fakeBody required for <FF4 when executed in <head> + fakeBody = doc.createElement('body'), + div = doc.createElement('div'); + + div.id = 'mq-test-1'; + div.style.cssText = "position:absolute;top:-100em"; + fakeBody.style.background = "none"; + fakeBody.appendChild(div); + + return function(q){ + + div.innerHTML = '­<style media="'+q+'"> #mq-test-1 { width: 42px; }</style>'; + + docElem.insertBefore(fakeBody, refNode); + bool = div.offsetWidth == 42; + docElem.removeChild(fakeBody); + + return { matches: bool, media: q }; + }; + +})(document); + + + + +/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function( win ){ + //exposed namespace + win.respond = {}; + + //define update even in native-mq-supporting browsers, to avoid errors + respond.update = function(){}; + + //expose media query support flag for external use + respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches; + + //if media queries are supported, exit here + if( respond.mediaQueriesSupported ){ return; } + + //define vars + var doc = win.document, + docElem = doc.documentElement, + mediastyles = [], + rules = [], + appendedEls = [], + parsedSheets = {}, + resizeThrottle = 30, + head = doc.getElementsByTagName( "head" )[0] || docElem, + base = doc.getElementsByTagName( "base" )[0], + links = head.getElementsByTagName( "link" ), + requestQueue = [], + + //loop stylesheets, send text content to translate + ripCSS = function(){ + var sheets = links, + sl = sheets.length, + i = 0, + //vars for loop: + sheet, href, media, isCSS; + + for( ; i < sl; i++ ){ + sheet = sheets[ i ], + href = sheet.href, + media = sheet.media, + isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; + + //only links plz and prevent re-parsing + if( !!href && isCSS && !parsedSheets[ href ] ){ + // selectivizr exposes css through the rawCssText expando + if (sheet.styleSheet && sheet.styleSheet.rawCssText) { + translate( sheet.styleSheet.rawCssText, href, media ); + parsedSheets[ href ] = true; + } else { + if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) + || href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){ + requestQueue.push( { + href: href, + media: media + } ); + } + } + } + } + makeRequests(); + }, + + //recurse through request queue, get css text + makeRequests = function(){ + if( requestQueue.length ){ + var thisRequest = requestQueue.shift(); + + ajax( thisRequest.href, function( styles ){ + translate( styles, thisRequest.href, thisRequest.media ); + parsedSheets[ thisRequest.href ] = true; + makeRequests(); + } ); + } + }, + + //find media blocks in css text, convert to style blocks + translate = function( styles, href, media ){ + var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ), + ql = qs && qs.length || 0, + //try to get CSS path + href = href.substring( 0, href.lastIndexOf( "/" )), + repUrls = function( css ){ + return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" ); + }, + useMedia = !ql && media, + //vars used in loop + i = 0, + j, fullq, thisq, eachq, eql; + + //if path exists, tack on trailing slash + if( href.length ){ href += "/"; } + + //if no internal queries exist, but media attr does, use that + //note: this currently lacks support for situations where a media attr is specified on a link AND + //its associated stylesheet has internal CSS media queries. + //In those cases, the media attribute will currently be ignored. + if( useMedia ){ + ql = 1; + } + + + for( ; i < ql; i++ ){ + j = 0; + + //media attr + if( useMedia ){ + fullq = media; + rules.push( repUrls( styles ) ); + } + //parse for styles + else{ + fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1; + rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); + } + + eachq = fullq.split( "," ); + eql = eachq.length; + + for( ; j < eql; j++ ){ + thisq = eachq[ j ]; + mediastyles.push( { + media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all", + rules : rules.length - 1, + hasquery: thisq.indexOf("(") > -1, + minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), + maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) + } ); + } + } + + applyMedia(); + }, + + lastCall, + + resizeDefer, + + // returns the value of 1em in pixels + getEmValue = function() { + var ret, + div = doc.createElement('div'), + body = doc.body, + fakeUsed = false; + + div.style.cssText = "position:absolute;font-size:1em;width:1em"; + + if( !body ){ + body = fakeUsed = doc.createElement( "body" ); + body.style.background = "none"; + } + + body.appendChild( div ); + + docElem.insertBefore( body, docElem.firstChild ); + + ret = div.offsetWidth; + + if( fakeUsed ){ + docElem.removeChild( body ); + } + else { + body.removeChild( div ); + } + + //also update eminpx before returning + ret = eminpx = parseFloat(ret); + + return ret; + }, + + //cached container for 1em value, populated the first time it's needed + eminpx, + + //enable/disable styles + applyMedia = function( fromResize ){ + var name = "clientWidth", + docElemProp = docElem[ name ], + currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, + styleBlocks = {}, + lastLink = links[ links.length-1 ], + now = (new Date()).getTime(); + + //throttle resize calls + if( fromResize && lastCall && now - lastCall < resizeThrottle ){ + clearTimeout( resizeDefer ); + resizeDefer = setTimeout( applyMedia, resizeThrottle ); + return; + } + else { + lastCall = now; + } + + for( var i in mediastyles ){ + var thisstyle = mediastyles[ i ], + min = thisstyle.minw, + max = thisstyle.maxw, + minnull = min === null, + maxnull = max === null, + em = "em"; + + if( !!min ){ + min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); + } + if( !!max ){ + max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); + } + + // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true + if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ + if( !styleBlocks[ thisstyle.media ] ){ + styleBlocks[ thisstyle.media ] = []; + } + styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); + } + } + + //remove any existing respond style element(s) + for( var i in appendedEls ){ + if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){ + head.removeChild( appendedEls[ i ] ); + } + } + + //inject active styles, grouped by media type + for( var i in styleBlocks ){ + var ss = doc.createElement( "style" ), + css = styleBlocks[ i ].join( "\n" ); + + ss.type = "text/css"; + ss.media = i; + + //originally, ss was appended to a documentFragment and sheets were appended in bulk. + //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! + head.insertBefore( ss, lastLink.nextSibling ); + + if ( ss.styleSheet ){ + ss.styleSheet.cssText = css; + } + else { + ss.appendChild( doc.createTextNode( css ) ); + } + + //push to appendedEls to track for later removal + appendedEls.push( ss ); + } + }, + //tweaked Ajax functions from Quirksmode + ajax = function( url, callback ) { + var req = xmlHttp(); + if (!req){ + return; + } + req.open( "GET", url, true ); + req.onreadystatechange = function () { + if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){ + return; + } + callback( req.responseText ); + } + if ( req.readyState == 4 ){ + return; + } + req.send( null ); + }, + //define ajax obj + xmlHttp = (function() { + var xmlhttpmethod = false; + try { + xmlhttpmethod = new XMLHttpRequest(); + } + catch( e ){ + xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" ); + } + return function(){ + return xmlhttpmethod; + }; + })(); + + //translate CSS + ripCSS(); + + //expose update for re-running respond later on + respond.update = ripCSS; + + //adjust on resize + function callMedia(){ + applyMedia( true ); + } + if( win.addEventListener ){ + win.addEventListener( "resize", callMedia, false ); + } + else if( win.attachEvent ){ + win.attachEvent( "onresize", callMedia ); + } +})(this); diff --git a/src/examples/JR.DevFw.Web.Example/Scripts/respond.min.js b/src/examples/JR.DevFw.Web.Example/Scripts/respond.min.js new file mode 100644 index 0000000..a848137 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Scripts/respond.min.js @@ -0,0 +1,20 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ +/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ +window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­<style media="'+h+'"> #mq-test-1 { width: 42px; }</style>';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document); + +/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B<y;B++){A=D[B],z=A.href,C=A.media,x=A.rel&&A.rel.toLowerCase()==="stylesheet";if(!!z&&x&&!o[z]){if(A.styleSheet&&A.styleSheet.rawCssText){m(A.styleSheet.rawCssText,z,C);o[z]=true}else{if((!/^([a-zA-Z:]*\/\/)/.test(z)&&!g)||z.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:z,media:C})}}}}u()},u=function(){if(d.length){var x=d.shift();n(x.href,function(y){m(y,x.href,x.media);o[x.href]=true;u()})}},m=function(I,x,z){var G=I.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),J=G&&G.length||0,x=x.substring(0,x.lastIndexOf("/")),y=function(K){return K.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+x+"$2$3")},A=!J&&z,D=0,C,E,F,B,H;if(x.length){x+="/"}if(A){J=1}for(;D<J;D++){C=0;if(A){E=z;k.push(y(I))}else{E=G[D].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&y(RegExp.$2))}B=E.split(",");H=B.length;for(;C<H;C++){F=B[C];i.push({media:F.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:k.length-1,hasquery:F.indexOf("(")>-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l<h){clearTimeout(r);r=setTimeout(j,h);return}else{l=z}for(var E in i){var K=i[E],C=K.minw,J=K.maxw,A=C===null,L=J===null,y="em";if(!!C){C=parseFloat(C)*(C.indexOf(y)>-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this); \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Views/Home/Index.cshtml b/src/examples/JR.DevFw.Web.Example/Views/Home/Index.cshtml new file mode 100644 index 0000000..32e1dd9 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Views/Home/Index.cshtml @@ -0,0 +1,31 @@ +@{ + ViewBag.Title = "Home Page"; +} + +<div class="jumbotron"> + <h1>ASP.NET</h1> + <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p> + <p><a href="https://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p> +</div> + +<div class="row"> + <div class="col-md-4"> + <h2>Getting started</h2> + <p> + ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that + enables a clean separation of concerns and gives you full control over markup + for enjoyable, agile development. + </p> + <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more »</a></p> + </div> + <div class="col-md-4"> + <h2>Get more libraries</h2> + <p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p> + <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301866">Learn more »</a></p> + </div> + <div class="col-md-4"> + <h2>Web Hosting</h2> + <p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p> + <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301867">Learn more »</a></p> + </div> +</div> \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/Views/Shared/Error.cshtml b/src/examples/JR.DevFw.Web.Example/Views/Shared/Error.cshtml new file mode 100644 index 0000000..5d88206 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Views/Shared/Error.cshtml @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="viewport" content="width=device-width" /> + <title>错误 + + +
                                                                                                                                            +

                                                                                                                                            错误。

                                                                                                                                            +

                                                                                                                                            处理你的请求时出错。

                                                                                                                                            +
                                                                                                                                            + + diff --git a/src/examples/JR.DevFw.Web.Example/Views/Shared/_Layout.cshtml b/src/examples/JR.DevFw.Web.Example/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000..76930b5 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Views/Shared/_Layout.cshtml @@ -0,0 +1,42 @@ + + + + + + + @ViewBag.Title - 我的 ASP.NET 应用程序 + @Styles.Render("~/Content/css") + @Scripts.Render("~/bundles/modernizr") + + + +
                                                                                                                                            + @RenderBody() +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            © @DateTime.Now.Year - 我的 ASP.NET 应用程序

                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + + @Scripts.Render("~/bundles/jquery") + @Scripts.Render("~/bundles/bootstrap") + @RenderSection("scripts", required: false) + + diff --git a/src/examples/JR.DevFw.Web.Example/Views/Web.config b/src/examples/JR.DevFw.Web.Example/Views/Web.config new file mode 100644 index 0000000..e733661 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Views/Web.config @@ -0,0 +1,43 @@ + + + + + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/examples/JR.DevFw.Web.Example/Views/_ViewStart.cshtml b/src/examples/JR.DevFw.Web.Example/Views/_ViewStart.cshtml new file mode 100644 index 0000000..2de6241 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "~/Views/Shared/_Layout.cshtml"; +} diff --git a/src/examples/JR.DevFw.Web.Example/Web.Debug.config b/src/examples/JR.DevFw.Web.Example/Web.Debug.config new file mode 100644 index 0000000..e984717 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Web.Debug.config @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/src/examples/JR.DevFw.Web.Example/Web.Release.config b/src/examples/JR.DevFw.Web.Example/Web.Release.config new file mode 100644 index 0000000..be98f9a --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Web.Release.config @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/src/examples/JR.DevFw.Web.Example/Web.config b/src/examples/JR.DevFw.Web.Example/Web.config new file mode 100644 index 0000000..b2a8164 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/Web.config @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/examples/JR.DevFw.Web.Example/favicon.ico b/src/examples/JR.DevFw.Web.Example/favicon.ico new file mode 100644 index 0000000..a3a7999 Binary files /dev/null and b/src/examples/JR.DevFw.Web.Example/favicon.ico differ diff --git a/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.eot b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..87eaa43 Binary files /dev/null and b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.eot differ diff --git a/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.svg b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..5fee068 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.ttf b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..be784dc Binary files /dev/null and b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.ttf differ diff --git a/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.woff b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..2cc3e48 Binary files /dev/null and b/src/examples/JR.DevFw.Web.Example/fonts/glyphicons-halflings-regular.woff differ diff --git a/src/examples/JR.DevFw.Web.Example/packages.config b/src/examples/JR.DevFw.Web.Example/packages.config new file mode 100644 index 0000000..9bc5681 --- /dev/null +++ b/src/examples/JR.DevFw.Web.Example/packages.config @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/examples/com.mapfre.weixin/Config.cs b/src/examples/com.mapfre.weixin/Config.cs index e93c3c2..72de697 100644 --- a/src/examples/com.mapfre.weixin/Config.cs +++ b/src/examples/com.mapfre.weixin/Config.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : Config.cs @@ -10,8 +10,8 @@ */ using System; -using AtNet.DevFw.Framework; -using AtNet.DevFw.PluginKernel; +using JR.DevFw.Framework; +using JR.DevFw.PluginKernel; using Senparc.Weixin.MP.TenPayLib; using Senparc.Weixin.MP.TenPayLibV3; @@ -80,103 +80,103 @@ private static void initCfg(PluginPackAttribute attr) bool isChanged = false; if (!attr.Settings.Contains("WeixinPay_PartnerId")) { - attr.Settings.Add("WeixinPay_PartnerId", ""); + attr.Settings.Set("WeixinPay_PartnerId", ""); isChanged = true; } if (!attr.Settings.Contains("WeixinPay_Key")) { - attr.Settings.Add("WeixinPay_Key", ""); + attr.Settings.Set("WeixinPay_Key", ""); isChanged = true; } if (!attr.Settings.Contains("WeixinPay_AppId")) { - attr.Settings.Add("WeixinPay_AppId", ""); + attr.Settings.Set("WeixinPay_AppId", ""); isChanged = true; } if (!attr.Settings.Contains("WeixinPay_AppKey")) { - attr.Settings.Add("WeixinPay_AppKey", ""); + attr.Settings.Set("WeixinPay_AppKey", ""); isChanged = true; } if (!attr.Settings.Contains("WeixinPay_TenpayNotify")) { - attr.Settings.Add("WeixinPay_TenpayNotify", ""); + attr.Settings.Set("WeixinPay_TenpayNotify", ""); isChanged = true; } if (!attr.Settings.Contains("TenPayV3_MchId")) { - attr.Settings.Add("TenPayV3_MchId", ""); + attr.Settings.Set("TenPayV3_MchId", ""); isChanged = true; } if (!attr.Settings.Contains("TenPayV3_Key")) { - attr.Settings.Add("TenPayV3_Key", ""); + attr.Settings.Set("TenPayV3_Key", ""); isChanged = true; } if (!attr.Settings.Contains("TenPayV3_AppId")) { - attr.Settings.Add("TenPayV3_AppId", ""); + attr.Settings.Set("TenPayV3_AppId", ""); isChanged = true; } if (!attr.Settings.Contains("TenPayV3_AppSecret")) { - attr.Settings.Add("TenPayV3_AppSecret", ""); + attr.Settings.Set("TenPayV3_AppSecret", ""); isChanged = true; } if (!attr.Settings.Contains("TenPayV3_TenpayNotify")) { - attr.Settings.Add("TenPayV3_TenpayNotify", ""); + attr.Settings.Set("TenPayV3_TenpayNotify", ""); isChanged = true; } if (!attr.Settings.Contains("Weixin_AppId")) { - attr.Settings.Add("Weixin_AppId", "填写微信AppId"); + attr.Settings.Set("Weixin_AppId", "填写微信AppId"); isChanged = true; } if (!attr.Settings.Contains("Weixin_AppSecret")) { - attr.Settings.Add("Weixin_AppSecret", "填写微信AppSecret"); + attr.Settings.Set("Weixin_AppSecret", "填写微信AppSecret"); isChanged = true; } if (!attr.Settings.Contains("Weixin_AppEncodeString")) { - attr.Settings.Add("Weixin_AppEncodeString", "填写微信App解密字符串"); + attr.Settings.Set("Weixin_AppEncodeString", "填写微信App解密字符串"); isChanged = true; } if (!attr.Settings.Contains("Weixin_Token")) { - attr.Settings.Add("Weixin_Token", "填写微信token"); + attr.Settings.Set("Weixin_Token", "填写微信token"); isChanged = true; } if (!attr.Settings.Contains("Weixin_ApiDomain")) { - attr.Settings.Add("Weixin_ApiDomain", "填写用于对接微信的域名:如http://www.ops.cc/weixin/。"); + attr.Settings.Set("Weixin_ApiDomain", "填写用于对接微信的域名:如http://www.ops.cc/weixin/。"); isChanged = true; } if (!attr.Settings.Contains("Weixin_WelcomeMessage")) { - attr.Settings.Add("Weixin_WelcomeMessage", "欢迎来到微信!"); + attr.Settings.Set("Weixin_WelcomeMessage", "欢迎来到微信!"); isChanged = true; } if (!attr.Settings.Contains("Weixin_EnterMessage")) { - attr.Settings.Add("Weixin_EnterMessage", ""); + attr.Settings.Set("Weixin_EnterMessage", ""); isChanged = true; } if (!attr.Settings.Contains("Weixin_MenuButtons")) { - attr.Settings.Add("Weixin_MenuButtons", "填写微信自定义按钮"); + attr.Settings.Set("Weixin_MenuButtons", "填写微信自定义按钮"); isChanged = true; } diff --git a/src/examples/com.mapfre.weixin/Core/BaseHandle.cs b/src/examples/com.mapfre.weixin/Core/BaseHandle.cs index 0a8b72c..105c774 100644 --- a/src/examples/com.mapfre.weixin/Core/BaseHandle.cs +++ b/src/examples/com.mapfre.weixin/Core/BaseHandle.cs @@ -2,23 +2,23 @@ using System.Data; using System.IO; using System.Web; -using AtNet.DevFw.Data; -using AtNet.DevFw.Framework.Extensions; -using AtNet.DevFw.Template; +using JR.DevFw.Data; +using JR.DevFw.Framework.Extensions; +using JR.DevFw.Template; using Com.Plugin.Core.Utils; -using AtNet.DevFw.Framework.Web.UI; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Web; -using AtNet.DevFw.Web.Plugins; +using JR.DevFw.Framework.Web.UI; +using JR.DevFw.PluginKernel; +using JR.DevFw.Web; +using JR.DevFw.Web.Plugin; namespace Com.Plugin.Core { internal class BaseHandle { - private IExtendApp _app; + private IPluginApp _app; private IPlugin _plugin; - public BaseHandle(IExtendApp app, IPlugin plugin) + public BaseHandle(IPluginApp app, IPlugin plugin) { this._app = app; this._plugin = plugin; diff --git a/src/examples/com.mapfre.weixin/Core/DbGenerator.cs b/src/examples/com.mapfre.weixin/Core/DbGenerator.cs index 388c773..12a79b1 100644 --- a/src/examples/com.mapfre.weixin/Core/DbGenerator.cs +++ b/src/examples/com.mapfre.weixin/Core/DbGenerator.cs @@ -1,5 +1,5 @@  -using AtNet.DevFw.Data; +using JR.DevFw.Data; namespace Com.Plugin.Core { diff --git a/src/examples/com.mapfre.weixin/Core/Helper.cs b/src/examples/com.mapfre.weixin/Core/Helper.cs index b13b70f..e36980b 100644 --- a/src/examples/com.mapfre.weixin/Core/Helper.cs +++ b/src/examples/com.mapfre.weixin/Core/Helper.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : Helper.cs @@ -11,7 +11,7 @@ using System.Data; using System.Web; -using AtNet.DevFw.Framework.Extensions; +using JR.DevFw.Framework.Extensions; using Newtonsoft.Json; namespace Com.Plugin.Core diff --git a/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs b/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs index fb5fe77..a1341aa 100644 --- a/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs +++ b/src/examples/com.mapfre.weixin/Core/ILogic/IDataLogic.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : IDataLogic.cs diff --git a/src/examples/com.mapfre.weixin/Core/IocObject.cs b/src/examples/com.mapfre.weixin/Core/IocObject.cs index c74424f..b7a1e96 100644 --- a/src/examples/com.mapfre.weixin/Core/IocObject.cs +++ b/src/examples/com.mapfre.weixin/Core/IocObject.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : IocObject.cs @@ -9,7 +9,7 @@ * history : */ -using AtNet.DevFw.Data; +using JR.DevFw.Data; using Com.Plugin.Core.ILogic; using Com.Plugin.Core.Logic; using Com.Plugin.ILogic; diff --git a/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs b/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs index 4527b18..df0aa97 100644 --- a/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs +++ b/src/examples/com.mapfre.weixin/Core/Logic/DataLogic.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : DataLogic.cs @@ -16,9 +16,9 @@ using System.Collections.Generic; using System.Data; using System.IO; -using AtNet.DevFw.Data; -using AtNet.DevFw.Framework.Extensions; -using AtNet.DevFw.Toolkit.Data.Export; +using JR.DevFw.Data; +using JR.DevFw.Framework.Extensions; +using JR.DevFw.Toolkit.Data.Export; namespace Com.Plugin.Core.Logic { diff --git a/src/examples/com.mapfre.weixin/Core/SqlFormat.cs b/src/examples/com.mapfre.weixin/Core/SqlFormat.cs index 7fff364..40cc556 100644 --- a/src/examples/com.mapfre.weixin/Core/SqlFormat.cs +++ b/src/examples/com.mapfre.weixin/Core/SqlFormat.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : SqlFormat.cs @@ -10,7 +10,7 @@ */ using System; -using AtNet.DevFw.Data; +using JR.DevFw.Data; namespace Com.Plugin.Core { diff --git a/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs b/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs index 103254e..fbf99ea 100644 --- a/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs +++ b/src/examples/com.mapfre.weixin/Core/Utils/DataExport.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : ExportItem.cs @@ -12,7 +12,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; -using AtNet.DevFw.Toolkit.Data.Export; +using JR.DevFw.Toolkit.Data.Export; namespace Com.Plugin.Core.Utils { diff --git a/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs b/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs index 4dde43b..9bcab41 100644 --- a/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs +++ b/src/examples/com.mapfre.weixin/Core/Utils/ExcelExportProvider.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : LocaledExcelExportProvider.cs @@ -12,7 +12,7 @@ using System.Collections.Generic; using System.Data; using System.IO; -using AtNet.DevFw.Toolkit.Data.Export; +using JR.DevFw.Toolkit.Data.Export; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; diff --git a/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs b/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs index 84b0daf..865a09d 100644 --- a/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs +++ b/src/examples/com.mapfre.weixin/Core/Utils/ExportHandle.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : LocaledExcelExportProvider.cs @@ -14,9 +14,9 @@ using System.Data; using System.Linq; using System.Web; -using AtNet.DevFw.Toolkit.Data.Export; -using AtNet.DevFw.Toolkit.Data.Export.ExportProvider; -using AtNet.DevFw.Toolkit.Data.Export.UI; +using JR.DevFw.Toolkit.Data.Export; +using JR.DevFw.Toolkit.Data.Export.ExportProvider; +using JR.DevFw.Toolkit.Data.Export.UI; using Newtonsoft.Json; namespace Com.Plugin.Core.Utils diff --git a/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs b/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs index 6ed7442..6838c5c 100644 --- a/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs +++ b/src/examples/com.mapfre.weixin/Core/Utils/NPOIHelper.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : NPOIHelper.cs diff --git a/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs b/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs index a141695..c44f193 100644 --- a/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs +++ b/src/examples/com.mapfre.weixin/Core/Utils/VerifyCodeManager.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : VerifyCodeManager.cs diff --git a/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs b/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs index c998f2b..aa8b03f 100644 --- a/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs +++ b/src/examples/com.mapfre.weixin/Logic/WeixinResLogic.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -using AtNet.DevFw.Data; -using AtNet.DevFw.Data.Extensions; +using JR.DevFw.Data; +using JR.DevFw.Data.Extensions; using Com.Plugin.Core; using Com.Plugin.Entity; using Com.Plugin.ILogic; diff --git a/src/examples/com.mapfre.weixin/Main.cs b/src/examples/com.mapfre.weixin/Main.cs index 531c443..03f5dab 100644 --- a/src/examples/com.mapfre.weixin/Main.cs +++ b/src/examples/com.mapfre.weixin/Main.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : Main.cs @@ -9,8 +9,8 @@ * history : */ using System; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Web.Plugins; +using JR.DevFw.PluginKernel; +using JR.DevFw.Web.Plugin; using Senparc.Weixin.MP.CommonAPIs; namespace Com.Plugin @@ -23,15 +23,15 @@ public class Main:IPlugin private PluginPackAttribute _attr; public PluginConnectionResult Connect(IPluginHost app) { - IExtendApp _app = app as IExtendApp; + IPluginApp _app = app as IPluginApp; if(_app!=null) { Config.Init(this); RequestProxry req=new RequestProxry(_app,this); _app.Register(this,req.HandleGet,req.HandlePost); - _app.MapExtendPluginRoute(this); - _app.MapExtendPluginRoute(this,"wxm"); + _app.MapPluginRoute(this); + _app.MapPluginRoute(this,"wxm"); this.init(); } diff --git a/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs b/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs index aa0f43c..8c41bb7 100644 --- a/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs +++ b/src/examples/com.mapfre.weixin/Properties/AssemblyInfo.cs @@ -1,17 +1,17 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using AtNet.DevFw.PluginKernel; +using JR.DevFw.PluginKernel; using Com.PluginKernel; // 有关程序集的常规信息通过以下 // 特性集控制。更改这些特性值可修改 // 与程序集关联的信息。 -[assembly: AssemblyTitle("OPS.CMS!NET-插件")] +[assembly: AssemblyTitle("")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("OPS Inc")] -[assembly: AssemblyProduct("OPS.CMS!NET-插件")] +[assembly: AssemblyCompany("S1N1.COM")] +[assembly: AssemblyProduct("")] [assembly: AssemblyCopyright("Copyright © ops 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -48,7 +48,7 @@ Name = "Hello World!", //插件开发者 - Author = "ops", + Author = "S1N1.COM", //插件访问入口 PortalUrl = "/com.mapfre.weixin.aspx", diff --git a/src/examples/com.mapfre.weixin/RequestProxry.cs b/src/examples/com.mapfre.weixin/RequestProxry.cs index ad54b1c..9589d43 100644 --- a/src/examples/com.mapfre.weixin/RequestProxry.cs +++ b/src/examples/com.mapfre.weixin/RequestProxry.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : RequestProxry.cs @@ -10,8 +10,8 @@ */ using System.Web; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Web.Plugins; +using JR.DevFw.PluginKernel; +using JR.DevFw.Web.Plugin; using Com.Plugin.Core; using Com.Plugin.WebManage; @@ -22,12 +22,12 @@ namespace Com.Plugin /// public class RequestProxry { - private readonly IExtendApp _app; + private readonly IPluginApp _app; private readonly RequestHandle _handler; private readonly ManageHandle _mgHandler; - public RequestProxry(IExtendApp app, IPlugin plugin) + public RequestProxry(IPluginApp app, IPlugin plugin) { this._app = app; this._handler = new RequestHandle(plugin); diff --git a/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs b/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs index 8276385..4263f29 100644 --- a/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs +++ b/src/examples/com.mapfre.weixin/WebManage/ManageHandle.cs @@ -1,9 +1,9 @@ using System; using System.Web; -using AtNet.DevFw.Framework.Extensions; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Template; -using AtNet.DevFw.Web.Plugins; +using JR.DevFw.Framework.Extensions; +using JR.DevFw.PluginKernel; +using JR.DevFw.Template; +using JR.DevFw.Web.Plugin; using Com.Plugin.Core; using Com.Plugin.Entity; using Com.Plugin.Weixin; @@ -16,9 +16,9 @@ internal class ManageHandle { private IPlugin _plugin; private readonly BaseHandle _baseHandle; - private IExtendApp _app; + private IPluginApp _app; - public ManageHandle(IExtendApp app,IPlugin plugin) + public ManageHandle(IPluginApp app,IPlugin plugin) { this._app = app; this._plugin = plugin; diff --git a/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs b/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs index e77aa30..05dcf7d 100644 --- a/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs +++ b/src/examples/com.mapfre.weixin/WebManage/RequestHandle.cs @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007-2015 OPSoft INC,All rights reseved. + * Copyright (C) 2007-2015 S1N1.COM,All rights reseved. * Get more infromation of this software,please visit site http://cms.ops.cc * * name : RequestHandle.cs @@ -17,11 +17,11 @@ using System.Web; using System.Xml; using System.Xml.Linq; -using AtNet.DevFw; -using AtNet.DevFw.Framework.Extensions; -using AtNet.DevFw.Framework.Graphic; -using AtNet.DevFw.Framework.Web.UI; -using AtNet.DevFw.PluginKernel; +using JR.DevFw; +using JR.DevFw.Framework.Extensions; +using JR.DevFw.Framework.Graphic; +using JR.DevFw.Framework.Web.UI; +using JR.DevFw.PluginKernel; using Com.Plugin.Core.Utils; using Com.Plugin.Weixin; using Senparc.Weixin; diff --git a/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs b/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs index b3097ec..bca5fad 100644 --- a/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs +++ b/src/examples/com.mapfre.weixin/Weixin/Content/WeixinRender.cs @@ -1,8 +1,7 @@ using System.Text.RegularExpressions; -using AtNet.DevFw.Web; +using JR.DevFw.Web; using Com.Plugin.Core; using Com.Plugin.Entity; -using Ops.Cms; using Senparc.Weixin.MP.Entities; namespace Com.Plugin.Weixin.Content @@ -149,7 +148,7 @@ public IResponseMessageBase GetResponseByResKey(CustomMessageHandler handler,str ArticleRes ares = res as ArticleRes; var items = ares.Items; - string domain = WebCtx.Domain; + string domain = WebCtx.Current.Domain; foreach (var item in items) { diff --git a/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs b/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs index f23ab99..8b86d68 100644 --- a/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs +++ b/src/examples/com.mapfre.weixin/Weixin/WeixinHelper.cs @@ -3,10 +3,10 @@ using System.Net.Configuration; using System.Text.RegularExpressions; using System.Web; -using AtNet.DevFw.Framework; -using AtNet.DevFw.Framework.Net; -using AtNet.DevFw.PluginKernel; -using AtNet.DevFw.Web; +using JR.DevFw.Framework; +using JR.DevFw.Framework.Net; +using JR.DevFw.PluginKernel; +using JR.DevFw.Web; using Newtonsoft.Json; using Senparc.Weixin.MP; using Senparc.Weixin.MP.CommonAPIs; @@ -175,7 +175,7 @@ private static string GetLocalPath() { if (_hostPath == null) { - _hostPath =WebCtx.Domain; + _hostPath =WebCtx.Current.Domain; } return _hostPath;; } @@ -196,14 +196,14 @@ private static string GetAuthUrlPrefix() { if (_authUrlPrefix == null) { - String overrideIndent = Config.PluginAttr.Settings[DefaultSettingKeys.OverrideUrlIndent]; + String overrideIndent = Config.PluginAttr.Settings[PluginSettingKeys.OverrideUrlIndent]; if (overrideIndent == null || overrideIndent.Trim() == "") { - _authUrlPrefix = WebCtx.Domain + "/" + Config.PluginAttr.WorkIndent + ".sh.aspx/"; + _authUrlPrefix = WebCtx.Current.Domain + "/" + Config.PluginAttr.WorkIndent + ".sh.aspx/"; } else { - _authUrlPrefix = WebCtx.Domain + "/" + overrideIndent + "/"; + _authUrlPrefix = WebCtx.Current.Domain + "/" + overrideIndent + "/"; } } return _authUrlPrefix; diff --git a/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj b/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj index 6697f6a..3d0c1ab 100644 --- a/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj +++ b/src/examples/com.mapfre.weixin/com.mapfre.weixin.csproj @@ -33,18 +33,13 @@ 4 - - False - ..\..\..\dll\Newtonsoft.Json.dll + + ..\..\packages\Newtonsoft.Json.10.0.2\lib\net40\Newtonsoft.Json.dll False ..\..\..\dll\NPOI.dll - - False - ..\..\..\dll\SharpCompress.3.5.dll - ..\..\..\dll\StructureMap.dll @@ -97,6 +92,7 @@ Designer + @@ -114,29 +110,29 @@ - + {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core + JR.DevFw.Core - + {1d053644-937a-4d8e-9740-43823183a39a} - AtNet.DevFw.Data + JR.DevFw.Data - + {cad14dcc-112c-4b28-98eb-1ce143d09033} - AtNet.DevFw.PluginKernel + JR.DevFw.PluginKernel - + {275cae3e-a9e0-4de0-8031-e9137bbdd693} - AtNet.DevFw.Template + JR.DevFw.Template - + {4f756ead-0c41-499c-ae91-660892b444ac} - AtNet.DevFw.Web + JR.DevFw.Web - + {8a5b5504-8d72-4f30-a50e-5856be419dea} - AtNet.DevFw.Toolkit.Data + J6.DevFw.Toolkit.Data diff --git a/src/examples/com.mapfre.weixin/packages.config b/src/examples/com.mapfre.weixin/packages.config new file mode 100644 index 0000000..4415b0d --- /dev/null +++ b/src/examples/com.mapfre.weixin/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/examples/devfw.web/AtNet.DevFw.Web.Example.csproj b/src/examples/devfw.web/AtNet.DevFw.Web.Example.csproj deleted file mode 100644 index 132665e..0000000 --- a/src/examples/devfw.web/AtNet.DevFw.Web.Example.csproj +++ /dev/null @@ -1,309 +0,0 @@ - - - - - Debug - AnyCPU - - - 2.0 - {FF0226AA-66A9-413C-B928-29EA1E821906} - {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - AtNet.DevFw.Web.Example - AtNet.DevFw.Web.Example - v4.0 - false - true - - - - - - - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\ - TRACE - prompt - 4 - - - - ..\..\packages\Newtonsoft.Json.5.0.6\lib\net40\Newtonsoft.Json.dll - - - ..\..\..\dll\StructureMap.dll - - - - - False - ..\..\..\refrence.dll\System.Web.Mvc.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - Designer - - - Web.config - - - Web.config - - - - - - - - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - - - {1d053644-937a-4d8e-9740-43823183a39a} - AtNet.DevFw.Data - - - {cad14dcc-112c-4b28-98eb-1ce143d09033} - AtNet.DevFw.PluginKernel - - - {275cae3e-a9e0-4de0-8031-e9137bbdd693} - AtNet.DevFw.Template - - - {4f756ead-0c41-499c-ae91-660892b444ac} - AtNet.DevFw.Web - - - - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - - - - - - - True - True - 0 - / - http://localhost:4367/ - False - False - - - False - - - - - - \ No newline at end of file diff --git a/src/examples/devfw.web/Code/Application.cs b/src/examples/devfw.web/Code/Application.cs index 45cd985..111ecdd 100644 --- a/src/examples/devfw.web/Code/Application.cs +++ b/src/examples/devfw.web/Code/Application.cs @@ -12,10 +12,10 @@ using System.Web; using System.Web.Mvc; using System.Web.Routing; -using AtNet.DevFw.Framework.IO; -using AtNet.DevFw.PluginKernel; +using JR.DevFw.PluginKernel; +using JR.DevFw.Utils; -namespace AtNet.DevFw.Web.Example.Code +namespace JR.DevFw.Web.Example.Code { /// /// Description of HttpApplicaiton. @@ -44,7 +44,7 @@ public static void ApplicationInit() IoUtil.SetDirHidden("bin"); //加载插件 - WebCtx.Extend.Connect(); + WebCtx.Current.Plugin.Connect(); } protected virtual void RegisterRoutes(RouteCollection routes) diff --git a/src/examples/devfw.web/Code/Controllers/HomeController.cs b/src/examples/devfw.web/Code/Controllers/HomeController.cs index d70f03b..e5b9933 100644 --- a/src/examples/devfw.web/Code/Controllers/HomeController.cs +++ b/src/examples/devfw.web/Code/Controllers/HomeController.cs @@ -4,7 +4,7 @@ using System.Web; using System.Web.Mvc; -namespace AtNet.DevFw.Web.Example.Code.Controllers +namespace JR.DevFw.Web.Example.Code.Controllers { public class HomeController:Controller { diff --git a/src/examples/devfw.web/Global.asax b/src/examples/devfw.web/Global.asax index 4e02992..8c5a6c5 100644 --- a/src/examples/devfw.web/Global.asax +++ b/src/examples/devfw.web/Global.asax @@ -1 +1 @@ -<%@ Application Language="C#" Inherits="AtNet.DevFw.Web.Example.Code.Application" %> \ No newline at end of file +<%@ Application Language="C#" Inherits="JR.DevFw.Web.Example.Code.Application" %> diff --git a/J6/src/examples/devfw.web/J6.DevFw.Web.Example.csproj b/src/examples/devfw.web/J6.DevFw.Web.Example.csproj similarity index 94% rename from J6/src/examples/devfw.web/J6.DevFw.Web.Example.csproj rename to src/examples/devfw.web/J6.DevFw.Web.Example.csproj index a5c2874..8e84e4f 100644 --- a/J6/src/examples/devfw.web/J6.DevFw.Web.Example.csproj +++ b/src/examples/devfw.web/J6.DevFw.Web.Example.csproj @@ -13,7 +13,7 @@ Properties J6.DevFw.Web.Example J6.DevFw.Web.Example - v4.0 + v4.5 false true @@ -21,6 +21,7 @@ + true @@ -30,6 +31,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -38,8 +40,13 @@ TRACE prompt 4 + false + + + ..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + ..\..\packages\Newtonsoft.Json.5.0.6\lib\net40\Newtonsoft.Json.dll @@ -47,12 +54,6 @@ ..\..\..\dll\StructureMap.dll - - - False - ..\..\..\refrence.dll\System.Web.Mvc.dll - - @@ -235,6 +236,7 @@ Designer + Web.config @@ -248,25 +250,25 @@ - + {44e05d6c-5b0a-453a-913f-00124d1bf435} - J6.DevFw.Core + JR.DevFw.Core - + {1d053644-937a-4d8e-9740-43823183a39a} - J6.DevFw.Data + JR.DevFw.Data - + {cad14dcc-112c-4b28-98eb-1ce143d09033} - J6.DevFw.PluginKernel + JR.DevFw.PluginKernel - + {275cae3e-a9e0-4de0-8031-e9137bbdd693} - J6.DevFw.Template + JR.DevFw.Template - + {4f756ead-0c41-499c-ae91-660892b444ac} - J6.DevFw.Web + JR.DevFw.Web diff --git a/J6/src/examples/devfw.web/J6.DevFw.Web.Example.csproj.user b/src/examples/devfw.web/J6.DevFw.Web.Example.csproj.user similarity index 93% rename from J6/src/examples/devfw.web/J6.DevFw.Web.Example.csproj.user rename to src/examples/devfw.web/J6.DevFw.Web.Example.csproj.user index 9a6dfb0..480e2a9 100644 --- a/J6/src/examples/devfw.web/J6.DevFw.Web.Example.csproj.user +++ b/src/examples/devfw.web/J6.DevFw.Web.Example.csproj.user @@ -1,5 +1,8 @@  + + true + diff --git a/src/examples/devfw.web/Properties/AssemblyInfo.cs b/src/examples/devfw.web/Properties/AssemblyInfo.cs index 903ea01..ce80585 100644 --- a/src/examples/devfw.web/Properties/AssemblyInfo.cs +++ b/src/examples/devfw.web/Properties/AssemblyInfo.cs @@ -1,37 +1,36 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using System.Security; -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[Assembly:AllowPartiallyTrustedCallers] -[assembly: AssemblyTitle("Ops.Cms.WebUI")] +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("JR.DevFw.Web")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Ops.Cms.WebUI")] -[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyProduct("JR.DevFw.Web")] +[assembly: AssemblyCopyright("Copyright © 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("1a674a8f-f6ce-4dce-a019-8ac96a963cb8")] +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("25fb3c6a-8e42-414e-8c61-79da4af46a93")] -// Version information for an assembly consists of the following four values: +// 程序集的版本信息由下面四个值组成: // -// Major Version -// Minor Version -// Build Number -// Revision +// 主版本 +// 次版本 +// 生成号 +// 修订号 // -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/examples/devfw.web/Web.config b/src/examples/devfw.web/Web.config index 557ab09..330eb62 100644 --- a/src/examples/devfw.web/Web.config +++ b/src/examples/devfw.web/Web.config @@ -1,25 +1,52 @@ - + + - - - + + + - + - + - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/examples/devfw.web/framework/mui/html/archive/tagsIndex.html b/src/examples/devfw.web/framework/mui/html/archive/tagsIndex.html index 8558998..404c0c3 100644 --- a/src/examples/devfw.web/framework/mui/html/archive/tagsIndex.html +++ b/src/examples/devfw.web/framework/mui/html/archive/tagsIndex.html @@ -9,7 +9,7 @@ - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user b/src/toolkit/AtNet.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user deleted file mode 100644 index fe7dc22..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - ShowAllFiles - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs deleted file mode 100644 index 55822b9..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Globalization; -using System.Linq; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - /// - /// 数据导出入口基础类 - /// - [Serializable] - public abstract class BaseDataExportPortal : IDataExportPortal - { - private readonly DataColumnMapping[] _columnNames; - - protected BaseDataExportPortal(DataColumnMapping[] columnNames) - { - this._columnNames = columnNames; - } - - protected BaseDataExportPortal(string configPath) - { - ExportUtil.ReadExportConfigFormFile(configPath, out this._columnNames); - } - - public abstract string PortalKey { get; set; } - - public DataColumnMapping[] ColumnNames - { - get { return this._columnNames; } - } - - public abstract DataTable GetShemalAndData(Hashtable parameters, out int totalCount); - - public abstract DataRow GetTotalView(Hashtable parameters); - - public virtual IDictionary GetExportFieldAndName(String[] exportFields) - { - if (this._columnNames == null || this._columnNames.Length == 0) return null; - - IDictionary dictionary = new Dictionary(); - - foreach (string columnField in exportFields) - { - DataColumnMapping map = this._columnNames.SingleOrDefault( - a => String.Compare(a.Field, columnField, true, - CultureInfo.InvariantCulture) == 0); - - if (map.Field != null) - { - dictionary.Add(map.Field, map.Name); - } - } - return dictionary; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/DataColumnMapping.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/DataColumnMapping.cs deleted file mode 100644 index 4b87a4a..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/DataColumnMapping.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - /// - /// 列映射 - /// - [Serializable] - public struct DataColumnMapping - { - private string _field; - private string _name; - - public DataColumnMapping(string field, string name) - { - this._field = field; - this._name = name; - } - - public DataColumnMapping(string field) : this(field, field) - { - } - - /// - /// 列的字段 (通常是列在数据源的名称) - /// - public string Field - { - get { return this._field; } - } - - /// - /// 列的名称 - /// - public string Name - { - get { return this._name; } - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/DataExportDirector.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/DataExportDirector.cs deleted file mode 100644 index 9a59271..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/DataExportDirector.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - public static class DataExportDirector - { - public static byte[] Export(IDataExportPortal portal, ExportParams parameters, IDataExportProvider provider) - { - int totalCount; - IDictionary dict = null; - - //获取参数的索引及名称 - if (parameters != null && parameters.ExportFields != null) - { - dict = portal.GetExportFieldAndName(parameters.ExportFields); - } - return - provider.Export( - portal.GetShemalAndData(parameters == null ? null : parameters.Parameters, out totalCount), dict); - } - - public static ExportParams GetExportParams(string paramMappings, string[] columnNames) - { - //string[] splitArr; - - //object[,] data; - //string[] paramsArr = paramMappings.Split(';'); - - //if (paramMappings == "") - //{ - // data = new object[0, 2]; - //} - //else - //{ - // data = new object[paramsArr.Length, 2]; - // //添加传入的参数 - // for (int i = 0; i < paramsArr.Length; i++) - // { - // splitArr = paramsArr[i].Split(':'); - // data[i, 0] = splitArr[0]; - // data[i, 1] = paramsArr[i].Substring(splitArr[0].Length + 1); - // } - //} - Hashtable hash = new Hashtable(); - Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); - MatchCollection mcs = regex.Matches(paramMappings); - foreach (Match m in mcs) - { - hash.Add(m.Groups[1].Value, m.Groups[2].Value); - } - - return new ExportParams(hash, columnNames); - } - - ///// - ///// 根据类名创建导出 - ///// - ///// - ///// - ///// - ///// - //public static byte[] Export(string exportPortalClassFullName, - // IDataExportProvider provider, - // ExportParams parameters) - //{ - - // IDataExportPortal portal = ExportUtil.GetNotNullPortal(exportPortalClassFullName); - - - // portal.Parameters = parameters; - // return Export(portal, provider); - //} - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportItemConfig.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportItemConfig.cs deleted file mode 100644 index d97e7a8..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportItemConfig.cs +++ /dev/null @@ -1,42 +0,0 @@ -namespace AtNet.DevFw.Toolkit.Data.Export -{ - /// - /// 导入导出项目配置 - /// - public struct ExportItemConfig - { - private readonly string _columnMappingString; - private readonly string _query; - private readonly string _total; - private readonly string _import; - - public ExportItemConfig(string columnMappingString, string query, string total, string import) - { - this._columnMappingString = columnMappingString; - this._query = query; - this._total = total; - this._import = import; - } - - - public string ColumnMappingString - { - get { return this._columnMappingString; } - } - - public string Query - { - get { return this._query; } - } - - public string Total - { - get { return this._total; } - } - - public string Import - { - get { return this._import; } - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportParams.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportParams.cs deleted file mode 100644 index cbfe7b2..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportParams.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - /// - /// 数据导出参数 - /// - [Serializable] - public class ExportParams : IEnumerable - { - private Hashtable _parameters; - - public ExportParams(Object[,] data, String[] exportColumnFields) : this(exportColumnFields) - { - if (data == null) return; - - if (data.GetLength(1) != 2) - { - throw new ArgumentException("参数维度应为2"); - } - - for (int i = 0; i < data.GetLength(0); i++) - { - this.Parameters.Add(data[i, 0], data[i, 1]); - } - } - - public ExportParams(Hashtable hash, String[] exportColumnFields) - : this(exportColumnFields) - { - if (hash != null) - { - this._parameters = hash; - } - } - - public ExportParams(String[] exportColumnFields) - { - this.ExportFields = exportColumnFields; - } - - /// - /// 要到导出的列(对应IDataExportPortal的ColumnNames或DataTable的Shelma - /// - public String[] ExportFields { get; private set; } - - /// - /// 参数 - /// - public Hashtable Parameters - { - get { return this._parameters ?? (this._parameters = new Hashtable()); } - } - - public IEnumerator GetEnumerator() - { - return this.Parameters.GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs deleted file mode 100644 index c3df167..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Data; -using System.IO; -using System.Text; - -namespace AtNet.DevFw.Toolkit.Data.Export.ExportProvider -{ - public class CsvExportProvider : IDataExportProvider - { - private const string split = ","; - - public byte[] Export(DataTable dt, IDictionary columns) - { - string strLine = ""; - StreamWriter sw; - MemoryStream ms = new MemoryStream(); - - bool isReColumn = !(columns == null || columns.Count == 0); - int tmpInt = 0; - sw = new StreamWriter(ms, Encoding.UTF8); - - //表头 - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - if (tmpInt++ > 0) - strLine += split; - strLine += columns[columnName]; - } - } - else - { - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - strLine += split; - strLine += dt.Columns[i].ColumnName; - } - } - strLine.Remove(strLine.Length - 1); - - sw.WriteLine(strLine); - - - //表的内容 - strLine = ""; - for (int j = 0; j < dt.Rows.Count; j++) - { - strLine = ""; - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - if (tmpInt++ != 0) - strLine += split; - if (dt.Rows[j][columnName] != null) - { - string cell = dt.Rows[j][columnName].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - else - { - int colCount = dt.Columns.Count; - for (int k = 0; k < colCount; k++) - { - if (k > 0 && k < colCount) - strLine += split; - if (dt.Rows[j][k] == null) - strLine += ""; - else - { - string cell = dt.Rows[j][k].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - sw.WriteLine(strLine); - } - - sw.Close(); - byte[] bytes = ms.ToArray(); - - ms.Dispose(); - - return bytes; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs deleted file mode 100644 index f9709c0..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Data; -using System.IO; -using System.Text; - -namespace AtNet.DevFw.Toolkit.Data.Export.ExportProvider -{ - public class ExcelExportProvider : IDataExportProvider - { - private const string split = "\t"; - - public byte[] Export(DataTable dt, IDictionary columns) - { - string strLine = ""; - StreamWriter sw; - MemoryStream ms = new MemoryStream(); - - bool isReColumn = !(columns == null || columns.Count == 0); - int tmpInt = 0; - sw = new StreamWriter(ms, Encoding.UTF8); - - //表头 - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - if (tmpInt++ > 0) - strLine += split; - strLine += columns[columnName]; - } - } - else - { - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - strLine += split; - strLine += dt.Columns[i].ColumnName; - } - } - strLine.Remove(strLine.Length - 1); - - sw.WriteLine(strLine); - - - //表的内容 - strLine = ""; - for (int j = 0; j < dt.Rows.Count; j++) - { - strLine = ""; - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - if (tmpInt++ != 0) - strLine += split; - if (dt.Rows[j][columnName] != null) - { - string cell = dt.Rows[j][columnName].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - else - { - int colCount = dt.Columns.Count; - for (int k = 0; k < colCount; k++) - { - if (k > 0 && k < colCount) - strLine += split; - if (dt.Rows[j][k] == null) - strLine += ""; - else - { - string cell = dt.Rows[j][k].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - sw.WriteLine(strLine); - } - - sw.Close(); - byte[] bytes = ms.ToArray(); - - ms.Dispose(); - - return bytes; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs deleted file mode 100644 index cca1971..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System.Collections.Generic; -using System.Data; -using System.IO; -using System.Text; - -namespace AtNet.DevFw.Toolkit.Data.Export.ExportProvider -{ - public sealed class TextExportProvider : IDataExportProvider - { - private const string split = " "; - - public byte[] Export(DataTable dt, IDictionary columns) - { - string strLine = ""; - StreamWriter sw; - MemoryStream ms = new MemoryStream(); - - bool isReColumn = !(columns == null || columns.Count == 0); - int tmpInt = 0; - sw = new StreamWriter(ms, Encoding.UTF8); - - //表头 - - if (isReColumn) - { - foreach (string columnName in columns.Keys) - { - if (tmpInt++ > 0) - strLine += split; - strLine += columns[columnName]; - } - } - else - { - for (int i = 0; i < dt.Columns.Count; i++) - { - if (i > 0) - strLine += split; - strLine += dt.Columns[i].ColumnName; - } - } - strLine.Remove(strLine.Length - 1); - - sw.WriteLine(strLine); - - - //表的内容 - strLine = ""; - for (int j = 0; j < dt.Rows.Count; j++) - { - strLine = ""; - - if (isReColumn) - { - tmpInt = 0; - foreach (string columnName in columns.Keys) - { - if (tmpInt++ != 0) - strLine += split; - if (dt.Rows[j][columnName] != null) - { - string cell = dt.Rows[j][columnName].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - else - { - int colCount = dt.Columns.Count; - for (int k = 0; k < colCount; k++) - { - if (k > 0 && k < colCount) - strLine += split; - if (dt.Rows[j][k] == null) - strLine += ""; - else - { - string cell = dt.Rows[j][k].ToString().Trim(); - //防止里面含有特殊符号 - cell = cell.Replace("\"", "\"\""); - cell = "\"" + cell + "\""; - strLine += cell; - } - } - } - sw.WriteLine(strLine); - } - - sw.Close(); - byte[] bytes = ms.ToArray(); - - ms.Dispose(); - - return bytes; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportUtil.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportUtil.cs deleted file mode 100644 index 64299eb..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportUtil.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.Reflection; -using System.Text.RegularExpressions; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - public static class ExportUtil - { - /// - /// 通过类名来获取导出入口 - /// - /// - /// - public static IDataExportPortal GetPortal(string exportPortalClassFullName) - { - IDataExportPortal portal = null; - - Assembly[] asses = AppDomain.CurrentDomain.GetAssemblies(); - foreach (Assembly ass in asses) - { - Type type = ass.GetType(exportPortalClassFullName); - if (type != null) - { - portal = Activator.CreateInstance(type) as IDataExportPortal; - if (portal != null) break; - } - } - - return portal; - } - - /// - /// 通过类名来获取存在的导出入口 - /// - /// - /// - public static IDataExportPortal GetNotNullPortal(string exportPortalClassFullName) - { - IDataExportPortal portal = GetPortal(exportPortalClassFullName); - if (portal == null) - { - throw new ArgumentNullException(String.Format("导出类型不存在或未实现接口:IDataExportPortal!类名:{0}", - exportPortalClassFullName)); - } - return portal; - } - - /// - /// 从文件中读取导出配置 - /// - /// - /// - /// - /// - public static bool ReadExportConfigFormFile( - string filePath, - out DataColumnMapping[] columns) - { - return ReadExportConfigFormXml( - System.IO.File.ReadAllText(filePath), - null, - out columns); - } - - public static bool ReadExportConfigFormXml( - string xml, - string xpath, - out DataColumnMapping[] columns) - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(xml); - if (String.IsNullOrEmpty(xpath)) - { - xpath = "/item"; - } - XmlNode rootNode = xd.SelectSingleNode(xpath); - XmlNode node; - - if (rootNode == null) - { - throw new ArgumentNullException("xpath"); - } - - #region 获取列配置 - - node = rootNode.SelectSingleNode("column"); - if (node == null) - { - columns = null; - } - else - { - string columnMappingString = node.Attributes["mapping"].Value; - columns = GetColumnMappings(columnMappingString); - } - - #endregion - - return true; - } - - /// - /// 获取列映射数组 - /// - /// - /// - public static DataColumnMapping[] GetColumnMappings(string columnMappingString) - { - DataColumnMapping[] columns; - Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); - MatchCollection mcs = regex.Matches(columnMappingString); - columns = new DataColumnMapping[mcs.Count]; - int i = 0; - foreach (Match m in mcs) - { - columns[i++] = new DataColumnMapping(m.Groups[1].Value, m.Groups[2].Value); - } - return columns; - } - - - public static ExportItemConfig GetExportItemFormXml(string xml, string xpath) - { - string mappingString; - string query; - string import; - string total; - XmlDocument xd = new XmlDocument(); - xd.LoadXml(xml); - if (String.IsNullOrEmpty(xpath)) - { - xpath = "/item"; - } - XmlNode rootNode = xd.SelectSingleNode(xpath); - XmlNode node; - - if (rootNode == null) - { - throw new ArgumentNullException("xpath"); - } - - node = rootNode.SelectSingleNode("column"); - mappingString = node == null ? null : node.Attributes["mapping"].Value; - - node = rootNode.SelectSingleNode("query"); - query = node == null ? null : node.InnerText; - - - node = rootNode.SelectSingleNode("import"); - import = node == null ? null : node.InnerText; - - - node = rootNode.SelectSingleNode("total"); - total = node == null ? null : node.InnerText; - - return new ExportItemConfig(mappingString, query, total, import); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/IDataExportPortal.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/IDataExportPortal.cs deleted file mode 100644 index 7817e84..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/IDataExportPortal.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - public interface IDataExportPortal - { - /// - /// 入口键 - /// - string PortalKey { get; set; } - - /// - /// 导出的列名(比如:数据表是因为列,这里我需要列出中文列) - /// - DataColumnMapping[] ColumnNames { get; } - - - /// - /// 获取要导出的数据及表结构 - /// - /// - DataTable GetShemalAndData(Hashtable parameters, out int totalCount); - - /// - /// 获取统计数据 - /// - /// - DataRow GetTotalView(Hashtable parameters); - - /// - /// 根据参数获取导出列名及导出名称 - /// - /// - IDictionary GetExportFieldAndName(String[] exportFields); - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/IDataExportProvider.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/IDataExportProvider.cs deleted file mode 100644 index d6ca14e..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/IDataExportProvider.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; -using System.Data; - -namespace AtNet.DevFw.Toolkit.Data.Export -{ - public interface IDataExportProvider - { - /// - /// 导出 - /// - /// 数据表 - /// 要导出的列名及对应导出的列名,可为空 - /// - byte[] Export(DataTable dt, IDictionary columns); - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs deleted file mode 100644 index 230f0d1..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System.Text; - -namespace AtNet.DevFw.Toolkit.Data.Export.UI -{ - public static class WebExportOptionUIBuilder - { - public static string BuildColumnCheckHtml(IDataExportPortal portal) - { - StringBuilder sb = new StringBuilder(); - - - //================ Output Javascript ==================// - sb.Append(@""); - - - sb.Append(@"
                                                                                                                                            "); - - - //====================== 导出格式 =====================// - - - sb.Append(@"
                                                                                                                                            选择导出格式
                                                                                                                                            -
                                                                                                                                              -
                                                                                                                                            • - -
                                                                                                                                            • -
                                                                                                                                            • - -
                                                                                                                                            • -
                                                                                                                                            • - -
                                                                                                                                            • -

                                                                                                                                            "); - - - //====================== 导出列 =======================// - if (portal.ColumnNames == null || portal.ColumnNames.Length == 0) - { - sb.Append("该导出方案不包含可选择的导出列"); - } - else - { - sb.Append(@"
                                                                                                                                            请选择要导出的列: -
                                                                                                                                              "); - - int tmpInt = 0; - foreach (DataColumnMapping column in portal.ColumnNames) - { - sb.Append( - "
                                                                                                                                            • "); - - tmpInt++; - } - - sb.Append(@"
                                                                                                                                            "); - } - - sb.Append(@" - -
                                                                                                                                            -
                                                                                                                                            "); - sb.Append(@""); - - - return sb.ToString(); - } - - public static string BuildColumnCheckHtml(string exportPortalClassFullName) - { - IDataExportPortal portal = ExportUtil.GetPortal(exportPortalClassFullName); - return BuildColumnCheckHtml(portal); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/config/query_demo.xml b/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/config/query_demo.xml deleted file mode 100644 index 70c719a..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/config/query_demo.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj deleted file mode 100644 index adbdeae..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj +++ /dev/null @@ -1,127 +0,0 @@ - - - - Debug - AnyCPU - 9.0.21022 - 2.0 - {74914743-7506-414A-8F6B-45E5479F0127} - Library - Properties - AtNet.DevFw.Toolkit.NetCrawl - AtNet.DevFw.Toolkit.NetCrawl - v4.0 - 512 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - - true - full - false - ..\..\..\..\dist\dll\ - TRACE - prompt - 4 - AllRules.ruleset - - - pdbonly - true - ..\..\..\Bin\ - TRACE - prompt - 4 - AllRules.ruleset - - - - - - - - - - - - - - - - - - True - True - WebManageResource.resx - - - - - Always - - - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 3.1 - true - - - - - - - - - - - - - - - - - ResXFileCodeGenerator - Designer - WebManageResource.Designer.cs - - - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - - - - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs deleted file mode 100644 index 4d32c79..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs +++ /dev/null @@ -1,324 +0,0 @@ -// -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : Director.cs -// Date : 2011/8/25 -// Author : -// -// - -using System; -using System.IO; -using System.Text; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - public class Collector - { - /// - /// ļ· - /// - private string configFilePath; - - - internal Collector(string configFile) - { - this.configFilePath = configFile; - } - - /// - /// µIJɼִж - /// - /// - /// - public static Collector Create(string configFile) - { - Collector dirc = new Collector(configFile); - dirc.init(); - return dirc; - } - - - /// - /// Ŀ - /// - private static Project[] projects; - - private void init() - { - if (this.configFilePath == "") throw new ArgumentException("ļΪգ"); - if (!File.Exists(configFilePath)) - { - //ļ,򴴽ʼ - File.Create(configFilePath).Dispose(); - const string initData = @" - - - - - \s+([\s\S]+?)\s+]]> - - - - \s*([\s\S]+?)\s*]]> - \s*([\s\S]+?)\s*]]> - - - -"; - - byte[] data = Encoding.UTF8.GetBytes(initData); - FileStream fs = new FileStream(configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); - fs.Write(data, 0, data.Length); - fs.Flush(); - fs.Dispose(); - } - } - - public Project GetProject(string id) - { - foreach (Project pro in this.GetProjects()) - { - if (pro.Id == id) return pro; - } - return null; - } - - /// - /// Ŀ - /// - /// - /// - public bool CreateProject(Project project) - { - XmlNode newPrj, - propertyNode; - - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNodeList xnodelist = xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); - if (xnodelist.Count != 0) return false; - - XmlNode projectsNode = xd.SelectSingleNode("/config/projects"); - XmlAttribute xa; - - newPrj = xd.CreateElement("project"); - - xa = xd.CreateAttribute("id"); - xa.Value = project.Id; - newPrj.Attributes.Append(xa); - - xa = xd.CreateAttribute("name"); - xa.Value = project.Name; - newPrj.Attributes.Append(xa); - - xa = xd.CreateAttribute("encoding"); - xa.Value = project.RequestEncoding; - newPrj.Attributes.Append(xa); - - - //бַ - propertyNode = xd.CreateElement("listUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); - newPrj.AppendChild(propertyNode); - - //б - propertyNode = xd.CreateElement("listBlockRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); - newPrj.AppendChild(propertyNode); - - //ҳ - propertyNode = xd.CreateElement("pageUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); - newPrj.AppendChild(propertyNode); - - //˴ʹ - propertyNode = xd.CreateElement("filterWordsRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); - newPrj.AppendChild(propertyNode); - - //Թ - propertyNode = xd.CreateElement("propertyRules"); - XmlNode pn; - foreach (string pname in project.Rules) - { - pn = xd.CreateElement("add"); - - // - xa = xd.CreateAttribute("name"); - xa.Value = pname; - pn.Attributes.Append(xa); - pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); - - propertyNode.AppendChild(pn); - } - newPrj.AppendChild(propertyNode); - - projectsNode.AppendChild(newPrj); - xd.Save(configFilePath); - return true; - } - - /// - /// Ŀ - /// - /// - /// - /// - public bool SaveProject(string projectId, Project project) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode projectNode, - propertyNode; - - //ȡĿڵ - projectNode = - xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), projectId)); - - //ڵΪգ򷵻false - if (projectNode == null) return false; - - //µıѾ򷵻 - if (projectId != project.Id && - xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), project.Id)) != - null) return false; - - projectNode.Attributes["id"].Value = project.Id; - projectNode.Attributes["name"].Value = project.Name; - projectNode.Attributes["encoding"].Value = project.RequestEncoding; - - //Ƴڵ - projectNode.RemoveChild(projectNode["listUriRule"]); - projectNode.RemoveChild(projectNode["listBlockRule"]); - projectNode.RemoveChild(projectNode["pageUriRule"]); - projectNode.RemoveChild(projectNode["filterWordsRule"]); - projectNode.RemoveChild(projectNode["propertyRules"]); - - /*********** ӽڵ ***************/ - - //бַ - propertyNode = xd.CreateElement("listUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); - projectNode.AppendChild(propertyNode); - - //б - propertyNode = xd.CreateElement("listBlockRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); - projectNode.AppendChild(propertyNode); - - //ҳ - propertyNode = xd.CreateElement("pageUriRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); - projectNode.AppendChild(propertyNode); - - //˴ʹ - propertyNode = xd.CreateElement("filterWordsRule"); - propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); - projectNode.AppendChild(propertyNode); - - //Թ - propertyNode = xd.CreateElement("propertyRules"); - XmlNode pn; - XmlAttribute xa; - foreach (string pname in project.Rules) - { - pn = xd.CreateElement("add"); - - // - xa = xd.CreateAttribute("name"); - xa.Value = pname; - pn.Attributes.Append(xa); - pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); - - propertyNode.AppendChild(pn); - } - projectNode.AppendChild(propertyNode); - - - // - xd.Save(configFilePath); - - return true; - } - - /// - /// ƳĿ - /// - /// - /// - public bool RemoveProject(Project project) - { - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - XmlNode prjsNode = xd.SelectSingleNode("/config/projects"); - XmlNode prjNode = xd.SelectSingleNode(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); - if (prjNode == null) return false; - - prjsNode.RemoveChild(prjNode); - - xd.Save(configFilePath); - return true; - } - - public Project[] GetProjects() - { - if (projects == null) - { - Project pro; - XmlNodeList propertyNodes; - - //ļ - XmlDocument xd = new XmlDocument(); - xd.Load(configFilePath); - - //ȡĿб - XmlNodeList projectList = xd.SelectNodes("/config/projects/project"); - - projects = new Project[projectList.Count]; - - int i = 0; - - foreach (XmlNode node in projectList) - { - //ĿΪĿԹ - pro = new Project(); - pro.Rules = new PropertyRule(); - - pro.Id = node.Attributes["id"].Value; - pro.Name = node.Attributes["name"].Value; - pro.RequestEncoding = node.Attributes["encoding"].Value; - pro.ListUriRule = node["listUriRule"].InnerText; - pro.ListBlockRule = node["listBlockRule"].InnerText; - pro.PageUriRule = node["pageUriRule"].InnerText; - pro.FilterWordsRule = node["filterWordsRule"].InnerText; - - propertyNodes = - xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]/propertyRules/add", pro.Id)); - foreach (XmlNode pnode in propertyNodes) - { - pro.Rules.Add(pnode.Attributes["name"].Value, pnode.InnerText); - } - projects[i] = pro; - ++i; - } - } - return projects; - } - - - /// - /// Ŀ - /// - public void ClearProjects() - { - projects = null; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs deleted file mode 100644 index 289e52e..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs +++ /dev/null @@ -1,76 +0,0 @@ -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : DataPack.cs -// Date : 2011/8/25 -// Author : -// -// - -using System; -using System.Collections; -using System.Collections.Generic; - -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - /// - /// ɼݰ - /// - public class DataPack : ICloneable, IEnumerable> - { - private PropertyRule property; - - /// - /// ݼ - /// - private IDictionary dict = new Dictionary(); - - public DataPack(PropertyRule property, string referenceUrl) - { - this.property = property; - this.ReferenceUrl = referenceUrl; - - foreach (string key in property) - { - dict.Add(key, key); - } - } - - /// - /// ɼԴַ - /// - public string ReferenceUrl { get; private set; } - - //ȡ - public string this[string key] - { - get { return dict.Keys.Contains(key) ? dict[key] : null; } - set - { - if (dict.Keys.Contains(key)) dict[key] = value; - else dict.Add(key, value); - } - } - - /// - /// ¡һµDataPack󣬲 - /// - /// - object ICloneable.Clone() - { - DataPack pack = new DataPack(property, this.ReferenceUrl); - return pack; - } - - public IEnumerator> GetEnumerator() - { - foreach (KeyValuePair pair in dict) yield return pair; - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Project.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Project.cs deleted file mode 100644 index ecff8fa..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Project.cs +++ /dev/null @@ -1,470 +0,0 @@ -// -// -// Copyright 2011 (C) S1N1.COM,All rights reseved. -// ----------------------------- -// Project : OPSoft.Plugin.NetCrawl -// File Name : Project.cs -// Date : 2011/8/25 -// Author : Newmin -// ----------------------------- -// 2011-09-06 [+] newmin:Ӽ·Ĺܣɼба"/news/12.html" -// -// - -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using System.Text.RegularExpressions; -using AtNet.DevFw.Utils; - -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - public delegate void DataPackFunc(DataPack datapack); - - public class Project - { - private State state = new State(); - - public bool SaveResouce; - - public string SaveResourceExtension; - - public string ResouceSavePath; - - /// - /// ·ĸ· - /// - private string basePath; - - /// - /// Եַƥʽ - /// - private static Regex absoluteUriRegex = new Regex("^(?!http)", RegexOptions.IgnoreCase); - - /// - /// Ŀ - /// - public string Id { get; set; } - - /// - /// Ŀ - /// - public string Name { get; set; } - - /// - /// Ĭ30볬ʱ - /// - public int RequestTimeOut = 30000; - - private string _formatedPageUriRule; - - /// - /// - /// - public string RequestEncoding { get; set; } - - /// - /// Ƿʹọ̈߳Ĭ϶߳ - /// - public bool UseMultiThread { get; set; } - - /// - /// - /// - private Encoding Encode - { - get - { - int codepage; - switch (RequestEncoding.ToLower()) - { - default: - codepage = 65001; - break; - case "default": - return Encoding.Default; - case "gb2312": - codepage = 936; - break; - case "big5": - codepage = 950; - break; - } - return Encoding.GetEncoding(codepage); - } - } - - /// - /// бҳURI - /// - public string ListUriRule { get; set; } - - /// - /// б,ڻȡҳURIб - /// - public string ListBlockRule { get; set; } - - /// - /// ҳURI - /// - public string PageUriRule { get; set; } - - /// - /// ʽ - /// - public string FormatedPageUriRule - { - get - { - return this._formatedPageUriRule ?? - (this._formatedPageUriRule = RuleFormat.Format(this.PageUriRule)); - } - } - - /// - /// Ҫ˵Ĵ,ᱻ滻{filter:˵Ĵ} - /// - public string FilterWordsRule { get; set; } - - /// - /// Թ - /// - public PropertyRule Rules { get; set; } - - /// - /// ɼ״̬ - /// - public State State - { - get { return state; } - } - - /// - /// ü״̬ - /// - public void ResetState() - { - state.TotalCount = 0; - state.SuccessCount = 0; - state.FailCount = 0; - } - - - /// - /// ɼбҳݼ - /// - /// - /// - public IList Collect(object listUriParameter) - { - //ReadPage(parameter); - string uri = String.Format(this.ListUriRule, listUriParameter); - IList packs = new List(); - - AnalysisListPage(uri, dp => { packs.Add(dp); }); - - -#if DEBUG - // ȡҳ - // int i=0; - // DataPack pack= GetPageData("http://news.163.com/11/0824/10/7C7DG91H00011229.html", ref i); -#endif - - return packs; - } - - /// - /// ɼбҳԲɼĽִв - /// - /// бURIеIJ"{0}"ֵ - /// - public void InvokeList(object listUriParameter, DataPackFunc func) - { - string uri = String.Format(this.ListUriRule, listUriParameter); - AnalysisListPage(uri, func); - } - - /// - /// ɼбҳԲɼĽִв - /// - /// бҳַ - /// - public void InvokeList(string listUri, DataPackFunc func) - { - AnalysisListPage(listUri, func); - } - - /// - /// ɼƪ - /// - /// - /// - public void InvokeSingle(string pageUri, DataPackFunc func) - { - int i = 0; - this.State.TotalCount = 1; - GetPageData(pageUri, ref i, func); - } - - - /// - /// бҳ,Խִлִ - /// - /// - private void AnalysisListPage(string pageUri, DataPackFunc func) - { - int taskCount = 0, - // - taskNumbers = 0; //һжǷ - - string html; //صбҳHtml - - int bufferLength = 1; - byte[] buffer = new byte[bufferLength]; //صݻ - StringBuilder sb = new StringBuilder(); //췵صĽ - MatchCollection listMatches; //бƥ估ҳַƥ - - -#if DEBUG - Console.WriteLine("ʼ:{0}...", pageUri); -#endif - - - //бҳ - HttpWebRequest request = (HttpWebRequest) WebRequest.Create(pageUri); - request.Timeout = this.RequestTimeOut; - - Stream stream = request.GetResponse().GetResponseStream(); - - - using (StreamReader sr = new StreamReader(stream, this.Encode)) - { - html = sr.ReadToEnd(); - } - -#if DEBUG - Console.WriteLine("صΪ:{0}", html); -#endif - - - //бҳ - listMatches = Regex.Matches(html, RuleFormat.Format(this.ListBlockRule)); - - - //ûҵƥ - if (listMatches.Count == 0) - { -#if DEBUG - Console.WriteLine("ûҵƥ!"); -#endif - return; - } - - - //ƥ - -#if DEBUGS - Console.WriteLine("\r\n------------------------------\r\nõƥбΪ:\r\n"); -#endif - - Regex pageUriRegex = new Regex(this.FormatedPageUriRule); - - //ʵ - IList pageUrls = new List(); - - foreach (Match m in listMatches) - { -#if DEBUG - Console.WriteLine("\r\n------------------------------------------------\r\n{0}", m.Value); -#endif - foreach (Match pm in pageUriRegex.Matches(m.Value)) - { -#if DEBUG - Console.WriteLine(pm.Value); -#endif - pageUrls.Add(pm.Value); - - - //ȡҳݣִ - - //̻߳ȡ - //if (!UseSingleThread) - //{ - // new Thread(() => - // { - // //ûִ - // GetPageData(pm.Value, ref taskNumbers, func); - // } - // ).Start(); - //} - //else //̵߳ - //{ - // //ûִ - // GetPageData(pm.Value, ref taskNumbers, func); - //} - } - } - - // - taskCount = pageUrls.Count; - - if (!this.UseMultiThread) //߳ - { - foreach (string pageUrl in pageUrls) - { - //ûִ - GetPageData(pageUrl, ref taskNumbers, func); - } - } - else - { - MultiThreadProcess mp = new MultiThreadProcess(5, taskCount); - mp.Start>(urls => - { - lock (urls) - { - //ûִ - GetPageData(urls[0], ref taskNumbers, func); - pageUrls.Remove(urls[0]); - } - }, pageUrls); - } - - // - state.TotalCount = taskCount; - - //ֱִ߳̾ϣ򷵻 - do - { - } while (taskNumbers != taskCount); - - -#if DEBUG - Console.WriteLine("....!ɼ{0}", taskCount); -#endif - } - - /// - /// ȡһҳݲ - /// - /// ҳַ - /// άһ,жǷ - /// - private DataPack GetPageData(string pageUri, ref int number, DataPackFunc func) - { - DataPack dp; - int bufferLength = 10; - byte[] buffer = new byte[bufferLength]; //صݻ - StringBuilder sb = new StringBuilder(); //췵صĽ - Match match; //ƥ - - - //ҳַҳַƥ䣡 - - if (!Regex.IsMatch(pageUri, this.FormatedPageUriRule)) - { - ++number; - state.FailCount++; - return null; - - //throw new ArgumentException("ҳַҳַƥ䣡", pageUri); - } - - //ҳַΪ· - if (absoluteUriRegex.IsMatch(pageUri)) pageUri = GetBasePath(pageUri) + pageUri; - - - //ҳHTML - string html = String.Empty; - - try - { - HttpWebRequest req = (HttpWebRequest) WebRequest.Create(pageUri); - req.Timeout = this.RequestTimeOut; - - - Stream stream = req.GetResponse().GetResponseStream(); - - html = sb.ToString(); - using (StreamReader sr = new StreamReader(stream, this.Encode)) - { - html = sr.ReadToEnd(); - } - } - catch (Exception exc) - { - state.FailCount++; - return null; - } - - //ص -#if DEBUG - Console.WriteLine("\r\n------------------------------\r\nõƥбΪ:{0}",html); -#endif - dp = new DataPack(Rules, pageUri); - - - foreach (string propertyName in this.Rules) - { - match = Regex.Match(html, this.Rules[propertyName]); - if (match != null) - { - dp[propertyName] = match.Groups[1].Value; - } - } - -#if DEBUG - Console.WriteLine("\r\n-------------------------\r\n"); - foreach (KeyValuePair pair in dp) - { - Console.WriteLine("{0}->{1}\r\n", pair.Key, pair.Value); - } -#endif - - - //¼ - ++number; - - -#if DEBUG - Console.WriteLine("flish"); -#endif - //ִлִ - if (func != null) func(dp); - - - //һɹļ - state.SuccessCount++; - - return dp; - } - - private string GetBasePath(string pageUri) - { - //Ѿ·ֱӷ - if (basePath != null) return basePath; - - //·"/"ͷ - if (pageUri.StartsWith("/")) - { - Regex reg = new Regex("^(http://[^/]+/)", RegexOptions.IgnoreCase); - if (reg.IsMatch(ListUriRule)) - { - basePath = reg.Match(ListUriRule).Groups[1].Value; - } - } - else - { - Regex reg = new Regex("([^/]+)$", RegexOptions.IgnoreCase); - if (reg.IsMatch(ListUriRule)) - { - string filePath = reg.Match(ListUriRule).Value; - basePath = ListUriRule.Replace(filePath, String.Empty); - } - } - return basePath; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Properties/AssemblyInfo.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Properties/AssemblyInfo.cs deleted file mode 100644 index 0eba649..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// 有关程序集的常规信息通过以下 -// 特性集控制。更改这些特性值可修改 -// 与程序集关联的信息。 - -[assembly: AssemblyTitle("OPSoft采集组件")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("S1N1.COM")] -[assembly: AssemblyProduct("OPS.NetCrawl")] -[assembly: AssemblyCopyright("Copyright © 2012 OPSoft")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// 将 ComVisible 设置为 false 使此程序集中的类型 -// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, -// 则将该类型上的 ComVisible 特性设置为 true。 - -[assembly: ComVisible(false)] - -// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID - -[assembly: Guid("2f6fdd9a-7484-4f3e-83d8-6b20567b2b3e")] - -// 程序集的版本信息由下面四个值组成: -// -// 主版本 -// 次版本 -// 内部版本号 -// 修订号 -// -// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, -// 方法是按如下所示使用“*”: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/PropertyRule.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/PropertyRule.cs deleted file mode 100644 index 71e56f7..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/PropertyRule.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : PropertyRule.cs -// Date : 2011/8/25 -// Author : -// -// - -using System.Collections; -using System.Collections.Generic; - -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - /// - /// Թʽ - /// - public class PropertyRule : IEnumerable - { - private IDictionary dict = new Dictionary(); - - public string ID { get; set; } - - /// - /// Թ - /// - /// - /// - public void Add(string key, string value) - { - dict.Add(key, value); - } - - /// - /// ȡԹ - /// - /// - /// - public string this[string key] - { - get { return dict.Keys.Contains(key) ? dict[key] : null; } - } - - public IEnumerator GetEnumerator() - { - foreach (string key in dict.Keys) yield return key; - } - - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/RuleFormat.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/RuleFormat.cs deleted file mode 100644 index 7ada43c..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/RuleFormat.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - internal class RuleFormat - { - public static string Format(string rule) - { - return rule.Replace("$$", "\\s*([\\s\\S]+?)\\s*"); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/State.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/State.cs deleted file mode 100644 index 8010568..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/State.cs +++ /dev/null @@ -1,35 +0,0 @@ -// -// -// Copyright 2011 @ S1N1.COM.all rights reseved. -// -// Project : Untitled -// File Name : State.cs -// Date : 2011/8/25 -// Author : -// -// - - -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - /// - /// ɼ״̬ - /// - public class State - { - /// - /// - /// - public int TotalCount { get; internal set; } - - /// - /// ʧ - /// - public int FailCount { get; internal set; } - - /// - /// ɹ - /// - public int SuccessCount { get; internal set; } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage.cs deleted file mode 100644 index 3f15bd4..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage.cs +++ /dev/null @@ -1,582 +0,0 @@ -using System; -using System.Reflection; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; - -namespace AtNet.DevFw.Toolkit.NetCrawl -{ - public class WebManage : IHttpHandler, System.Web.SessionState.IRequiresSessionState - { - private static string subtitle = "-采集管理插件 Power by OPSoft"; - private static string ct_css = ""; - private static string navigator = WebManageResource.partial_navigator; - - protected HttpRequest request; - protected HttpResponse response; - private Collector director; - - public WebManage(Collector director) - { - this.director = director; - } - - public bool IsReusable - { - get { return false; } - } - - public void ProcessRequest(HttpContext context) - { - Begin_Request(); - - string action = context.Request["action"]; - string httpMethod = context.Request.HttpMethod; - - //未指定动作,则显示欢迎页面 - if (String.IsNullOrEmpty(action)) - { - Show_WelcomePage(); - return; - } - - request = context.Request; - response = context.Response; - - Type type = this.GetType(); - MethodInfo method = type.GetMethod(String.Format("{0}_{1}", action, httpMethod), - BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase); - if (method == null) - { - context.Response.Write("执行出错"); - return; - } - context.Response.Write(method.Invoke(this, null) as string); - } - - public virtual void Begin_Request() - { - } - - /// - /// 加载样式表 - /// - protected string Css_Get() - { - return WebManageResource.webmanagestyle; - } - - protected string Show_WelcomePage() - { - return WebManageResource.welcome_page.Replace("${ct_css}", ct_css) - .Replace("${navigator}", WebManageResource.partial_navigator); - } - - protected string Help_Get() - { - return "文档整理中,请上我们官网www.ops.cc查询相关信息!"; - } - - /// - /// 项目列表 - /// - protected string List_Get() - { - string prjsListHtml, - //项目列表Html - propertyHtml; - - - StringBuilder sb = new StringBuilder(); - StringBuilder propertyStr = new StringBuilder(); - - - Project[] projects = this.director.GetProjects(); - if (projects == null) - { - sb.Append("
                                                                                                                                          • 暂无采集项目![点击添加]
                                                                                                                                          • "); - } - else - { - foreach (Project prj in projects) - { - //项目属性 - foreach (string key in prj.Rules) - { - propertyStr.Append("[").Append(key).Append("],"); - } - if (propertyStr.Length == 0) - { - propertyHtml = "无"; - } - else - { - propertyHtml = propertyStr.Remove(propertyStr.Length - 1, 1).ToString(); - propertyStr.Remove(0, propertyStr.Length); - } - - //项目基本信息 - sb.Append("

                                                                                                                                            项目名称:") - .Append(prj.Name) - .Append("(编号:") - .Append(prj.Id) - .Append(")

                                                                                                                                            编码方式:").Append(prj.RequestEncoding).Append("
                                                                                                                                            列表规则:") - .Append(prj.ListUriRule).Append("
                                                                                                                                            页面规则:") - .Append(prj.PageUriRule).Append("
                                                                                                                                            采集属性:").Append(propertyHtml) - .Append("

                                                                                                                                            开始采集 ]  [ 修改 ]  [ 删除 ]
                                                                                                                                            "); - } - } - - prjsListHtml = sb.ToString(); - - return WebManageResource.project_list - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${listHtml}", prjsListHtml); - } - - #region 创建项目 - - protected string CreateProject_Get() - { - return WebManageResource.create_project.Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator); - } - - protected string CreateProject_Post() - { - bool result; //新建项目是否成功 - - Project project = new Project(); - project.Rules = new PropertyRule(); - - string id = request.Form["id"], - name = request.Form["name"], - encoding = request.Form["encoding"], - listRule = request.Form["listRule"], - blockRule = request.Form["listBlockRule"], - pageRule = request.Form["pageRule"], - filterRule = request.Form["filterWordsRule"]; - - -#if DEBUG - response.Write(HttpContext.Current.Server.HtmlEncode(String.Format("ID:{0}
                                                                                                                                            Name:{1}\r\nListRule:{2}\r\nListBlockRule:{3}\r\nPageRule:{4}\r\nFilterRule:{5}\r\nencoding:{6}", - id, name, listRule, blockRule, pageRule, filterRule,encoding))); - - response.Write("
                                                                                                                                            "); -#endif - - if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name)) - { - return ""; - } - - - project.Id = id; - project.Name = name; - project.RequestEncoding = encoding; - project.ListUriRule = listRule; - project.ListBlockRule = blockRule; - project.PageUriRule = pageRule; - project.FilterWordsRule = filterRule; - - - //添加属性并赋值 - //客户端属性与规则匹配:p1 <-> r1 - Regex propertyNameRegex = new Regex("^p(\\d+)$"); - string propertyIndex; //属性编号 - - foreach (string key in request.Form) - { - if (propertyNameRegex.IsMatch(key)) - { - propertyIndex = propertyNameRegex.Match(key).Groups[1].Value; - - //如果值不为空,则添加属性 - if (request.Form[key] != String.Empty) - { - project.Rules.Add(request.Form[key], request.Form["r" + propertyIndex]); - } - } - } - - /* - //输出添加到的属性 - foreach (string key in project.Rules) - { - response.Write(HttpContext.Current.Server.HtmlEncode(key + "->" + project.Rules[key]+"
                                                                                                                                            ")); - } - */ - - result = this.director.CreateProject(project); - - //清除项目缓存 - this.director.ClearProjects(); - - return result - ? "" - : ""; - } - - #endregion - - #region 更新项目 - - protected string Edit_Get() - { - string projectId = request.QueryString["projectId"]; - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - return WebManageResource.error.Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${msg}", "项目不存在"); - } - - StringBuilder sb = new StringBuilder(); - int i = 0; - - foreach (string key in prj.Rules) - { - ++i; - sb.Append("

                                                                                                                                            ") - .Append( - "删除 ]

                                                                                                                                            "); - } - - return WebManageResource.update_project - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${id}", projectId) - .Replace("${name}", prj.Name) - .Replace("${encoding}", prj.RequestEncoding) - .Replace("${listUriRule}", prj.ListUriRule) - .Replace("${listBlockRule}", prj.ListBlockRule) - .Replace("${pageUriRule}", prj.PageUriRule) - .Replace("${filterWordsRule}", prj.FilterWordsRule) - .Replace("${propertiesHtml}", sb.ToString()); - } - - protected string Edit_Post() - { - string projectId = request.QueryString["projectId"]; - - - bool result; //编辑项目是否成功 - - Project project = new Project(); - project.Rules = new PropertyRule(); - - string id = request.Form["id"], - name = request.Form["name"], - encoding = request.Form["encoding"], - listRule = request.Form["listRule"], - blockRule = request.Form["listBlockRule"], - pageRule = request.Form["pageRule"], - filterRule = request.Form["filterWordsRule"]; - - -#if DEBUG - response.Write(HttpContext.Current.Server.HtmlEncode(String.Format("ID:{0}
                                                                                                                                            Name:{1}\r\nListRule:{2}\r\nListBlockRule:{3}\r\nPageRule:{4}\r\nFilterRule:{5}\r\nencoding:{6}", - id, name, listRule, blockRule, pageRule, filterRule, encoding))); - - response.Write("
                                                                                                                                            "); -#endif - - if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name)) - { - return ""; - } - - - project.Id = id; - project.Name = name; - project.RequestEncoding = encoding; - project.ListUriRule = listRule; - project.ListBlockRule = blockRule; - project.PageUriRule = pageRule; - project.FilterWordsRule = filterRule; - - - //添加属性并赋值 - //客户端属性与规则匹配:p1 <-> r1 - Regex propertyNameRegex = new Regex("^p(\\d+)$"); - string propertyIndex; //属性编号 - - foreach (string key in request.Form) - { - if (propertyNameRegex.IsMatch(key)) - { - propertyIndex = propertyNameRegex.Match(key).Groups[1].Value; - - //如果值不为空,则添加属性 - if (request.Form[key] != String.Empty) - { - project.Rules.Add(request.Form[key], request.Form["r" + propertyIndex]); - } - } - } - - /* - //输出添加到的属性 - foreach (string key in project.Rules) - { - response.Write(HttpContext.Current.Server.HtmlEncode(key + "->" + project.Rules[key]+"
                                                                                                                                            ")); - } - */ - - result = this.director.SaveProject(projectId, project); - - //清除项目缓存 - this.director.ClearProjects(); - - return result - ? "" - : ""; - } - - #endregion - - #region 删除项目 - - protected string Delete_Get() - { - string projectId = request.QueryString["projectId"]; - string confirm = request["confirm"]; - - string msg; //返回信息 - - - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - msg = "项目不存在!\">"; - } - - - if (String.IsNullOrEmpty(confirm)) - { - msg = String.Format( - "您确定删除项目:{0} 吗?
                                                                                                                                            确定 取消" - , prj.Name, projectId); - } - else - { - msg = "项目删除成功!"; - - this.director.RemoveProject(prj); - - //更新项目缓存 - this.director.ClearProjects(); - } - - - return WebManageResource.delete_project - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${msg}", msg); - } - - #endregion - - /******************************************************** - * - * 采集说明: - * - * 1.开始采集时读取继承类返回的Html代码,供重写Invoke方法读取某些参数! - * - * 2.客户端通过设置HiddenField [typeid]的值,来识别采集单页或是列表 - * [typeid]:1:采集单页,2:传递列表页参数采集,3:输入列表页参数采集 - * - * 3.通过识别采集方式,来调用继承类的采集处理代码。执行完毕,想客户端传送 - * 采集完成指令! - * - */ - - /// - /// 开始执行采集 - /// - protected string Invoke_Get() - { - string projectId = request.QueryString["projectId"]; - - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - return ""; - } - - return WebManageResource.invoke_collect - .Replace("${ct_css}", ct_css) - .Replace("${subtitle}", subtitle) - .Replace("${navigator}", WebManageResource.partial_navigator) - .Replace("${customHtml}", Return_InvokePageHtml()) - .Replace("${pageUriRule}", HttpContext.Current.Server.HtmlEncode(prj.PageUriRule)) - .Replace("${listUriRule}", HttpContext.Current.Server.HtmlEncode(prj.ListUriRule) - .Replace("{0}", "{0}")) - .Replace("${listBlockRule}", HttpContext.Current.Server.HtmlEncode(prj.ListBlockRule)); - } - - protected string Invoke_Post() - { - string typeID = request.Form["ct_typeid"]; - string projectId = request.QueryString["projectId"]; - - //执行采集返回的数据 - string invoke_returnData = String.Empty; - - Project prj = this.director.GetProject(projectId); - if (prj == null) - { - return ""; - } - - switch (typeID) - { - case "1": - invoke_returnData = Invoke_SinglePage(prj, request.Form["singlePageUri"]); - break; - case "2": - invoke_returnData = Invoke_ListPage(prj, (object) request.Form["listPageParameter"]); - break; - case "3": - invoke_returnData = Invoke_ListPage(prj, request.Form["listPageUri"]); - break; - } - - return ""; - } - - /// - /// 返回一段Html代码,并呈现在采集页面上 - /// 如:返回一段分类的标签,并在采集中读取选中的分类,从而实现将采集的内容发布到指定分类中 - /// - public virtual string Return_InvokePageHtml() - { - return "您好,欢迎使用采集系统!
                                                                                                                                            "; - } - - - /// - /// 采集单页,并返回提示数据 - /// - /// - /// - public virtual string Invoke_SinglePage(Project project, string pageUri) - { - project.InvokeSingle(pageUri, dp => - { -#if DEBUG - saveLog("\r\n----------------------------------------\r\n标题:"+dp["title"] + "
                                                                                                                                            \r\n内容:" + dp["content"]+"\r\n"); -#endif - }); - - //重置计数 - project.ResetState(); - - return null; - } - - /// - ///根据列表页的地址采集页面,并返回提示数据 - /// - /// - /// - /// - public virtual string Invoke_ListPage(Project project, string listPageUri) - { - string returnData; - - int i = 0; - object obj = String.Empty; - - project.UseMultiThread = true; - - project.InvokeList(listPageUri, dp => - { - lock (obj) - { - ++i; -#if DEBUG - saveLog(String.Format("采集到第{0}条->{1}", i, dp["title"])); -#endif - } - }); - - returnData = String.Format("任务总数:{0},成功:{1},失败:{2}", project.State.TotalCount, project.State.SuccessCount, - project.State.FailCount); - - //重置计数 - project.ResetState(); - - return returnData; - } - - /// - /// 向列表页规则传递参数,并返回提示数据 - /// - /// - /// - /// - public virtual string Invoke_ListPage(Project project, object parameter) - { - string returnData; - - int i = 0; - object obj = String.Empty; - - project.UseMultiThread = true; - - project.InvokeList(parameter, dp => - { - lock (obj) - { - ++i; -#if DEBUG - saveLog(String.Format("采集到第{0}条->{1}", i, dp["title"])); -#endif - } - }); - - returnData = String.Format("任务总数:{0},成功:{1},失败:{2}", project.State.TotalCount, project.State.SuccessCount, - project.State.FailCount); - - //重置计数 - project.ResetState(); - - return returnData; - } - - protected void saveLog(string str) - { - using ( - System.IO.StreamWriter sr = - new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "collection.log", true)) - { - sr.WriteLine(str); - sr.Flush(); - sr.Dispose(); - } - } - - /// - /// 向客户端发送提示信息 - /// - /// - protected void SendTipMessage(string msg) - { - response.Write(String.Format("", msg)); - response.End(); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/invoke_collect.html b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/invoke_collect.html deleted file mode 100644 index f60faf3..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/invoke_collect.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - 开始采集-${subtitle} - ${ct_css} - - - - - -${navigator} - -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - ${customHtml} -
                                                                                                                                            -
                                                                                                                                            - -
                                                                                                                                            - 根据单页地址采集 -
                                                                                                                                            页面地址规则为:${pageUriRule}
                                                                                                                                            -   输入地址: -
                                                                                                                                            - -
                                                                                                                                            - 根据列表参数采集 -
                                                                                                                                            - 列表地址规则为:${listUriRule}
                                                                                                                                            -
                                                                                                                                            参数为规则{0}部分
                                                                                                                                            -
                                                                                                                                            -   输入参数: -
                                                                                                                                            - -
                                                                                                                                            - 根据列表地址采集 -
                                                                                                                                            - 地址填写提示:直接输入包含采集内容链接的列表地址,可与列表规则完全匹配。
                                                                                                                                            -
                                                                                                                                            - 也可以输入与 - 列表块规则:${listBlockRule}匹配的页面地址。 -
                                                                                                                                            -
                                                                                                                                            - -   输入地址: -
                                                                                                                                            - -
                                                                                                                                            - -
                                                                                                                                            - - - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs b/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs deleted file mode 100644 index 00eb5ef..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs +++ /dev/null @@ -1,381 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34003 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace AtNet.DevFw.Toolkit.NetCrawl { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class WebManageResource { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal WebManageResource() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AtNet.DevFw.Toolkit.NetCrawl.WebManageResource", typeof(WebManageResource).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>创建项目-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<span id="msg"></span> - /// - ///<form action="" target="ct_ifr" method="post" enctype="application/x-www-form-urlencoded" [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string create_project { - get { - return ResourceManager.GetString("create_project", resourceCulture); - } - } - - /// - /// 查找类似 <html> - ///<head> - /// <title>删除项目-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - ///<br/> - ///<div class="delete"> - /// - /// ${msg} - /// - ///</div> - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string delete_project { - get { - return ResourceManager.GetString("delete_project", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>错误提示</title> - /// ${ct_css} - ///</head> - ///<body> - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator}<br/><br/> - ///${msg} - /// - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string error { - get { - return ResourceManager.GetString("error", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>开始采集-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<br/> - ///<form action="" method="post" target="ct_ifr" enctype="application/x-www-form-urlencoded"> - /// <input name="ct_t [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string invoke_collect { - get { - return ResourceManager.GetString("invoke_collect", resourceCulture); - } - } - - /// - /// 查找类似 <div class="navigator"> - /// <a href="?action=createproject">创建新项目</a> | - /// <a href="?action=list">项目管理</a> | - /// <a href="?action=help">使用说明</a> - ///</div> 的本地化字符串。 - /// - internal static string partial_navigator { - get { - return ResourceManager.GetString("partial_navigator", resourceCulture); - } - } - - /// - /// 查找类似 <html> - ///<head> - /// <title>项目列表-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<div id="projectlist"> - /// - /// <!-- - /// <div class="project"> - /// - /// <h2> - /// <strong>项目名称:测试项目(编号:neteasy)</strong> - /// </h2> - /// <div class="details"> - /// [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string project_list { - get { - return ResourceManager.GetString("project_list", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>测试结果</title> - ///</head> - ///<body> - /// - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string test_result { - get { - return ResourceManager.GetString("test_result", resourceCulture); - } - } - - /// - /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> - ///<html> - ///<head> - /// <title>修改项目-${subtitle}</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - /// - ///<span id="msg"></span> - /// - ///<form action="" target="ct_ifr" method="post" enctype="application/x-www-form-urlencoded" [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string update_project { - get { - return ResourceManager.GetString("update_project", resourceCulture); - } - } - - /// - /// 查找类似 body { - /// font-size: 12px; - /// color: #666; - /// font-family: arail, sans-serif; - ///} - /// - ///p { - /// text-indent: 2em; - /// margin: 0; - /// padding: 5px 0; - ///} - /// - ///a { color: #0066cc; } - /// - ///a:hover { color: #006699; } - /// - ///input, textarea, select { border: solid 1px #e5e5e5; } - /// - ///input.button { - /// border: outset 1px #e5e5e5; - /// margin-right: 5px; - /// color: #666; - /// padding: 0 8px; - ///} - /// - ///span.txt { - /// float: left; - /// padding-right: 10px; - ///} - /// - ///div.project_operate { - /// text-align: right; - /// padding-r [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string webmanagestyle { - get { - return ResourceManager.GetString("webmanagestyle", resourceCulture); - } - } - - /// - /// 查找类似 <html> - ///<head> - /// <title>欢迎使用asp.net采集插件</title> - /// ${ct_css} - ///</head> - ///<body> - /// - ///<!-- - /// - ///// - ///// Copyright 2011 @ S1N1.COM,All rights reseved. - ///// Project : 奥博网站管理系统 - ///// Name : 采集组件 - ///// Author : Newmin (newmin.net@gmail.com) - ///// Create : 2011/08/27 15:27 - ///// Product Link: http://www.ops.cc - ///// - /// - ///--> - /// - ///${navigator} - ///<p> - /// 欢迎您使用这款asp.net采集组件,本组件由奥博科技(<a href="http://www.ops.cc" target="_blank">www.ops.cc</a>)开发!<br/> - /// 如您在使用过程中遇到任何问题,或您对这款产品由好的建议,欢迎上我们网站反馈!谢谢! - ///</p> - ///</body> - ///</html> 的本地化字符串。 - /// - internal static string welcome_page { - get { - return ResourceManager.GetString("welcome_page", resourceCulture); - } - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj b/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj deleted file mode 100644 index 48bd278..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj +++ /dev/null @@ -1,73 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {84942A04-73A1-447A-9D39-CC1CF88B5158} - Library - Properties - AtNet.DevFw.Toolkit.Region - AtNet.DevFw.Toolkit.Region - v4.0 - 512 - - - - true - full - false - ..\..\..\..\dist\dll\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\..\Bin\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - True - True - RegionRes.resx - - - - - - ResXFileCodeGenerator - RegionRes.Designer.cs - - - - - - - - - - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Define.cs b/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Define.cs deleted file mode 100644 index c3f92c2..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Define.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Text.RegularExpressions; - -namespace AtNet.DevFw.Toolkit.Region -{ - public static class Define - { - public static string Provinces =OptXml(RegionRes.provinces); - public static string Cities = OptXml(RegionRes.cities); - public static string Districts=OptXml(RegionRes.districts); - - static string OptXml(string xmlContent) - { - xmlContent = Regex.Replace(xmlContent, "(\n|\r)\\s*", ""); - return xmlContent; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Entity.cs b/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Entity.cs deleted file mode 100644 index a353663..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Entity.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace AtNet.DevFw.Toolkit.Region -{ - public struct Province - { - public int ID { get; set; } - public string Name { get; set; } - public string Text { get; set; } - } - public struct City - { - public int ID { get; set; } - public int Pid { get; set; } - public string Zip { get; set; } - public string Name { get; set; } - public string Text { get; set; } - } - - public struct District - { - public int ID { get; set; } - public int Cid { get; set; } - public string Name { get; set; } - public string Text { get; set; } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Region.cs b/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Region.cs deleted file mode 100644 index ea1fa71..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Region.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System.Collections.Generic; -using System.Xml; - -namespace AtNet.DevFw.Toolkit.Region -{ - public static class Region - { - #region 获取基本数据 - - private static IEnumerable provinces; - public static IEnumerable Provinces - { - get - { - if (provinces == null) - { - provinces = GetProvinces(); - } - return provinces; - } - } - - private static IEnumerable cities; - public static IEnumerable Cities - { - get - { - if (cities == null) - { - cities = GetCitys(); - } - return cities; - } - } - - private static IEnumerable districts; - public static IEnumerable Districts - { - get - { - if (districts == null) - { - districts = GetDistricts(); - } - return districts; - } - } - - - private static IEnumerable GetProvinces() - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(Define.Provinces); - - string name; - - foreach (XmlNode xn in xd.SelectNodes("/items/item")) - { - name = xn.Attributes[1].Value; - yield return new Province - { - ID = int.Parse(xn.Attributes[0].Value), - Name = name, - Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() - }; - } - } - - - private static IEnumerable GetCitys() - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(Define.Cities); - - string name; - - foreach (XmlNode xn in xd.SelectNodes("/items/item")) - { - name = xn.Attributes[1].Value; - yield return new City - { - ID = int.Parse(xn.Attributes[0].Value), - Pid = int.Parse(xn.Attributes[2].Value), - Name = name, - Zip = xn.Attributes[3].Value, - Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() - }; - } - } - - private static IEnumerable GetDistricts() - { - XmlDocument xd = new XmlDocument(); - xd.LoadXml(Define.Districts); - - string name; - - foreach (XmlNode xn in xd.SelectNodes("/items/item")) - { - name = xn.Attributes[1].Value; - yield return new District - { - ID = int.Parse(xn.Attributes[0].Value), - Cid = int.Parse(xn.Attributes[2].Value), - Name = name, - Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() - }; - } - } - - #endregion - - - public static IEnumerable GetCities(int provinceID) - { - foreach (City c in Cities) - { - if (c.Pid == provinceID) - yield return c; - } - } - - public static IEnumerable GetDistricts(int cityID) - { - foreach (District d in Districts) - { - if (d.Cid == cityID) - yield return d; - } - } - - public static Province GetProvince(string provinceName) - { - foreach (Province p in Provinces) - { - if (string.Compare(p.Name, provinceName,true)==0) - { - return p; - } - } - return default(Province); - } - - public static City GetCity(string cityName) - { - foreach (City p in Cities) - { - if (string.Compare(p.Name, cityName, true) == 0) - { - return p; - } - } - return default(City); - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs b/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs deleted file mode 100644 index 3a29275..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs +++ /dev/null @@ -1,148 +0,0 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.34003 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -namespace AtNet.DevFw.Toolkit.Region { - using System; - - - /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 - /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class RegionRes { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal RegionRes() { - } - - /// - /// 返回此类使用的缓存的 ResourceManager 实例。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AtNet.DevFw.Toolkit.Region.RegionRes", typeof(RegionRes).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// 使用此强类型资源类,为所有资源查找 - /// 重写当前线程的 CurrentUICulture 属性。 - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// 查找类似 <?xml version="1.0" encoding="utf-8"?> - ///<items> - /// <item id="1" name="北京市" pid="1" zip="100000"></item> - /// <item id="2" name="天津市" pid="2" zip="100000"></item> - /// <item id="3" name="石家庄市" pid="3" zip="050000"></item> - /// <item id="4" name="唐山市" pid="3" zip="063000"></item> - /// <item id="5" name="秦皇岛市" pid="3" zip="066000"></item> - /// <item id="6" name="邯郸市" pid="3" zip="056000"></item> - /// <item id="7" name="邢台市" pid="3" zip="054000"></item> - /// <item id="8" name="保定市" pid="3" zip="071000"></item> - /// <item id="9 [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string cities { - get { - return ResourceManager.GetString("cities", resourceCulture); - } - } - - /// - /// 查找类似 <?xml version="1.0" encoding="utf-8"?> - ///<items> - /// <item id="1" name="东城区" cid="1"></item> - /// <item id="2" name="西城区" cid="1"></item> - /// <item id="3" name="崇文区" cid="1"></item> - /// <item id="4" name="宣武区" cid="1"></item> - /// <item id="5" name="朝阳区" cid="1"></item> - /// <item id="6" name="丰台区" cid="1"></item> - /// <item id="7" name="石景山区" cid="1"></item> - /// <item id="8" name="海淀区" cid="1"></item> - /// <item id="9" name="门头沟区" cid="1"></item> - /// <item id="10" name="房山区" cid="1"></item> - /// <item id="11" name="通州区" cid [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string districts { - get { - return ResourceManager.GetString("districts", resourceCulture); - } - } - - /// - /// 查找类似 USE [DBCT_Dev] - ///GO - ///IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[S_Province]') AND type in (N'U')) - ///BEGIN - ///CREATE TABLE [dbo].[S_Province]( - /// [ProvinceID] [bigint] IDENTITY(1,1) NOT NULL, - /// [ProvinceName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - /// [DateCreated] [datetime] NULL, - /// [DateUpdated] [datetime] NULL, - /// CONSTRAINT [PK_S_Province] PRIMARY KEY CLUSTERED - ///( - /// [ProvinceID] ASC - ///)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OF [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string pcd_AllData_V1 { - get { - return ResourceManager.GetString("pcd_AllData_V1", resourceCulture); - } - } - - /// - /// 查找类似 <?xml version="1.0" encoding="utf-8"?> - ///<items> - /// <item id="1" name="北京市"></item> - /// <item id="2" name="天津市"></item> - /// <item id="3" name="河北省"></item> - /// <item id="4" name="山西省"></item> - /// <item id="5" name="内蒙古自治区"></item> - /// <item id="6" name="辽宁省"></item> - /// <item id="7" name="吉林省"></item> - /// <item id="8" name="黑龙江省"></item> - /// <item id="9" name="上海市"></item> - /// <item id="10" name="江苏省"></item> - /// <item id="11" name="浙江省"></item> - /// <item id="12" name="安徽省"></item> - /// <item id="13" name="福建省"></item> - /// [字符串的其余部分被截断]"; 的本地化字符串。 - /// - internal static string provinces { - get { - return ResourceManager.GetString("provinces", resourceCulture); - } - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/AtNet.DevFw.Toolkit.Tags.csproj b/src/toolkit/AtNet.DevFw.Toolkit.Tags/AtNet.DevFw.Toolkit.Tags.csproj deleted file mode 100644 index 9d60431..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/AtNet.DevFw.Toolkit.Tags.csproj +++ /dev/null @@ -1,72 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {1E9FCAD5-DF56-469B-BCEB-806BF9085A47} - Library - Properties - AtNet.DevFw.Toolkit.Tags - AtNet.DevFw.Toolkit.Tags - v4.0 - 512 - - - - true - full - false - ..\..\..\dist\dll\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\Bin\ - TRACE - prompt - 4 - - - - - - - - - - - - - True - True - Resource.resx - - - - - - - - - - - - - ResXFileCodeGenerator - Resource.Designer.cs - - - - - \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Tags/HttpTags.cs b/src/toolkit/AtNet.DevFw.Toolkit.Tags/HttpTags.cs deleted file mode 100644 index e8b0d55..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.Tags/HttpTags.cs +++ /dev/null @@ -1,346 +0,0 @@ -using System; -using System.Data; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; - -namespace AtNet.DevFw.Toolkit.Tags -{ - public class HttpTags - { - private HttpRequest request; - private HttpResponse response; - - /// - /// 默认的配置路径 - /// - private static string defaultConfigPath = AppDomain.CurrentDomain.BaseDirectory + "config/tags.conf"; - - //配置路径,如果URI参数config未指定则为默认路径 - private string configPath; - - public TagsManager Tags; - - public HttpTags():this(null) - { - } - public HttpTags(string configPath) - { - this.configPath = configPath; - - //获取配置文件的路径 - if (String.IsNullOrEmpty(configPath)) - { - this.configPath = AppDomain.CurrentDomain.BaseDirectory + request.QueryString["config"]; - } - - //创建标签管理器对象 - Tags = new TagsManager(configPath); - } - - /// - /// 处理请求 - /// - /// - /// - public void ProcessRequest(HttpContext context,string pageContent) - { - request = context.Request; - response = context.Response; - - - - //获取请求方式,确定执行的方法 - string method = request.HttpMethod; - if (method == "GET") - { - string action = request.QueryString["tag.action"]; - if (String.IsNullOrEmpty(action)) - { - Dispaly_TagsList(String.IsNullOrEmpty(pageContent)?Resource.tagsmanager:pageContent); - } - else if (action == "test") - { - Invoke_TestReplace(); - } - } - else - { - string action = request.Form["tag.action"]; - - switch (action) - { - case "save": SaveTags(); break; - case "delete": DeleteTags(); break; - case "create": CreateTags(); break; - } - } - - } - - public void ProcessRequest(HttpContext context) - { - this.ProcessRequest(context, null); - } - - - private void CreateTags() - { - string msg=String.Empty; - - string name = request.Form["name"], - linkUri = request.Form["linkuri"], - description = request.Form["description"]; - - StringBuilder sb = new StringBuilder(); - //if (string.IsNullOrEmpty(id)) - //{ - // sb.Append("编号不能为空!"); - //} - //if(!Regex.IsMatch(id,"^[a-zA-Z0-9]+$")) - //{ - // sb.Append("编号必须为字母和数字"); - //} - - if (String.IsNullOrEmpty(name)) - { - sb.Append("名称不能为空!"); - } - if (sb.Length != 0) - { - msg = sb.ToString(); - goto tip; - } - - bool result =Tags.Add(new Tag - { - Name = name, - LinkUri = linkUri, - Description = description - }); - - msg = result ? "添加成功" : "已经存在相同的标签"; - tip: - response.Write(String.Format("", msg)); - - } - - /// - /// 删除Tags - /// - private void DeleteTags() - { - string msg; - - /* - if (tagsManager.Tags.Count == 1) - { - msg = "请保留至少一个标签"; goto tip; - }*/ - - Regex reg = new Regex("^(?!action|name|link|des|id|linkuri|description)[a-zA-Z0-9]+$"); - - int i = 0; - foreach (string key in request.Form) - { - if (reg.IsMatch(key)) - { - Tags.Delete(key); - i++; - } - } - msg = i == 0 ? "没选择要删除的项目!" : "删除成功"; - - tip: - response.Write(String.Format("",msg)); - } - - /// - /// 保存Tags - /// - private void SaveTags() - { - string msg; - - Regex reg = new Regex("^name_([a-zA-Z0-9]+)$"); - - int i = 0; - string id; - foreach (string key in request.Form) - { - if (reg.IsMatch(key)) - { - id = reg.Match(key).Groups[1].Value; - - Tags.Update(new Tag - { - Indent=int.Parse(id), - Name = request["name_" + id], - LinkUri = request["link_" + id], - Description = request["des_" + id] - }); - - i++; - } - } - msg = i == 0 ? "没有保存的项!" : "保存成功"; - - response.Write(String.Format("", msg)); - } - - - /// - /// 显示标签列表 - /// - private void Dispaly_TagsList(string pageContent) - { - string tagsHtml; - - int pageIndex; - - int.TryParse(request.QueryString["page"], out pageIndex); - if (pageIndex < 1) pageIndex = 1; - - StringBuilder sb = new StringBuilder(); - - Regex reg=new Regex("\\$\\{([a-zA-Z]+)\\}"); - - DataSet ds = new DataSet(); - ds.ReadXml(configPath); - - /* - //获取分页链接 - for (int i = 0; i < ps.PageCount; i++) - { - sb.Append("") - .Append((i + 1).ToString()).Append(""); - } - - pagerHtml = sb.ToString(); - sb.Remove(0, sb.Length); - */ - - if (Tags.Tags.Count > 0) - { - foreach (Tag tag in Tags.Tags) - { - sb.Append("
                                                                                                                                            ").Append(tag.Name).Append("") - .Append(tag.LinkUri).Append("") - .Append(tag.Description).Append("修改
                                                                                                                                            暂无tags!
                                                                                                                                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                                                                                                            商户号:
                                                                                                                                            支付版本号:
                                                                                                                                            订单号:
                                                                                                                                            订单金额:
                                                                                                                                            货币代码:
                                                                                                                                            订单日期:
                                                                                                                                            交易类型:
                                                                                                                                            后台返回地址:
                                                                                                                                            页面返回地址:
                                                                                                                                            网关号:
                                                                                                                                            备注:
                                                                                                                                            签名:
                                                                                                                                            - - "; - - - decimal product_fee = (decimal)hash["order_fee"]; //商品费用 - decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string MerId = ChinaPaySignData.MerchantID;//商户号 - string OrdId = hash["order_no"] as string;//订单号 - string TransAmt = String.Format("{0:D12}",(int)((product_fee + transport_fee)*100));//订单金额 - string CuryId = "156";//货币代码 (人民币) - string TransDate = DateTime.Now.ToString("yyyyMMdd");//订单日期 - string TransType = "0001"; //交易类型 - string Priv1 = hash["order_desc"] as string;//备注 - - - //准备签名的数据 - string plain = MerId + OrdId + TransAmt + CuryId + TransDate + TransType + Priv1; - - string ChkValue = null; - //Response.Write("MerId:" + MerId); - ChkValue = ChinaPaySignData.sign(MerId, plain); - //Response.Write("ChkValue:" + ChkValue); - - //签名长度256位 - if (ChkValue == null || ChkValue.Length != 256) - { - return "签名不正确,无法支付!"; - } - - return gatewayHTML.Template( - MerId, - "20070129", - OrdId, - TransAmt, - CuryId, - TransDate, - TransType, - PayUtil.GetNotifyUrl(PayMethods.ChinaPay, PayApiType.Normal), - PayUtil.GetReturnUrl(PayMethods.ChinaPay, PayApiType.Normal), - "", //网关留空,为银联支付 - Priv1, - ChkValue); - } - - public PaidHandleResult Return(PayMointor proc) where T:class - { - var request = HttpContext.Current.Request; - - string MerId = request["MerId"];//商户号 - string OrdId = request["OrderNo"];//订单号 - string TransAmt = request["Amount"];//订单金额 - string CuryId = request["CurrencyCode"];//货币代码 - string TransDate = request["TransDate"];//订单日期 - string TransType = request["TransType"];//交易类型 - string Priv1 = request["Priv1"];//备注 - string GateId = request["GateId"];//网关 - string status = request["status"]; - - proc.Init(OrdId); - - string CheckValue = request["checkvalue"];//签名数据 - bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); - if (res) - { - return PaidHandleResult.Fail; - } - else - { - return PaidHandleResult.Success; - } - - } - - public string Notify(PayMointor proc) where T : class - { - - var request = HttpContext.Current.Request; - - string MerId = request["MerId"];//商户号 - string OrdId = request["OrderNo"];//订单号 - string TransAmt = request["Amount"];//订单金额 - string CuryId = request["CurrencyCode"];//货币代码 - string TransDate = request["TransDate"];//订单日期 - string TransType = request["TransType"];//交易类型 - string Priv1 = request["Priv1"];//备注 - string GateId = request["GateId"];//网关 - string status = request["status"]; - - proc.Init(OrdId); - - string CheckValue = request["checkvalue"];//签名数据 - bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); - if (res) - { - proc.PaidFail(); - return "0"; - } - else - { - proc.PaidSuccess(); - return "1"; - - } - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs deleted file mode 100644 index 56ed264..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay -{ - public class ChinaPaySignData - { - internal static string PrivateKeyPath = ""; - internal static string PublicKeyPath = ""; - internal static string MerchantID = "808080201301103"; - - static ChinaPaySignData() - { - PrivateKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/prk.key"; - PublicKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/pk.key"; - } - - //签名 - public static string sign(string MerId, string plain) - { - global::NetPay netPay = new global::NetPay(); - Boolean flag = netPay.buildKey(MerId, 0, ChinaPaySignData.PrivateKeyPath); - string sign = null; - if (flag) - { - if (netPay.PrivateKeyFlag) - { - sign = netPay.Sign(plain); - } - } - return sign; - - } - - //验签 - public static bool check(string MerId, string OrdId, string TransAmt, string CuryId, string TransDate, string TransType, string status, string ChkValue) - { - - global::NetPay netPay = new global::NetPay(); - Boolean flag = netPay.buildKey(ChinaPaySignData.MerchantID, 0, ChinaPaySignData.PublicKeyPath); - if (flag) - { - if (netPay.PublicKeyFlag) - { - flag = netPay.verifyTransResponse(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, ChkValue); - } - else - { - flag = false; - } - } - else - { - flag = false; - } - - return flag; - - } - - - //得到交易日期 - public static string getTransDate() - { - return DateTime.Now.ToString("yyyyMMdd"); - } - - //得到订单号16位 - public static string getOrdId() - { - return DateTime.Now.ToString("yyyyMMHHmmffffff"); - } - - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs deleted file mode 100644 index 438af04..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs +++ /dev/null @@ -1,43 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : IPay.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System.Collections; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - public interface IPay - { - /// - /// 获取支付请求,可返回链接或表单 - /// - /// - /// - string GetPayRequest(Hashtable hash); - - /// - /// 返回信息 - /// - /// - /// - PaidHandleResult Return(PayMointor proc) where T : class; - - /// - /// 主动通知 - /// - /// - /// - /// - string Notify(PayMointor proc) where T : class; - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs deleted file mode 100644 index b57993b..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs +++ /dev/null @@ -1,37 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PaidHandleResult.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付处理结果 - /// - public enum PaidHandleResult - { - - /// - /// 支付成功 - /// - Success, - - /// - /// 支付失败 - /// - Fail, - /// - /// 准备支付 - /// - Repair - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs deleted file mode 100644 index c18471f..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs +++ /dev/null @@ -1,133 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PaidHandler.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付时处理方法 - /// - /// - /// - public delegate void PaidHandler(T t) where T : class; - - public delegate void PaidAsyncHandler(T t,PaymentAsyncState state) where T : class; - - /// - /// 支付同步状态 - /// - public enum PaymentAsyncState - { - WAIT_BUYER_PAY, - WAIT_SELLER_SEND_GOODS - } - - /// - /// - /// - public sealed class PayMointor where T : class - { - /// - /// 当初始化时发生,通常用于根据订单号获取订单 - /// - public event PaidHandler OnInit; - - /// - /// 支付成功 - /// - public event PaidHandler OnSuccessed; - - /// - /// 同步状态 - /// - public event PaidAsyncHandler OnAsync; - - /// - /// 准备支付 - /// - public event PaidHandler OnRepairPay; - - /// - /// 当支付失败时 - /// - public event PaidHandler OnFailed; - - private T instance; - - public T Instance { get { return instance; } set { instance = value; } } - - public PayMointor(T t) - { - this.instance = t; - } - - /// - /// 支付成功 - /// - public void PaidSuccess() - { - if (this.OnSuccessed != null) - { - this.OnSuccessed(this.instance); - } - } - - /// - /// 支付失败 - /// - public void PaidFail() - { - if (this.OnFailed != null) - { - this.OnFailed(this.instance); - } - } - - /// - /// 准备支付 - /// - public void RepairPay() - { - if (this.OnRepairPay != null) - { - this.OnRepairPay(this.instance); - } - } - - /// - /// 同步状态 - /// - /// - public void AsyncState(PaymentAsyncState state) - { - if (OnAsync != null) - { - OnAsync(this.instance,state); - } - } - - /// - /// 初始化 - /// - /// - public void Init(string orderNo) - { - if (this.OnInit != null) - { - this.OnInit(orderNo); - } - } - - } - -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs deleted file mode 100644 index c2a910a..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs +++ /dev/null @@ -1,42 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayApiType.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付接口 - /// - public enum PayApiType - { - /// - /// 标准双接口 - /// - Normal = 1, - - /// - /// 担保交易 - /// - Guarantee = 2, - - /// - /// 即时到帐 - /// - Direct = 3, - - /// - /// 手机网站支付 - /// - Mobile=4 - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs deleted file mode 100644 index 06add53..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs +++ /dev/null @@ -1,49 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayMethods.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付方式 - /// - public enum PayMethods - { - - /// - /// 未指定 - /// - Unknown = -1, - - /// - /// 支付宝 - /// - Alipay = 1, - - /// - /// 腾讯财付通 - /// - Tenpay = 2, - - - /// - /// 银联支付 - /// - ChinaPay = 3, - - /// - /// 在线支付 - /// - OnlinePay = 4 - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs deleted file mode 100644 index 921f878..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs +++ /dev/null @@ -1,290 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayApiType.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Linq; -using System.Text; -using System.Web; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Alipay; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - public static class PayUtil - { - /// - /// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - internal static SortedDictionary GetRequestGet() - { - int i = 0; - SortedDictionary sPara = new SortedDictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - - var request = HttpContext.Current.Request; - coll = request.QueryString; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sPara.Add(requestItem[i], request.QueryString[requestItem[i]]); - } - - return sPara; - } - /// - /// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组 - /// - /// request回来的信息组成的数组 - internal static SortedDictionary GetRequestPost() - { - int i = 0; - SortedDictionary sPara = new SortedDictionary(); - NameValueCollection coll; - //Load Form variables into NameValueCollection variable. - var request = HttpContext.Current.Request; - coll = request.Form; - //coll = request.QueryString; - - // Get names of all forms into a string array. - String[] requestItem = coll.AllKeys; - - for (i = 0; i < requestItem.Length; i++) - { - sPara.Add(requestItem[i], request.Form[requestItem[i]]); - } - - return sPara; - } - - - /// - /// 设置支付日志记录 - /// - /// - public static void SetLogMessage(string msg) - { - global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] = msg; - } - - /// - /// 获取支付日志记录 - /// - /// - public static string GetLogMessage() - { - return global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] as string; - } - - /// - /// 获取提示的地址 - /// - /// 支付方式编号 - /// 接口类型,默认为1 - /// - internal static string GetNotifyUrl(PayMethods ap, PayApiType at) - { - global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; - - return String.Format("http://{0}{1}/netpay/notify_{2}_{3}.html", - req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); - } - - /// - /// 获取返回的地址 - /// - /// 支付方式编号 - /// 接口类型,默认为1 - /// - internal static string GetReturnUrl(PayMethods ap, PayApiType at) - { - global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; - - - return String.Format("http://{0}{1}/netpay/return_{2}_{3}.html", - req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); - - /* - return String.Format("http://{0}{1}/pay/return_{2}_{3}.html", - "www.lmgdto.com","", ((int)ap).ToString(), ((int)at).ToString()); - */ - } - - - /// - /// 获取网关地址 - /// - /// - /// - /// - /// - public static string GetGatewayStr(PayMethods pm, PayApiType pt, Hashtable ht) - { - IPay _pay = null; - if (pm == PayMethods.Alipay) - { - if (ht.Contains("bank")) - { - pt = PayApiType.Direct; - } - - if (pt == PayApiType.Direct) - { - _pay = new AlipayRedirect(); - } - else if (pt == PayApiType.Normal) - { - _pay = new AlipayNormal(); - } - else if(pt== PayApiType.Mobile) - { - - _pay=new AlipayMobile(); - } - else - { - _pay = new AlipayComfireApi(); - } - - } - else if (pm == PayMethods.Tenpay) - { - //财付通默认支持所有 - _pay = new Tenpay.Tenpay(); - } - else if (pm == PayMethods.ChinaPay) - { - _pay = new ChinaPayApi(); - } - - - return _pay == null ? String.Empty : _pay.GetPayRequest(ht); - - - } - - - - public static PaidHandleResult PayReturn(PayMethods pm, PayApiType pt, PayMointor proc) where T:class - { - IPay _pay = null; - if (pm == PayMethods.Alipay) - { - if (pt == PayApiType.Direct) - { - _pay = new AlipayRedirect(); - } - else if (pt == PayApiType.Normal) - { - _pay = new AlipayNormal(); - } - else if(pt== PayApiType.Mobile) - { - _pay=new AlipayMobile(); - } - else - { - _pay = new AlipayComfireApi(); - } - - } - else if (pm == PayMethods.Tenpay) - { - //财付通默认支持所有 - _pay = new Tenpay.Tenpay(); - } - else if (pm == PayMethods.ChinaPay) - { - _pay = new ChinaPayApi(); - } - - - if (_pay == null) - { - SetLogMessage("不支持的支付方式"); - return PaidHandleResult.Fail; - } - else - { - return _pay.Return(proc); - } - } - - public static string PayNotify(PayMethods pm, PayApiType pt, PayMointor proc) where T : class - { - IPay _pay = null; - if (pm == PayMethods.Alipay) - { - if (pt == PayApiType.Direct) - { - _pay = new AlipayRedirect(); - } - else if (pt == PayApiType.Normal) - { - _pay = new AlipayNormal(); - } - else if(pt== PayApiType.Mobile) - { - _pay=new AlipayMobile(); - } - else - { - _pay = new AlipayComfireApi(); - } - - } - else if (pm == PayMethods.Tenpay) - { - //财付通默认支持所有 - _pay = new Tenpay.Tenpay(); - } - else if (pm == PayMethods.ChinaPay) - { - _pay = new ChinaPayApi(); - } - - - return _pay == null ? "不支持的支付方式" : _pay.Notify(proc); - - } - - - public static string GetGatewaySubmit(string url, SortedDictionary dict) - { - const string format = "
                                                                                                                                            %fields%
                                                                                                                                            "; - if (dict == null || !dict.Keys.Contains("order_no")) - { - throw new ArgumentException("字典不能为空,且必须包括orderNo键值!"); - } - - StringBuilder sb = new StringBuilder(); - - foreach (string key in dict.Keys) - { - sb.Append(""); - } - - return format.Replace("%url%", url).Replace("%fields%", sb.ToString()); - } - } - -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs deleted file mode 100644 index aece237..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs +++ /dev/null @@ -1,268 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : PayHandler.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 支付处理类 - /// - /// - public abstract class PaymentHandler where T : class - { - - /// - /// 提交支付请求(收货信息仅支付宝担保时传递) - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - public string SubmitRequest( - PayMethods pm, - PayApiType pt, - string partner_id, - string partner_secret, - string seller_account, - BankSign bank, - string orderNo, - float order_fee, - float order_exp_fee, - string order_desc, - string order_show_url, - string subject, - string receive_name, - string receive_address, - string receive_zip, - string receive_phone, - string receive_mobile, - string return_url, - string notify_url - ) - { - Hashtable ht = new Hashtable(); - - // OrderInfo order; - - // order = new Order(orderNo); - - - // if (order == null) - // { - // p.PayUtil.SetLogMessage("订单不存在!"); - // return Result((int)p.PaidHandleResult.Fail); - // } - - - // orderPM = this.LoadOrderPM(order); - if (String.IsNullOrEmpty(return_url)) - { - return_url = PayUtil.GetReturnUrl(pm, pt); - } - if (String.IsNullOrEmpty(notify_url)) - { - notify_url = PayUtil.GetNotifyUrl(pm, pt); - } - - ht.Add("order_subject",subject??"支付订单"+orderNo); - ht.Add("order_no", orderNo); //订单编号 - ht.Add("order_fee", order_fee); - ht.Add("order_exp_fee", order_exp_fee); //订单快递金额 - try{ - ht.Add("usr_host", HttpContext.Current.Request.UserHostAddress); //用户IP地址 - }catch{} - ht.Add("order_showurl", order_show_url); //订单显示地址 - ht.Add("return_url", return_url); //返回地址 - ht.Add("notify_url", notify_url); //通知地址 - ht.Add("order_desc", order_desc); //订单描述 - ht.Add("seller_account", seller_account); //帐号 - - //收货信息 - ht.Add("receive_name", receive_name); - ht.Add("receive_address", receive_address); - ht.Add("receive_mobile", receive_mobile); - ht.Add("receive_zip", receive_zip); - ht.Add("receive_phone", receive_phone); - - - if(bank!=BankSign.Default) - { - ht.Add("bank",bank.ToString()); - } - - - if (pm != PayMethods.Unknown) - { - - string payHtml = String.Empty; - - switch (pm) - { - //财付通 - case PayMethods.Tenpay: - - ht.Add("tenpay_key", partner_id); - ht.Add("tenpay_secret", partner_secret); - ht.Add("trade_mode", -((int)pt-4)); //1:即时到帐,2:中介担保,3:自己选择 - - payHtml = String.Format("", - PayUtil.GetGatewayStr(PayMethods.Tenpay, pt, ht)); - - break; - - //支付宝 - case PayMethods.Alipay: - ht.Add("alipay_key", partner_id); - ht.Add("alipay_secret", partner_secret); - - payHtml = PayUtil.GetGatewayStr(PayMethods.Alipay, pt, ht); - - break; - - //在线支付 - default: - case PayMethods.OnlinePay: - // - //UNDONE: - // - throw new NotImplementedException("暂不支持银行支付!"); - } - - - //准备支付 - // orderPM.RepairPay(); - - - //跳转到支付页面 - return payHtml; - } - - else - { - - return "不支持的支付方式!"; - } - - } - - - /// - /// 页面回调 - /// - /// - /// 接口类型ID - /// - public PaidHandleResult Return(PayMethods pm, PayApiType pt, PayMointor proc) - { - PaidHandleResult result; - //PayMointor proc = new PayMointor(String.Empty); - //proc.OnInit += orderNo => - //{ - // proc.Instance= - //}; - - this.AttachEvent(proc); - - // PayMethods pm = (PayMethods)pmid; //支付方式 - //PayApiType pt = (PayApiType)ptid; //接口类型 - - result = PayUtil.PayReturn(pm, pt, proc); - if(result== PaidHandleResult.Success) - { - proc.PaidSuccess(); - } - else if(result== PaidHandleResult.Fail) - { - proc.PaidFail(); - } - return result; - } - - /// - /// 主动通知 - /// - /// - /// - public string Notify(PayMethods pm, PayApiType pt, PayMointor proc) - { - - // PaidMointor proc = new PaidMointor(null); - - // proc.OnInit += orderNo => - // { - // var itm = this.LoadOrderPM(orderNo.ToString()); - //proc.Instance = itm.Instance; - // this.AttachEvent(proc); - // }; - - this.AttachEvent(proc); - - return PayUtil.PayNotify(pm, pt, proc); - } - - - private void AttachEvent(PayMointor proc) - { - if (proc == null) - { - throw new ArgumentNullException("参数proc不能为空!"); - } - else - { - //添加事件 - proc.OnFailed += OnOrderPaidFail; - proc.OnSuccessed += OnOrderPaidSuccess; - proc.OnRepairPay += OnOrderRepairPay; - } - } - - /// - /// 支付失败时操作 - /// - /// - public abstract void OnOrderPaidFail(T t); - - /// - /// 支付成功时操作 - /// - /// - public abstract void OnOrderPaidSuccess(T t); - - /// - /// 准备支付时操作 - /// - /// - private void OnOrderRepairPay(T t) - { - - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs deleted file mode 100644 index bbfcde6..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************* -* 文 件 名: ReceiveInfo -* 作 者: 刘成文 -* 创建时间: 2013-4-28 10:23:56 -* 修改说明: -********************************************/ - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay -{ - /// - /// 收货信息 - /// - public struct ReceiveInfo - { - public string Name { get; set; } - public string Address { get; set; } - public string Zip { get; set; } - public string Phone { get; set; } - public string Mobile { get; set; } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs deleted file mode 100644 index 0039126..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Collections; -using System.Text; -using System.Xml; - -/** - * 后台应答类 - * ============================================================================ - * api说明: - * getKey()/setKey(),获取/设置密钥 - * getContent() / setContent(), 获取/设置原始内容 - * getParameter()/setParameter(),获取/设置参数值 - * getAllParameters(),获取所有参数 - * isTenpaySign(),是否财付通签名,true:是 false:否 - * getDebugInfo(),获取debug信息 - * - * ============================================================================ - * - */ - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - public class ClientResponseHandler - { - /** 密钥 */ - private string key; - - /** 应答的参数 */ - protected Hashtable parameters; - - /** debug信息 */ - private string debugInfo; - - //原始内容 - protected string content; - - private string charset = "gb2312"; - - - //获取服务器通知数据方式,进行参数获取 - public ClientResponseHandler() - { - parameters = new Hashtable(); - } - - public string getContent() - { - return this.content; - } - - public virtual void setContent(string content) - { - this.content = content; - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(content); - XmlNode root = xmlDoc.SelectSingleNode("root"); - XmlNodeList xnl = root.ChildNodes; - - foreach (XmlNode xnf in xnl) - { - this.setParameter(xnf.Name, xnf.InnerXml); - } - } - - /** 获取密钥 */ - public string getKey() - { return key; } - - /** 设置密钥 */ - public void setKey(string key) - { this.key = key; } - - /** 获取参数值 */ - public string getParameter(string parameter) - { - string s = (string)parameters[parameter]; - return (null == s) ? "" : s; - } - - /** 设置参数值 */ - public void setParameter(string parameter, string parameterValue) - { - if (parameter != null && parameter != "") - { - if (parameters.Contains(parameter)) - { - parameters.Remove(parameter); - } - - parameters.Add(parameter, parameterValue); - } - } - - /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 - * @return boolean */ - public virtual Boolean isTenpaySign() - { - StringBuilder sb = new StringBuilder(); - - ArrayList akeys = new ArrayList(parameters.Keys); - akeys.Sort(); - - foreach (string k in akeys) - { - string v = (string)parameters[k]; - if (null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); - - //debug信息 - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - - /** 获取debug信息 */ - public string getDebugInfo() - { return debugInfo; } - - /** 设置debug信息 */ - protected void setDebugInfo(String debugInfo) - { this.debugInfo = debugInfo; } - - protected virtual string getCharset() - { - return this.charset; - } - - public void setCharset(String charset) - { - this.charset = charset; - } - - /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 - * @return boolean */ - public virtual Boolean _isTenpaySign(ArrayList akeys) - { - StringBuilder sb = new StringBuilder(); - - foreach (string k in akeys) - { - string v = (string)parameters[k]; - if (null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); - - //debug信息 - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs deleted file mode 100644 index 6b83238..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Security.Cryptography; -using System.Text; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// MD5Util ժҪ˵ - /// - public class MD5Util - { - public MD5Util() - { - // - // TODO: ڴ˴ӹ캯߼ - // - } - - /** ȡдMD5ǩ */ - public static string GetMD5(string encypStr, string charset) - { - string retStr; - MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider(); - - //md5 - byte[] inputBye; - byte[] outputBye; - - //ʹGB2312뷽ʽַתΪֽ飮 - try - { - inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr); - } - catch (Exception ex) - { - inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr); - } - outputBye = m5.ComputeHash(inputBye); - - retStr = System.BitConverter.ToString(outputBye); - retStr = retStr.Replace("-", "").ToUpper(); - return retStr; - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs deleted file mode 100644 index 68c8e72..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System; -using System.Collections; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// RequestHandler ժҪ˵ - /// - public class RequestHandler - { - public RequestHandler(HttpContext httpContext) - { - parameters = new Hashtable(); - - this.httpContext = httpContext; - this.setGateUrl("https://www.tenpay.com/cgi-bin/v1.0/service_gate.cgi"); - } - - /** urlַ */ - private string gateUrl; - - /** Կ */ - private string key; - - /** IJ */ - protected Hashtable parameters; - - /** debugϢ */ - private string debugInfo; - - protected HttpContext httpContext; - - /** ʼ*/ - public virtual void init() - { - //nothing to do - } - - /** ȡڵַ,ֵ */ - public String getGateUrl() - { - return gateUrl; - } - - /** ڵַ,ֵ */ - public void setGateUrl(String gateUrl) - { - this.gateUrl = gateUrl; - } - - /** ȡԿ */ - public String getKey() - { - return key; - } - - /** Կ */ - public void setKey(string key) - { - this.key = key; - } - - /** ȡURL @return String */ - public virtual string getRequestURL() - { - this.createSign(); - - StringBuilder sb = new StringBuilder(); - ArrayList akeys=new ArrayList(parameters.Keys); - akeys.Sort(); - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + TenpayUtil.UrlEncode(v, getCharset()) + "&"); - } - } - - //ȥһ& - if(sb.Length > 0) - { - sb.Remove(sb.Length-1, 1); - } - - return this.getGateUrl() + "?" + sb.ToString(); - } - - /** - * md5ժҪ,:a-z,ֵIJμǩ - */ - protected virtual void createSign() - { - StringBuilder sb = new StringBuilder(); - - ArrayList akeys=new ArrayList(parameters.Keys); - akeys.Sort(); - - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); - - this.setParameter("sign", sign); - - //debugϢ - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - } - - /** ȡֵ */ - public string getParameter(string parameter) - { - string s = (string)parameters[parameter]; - return (null == s) ? "" : s; - } - - /** òֵ */ - public void setParameter(string parameter,string parameterValue) - { - if(parameter != null && parameter != "") - { - if(parameters.Contains(parameter)) - { - parameters.Remove(parameter); - } - - parameters.Add(parameter,parameterValue); - } - } - - public void doSend() - { - this.httpContext.Response.Redirect(this.getRequestURL()); - } - - /** ȡdebugϢ */ - public String getDebugInfo() - { - return debugInfo; - } - - /** debugϢ */ - public void setDebugInfo(String debugInfo) - { - this.debugInfo = debugInfo; - } - - public Hashtable getAllParameters() - { - return this.parameters; - } - - protected virtual string getCharset() - { - return this.httpContext.Request.ContentEncoding.BodyName; - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs deleted file mode 100644 index 6ba4cea..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Specialized; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// ResponseHandler ժҪ˵ - /// - public class ResponseHandler - { - /** Կ */ - private string key; - - /** ӦIJ */ - protected Hashtable parameters; - - /** debugϢ */ - private string debugInfo; - - protected HttpContext httpContext; - - //ȡ֪ͨݷʽвȡ - public ResponseHandler(HttpContext httpContext) - { - parameters = new Hashtable(); - - this.httpContext = httpContext; - NameValueCollection collection; - if(this.httpContext.Request.HttpMethod == "POST") - { - collection = this.httpContext.Request.Form; - } - else - { - collection = this.httpContext.Request.QueryString; - } - - foreach(string k in collection) - { - string v = (string)collection[k]; - this.setParameter(k, v); - } - } - - /** ȡԿ */ - public string getKey() - { return key;} - - /** Կ */ - public void setKey(string key) - { this.key = key;} - - /** ȡֵ */ - public string getParameter(string parameter) - { - string s = (string)parameters[parameter]; - return (null == s) ? "" : s; - } - - /** òֵ */ - public void setParameter(string parameter,string parameterValue) - { - if(parameter != null && parameter != "") - { - if(parameters.Contains(parameter)) - { - parameters.Remove(parameter); - } - - parameters.Add(parameter,parameterValue); - } - } - - /** ǷƸͨǩ,:a-z,ֵIJμǩ - * @return boolean */ - public virtual Boolean isTenpaySign() - { - StringBuilder sb = new StringBuilder(); - - ArrayList akeys=new ArrayList(parameters.Keys); - akeys.Sort(); - - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); - - //debugϢ - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - - /** - * ʾ - * @param show_url ʾurlַ,urlַʽ(http://www.xxx.com/xxx.aspx) - * @throws IOException - */ - public void doShow(string show_url) - { - string strHtml = "\r\n" + - "\r\n" + - "\r\n" + - " "; - - this.httpContext.Response.Write(strHtml); - - this.httpContext.Response.End(); - } - - /** ȡdebugϢ */ - public string getDebugInfo() - { return debugInfo;} - - /** debugϢ */ - protected void setDebugInfo(String debugInfo) - { this.debugInfo = debugInfo;} - - protected virtual string getCharset() - { - return this.httpContext.Request.ContentEncoding.BodyName; - - } - - /** ǷƸͨǩ,:a-z,ֵIJμǩ - * @return boolean */ - public virtual Boolean _isTenpaySign(ArrayList akeys) - { - StringBuilder sb = new StringBuilder(); - - foreach(string k in akeys) - { - string v = (string)parameters[k]; - if(null != v && "".CompareTo(v) != 0 - && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) - { - sb.Append(k + "=" + v + "&"); - } - } - - sb.Append("key=" + this.getKey()); - string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); - - //debugϢ - this.setDebugInfo(sb.ToString() + " => sign:" + sign); - return getParameter("sign").ToLower().Equals(sign); - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs deleted file mode 100644 index 670d93e..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; - -/** - * http、https通信类 - * ============================================================================ - * api说明: - * setReqContent($reqContent),设置请求内容,无论post和get,都用get方式提供 - * getResContent(), 获取应答内容 - * setMethod($method),设置请求方法,post或者get - * getErrInfo(),获取错误信息 - * setCertInfo($certFile, $certPasswd, $certType="PEM"),设置证书,双向https时需要使用 - * setCaInfo($caFile), 设置CA,格式未pem,不设置则不检查 - * setTimeOut($timeOut), 设置超时时间,单位秒 - * getResponseCode(), 取返回的http状态码 - * call(),真正调用接口 - * - * ============================================================================ - * - */ - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - public class TenpayHttpClient - { - //请求内容,无论post和get,都用get方式提供 - private string reqContent; - - //应答内容 - private string resContent; - - //请求方法 - private string method; - - //错误信息 - private string errInfo; - - //证书文件 - private string certFile; - - //证书密码 - private string certPasswd; - - //ca证书文件 - private string caFile; - - //超时时间,以秒为单位 - private int timeOut; - - //http应答编码 - private int responseCode; - - //字符编码 - private string charset; - - public TenpayHttpClient() - { - this.caFile = ""; - this.certFile = ""; - this.certPasswd = ""; - - this.reqContent = ""; - this.resContent = ""; - this.method = "POST"; - this.errInfo = ""; - this.timeOut = 1 * 60;//5分钟 - - this.responseCode = 0; - this.charset = "gb2312"; - - } - - //设置请求内容 - public void setReqContent(string reqContent) - { - this.reqContent = reqContent; - } - - //获取结果内容 - public string getResContent() - { - return this.resContent; - } - - //设置请求方法post或者get - public void setMethod(string method) - { - this.method = method; - } - - //获取错误信息 - public string getErrInfo() - { - return this.errInfo; - } - - //设置证书信息 - public void setCertInfo(string certFile, string certPasswd) - { - this.certFile = certFile; - this.certPasswd = certPasswd; - } - - //设置ca - public void setCaInfo(string caFile) - { - this.caFile = caFile; - } - - //设置超时时间,以秒为单位 - - public void setTimeOut(int timeOut) - { - this.timeOut = timeOut; - } - - - //获取http状态码 - public int getResponseCode() - { - return this.responseCode; - } - - public void setCharset(string charset) - { - this.charset = charset; - } - - //验证服务器证书 - public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) - { - return true; - } - - //执行http调用 - public bool call() - { - StreamReader sr = null; - HttpWebResponse wr = null; - - HttpWebRequest hp = null; - try - { - string postData = null; - if (this.method.ToUpper() == "POST") - { - string[] sArray = System.Text.RegularExpressions.Regex.Split(this.reqContent, "\\?"); - - hp = (HttpWebRequest)WebRequest.Create(sArray[0]); - - if (sArray.Length >= 2) - { - postData = sArray[1]; - } - - } - else - { - hp = (HttpWebRequest)WebRequest.Create(this.reqContent); - } - - - ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); - if (this.certFile != "") - { - hp.ClientCertificates.Add(new X509Certificate2(this.certFile, this.certPasswd)); - } - hp.Timeout = this.timeOut * 1000; - - System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(this.charset); - if (postData != null) - { - byte[] data = encoding.GetBytes(postData); - - hp.Method = "POST"; - - hp.ContentType = "application/x-www-form-urlencoded"; - - hp.ContentLength = data.Length; - - Stream ws = hp.GetRequestStream(); - - // 发送数据 - - ws.Write(data, 0, data.Length); - ws.Close(); - - - } - - - wr = (HttpWebResponse)hp.GetResponse(); - sr = new StreamReader(wr.GetResponseStream(), encoding); - - - - this.resContent = sr.ReadToEnd(); - sr.Close(); - wr.Close(); - } - catch (Exception exp) - { - this.errInfo += exp.Message; - if (wr != null) - { - this.responseCode = Convert.ToInt32(wr.StatusCode); - } - - return false; - } - - this.responseCode = Convert.ToInt32(wr.StatusCode); - - return true; - } - } -} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs deleted file mode 100644 index 0afd9c4..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Text; -using System.Web; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code -{ - /// - /// TenpayUtil ժҪ˵ - /// - public class TenpayUtil - { - public static string tenpay ="1"; - public static string bargainor_id = "1900000113"; //Ƹ̻ͨ - public static string tenpay_key = "e82573dc7e6136ba414f2e2affbe39fa"; //ƸͨԿ; - public static string tenpay_return = "http://********/payReturnUrl.aspx";//ʾ֧֪ͨҳ; - public static string tenpay_notify ="http://*****/payReturnUrl.aspx"; //֧ɺĻصҳ; - - public TenpayUtil() - { - /*tenpay = System.Configuration.ConfigurationSettings.AppSettings["tenpay"]; - bargainor_id = System.Configuration.ConfigurationSettings.AppSettings["bargainor_id"]; - tenpay_key = System.Configuration.ConfigurationSettings.AppSettings["tenpay_key"]; - tenpay_return = System.Configuration.ConfigurationSettings.AppSettings["tenpay_return"]; - tenpay_show = System.Configuration.ConfigurationSettings.AppSettings["tenpay_show"];*/ - } - /** ַURL */ - public static string UrlEncode(string instr, string charset) - { - //return instr; - if(instr == null || instr.Trim() == "") - return ""; - else - { - string res; - - try - { - res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding(charset)); - - } - catch (Exception ex) - { - res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding("GB2312")); - } - - - return res; - } - } - - /** ַURL */ - public static string UrlDecode(string instr, string charset) - { - if(instr == null || instr.Trim() == "") - return ""; - else - { - string res; - - try - { - res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding(charset)); - - } - catch (Exception ex) - { - res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding("GB2312")); - } - - - return res; - - } - } - - /** ȡʱ漴,滻׵еĺ10λˮ */ - public static UInt32 UnixStamp() - { - TimeSpan ts = DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); - return Convert.ToUInt32(ts.TotalSeconds); - } - /** ȡ */ - public static string BuildRandomStr(int length) - { - Random rand = new Random(); - - int num = rand.Next(); - - string str = num.ToString(); - - if(str.Length > length) - { - str = str.Substring(0,length); - } - else if(str.Length < length) - { - int n = length - str.Length; - while(n > 0) - { - str.Insert(0, "0"); - n--; - } - } - - return str; - } - } -} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs b/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs deleted file mode 100644 index ff4356e..0000000 --- a/src/toolkit/AtNet.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs +++ /dev/null @@ -1,442 +0,0 @@ - -// -// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. -// -// Project: OPS.Plugin -// FileName : Tenpay.cs -// Author : PC-CWLIU (new.min@msn.com) -// Create : 2013/05/01 17:58:32 -// Description : -// -// Get infromation of this software,please visit our site http://www.ops.cc -// -// - -using System; -using System.Collections; -using System.Web; -using AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code; - -namespace AtNet.DevFw.Toolkit.ThirdApi.NetPay.Tenpay -{ - /// - /// 财付通 - /// - internal class Tenpay : IPay - { - public string GetPayRequest(Hashtable hash) - { - /*接口需要的参数如下: - * ---------------------------------- - * @product_fee : 产品价格 - * @express_fee : 快递费用 - * @orderno : 订单号 - * @desc : 订单描述 - * ----------------------------------- - */ - - //商户号 - string partner = hash["tenpay_key"] as string; - //密钥 - string key = hash["tenpay_secret"] as string; - - - TenpayUtil.bargainor_id = partner; - TenpayUtil.tenpay_key = key; - TenpayUtil.tenpay_return = PayUtil.GetReturnUrl(PayMethods.Tenpay, PayApiType.Direct); - TenpayUtil.tenpay_notify = PayUtil.GetNotifyUrl(PayMethods.Tenpay, PayApiType.Direct); - - int product_fee = (int)(((decimal)hash["order_fee"]) * 100); //商品费用 - decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 - - string bankCode = hash.Contains("bank") ? hash["bank"].ToString() : "DEFAULT"; - - string order_desc = hash["order_desc"] as string;//HttpUtility.UrlEncode( ht["order_desc"] as string); - - //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 - string out_trade_no = hash["order_no"] as string; - string host = hash["usr_host"] as string; - - - //当前时间 yyyyMMdd - string date = DateTime.Now.ToString("yyyyMMdd"); - - - //创建RequestHandler实例 - RequestHandler reqHandler = new RequestHandler(HttpContext.Current); - //初始化 - reqHandler.init(); - //设置密钥 - reqHandler.setKey(TenpayUtil.tenpay_key); - reqHandler.setGateUrl("https://gw.tenpay.com/gateway/pay.htm"); - - - //----------------------------- - //设置支付参数 - //----------------------------- - reqHandler.setParameter("partner", TenpayUtil.bargainor_id); //商户号 - reqHandler.setParameter("out_trade_no", out_trade_no); //商家订单号 - reqHandler.setParameter("total_fee", product_fee.ToString()); //商品金额,以分为单位 - reqHandler.setParameter("return_url", TenpayUtil.tenpay_return); //交易完成后跳转的URL - reqHandler.setParameter("notify_url", TenpayUtil.tenpay_notify); //接收财付通通知的URL - reqHandler.setParameter("body", order_desc); //商品描述 - reqHandler.setParameter("bank_type", bankCode); //银行类型(中介担保时此参数无效) - reqHandler.setParameter("spbill_create_ip", host); //用户的公网ip,不是商户服务器IP - reqHandler.setParameter("fee_type", "1"); //币种,1人民币 - reqHandler.setParameter("subject", out_trade_no); //商品名称(中介交易时必填) - - - //系统可选参数 - reqHandler.setParameter("sign_type", "MD5"); - reqHandler.setParameter("service_version", "1.0"); - reqHandler.setParameter("input_charset", "UTF-8"); - reqHandler.setParameter("sign_key_index", "1"); - - //业务可选参数 - - reqHandler.setParameter("attach", ""); //附加数据,原样返回 - reqHandler.setParameter("product_fee", "0"); //商品费用,必须保证transport_fee + product_fee=total_fee - reqHandler.setParameter("transport_fee", "0"); //物流费用,必须保证transport_fee + product_fee=total_fee - reqHandler.setParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //订单生成时间,格式为yyyymmddhhmmss - reqHandler.setParameter("time_expire", ""); //订单失效时间,格式为yyyymmddhhmmss - reqHandler.setParameter("buyer_id", ""); //买方财付通账号 - reqHandler.setParameter("goods_tag", ""); //商品标记 - reqHandler.setParameter("trade_mode", "1"); //交易模式,1即时到账(默认),2中介担保,3后台选择(买家进支付中心列表选择) - reqHandler.setParameter("transport_desc", ""); //物流说明 - reqHandler.setParameter("trans_type", "1"); //交易类型,1实物交易,2虚拟交易 - reqHandler.setParameter("agentid", ""); //平台ID - reqHandler.setParameter("agent_type", ""); //代理模式,0无代理(默认),1表示卡易售模式,2表示网店模式 - reqHandler.setParameter("seller_id", ""); //卖家商户号,为空则等同于partner - - - - - - - //获取请求带参数的url - string requestUrl = reqHandler.getRequestURL(); - - //Response.Redirect(requestUrl); - return requestUrl; - //Get的实现方式 - // string a_link = "" + "财付通支付" + ""; - // Response.Write(a_link); - // return a_link; - - - //post实现方式 - - /* Response.Write("
                                                                                                                                            \n"); - Hashtable ht = reqHandler.getAllParameters(); - foreach(DictionaryEntry de in ht) - { - Response.Write("\n"); - } - Response.Write("\n
                                                                                                                                            \n");*/ - - - //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 - // string debuginfo = reqHandler.getDebugInfo(); - // Response.Write("
                                                                                                                                            requestUrl:" + requestUrl + "
                                                                                                                                            "); - // Response.Write("
                                                                                                                                            debuginfo:" + debuginfo + "
                                                                                                                                            "); - } - - public PaidHandleResult Return(PayMointor proc) where T : class - { - //商户号 - string partner = TenpayUtil.bargainor_id;// p.PayApiKey; - //密钥 - string key = TenpayUtil.tenpay_key;// p.PayApiSecret; - - - //创建ResponseHandler实例 - ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); - resHandler.setKey(key); - - //判断签名 - if (true || resHandler.isTenpaySign()) - { - - ///通知id - string notify_id = resHandler.getParameter("notify_id"); - //商户订单号 - string out_trade_no = resHandler.getParameter("out_trade_no"); - //财付通订单号 - string transaction_id = resHandler.getParameter("transaction_id"); - //金额,以分为单位 - string total_fee = resHandler.getParameter("total_fee"); - //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee - string discount = resHandler.getParameter("discount"); - //支付结果 - string trade_state = resHandler.getParameter("trade_state"); - //交易模式,1即时到账,2中介担保 - string trade_mode = resHandler.getParameter("trade_mode"); - - - proc.Init(out_trade_no); - - - if ("1".Equals(trade_mode)) - { - - //即时到账 - if ("0".Equals(trade_state)) - { - //------------------------------ - //即时到账处理业务开始 - //------------------------------ - - //处理数据库逻辑 - //注意交易单不要重复处理 - //注意判断返回金额 - - - - - - - //------------------------------ - //即时到账处理业务完毕 - //------------------------------ - - - //SetLogMessage("即时到帐付款成功"); - return PaidHandleResult.Success; - - - - //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 - - } - else - { - //SetLogMessage("即时到账支付失败"); - return PaidHandleResult.Fail; - } - - } - else if ("2".Equals(trade_mode)) - { //中介担保 - if ("0".Equals(trade_state)) - { - //------------------------------ - //中介担保处理业务开始 - //------------------------------ - - //处理数据库逻辑 - //注意交易单不要重复处理 - //注意判断返回金额 - - //------------------------------ - //中介担保处理业务完毕 - //------------------------------ - - - //Response.Write("中介担保付款成功"); - //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 - - //SetLogMessage("中介担保付款成功"); - return PaidHandleResult.Success; - } - else - { - PayUtil.SetLogMessage("trade_state=" + trade_state); - return PaidHandleResult.Fail; - } - } - } - else - { - //Response.Write("认证签名失败"); - PayUtil.SetLogMessage("认证签名失败"); - return PaidHandleResult.Fail; - } - - return PaidHandleResult.Fail; - - } - - public string Notify(PayMointor proc) where T : class - { - //商户号 - string partner = TenpayUtil.bargainor_id; - //密钥 - string key = TenpayUtil.tenpay_key; - - - //创建ResponseHandler实例 - ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); - resHandler.setKey(key); - - //判断签名 - if (resHandler.isTenpaySign()) - { - - ///通知id - string notify_id = resHandler.getParameter("notify_id"); - - - //通过通知ID查询,确保通知来至财付通 - //创建查询请求 - RequestHandler queryReq = new RequestHandler(System.Web.HttpContext.Current); - queryReq.init(); - queryReq.setKey(key); - queryReq.setGateUrl("https://gw.tenpay.com/gateway/verifynotifyid.xml"); - queryReq.setParameter("partner", partner); - queryReq.setParameter("notify_id", notify_id); - - //通信对象 - TenpayHttpClient httpClient = new TenpayHttpClient(); - httpClient.setTimeOut(5); - //设置请求内容 - httpClient.setReqContent(queryReq.getRequestURL()); - - //后台调用 - if (httpClient.call()) - { - //设置结果参数 - ClientResponseHandler queryRes = new ClientResponseHandler(); - queryRes.setContent(httpClient.getResContent()); - queryRes.setKey(key); - - //判断签名及结果 - //只有签名正确,retcode为0,trade_state为0才是支付成功 - if (queryRes.isTenpaySign() && queryRes.getParameter("retcode") == "0" && queryRes.getParameter("trade_state") == "0" && queryRes.getParameter("trade_mode") == "1") - { - //取结果参数做业务处理 - string out_trade_no = queryRes.getParameter("out_trade_no"); - //财付通订单号 - string transaction_id = queryRes.getParameter("transaction_id"); - //金额,以分为单位 - string total_fee = queryRes.getParameter("total_fee"); - //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee - string discount = queryRes.getParameter("discount"); - //支付结果 - string trade_state = resHandler.getParameter("trade_state"); - //交易模式,1即时到帐 2中介担保 - string trade_mode = resHandler.getParameter("trade_mode"); - - proc.Init(out_trade_no); - - - //判断签名及结果 - if (queryRes.isTenpaySign() && "0".Equals(queryRes.getParameter("retcode"))) - { - // Response.Write("id验证成功"); - - if ("1".Equals(trade_mode)) - { //即时到账 - if ("0".Equals(trade_state)) - { - - proc.PaidSuccess(); - - return "Success"; - - } - else - { - proc.PaidFail(); - //SetLogMessage("即时到账支付失败"); - return "即时到账支付失败"; - - } - } - else if ("2".Equals(trade_mode)) - { //中介担保 - //------------------------------ - //中介担保处理业务开始 - //------------------------------ - //处理数据库逻辑 - //注意交易单不要重复处理 - //注意判断返回金额 - - int iStatus = 0; - switch (iStatus) - { - case 0: //付款成功 - - break; - case 1: //交易创建 - - break; - case 2: //收获地址填写完毕 - - break; - case 4: //卖家发货成功 - - break; - case 5: //买家收货确认,交易成功 - - break; - case 6: //交易关闭,未完成超时关闭 - - break; - case 7: //修改交易价格成功 - - break; - case 8: //买家发起退款 - - break; - case 9: //退款成功 - - break; - case 10: //退款关闭 - - break; - - } - - - //------------------------------ - //中介担保处理业务开始 - //------------------------------ - - - //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 - - proc.PaidSuccess(); - return "Success"; - - } - } - else - { - //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。 - //通知财付通处理失败,需要重新通知\ - - - - // SetLogMessage("查询验证签名失败或id验证失败\r\nretcode:" + queryRes.getParameter("retcode")); - - proc.PaidFail(); - return "查询验证签名失败或id验证失败retcode:" + queryRes.getParameter("retcode"); ; - - } - - } - else - { - //通知财付通处理失败,需要重新通知 - - //SetLogMessage("后台调用通信失败\r\ncall err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "); - - proc.PaidFail(); - - return "后台调用通信失败call err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "; - - } - - - } - else - { - proc.PaidFail(); - return "通知签名验证失败"; - } - } - return ""; - } - } - -} diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user b/src/toolkit/J6.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.Data/AtNet.DevFw.Toolkit.Data.csproj.user diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/Controller/ExportController.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/ExportController.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/Controller/ExportController.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/ExportController.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/Controller/MerchantQueryController.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/DataQueryService.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/DataQueryService.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/DataQueryService.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/DataQueryService.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/Order/OrderExport.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/DataService.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/ToolKit/ExportHelper.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/export.js b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/export.js similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/QueryAndExport/export.js rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/QueryAndExport/export.js diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/View/Export/Setup.cshtml b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/Export/Setup.cshtml similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/View/Export/Setup.cshtml rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/Export/Setup.cshtml diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/OfflineShopSaleOrdersQuery.cshtml diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml b/src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/123/View/MerchantQuery/ShowOrderDetail.cshtml diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs new file mode 100644 index 0000000..05a9f00 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/BaseDataExportPortal.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Globalization; +using System.Linq; + +namespace JR.DevFw.Toolkit.Data.Export +{ + /// + /// 数据导出入口基础类 + /// + [Serializable] + public abstract class BaseDataExportPortal : IDataExportPortal + { + private readonly DataColumnMapping[] _columnNames; + + protected BaseDataExportPortal(DataColumnMapping[] columnNames) + { + this._columnNames = columnNames; + } + + protected BaseDataExportPortal(string configPath) + { + ExportUtil.ReadExportConfigFormFile(configPath, out this._columnNames); + } + + public abstract string PortalKey { get; set; } + + public DataColumnMapping[] ColumnNames + { + get { return this._columnNames; } + } + + public abstract DataTable GetShemalAndData(Hashtable parameters, out int totalCount); + + public abstract DataRow GetTotalView(Hashtable parameters); + + public virtual IDictionary GetExportFieldAndName(String[] exportFields) + { + if (this._columnNames == null || this._columnNames.Length == 0) return null; + + IDictionary dictionary = new Dictionary(); + + foreach (string columnField in exportFields) + { + DataColumnMapping map = this._columnNames.SingleOrDefault( + a => String.Compare(a.Field, columnField, true, + CultureInfo.InvariantCulture) == 0); + + if (map.Field != null) + { + dictionary.Add(map.Field, map.Name); + } + } + return dictionary; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataColumnMapping.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataColumnMapping.cs new file mode 100644 index 0000000..070e008 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataColumnMapping.cs @@ -0,0 +1,40 @@ +using System; + +namespace JR.DevFw.Toolkit.Data.Export +{ + /// + /// 列映射 + /// + [Serializable] + public struct DataColumnMapping + { + private string _field; + private string _name; + + public DataColumnMapping(string field, string name) + { + this._field = field; + this._name = name; + } + + public DataColumnMapping(string field) : this(field, field) + { + } + + /// + /// 列的字段 (通常是列在数据源的名称) + /// + public string Field + { + get { return this._field; } + } + + /// + /// 列的名称 + /// + public string Name + { + get { return this._name; } + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataExportDirector.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataExportDirector.cs new file mode 100644 index 0000000..248deff --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/DataExportDirector.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace JR.DevFw.Toolkit.Data.Export +{ + public static class DataExportDirector + { + public static byte[] Export(IDataExportPortal portal, ExportParams parameters, IDataExportProvider provider) + { + int totalCount; + IDictionary dict = null; + + //获取参数的索引及名称 + if (parameters != null && parameters.ExportFields != null) + { + dict = portal.GetExportFieldAndName(parameters.ExportFields); + } + return + provider.Export( + portal.GetShemalAndData(parameters == null ? null : parameters.Parameters, out totalCount), dict); + } + + public static ExportParams GetExportParams(string paramMappings, string[] columnNames) + { + //string[] splitArr; + + //object[,] data; + //string[] paramsArr = paramMappings.Split(';'); + + //if (paramMappings == "") + //{ + // data = new object[0, 2]; + //} + //else + //{ + // data = new object[paramsArr.Length, 2]; + // //添加传入的参数 + // for (int i = 0; i < paramsArr.Length; i++) + // { + // splitArr = paramsArr[i].Split(':'); + // data[i, 0] = splitArr[0]; + // data[i, 1] = paramsArr[i].Substring(splitArr[0].Length + 1); + // } + //} + Hashtable hash = new Hashtable(); + Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); + MatchCollection mcs = regex.Matches(paramMappings); + foreach (Match m in mcs) + { + hash.Add(m.Groups[1].Value, m.Groups[2].Value); + } + + return new ExportParams(hash, columnNames); + } + + ///// + ///// 根据类名创建导出 + ///// + ///// + ///// + ///// + ///// + //public static byte[] Export(string exportPortalClassFullName, + // IDataExportProvider provider, + // ExportParams parameters) + //{ + + // IDataExportPortal portal = ExportUtil.GetNotNullPortal(exportPortalClassFullName); + + + // portal.Parameters = parameters; + // return Export(portal, provider); + //} + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportItemConfig.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportItemConfig.cs new file mode 100644 index 0000000..faffc5c --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportItemConfig.cs @@ -0,0 +1,42 @@ +namespace JR.DevFw.Toolkit.Data.Export +{ + /// + /// 导入导出项目配置 + /// + public struct ExportItemConfig + { + private readonly string _columnMappingString; + private readonly string _query; + private readonly string _total; + private readonly string _import; + + public ExportItemConfig(string columnMappingString, string query, string total, string import) + { + this._columnMappingString = columnMappingString; + this._query = query; + this._total = total; + this._import = import; + } + + + public string ColumnMappingString + { + get { return this._columnMappingString; } + } + + public string Query + { + get { return this._query; } + } + + public string Total + { + get { return this._total; } + } + + public string Import + { + get { return this._import; } + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportParams.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportParams.cs new file mode 100644 index 0000000..3895155 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportParams.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections; + +namespace JR.DevFw.Toolkit.Data.Export +{ + /// + /// 数据导出参数 + /// + [Serializable] + public class ExportParams : IEnumerable + { + private Hashtable _parameters; + + public ExportParams(Object[,] data, String[] exportColumnFields) : this(exportColumnFields) + { + if (data == null) return; + + if (data.GetLength(1) != 2) + { + throw new ArgumentException("参数维度应为2"); + } + + for (int i = 0; i < data.GetLength(0); i++) + { + this.Parameters.Add(data[i, 0], data[i, 1]); + } + } + + public ExportParams(Hashtable hash, String[] exportColumnFields) + : this(exportColumnFields) + { + if (hash != null) + { + this._parameters = hash; + } + } + + public ExportParams(String[] exportColumnFields) + { + this.ExportFields = exportColumnFields; + } + + /// + /// 要到导出的列(对应IDataExportPortal的ColumnNames或DataTable的Shelma + /// + public String[] ExportFields { get; private set; } + + /// + /// 参数 + /// + public Hashtable Parameters + { + get { return this._parameters ?? (this._parameters = new Hashtable()); } + } + + public IEnumerator GetEnumerator() + { + return this.Parameters.GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs new file mode 100644 index 0000000..e295f31 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvExportProvider.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; + +namespace JR.DevFw.Toolkit.Data.Export.ExportProvider +{ + public class CsvExportProvider : IDataExportProvider + { + private const string split = ","; + + public byte[] Export(DataTable dt, IDictionary columns) + { + string strLine = ""; + StreamWriter sw; + MemoryStream ms = new MemoryStream(); + + bool isReColumn = !(columns == null || columns.Count == 0); + int tmpInt = 0; + sw = new StreamWriter(ms, Encoding.UTF8); + + //表头 + + if (isReColumn) + { + foreach (string columnName in columns.Keys) + { + if (tmpInt++ > 0) + strLine += split; + strLine += columns[columnName]; + } + } + else + { + for (int i = 0; i < dt.Columns.Count; i++) + { + if (i > 0) + strLine += split; + strLine += dt.Columns[i].ColumnName; + } + } + strLine.Remove(strLine.Length - 1); + + sw.WriteLine(strLine); + + + //表的内容 + strLine = ""; + for (int j = 0; j < dt.Rows.Count; j++) + { + strLine = ""; + + if (isReColumn) + { + tmpInt = 0; + foreach (string columnName in columns.Keys) + { + if (tmpInt++ != 0) + strLine += split; + if (dt.Rows[j][columnName] != null) + { + string cell = dt.Rows[j][columnName].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + else + { + int colCount = dt.Columns.Count; + for (int k = 0; k < colCount; k++) + { + if (k > 0 && k < colCount) + strLine += split; + if (dt.Rows[j][k] == null) + strLine += ""; + else + { + string cell = dt.Rows[j][k].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + sw.WriteLine(strLine); + } + + sw.Close(); + byte[] bytes = ms.ToArray(); + + ms.Dispose(); + + return bytes; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs new file mode 100644 index 0000000..0c0c2ef --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/CsvForExcelExportProvider.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; + +namespace JR.DevFw.Toolkit.Data.Export.ExportProvider +{ + public class ExcelExportProvider : IDataExportProvider + { + private const string split = "\t"; + + public byte[] Export(DataTable dt, IDictionary columns) + { + string strLine = ""; + StreamWriter sw; + MemoryStream ms = new MemoryStream(); + + bool isReColumn = !(columns == null || columns.Count == 0); + int tmpInt = 0; + sw = new StreamWriter(ms, Encoding.UTF8); + + //表头 + + if (isReColumn) + { + foreach (string columnName in columns.Keys) + { + if (tmpInt++ > 0) + strLine += split; + strLine += columns[columnName]; + } + } + else + { + for (int i = 0; i < dt.Columns.Count; i++) + { + if (i > 0) + strLine += split; + strLine += dt.Columns[i].ColumnName; + } + } + strLine.Remove(strLine.Length - 1); + + sw.WriteLine(strLine); + + + //表的内容 + strLine = ""; + for (int j = 0; j < dt.Rows.Count; j++) + { + strLine = ""; + + if (isReColumn) + { + tmpInt = 0; + foreach (string columnName in columns.Keys) + { + if (tmpInt++ != 0) + strLine += split; + if (dt.Rows[j][columnName] != null) + { + string cell = dt.Rows[j][columnName].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + else + { + int colCount = dt.Columns.Count; + for (int k = 0; k < colCount; k++) + { + if (k > 0 && k < colCount) + strLine += split; + if (dt.Rows[j][k] == null) + strLine += ""; + else + { + string cell = dt.Rows[j][k].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + sw.WriteLine(strLine); + } + + sw.Close(); + byte[] bytes = ms.ToArray(); + + ms.Dispose(); + + return bytes; + } + } +} \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/ExcelExportProvider.cs diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs new file mode 100644 index 0000000..79bb165 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportProvider/TextExportProvider.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Text; + +namespace JR.DevFw.Toolkit.Data.Export.ExportProvider +{ + public sealed class TextExportProvider : IDataExportProvider + { + private const string split = " "; + + public byte[] Export(DataTable dt, IDictionary columns) + { + string strLine = ""; + StreamWriter sw; + MemoryStream ms = new MemoryStream(); + + bool isReColumn = !(columns == null || columns.Count == 0); + int tmpInt = 0; + sw = new StreamWriter(ms, Encoding.UTF8); + + //表头 + + if (isReColumn) + { + foreach (string columnName in columns.Keys) + { + if (tmpInt++ > 0) + strLine += split; + strLine += columns[columnName]; + } + } + else + { + for (int i = 0; i < dt.Columns.Count; i++) + { + if (i > 0) + strLine += split; + strLine += dt.Columns[i].ColumnName; + } + } + strLine.Remove(strLine.Length - 1); + + sw.WriteLine(strLine); + + + //表的内容 + strLine = ""; + for (int j = 0; j < dt.Rows.Count; j++) + { + strLine = ""; + + if (isReColumn) + { + tmpInt = 0; + foreach (string columnName in columns.Keys) + { + if (tmpInt++ != 0) + strLine += split; + if (dt.Rows[j][columnName] != null) + { + string cell = dt.Rows[j][columnName].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + else + { + int colCount = dt.Columns.Count; + for (int k = 0; k < colCount; k++) + { + if (k > 0 && k < colCount) + strLine += split; + if (dt.Rows[j][k] == null) + strLine += ""; + else + { + string cell = dt.Rows[j][k].ToString().Trim(); + //防止里面含有特殊符号 + cell = cell.Replace("\"", "\"\""); + cell = "\"" + cell + "\""; + strLine += cell; + } + } + } + sw.WriteLine(strLine); + } + + sw.Close(); + byte[] bytes = ms.ToArray(); + + ms.Dispose(); + + return bytes; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportUtil.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportUtil.cs new file mode 100644 index 0000000..e85fcdf --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/ExportUtil.cs @@ -0,0 +1,160 @@ +using System; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Xml; + +namespace JR.DevFw.Toolkit.Data.Export +{ + public static class ExportUtil + { + /// + /// 通过类名来获取导出入口 + /// + /// + /// + public static IDataExportPortal GetPortal(string exportPortalClassFullName) + { + IDataExportPortal portal = null; + + Assembly[] asses = AppDomain.CurrentDomain.GetAssemblies(); + foreach (Assembly ass in asses) + { + Type type = ass.GetType(exportPortalClassFullName); + if (type != null) + { + portal = Activator.CreateInstance(type) as IDataExportPortal; + if (portal != null) break; + } + } + + return portal; + } + + /// + /// 通过类名来获取存在的导出入口 + /// + /// + /// + public static IDataExportPortal GetNotNullPortal(string exportPortalClassFullName) + { + IDataExportPortal portal = GetPortal(exportPortalClassFullName); + if (portal == null) + { + throw new ArgumentNullException(String.Format("导出类型不存在或未实现接口:IDataExportPortal!类名:{0}", + exportPortalClassFullName)); + } + return portal; + } + + /// + /// 从文件中读取导出配置 + /// + /// + /// + /// + /// + public static bool ReadExportConfigFormFile( + string filePath, + out DataColumnMapping[] columns) + { + return ReadExportConfigFormXml( + System.IO.File.ReadAllText(filePath), + null, + out columns); + } + + public static bool ReadExportConfigFormXml( + string xml, + string xpath, + out DataColumnMapping[] columns) + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(xml); + if (String.IsNullOrEmpty(xpath)) + { + xpath = "/item"; + } + XmlNode rootNode = xd.SelectSingleNode(xpath); + XmlNode node; + + if (rootNode == null) + { + throw new ArgumentNullException("xpath"); + } + + #region 获取列配置 + + node = rootNode.SelectSingleNode("column"); + if (node == null) + { + columns = null; + } + else + { + string columnMappingString = node.Attributes["mapping"].Value; + columns = GetColumnMappings(columnMappingString); + } + + #endregion + + return true; + } + + /// + /// 获取列映射数组 + /// + /// + /// + public static DataColumnMapping[] GetColumnMappings(string columnMappingString) + { + DataColumnMapping[] columns; + Regex regex = new Regex("\\s*([^:]+):([^;]*);*\\s*"); + MatchCollection mcs = regex.Matches(columnMappingString); + columns = new DataColumnMapping[mcs.Count]; + int i = 0; + foreach (Match m in mcs) + { + columns[i++] = new DataColumnMapping(m.Groups[1].Value, m.Groups[2].Value); + } + return columns; + } + + + public static ExportItemConfig GetExportItemFormXml(string xml, string xpath) + { + string mappingString; + string query; + string import; + string total; + XmlDocument xd = new XmlDocument(); + xd.LoadXml(xml); + if (String.IsNullOrEmpty(xpath)) + { + xpath = "/item"; + } + XmlNode rootNode = xd.SelectSingleNode(xpath); + XmlNode node; + + if (rootNode == null) + { + throw new ArgumentNullException("xpath"); + } + + node = rootNode.SelectSingleNode("column"); + mappingString = node == null ? null : node.Attributes["mapping"].Value; + + node = rootNode.SelectSingleNode("query"); + query = node == null ? null : node.InnerText; + + + node = rootNode.SelectSingleNode("import"); + import = node == null ? null : node.InnerText; + + + node = rootNode.SelectSingleNode("total"); + total = node == null ? null : node.InnerText; + + return new ExportItemConfig(mappingString, query, total, import); + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportPortal.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportPortal.cs new file mode 100644 index 0000000..89700c5 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportPortal.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; + +namespace JR.DevFw.Toolkit.Data.Export +{ + public interface IDataExportPortal + { + /// + /// 入口键 + /// + string PortalKey { get; set; } + + /// + /// 导出的列名(比如:数据表是因为列,这里我需要列出中文列) + /// + DataColumnMapping[] ColumnNames { get; } + + + /// + /// 获取要导出的数据及表结构 + /// + /// + DataTable GetShemalAndData(Hashtable parameters, out int totalCount); + + /// + /// 获取统计数据 + /// + /// + DataRow GetTotalView(Hashtable parameters); + + /// + /// 根据参数获取导出列名及导出名称 + /// + /// + IDictionary GetExportFieldAndName(String[] exportFields); + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportProvider.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportProvider.cs new file mode 100644 index 0000000..bab187f --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/IDataExportProvider.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using System.Data; + +namespace JR.DevFw.Toolkit.Data.Export +{ + public interface IDataExportProvider + { + /// + /// 导出 + /// + /// 数据表 + /// 要导出的列名及对应导出的列名,可为空 + /// + byte[] Export(DataTable dt, IDictionary columns); + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs new file mode 100644 index 0000000..f6e6795 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Data/Export/UI/WebExportOptionUIBuilder.cs @@ -0,0 +1,108 @@ +using System.Text; + +namespace JR.DevFw.Toolkit.Data.Export.UI +{ + public static class WebExportOptionUIBuilder + { + public static string BuildColumnCheckHtml(IDataExportPortal portal) + { + StringBuilder sb = new StringBuilder(); + + + //================ Output Javascript ==================// + sb.Append(@""); + + + sb.Append(@"
                                                                                                                                            "); + + + //====================== 导出格式 =====================// + + + sb.Append(@"
                                                                                                                                            选择导出格式
                                                                                                                                            +
                                                                                                                                              +
                                                                                                                                            • + +
                                                                                                                                            • +
                                                                                                                                            • + +
                                                                                                                                            • +
                                                                                                                                            • + +
                                                                                                                                            • +

                                                                                                                                            "); + + + //====================== 导出列 =======================// + if (portal.ColumnNames == null || portal.ColumnNames.Length == 0) + { + sb.Append("该导出方案不包含可选择的导出列"); + } + else + { + sb.Append(@"
                                                                                                                                            请选择要导出的列: +
                                                                                                                                              "); + + int tmpInt = 0; + foreach (DataColumnMapping column in portal.ColumnNames) + { + sb.Append( + "
                                                                                                                                            • "); + + tmpInt++; + } + + sb.Append(@"
                                                                                                                                            "); + } + + sb.Append(@" + +
                                                                                                                                            +
                                                                                                                                            "); + sb.Append(@""); + + + return sb.ToString(); + } + + public static string BuildColumnCheckHtml(string exportPortalClassFullName) + { + IDataExportPortal portal = ExportUtil.GetPortal(exportPortalClassFullName); + return BuildColumnCheckHtml(portal); + } + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/config/query_demo.xml b/src/toolkit/J6.DevFw.Toolkit.Data/Export/config/query_demo.xml similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/Export/config/query_demo.xml rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/config/query_demo.xml diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/utils_demo/DataExport.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/DataExport.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/utils_demo/DataExport.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/DataExport.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExcelExportProvider.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Export/utils_demo/ExportHandle.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExportHandle.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Export/utils_demo/ExportHandle.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Export/utils_demo/ExportHandle.cs diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Data/J6.DevFw.Toolkit.Data.csproj b/src/toolkit/J6.DevFw.Toolkit.Data/J6.DevFw.Toolkit.Data.csproj similarity index 94% rename from J6/src/toolkit/J6.DevFw.Toolkit.Data/J6.DevFw.Toolkit.Data.csproj rename to src/toolkit/J6.DevFw.Toolkit.Data/J6.DevFw.Toolkit.Data.csproj index 91a4512..717f393 100644 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Data/J6.DevFw.Toolkit.Data.csproj +++ b/src/toolkit/J6.DevFw.Toolkit.Data/J6.DevFw.Toolkit.Data.csproj @@ -7,8 +7,8 @@ {8A5B5504-8D72-4F30-A50E-5856BE419DEA} Library Properties - J6.DevFw.Toolkit.Data - J6.DevFw.Toolkit.Data + JR.DevFw.Toolkit.Data + JR.DevFw.Toolkit.Data v4.0 512 @@ -32,9 +32,8 @@ - - + diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Data/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.Data/Properties/AssemblyInfo.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Data/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.Data/Properties/AssemblyInfo.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj.user b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj.user similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/AtNet.DevFw.Toolkit.NetCrawl.csproj.user diff --git a/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs new file mode 100644 index 0000000..d420c40 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/Collector.cs @@ -0,0 +1,324 @@ +// +// +// Copyright 2011 @ S1N1.COM.all rights reseved. +// +// Project : Untitled +// File Name : Director.cs +// Date : 2011/8/25 +// Author : +// +// + +using System; +using System.IO; +using System.Text; +using System.Xml; + +namespace JR.DevFw.Toolkit.NetCrawl +{ + public class Collector + { + /// + /// ļ· + /// + private string configFilePath; + + + internal Collector(string configFile) + { + this.configFilePath = configFile; + } + + /// + /// µIJɼִж + /// + /// + /// + public static Collector Create(string configFile) + { + Collector dirc = new Collector(configFile); + dirc.init(); + return dirc; + } + + + /// + /// Ŀ + /// + private static Project[] projects; + + private void init() + { + if (this.configFilePath == "") throw new ArgumentException("ļΪգ"); + if (!File.Exists(configFilePath)) + { + //ļ,򴴽ʼ + File.Create(configFilePath).Dispose(); + const string initData = @" + + + + + \s+([\s\S]+?)\s+]]> + + + + \s*([\s\S]+?)\s*]]> + \s*([\s\S]+?)\s*]]> + + + +"; + + byte[] data = Encoding.UTF8.GetBytes(initData); + FileStream fs = new FileStream(configFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); + fs.Write(data, 0, data.Length); + fs.Flush(); + fs.Dispose(); + } + } + + public Project GetProject(string id) + { + foreach (Project pro in this.GetProjects()) + { + if (pro.Id == id) return pro; + } + return null; + } + + /// + /// Ŀ + /// + /// + /// + public bool CreateProject(Project project) + { + XmlNode newPrj, + propertyNode; + + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNodeList xnodelist = xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); + if (xnodelist.Count != 0) return false; + + XmlNode projectsNode = xd.SelectSingleNode("/config/projects"); + XmlAttribute xa; + + newPrj = xd.CreateElement("project"); + + xa = xd.CreateAttribute("id"); + xa.Value = project.Id; + newPrj.Attributes.Append(xa); + + xa = xd.CreateAttribute("name"); + xa.Value = project.Name; + newPrj.Attributes.Append(xa); + + xa = xd.CreateAttribute("encoding"); + xa.Value = project.RequestEncoding; + newPrj.Attributes.Append(xa); + + + //бַ + propertyNode = xd.CreateElement("listUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); + newPrj.AppendChild(propertyNode); + + //б + propertyNode = xd.CreateElement("listBlockRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); + newPrj.AppendChild(propertyNode); + + //ҳ + propertyNode = xd.CreateElement("pageUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); + newPrj.AppendChild(propertyNode); + + //˴ʹ + propertyNode = xd.CreateElement("filterWordsRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); + newPrj.AppendChild(propertyNode); + + //Թ + propertyNode = xd.CreateElement("propertyRules"); + XmlNode pn; + foreach (string pname in project.Rules) + { + pn = xd.CreateElement("add"); + + // + xa = xd.CreateAttribute("name"); + xa.Value = pname; + pn.Attributes.Append(xa); + pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); + + propertyNode.AppendChild(pn); + } + newPrj.AppendChild(propertyNode); + + projectsNode.AppendChild(newPrj); + xd.Save(configFilePath); + return true; + } + + /// + /// Ŀ + /// + /// + /// + /// + public bool SaveProject(string projectId, Project project) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode projectNode, + propertyNode; + + //ȡĿڵ + projectNode = + xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), projectId)); + + //ڵΪգ򷵻false + if (projectNode == null) return false; + + //µıѾ򷵻 + if (projectId != project.Id && + xd.SelectSingleNode(String.Format(String.Intern("/config/projects/project[@id=\"{0}\"]"), project.Id)) != + null) return false; + + projectNode.Attributes["id"].Value = project.Id; + projectNode.Attributes["name"].Value = project.Name; + projectNode.Attributes["encoding"].Value = project.RequestEncoding; + + //Ƴڵ + projectNode.RemoveChild(projectNode["listUriRule"]); + projectNode.RemoveChild(projectNode["listBlockRule"]); + projectNode.RemoveChild(projectNode["pageUriRule"]); + projectNode.RemoveChild(projectNode["filterWordsRule"]); + projectNode.RemoveChild(projectNode["propertyRules"]); + + /*********** ӽڵ ***************/ + + //бַ + propertyNode = xd.CreateElement("listUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListUriRule)); + projectNode.AppendChild(propertyNode); + + //б + propertyNode = xd.CreateElement("listBlockRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.ListBlockRule)); + projectNode.AppendChild(propertyNode); + + //ҳ + propertyNode = xd.CreateElement("pageUriRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.PageUriRule)); + projectNode.AppendChild(propertyNode); + + //˴ʹ + propertyNode = xd.CreateElement("filterWordsRule"); + propertyNode.AppendChild(xd.CreateCDataSection(project.FilterWordsRule)); + projectNode.AppendChild(propertyNode); + + //Թ + propertyNode = xd.CreateElement("propertyRules"); + XmlNode pn; + XmlAttribute xa; + foreach (string pname in project.Rules) + { + pn = xd.CreateElement("add"); + + // + xa = xd.CreateAttribute("name"); + xa.Value = pname; + pn.Attributes.Append(xa); + pn.AppendChild(xd.CreateCDataSection(project.Rules[pname])); + + propertyNode.AppendChild(pn); + } + projectNode.AppendChild(propertyNode); + + + // + xd.Save(configFilePath); + + return true; + } + + /// + /// ƳĿ + /// + /// + /// + public bool RemoveProject(Project project) + { + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + XmlNode prjsNode = xd.SelectSingleNode("/config/projects"); + XmlNode prjNode = xd.SelectSingleNode(String.Format("/config/projects/project[@id=\"{0}\"]", project.Id)); + if (prjNode == null) return false; + + prjsNode.RemoveChild(prjNode); + + xd.Save(configFilePath); + return true; + } + + public Project[] GetProjects() + { + if (projects == null) + { + Project pro; + XmlNodeList propertyNodes; + + //ļ + XmlDocument xd = new XmlDocument(); + xd.Load(configFilePath); + + //ȡĿб + XmlNodeList projectList = xd.SelectNodes("/config/projects/project"); + + projects = new Project[projectList.Count]; + + int i = 0; + + foreach (XmlNode node in projectList) + { + //ĿΪĿԹ + pro = new Project(); + pro.Rules = new PropertyRule(); + + pro.Id = node.Attributes["id"].Value; + pro.Name = node.Attributes["name"].Value; + pro.RequestEncoding = node.Attributes["encoding"].Value; + pro.ListUriRule = node["listUriRule"].InnerText; + pro.ListBlockRule = node["listBlockRule"].InnerText; + pro.PageUriRule = node["pageUriRule"].InnerText; + pro.FilterWordsRule = node["filterWordsRule"].InnerText; + + propertyNodes = + xd.SelectNodes(String.Format("/config/projects/project[@id=\"{0}\"]/propertyRules/add", pro.Id)); + foreach (XmlNode pnode in propertyNodes) + { + pro.Rules.Add(pnode.Attributes["name"].Value, pnode.InnerText); + } + projects[i] = pro; + ++i; + } + } + return projects; + } + + + /// + /// Ŀ + /// + public void ClearProjects() + { + projects = null; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs new file mode 100644 index 0000000..a8e155f --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/DataPack.cs @@ -0,0 +1,76 @@ +// +// Copyright 2011 @ S1N1.COM.all rights reseved. +// +// Project : Untitled +// File Name : DataPack.cs +// Date : 2011/8/25 +// Author : +// +// + +using System; +using System.Collections; +using System.Collections.Generic; + +namespace JR.DevFw.Toolkit.NetCrawl +{ + /// + /// ɼݰ + /// + public class DataPack : ICloneable, IEnumerable> + { + private PropertyRule property; + + /// + /// ݼ + /// + private IDictionary dict = new Dictionary(); + + public DataPack(PropertyRule property, string referenceUrl) + { + this.property = property; + this.ReferenceUrl = referenceUrl; + + foreach (string key in property) + { + dict.Add(key, key); + } + } + + /// + /// ɼԴַ + /// + public string ReferenceUrl { get; private set; } + + //ȡ + public string this[string key] + { + get { return dict.Keys.Contains(key) ? dict[key] : null; } + set + { + if (dict.Keys.Contains(key)) dict[key] = value; + else dict.Add(key, value); + } + } + + /// + /// ¡һµDataPack󣬲 + /// + /// + object ICloneable.Clone() + { + DataPack pack = new DataPack(property, this.ReferenceUrl); + return pack; + } + + public IEnumerator> GetEnumerator() + { + foreach (KeyValuePair pair in dict) yield return pair; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/J6.DevFw.Toolkit.NetCrawl.csproj b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/J6.DevFw.Toolkit.NetCrawl.csproj similarity index 93% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/J6.DevFw.Toolkit.NetCrawl.csproj rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/J6.DevFw.Toolkit.NetCrawl.csproj index c0ad839..9e803be 100644 --- a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/J6.DevFw.Toolkit.NetCrawl.csproj +++ b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/J6.DevFw.Toolkit.NetCrawl.csproj @@ -8,8 +8,8 @@ {74914743-7506-414A-8F6B-45E5479F0127} Library Properties - J6.DevFw.Toolkit.NetCrawl - J6.DevFw.Toolkit.NetCrawl + JR.DevFw.Toolkit.NetCrawl + jrdev.toolkit.netcrawl v4.0 512 publish\ @@ -57,6 +57,7 @@ + @@ -110,12 +111,6 @@ WebManageResource.Designer.cs - - - {44e05d6c-5b0a-453a-913f-00124d1bf435} - AtNet.DevFw.Core - - + +${navigator} + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            + ${customHtml} +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            + 根据单页地址采集 +
                                                                                                                                            页面地址规则为:${pageUriRule}
                                                                                                                                            +   输入地址: +
                                                                                                                                            + +
                                                                                                                                            + 根据列表参数采集 +
                                                                                                                                            + 列表地址规则为:${listUriRule}
                                                                                                                                            +
                                                                                                                                            参数为规则{0}部分
                                                                                                                                            +
                                                                                                                                            +   输入参数: +
                                                                                                                                            + +
                                                                                                                                            + 根据列表地址采集 +
                                                                                                                                            + 地址填写提示:直接输入包含采集内容链接的列表地址,可与列表规则完全匹配。
                                                                                                                                            +
                                                                                                                                            + 也可以输入与 + 列表块规则:${listBlockRule}匹配的页面地址。 +
                                                                                                                                            +
                                                                                                                                            + +   输入地址: +
                                                                                                                                            + +
                                                                                                                                            + +
                                                                                                                                            + + + + \ No newline at end of file diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/partial_navigator.html b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/partial_navigator.html similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/partial_navigator.html rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/partial_navigator.html diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/project_list.html diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/test_result.html b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/test_result.html similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/test_result.html rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/test_result.html diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/update_project.html b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/update_project.html similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/update_project.html rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/update_project.html diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/welcome_page.html b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/welcome_page.html similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/welcome_page.html rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/html_template/welcome_page.html diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/images/webmanagestyle.css b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/images/webmanagestyle.css similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/images/webmanagestyle.css rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManage/images/webmanagestyle.css diff --git a/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs new file mode 100644 index 0000000..3e8d840 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.Designer.cs @@ -0,0 +1,381 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace JR.DevFw.Toolkit.NetCrawl { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class WebManageResource { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal WebManageResource() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JR.DevFw.Toolkit.NetCrawl.WebManageResource", typeof(WebManageResource).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + ///<head> + /// <title>创建项目-${subtitle}</title> + /// ${ct_css} + ///</head> + ///<body> + /// + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator} + /// + ///<span id="msg"></span> + /// + ///<form action="" target="ct_ifr" method="post" enctype="application/x-www-form-urlencoded"> /// [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string create_project { + get { + return ResourceManager.GetString("create_project", resourceCulture); + } + } + + /// + /// 查找类似 <html> + ///<head> + /// <title>删除项目-${subtitle}</title> + /// ${ct_css} + ///</head> + ///<body> + /// + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator} + ///<br/> + ///<div class="delete"> + /// + /// ${msg} + /// + ///</div> + ///</body> + ///</html> 的本地化字符串。 + /// + internal static string delete_project { + get { + return ResourceManager.GetString("delete_project", resourceCulture); + } + } + + /// + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + ///<head> + /// <title>错误提示</title> + /// ${ct_css} + ///</head> + ///<body> + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator}<br/><br/> + ///${msg} + /// + ///</body> + ///</html> 的本地化字符串。 + /// + internal static string error { + get { + return ResourceManager.GetString("error", resourceCulture); + } + } + + /// + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + ///<head> + /// <title>开始采集-${subtitle}</title> + /// ${ct_css} + ///</head> + ///<body> + /// + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator} + /// + ///<br/> + ///<form action="" method="post" target="ct_ifr" enctype="application/x-www-form-urlencoded"> + /// <input name="ct_typ [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string invoke_collect { + get { + return ResourceManager.GetString("invoke_collect", resourceCulture); + } + } + + /// + /// 查找类似 <div class="navigator"> + /// <a href="?action=createproject">创建新项目</a> | + /// <a href="?action=list">项目管理</a> | + /// <a href="?action=help">使用说明</a> + ///</div> 的本地化字符串。 + /// + internal static string partial_navigator { + get { + return ResourceManager.GetString("partial_navigator", resourceCulture); + } + } + + /// + /// 查找类似 <html> + ///<head> + /// <title>项目列表-${subtitle}</title> + /// ${ct_css} + ///</head> + ///<body> + /// + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator} + /// + ///<div id="projectlist"> + /// + /// <!-- + /// <div class="project"> + /// + /// <h2> + /// <strong>项目名称:测试项目(编号:neteasy)</strong> + /// </h2> + /// <div class="details"> + /// [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string project_list { + get { + return ResourceManager.GetString("project_list", resourceCulture); + } + } + + /// + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + ///<head> + /// <title>测试结果</title> + ///</head> + ///<body> + /// + ///</body> + ///</html> 的本地化字符串。 + /// + internal static string test_result { + get { + return ResourceManager.GetString("test_result", resourceCulture); + } + } + + /// + /// 查找类似 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + ///<html> + ///<head> + /// <title>修改项目-${subtitle}</title> + /// ${ct_css} + ///</head> + ///<body> + /// + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator} + /// + ///<span id="msg"></span> + /// + ///<form action="" target="ct_ifr" method="post" enctype="application/x-www-form-urlencoded"> /// [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string update_project { + get { + return ResourceManager.GetString("update_project", resourceCulture); + } + } + + /// + /// 查找类似 body { + /// font-size: 12px; + /// color: #666; + /// font-family: arail, sans-serif; + ///} + /// + ///p { + /// text-indent: 2em; + /// margin: 0; + /// padding: 5px 0; + ///} + /// + ///a { color: #0066cc; } + /// + ///a:hover { color: #006699; } + /// + ///input, textarea, select { border: solid 1px #e5e5e5; } + /// + ///input.button { + /// border: outset 1px #e5e5e5; + /// margin-right: 5px; + /// color: #666; + /// padding: 0 8px; + ///} + /// + ///span.txt { + /// float: left; + /// padding-right: 10px; + ///} + /// + ///div.project_operate { + /// text-align: right; + /// padding-r [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string webmanagestyle { + get { + return ResourceManager.GetString("webmanagestyle", resourceCulture); + } + } + + /// + /// 查找类似 <html> + ///<head> + /// <title>欢迎使用asp.net采集插件</title> + /// ${ct_css} + ///</head> + ///<body> + /// + ///<!-- + /// + ///// + ///// Copyright 2011 @ S1N1.COM,All rights reseved. + ///// Project : 奥博网站管理系统 + ///// Name : 采集组件 + ///// Author : Newmin (newmin.net@gmail.com) + ///// Create : 2011/08/27 15:27 + ///// Product Link: http://www.ops.cc + ///// + /// + ///--> + /// + ///${navigator} + ///<p> + /// 欢迎您使用这款asp.net采集组件,本组件由奥博科技(<a href="http://www.ops.cc" target="_blank">www.ops.cc</a>)开发!<br/> + /// 如您在使用过程中遇到任何问题,或您对这款产品由好的建议,欢迎上我们网站反馈!谢谢! + ///</p> + ///</body> + ///</html> 的本地化字符串。 + /// + internal static string welcome_page { + get { + return ResourceManager.GetString("welcome_page", resourceCulture); + } + } + } +} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.resx b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.resx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.resx rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/WebManageResource.resx diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/NetCrawl/config/picker.conf diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj.user b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj.user similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.csproj.user diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.pidb b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.pidb similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.pidb rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/PickerTestApp.pidb diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/Program.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/Program.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/Program.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/Program.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/Properties/AssemblyInfo.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/Properties/AssemblyInfo.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/ExtendAttr.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/ExtendAttr.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/ExtendAttr.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/ExtendAttr.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/TestToEntity.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/TestToEntity.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/TestToEntity.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/ToEntity/TestToEntity.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/app.config b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/app.config similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/app.config rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/app.config diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/db.db b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/db.db similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/db.db rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/db.db diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/test.db b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/test.db similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestApp/test.db rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestApp/test.db diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/1.aspx b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/1.aspx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/1.aspx rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/1.aspx diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj.user b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj.user similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.csproj.user diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.pidb b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.pidb similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.pidb rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/PickerTestWeb.pidb diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/Properties/AssemblyInfo.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/Properties/AssemblyInfo.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/Web.config b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/Web.config similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/Web.config rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/Web.config diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/picker.conf b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/picker.conf similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/picker.conf rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/picker.conf diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/tags.conf b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/tags.conf similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/tags.conf rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/config/tags.conf diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.designer.cs b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.designer.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.designer.cs rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.aspx.designer.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.htm b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.htm similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.htm rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/default.htm diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/tags.cfg b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/tags.cfg similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/tags.cfg rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/tags.cfg diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/tagsplugin.cfg b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/tagsplugin.cfg similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/tagsplugin.cfg rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/tagsplugin.cfg diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/ct.ashx b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/ct.ashx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/ct.ashx rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/ct.ashx diff --git a/src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/tag.ashx b/src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/tag.ashx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/tag.ashx rename to src/toolkit/J6.DevFw.Toolkit.NetCrawl/PickerTestWeb/test/tag.ashx diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/ConsoleApplication1/ConsoleApplication1.csproj b/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/ConsoleApplication1.csproj similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/ConsoleApplication1/ConsoleApplication1.csproj rename to src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/ConsoleApplication1.csproj diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/ConsoleApplication1/Program.cs b/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Program.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/ConsoleApplication1/Program.cs rename to src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Program.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/ConsoleApplication1/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Properties/AssemblyInfo.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/ConsoleApplication1/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.Region/ConsoleApplication1/Properties/AssemblyInfo.cs diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region.sln b/src/toolkit/J6.DevFw.Toolkit.Region/com.region.sln similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region.sln rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region.sln diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj.user b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj.user similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj.user rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/AtNet.DevFw.Toolkit.Region.csproj.user diff --git a/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Define.cs b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Define.cs new file mode 100644 index 0000000..3ea14f5 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Define.cs @@ -0,0 +1,17 @@ +using System.Text.RegularExpressions; + +namespace JR.DevFw.Toolkit.Region +{ + public static class Define + { + public static string Provinces =OptXml(RegionRes.provinces); + public static string Cities = OptXml(RegionRes.cities); + public static string Districts=OptXml(RegionRes.districts); + + static string OptXml(string xmlContent) + { + xmlContent = Regex.Replace(xmlContent, "(\n|\r)\\s*", ""); + return xmlContent; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Entity.cs b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Entity.cs new file mode 100644 index 0000000..c2d7039 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Entity.cs @@ -0,0 +1,25 @@ +namespace JR.DevFw.Toolkit.Region +{ + public struct Province + { + public int ID { get; set; } + public string Name { get; set; } + public string Text { get; set; } + } + public struct City + { + public int ID { get; set; } + public int Pid { get; set; } + public string Zip { get; set; } + public string Name { get; set; } + public string Text { get; set; } + } + + public struct District + { + public int ID { get; set; } + public int Cid { get; set; } + public string Name { get; set; } + public string Text { get; set; } + } +} \ No newline at end of file diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/J6.DevFw.Toolkit.Region.csproj b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/J6.DevFw.Toolkit.Region.csproj similarity index 96% rename from J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/J6.DevFw.Toolkit.Region.csproj rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/J6.DevFw.Toolkit.Region.csproj index 1196a18..fdf6a0d 100644 --- a/J6/src/toolkit/J6.DevFw.Toolkit.Region/com.region/J6.DevFw.Toolkit.Region.csproj +++ b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/J6.DevFw.Toolkit.Region.csproj @@ -8,8 +8,8 @@ {84942A04-73A1-447A-9D39-CC1CF88B5158} Library Properties - J6.DevFw.Toolkit.Region - J6.DevFw.Toolkit.Region + JR.DevFw.Toolkit.Region + jrdev.toolkit.region v4.0 512 diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Properties/AssemblyInfo.cs similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/Properties/AssemblyInfo.cs diff --git a/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Region.cs b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Region.cs new file mode 100644 index 0000000..8838fcf --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/Region.cs @@ -0,0 +1,156 @@ +using System.Collections.Generic; +using System.Xml; + +namespace JR.DevFw.Toolkit.Region +{ + public static class Region + { + #region 获取基本数据 + + private static IEnumerable provinces; + public static IEnumerable Provinces + { + get + { + if (provinces == null) + { + provinces = GetProvinces(); + } + return provinces; + } + } + + private static IEnumerable cities; + public static IEnumerable Cities + { + get + { + if (cities == null) + { + cities = GetCitys(); + } + return cities; + } + } + + private static IEnumerable districts; + public static IEnumerable Districts + { + get + { + if (districts == null) + { + districts = GetDistricts(); + } + return districts; + } + } + + + private static IEnumerable GetProvinces() + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(Define.Provinces); + + string name; + + foreach (XmlNode xn in xd.SelectNodes("/items/item")) + { + name = xn.Attributes[1].Value; + yield return new Province + { + ID = int.Parse(xn.Attributes[0].Value), + Name = name, + Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() + }; + } + } + + + private static IEnumerable GetCitys() + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(Define.Cities); + + string name; + + foreach (XmlNode xn in xd.SelectNodes("/items/item")) + { + name = xn.Attributes[1].Value; + yield return new City + { + ID = int.Parse(xn.Attributes[0].Value), + Pid = int.Parse(xn.Attributes[2].Value), + Name = name, + Zip = xn.Attributes[3].Value, + Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() + }; + } + } + + private static IEnumerable GetDistricts() + { + XmlDocument xd = new XmlDocument(); + xd.LoadXml(Define.Districts); + + string name; + + foreach (XmlNode xn in xd.SelectNodes("/items/item")) + { + name = xn.Attributes[1].Value; + yield return new District + { + ID = int.Parse(xn.Attributes[0].Value), + Cid = int.Parse(xn.Attributes[2].Value), + Name = name, + Text = xn.InnerText.Trim() == "" ? name : xn.InnerText.Trim() + }; + } + } + + #endregion + + + public static IEnumerable GetCities(int provinceID) + { + foreach (City c in Cities) + { + if (c.Pid == provinceID) + yield return c; + } + } + + public static IEnumerable GetDistricts(int cityID) + { + foreach (District d in Districts) + { + if (d.Cid == cityID) + yield return d; + } + } + + public static Province GetProvince(string provinceName) + { + foreach (Province p in Provinces) + { + if (string.Compare(p.Name, provinceName,true)==0) + { + return p; + } + } + return default(Province); + } + + public static City GetCity(string cityName) + { + foreach (City p in Cities) + { + if (string.Compare(p.Name, cityName, true) == 0) + { + return p; + } + } + return default(City); + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs new file mode 100644 index 0000000..7bca273 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.Designer.cs @@ -0,0 +1,148 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace JR.DevFw.Toolkit.Region { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class RegionRes { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal RegionRes() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JR.DevFw.Toolkit.Region.RegionRes", typeof(RegionRes).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找类似 <?xml version="1.0" encoding="utf-8"?> + ///<items> + /// <item id="1" name="北京市" pid="1" zip="100000"></item> + /// <item id="2" name="天津市" pid="2" zip="100000"></item> + /// <item id="3" name="石家庄市" pid="3" zip="050000"></item> + /// <item id="4" name="唐山市" pid="3" zip="063000"></item> + /// <item id="5" name="秦皇岛市" pid="3" zip="066000"></item> + /// <item id="6" name="邯郸市" pid="3" zip="056000"></item> + /// <item id="7" name="邢台市" pid="3" zip="054000"></item> + /// <item id="8" name="保定市" pid="3" zip="071000"></item> + /// <item id="9 [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string cities { + get { + return ResourceManager.GetString("cities", resourceCulture); + } + } + + /// + /// 查找类似 <?xml version="1.0" encoding="utf-8"?> + ///<items> + /// <item id="1" name="东城区" cid="1"></item> + /// <item id="2" name="西城区" cid="1"></item> + /// <item id="3" name="崇文区" cid="1"></item> + /// <item id="4" name="宣武区" cid="1"></item> + /// <item id="5" name="朝阳区" cid="1"></item> + /// <item id="6" name="丰台区" cid="1"></item> + /// <item id="7" name="石景山区" cid="1"></item> + /// <item id="8" name="海淀区" cid="1"></item> + /// <item id="9" name="门头沟区" cid="1"></item> + /// <item id="10" name="房山区" cid="1"></item> + /// <item id="11" name="通州区" cid [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string districts { + get { + return ResourceManager.GetString("districts", resourceCulture); + } + } + + /// + /// 查找类似 USE [DBCT_Dev] + ///GO + ///IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[S_Province]') AND type in (N'U')) + ///BEGIN + ///CREATE TABLE [dbo].[S_Province]( + /// [ProvinceID] [bigint] IDENTITY(1,1) NOT NULL, + /// [ProvinceName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + /// [DateCreated] [datetime] NULL, + /// [DateUpdated] [datetime] NULL, + /// CONSTRAINT [PK_S_Province] PRIMARY KEY CLUSTERED + ///( + /// [ProvinceID] ASC + ///)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OF [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string pcd_AllData_V1 { + get { + return ResourceManager.GetString("pcd_AllData_V1", resourceCulture); + } + } + + /// + /// 查找类似 <?xml version="1.0" encoding="utf-8"?> + ///<items> + /// <item id="1" name="北京市"></item> + /// <item id="2" name="天津市"></item> + /// <item id="3" name="河北省"></item> + /// <item id="4" name="山西省"></item> + /// <item id="5" name="内蒙古自治区"></item> + /// <item id="6" name="辽宁省"></item> + /// <item id="7" name="吉林省"></item> + /// <item id="8" name="黑龙江省"></item> + /// <item id="9" name="上海市"></item> + /// <item id="10" name="江苏省"></item> + /// <item id="11" name="浙江省"></item> + /// <item id="12" name="安徽省"></item> + /// <item id="13" name="福建省"></item> + /// [字符串的其余部分被截断]"; 的本地化字符串。 + /// + internal static string provinces { + get { + return ResourceManager.GetString("provinces", resourceCulture); + } + } + } +} diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/RegionRes.resx b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.resx similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/RegionRes.resx rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/RegionRes.resx diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/cities.xml b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/cities.xml similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/cities.xml rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/cities.xml diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/districts.xml b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/districts.xml similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/districts.xml rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/districts.xml diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/pcd_AllData_V1.sql b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/pcd_AllData_V1.sql similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/pcd_AllData_V1.sql rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/pcd_AllData_V1.sql diff --git a/src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/provinces.xml b/src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/provinces.xml similarity index 100% rename from src/toolkit/AtNet.DevFw.Toolkit.Region/com.region/res/provinces.xml rename to src/toolkit/J6.DevFw.Toolkit.Region/com.region/res/provinces.xml diff --git a/src/toolkit/J6.DevFw.Toolkit.Tags/HttpTags.cs b/src/toolkit/J6.DevFw.Toolkit.Tags/HttpTags.cs new file mode 100644 index 0000000..573843b --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.Tags/HttpTags.cs @@ -0,0 +1,346 @@ +using System; +using System.Data; +using System.Text; +using System.Text.RegularExpressions; +using System.Web; + +namespace JR.DevFw.Toolkit.Tags +{ + public class HttpTags + { + private HttpRequest request; + private HttpResponse response; + + /// + /// 默认的配置路径 + /// + private static string defaultConfigPath = AppDomain.CurrentDomain.BaseDirectory + "config/tags.conf"; + + //配置路径,如果URI参数config未指定则为默认路径 + private string configPath; + + public TagsManager Tags; + + public HttpTags():this(null) + { + } + public HttpTags(string configPath) + { + this.configPath = configPath; + + //获取配置文件的路径 + if (String.IsNullOrEmpty(configPath)) + { + this.configPath = AppDomain.CurrentDomain.BaseDirectory + request.QueryString["config"]; + } + + //创建标签管理器对象 + Tags = new TagsManager(configPath); + } + + /// + /// 处理请求 + /// + /// + /// + public void ProcessRequest(HttpContext context,string pageContent) + { + request = context.Request; + response = context.Response; + + + + //获取请求方式,确定执行的方法 + string method = request.HttpMethod; + if (method == "GET") + { + string action = request.QueryString["tag.action"]; + if (String.IsNullOrEmpty(action)) + { + Dispaly_TagsList(String.IsNullOrEmpty(pageContent)?Resource.tagsmanager:pageContent); + } + else if (action == "test") + { + Invoke_TestReplace(); + } + } + else + { + string action = request.Form["tag.action"]; + + switch (action) + { + case "save": SaveTags(); break; + case "delete": DeleteTags(); break; + case "create": CreateTags(); break; + } + } + + } + + public void ProcessRequest(HttpContext context) + { + this.ProcessRequest(context, null); + } + + + private void CreateTags() + { + string msg=String.Empty; + + string name = request.Form["name"], + linkUri = request.Form["linkuri"], + description = request.Form["description"]; + + StringBuilder sb = new StringBuilder(); + //if (string.IsNullOrEmpty(id)) + //{ + // sb.Append("编号不能为空!"); + //} + //if(!Regex.IsMatch(id,"^[a-zA-Z0-9]+$")) + //{ + // sb.Append("编号必须为字母和数字"); + //} + + if (String.IsNullOrEmpty(name)) + { + sb.Append("名称不能为空!"); + } + if (sb.Length != 0) + { + msg = sb.ToString(); + goto tip; + } + + bool result =Tags.Add(new Tag + { + Name = name, + LinkUri = linkUri, + Description = description + }); + + msg = result ? "添加成功" : "已经存在相同的标签"; + tip: + response.Write(String.Format("", msg)); + + } + + /// + /// 删除Tags + /// + private void DeleteTags() + { + string msg; + + /* + if (tagsManager.Tags.Count == 1) + { + msg = "请保留至少一个标签"; goto tip; + }*/ + + Regex reg = new Regex("^(?!action|name|link|des|id|linkuri|description)[a-zA-Z0-9]+$"); + + int i = 0; + foreach (string key in request.Form) + { + if (reg.IsMatch(key)) + { + Tags.Delete(key); + i++; + } + } + msg = i == 0 ? "没选择要删除的项目!" : "删除成功"; + + tip: + response.Write(String.Format("",msg)); + } + + /// + /// 保存Tags + /// + private void SaveTags() + { + string msg; + + Regex reg = new Regex("^name_([a-zA-Z0-9]+)$"); + + int i = 0; + string id; + foreach (string key in request.Form) + { + if (reg.IsMatch(key)) + { + id = reg.Match(key).Groups[1].Value; + + Tags.Update(new Tag + { + Indent=int.Parse(id), + Name = request["name_" + id], + LinkUri = request["link_" + id], + Description = request["des_" + id] + }); + + i++; + } + } + msg = i == 0 ? "没有保存的项!" : "保存成功"; + + response.Write(String.Format("", msg)); + } + + + /// + /// 显示标签列表 + /// + private void Dispaly_TagsList(string pageContent) + { + string tagsHtml; + + int pageIndex; + + int.TryParse(request.QueryString["page"], out pageIndex); + if (pageIndex < 1) pageIndex = 1; + + StringBuilder sb = new StringBuilder(); + + Regex reg=new Regex("\\$\\{([a-zA-Z]+)\\}"); + + DataSet ds = new DataSet(); + ds.ReadXml(configPath); + + /* + //获取分页链接 + for (int i = 0; i < ps.PageCount; i++) + { + sb.Append("") + .Append((i + 1).ToString()).Append(""); + } + + pagerHtml = sb.ToString(); + sb.Remove(0, sb.Length); + */ + + if (Tags.Tags.Count > 0) + { + foreach (Tag tag in Tags.Tags) + { + sb.Append("
                                                                                                                                            ").Append(tag.Name).Append("") + .Append(tag.LinkUri).Append("") + .Append(tag.Description).Append("修改
                                                                                                                                            暂无tags!
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            商户号:
                                                                                                                                            支付版本号:
                                                                                                                                            订单号:
                                                                                                                                            订单金额:
                                                                                                                                            货币代码:
                                                                                                                                            订单日期:
                                                                                                                                            交易类型:
                                                                                                                                            后台返回地址:
                                                                                                                                            页面返回地址:
                                                                                                                                            网关号:
                                                                                                                                            备注:
                                                                                                                                            签名:
                                                                                                                                            + + "; + + + decimal product_fee = (decimal)hash["order_fee"]; //商品费用 + decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 + + string MerId = ChinaPaySignData.MerchantID;//商户号 + string OrdId = hash["order_no"] as string;//订单号 + string TransAmt = String.Format("{0:D12}",(int)((product_fee + transport_fee)*100));//订单金额 + string CuryId = "156";//货币代码 (人民币) + string TransDate = DateTime.Now.ToString("yyyyMMdd");//订单日期 + string TransType = "0001"; //交易类型 + string Priv1 = hash["order_desc"] as string;//备注 + + + //准备签名的数据 + string plain = MerId + OrdId + TransAmt + CuryId + TransDate + TransType + Priv1; + + string ChkValue = null; + //Response.Write("MerId:" + MerId); + ChkValue = ChinaPaySignData.sign(MerId, plain); + //Response.Write("ChkValue:" + ChkValue); + + //签名长度256位 + if (ChkValue == null || ChkValue.Length != 256) + { + return "签名不正确,无法支付!"; + } + + return gatewayHTML.Template( + MerId, + "20070129", + OrdId, + TransAmt, + CuryId, + TransDate, + TransType, + PayUtil.GetNotifyUrl(PayMethods.ChinaPay, PayApiType.Normal), + PayUtil.GetReturnUrl(PayMethods.ChinaPay, PayApiType.Normal), + "", //网关留空,为银联支付 + Priv1, + ChkValue); + } + + public PaidHandleResult Return(PayMointor proc) where T:class + { + var request = HttpContext.Current.Request; + + string MerId = request["MerId"];//商户号 + string OrdId = request["OrderNo"];//订单号 + string TransAmt = request["Amount"];//订单金额 + string CuryId = request["CurrencyCode"];//货币代码 + string TransDate = request["TransDate"];//订单日期 + string TransType = request["TransType"];//交易类型 + string Priv1 = request["Priv1"];//备注 + string GateId = request["GateId"];//网关 + string status = request["status"]; + + proc.Init(OrdId); + + string CheckValue = request["checkvalue"];//签名数据 + bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); + if (res) + { + return PaidHandleResult.Fail; + } + else + { + return PaidHandleResult.Success; + } + + } + + public string Notify(PayMointor proc) where T : class + { + + var request = HttpContext.Current.Request; + + string MerId = request["MerId"];//商户号 + string OrdId = request["OrderNo"];//订单号 + string TransAmt = request["Amount"];//订单金额 + string CuryId = request["CurrencyCode"];//货币代码 + string TransDate = request["TransDate"];//订单日期 + string TransType = request["TransType"];//交易类型 + string Priv1 = request["Priv1"];//备注 + string GateId = request["GateId"];//网关 + string status = request["status"]; + + proc.Init(OrdId); + + string CheckValue = request["checkvalue"];//签名数据 + bool res = ChinaPaySignData.check(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, CheckValue); + if (res) + { + proc.PaidFail(); + return "0"; + } + else + { + proc.PaidSuccess(); + return "1"; + + } + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs new file mode 100644 index 0000000..e9eb229 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ChinaPay/ChinaPaySignData.cs @@ -0,0 +1,74 @@ +using System; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay +{ + public class ChinaPaySignData + { + internal static string PrivateKeyPath = ""; + internal static string PublicKeyPath = ""; + internal static string MerchantID = "808080201301103"; + + static ChinaPaySignData() + { + PrivateKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/prk.key"; + PublicKeyPath = AppDomain.CurrentDomain.BaseDirectory + "uploads/resources/cpkey/pk.key"; + } + + //签名 + public static string sign(string MerId, string plain) + { + global::NetPay netPay = new global::NetPay(); + Boolean flag = netPay.buildKey(MerId, 0, ChinaPaySignData.PrivateKeyPath); + string sign = null; + if (flag) + { + if (netPay.PrivateKeyFlag) + { + sign = netPay.Sign(plain); + } + } + return sign; + + } + + //验签 + public static bool check(string MerId, string OrdId, string TransAmt, string CuryId, string TransDate, string TransType, string status, string ChkValue) + { + + global::NetPay netPay = new global::NetPay(); + Boolean flag = netPay.buildKey(ChinaPaySignData.MerchantID, 0, ChinaPaySignData.PublicKeyPath); + if (flag) + { + if (netPay.PublicKeyFlag) + { + flag = netPay.verifyTransResponse(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, status, ChkValue); + } + else + { + flag = false; + } + } + else + { + flag = false; + } + + return flag; + + } + + + //得到交易日期 + public static string getTransDate() + { + return DateTime.Now.ToString("yyyyMMdd"); + } + + //得到订单号16位 + public static string getOrdId() + { + return DateTime.Now.ToString("yyyyMMHHmmffffff"); + } + + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs new file mode 100644 index 0000000..f0e1122 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/IPay.cs @@ -0,0 +1,43 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : IPay.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System.Collections; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + public interface IPay + { + /// + /// 获取支付请求,可返回链接或表单 + /// + /// + /// + string GetPayRequest(Hashtable hash); + + /// + /// 返回信息 + /// + /// + /// + PaidHandleResult Return(PayMointor proc) where T : class; + + /// + /// 主动通知 + /// + /// + /// + /// + string Notify(PayMointor proc) where T : class; + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs new file mode 100644 index 0000000..f015def --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidHandleResult.cs @@ -0,0 +1,37 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PaidHandleResult.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + /// + /// 支付处理结果 + /// + public enum PaidHandleResult + { + + /// + /// 支付成功 + /// + Success, + + /// + /// 支付失败 + /// + Fail, + /// + /// 准备支付 + /// + Repair + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs new file mode 100644 index 0000000..1a164c4 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaidMointor.cs @@ -0,0 +1,133 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PaidHandler.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + /// + /// 支付时处理方法 + /// + /// + /// + public delegate void PaidHandler(T t) where T : class; + + public delegate void PaidAsyncHandler(T t,PaymentAsyncState state) where T : class; + + /// + /// 支付同步状态 + /// + public enum PaymentAsyncState + { + WAIT_BUYER_PAY, + WAIT_SELLER_SEND_GOODS + } + + /// + /// + /// + public sealed class PayMointor where T : class + { + /// + /// 当初始化时发生,通常用于根据订单号获取订单 + /// + public event PaidHandler OnInit; + + /// + /// 支付成功 + /// + public event PaidHandler OnSuccessed; + + /// + /// 同步状态 + /// + public event PaidAsyncHandler OnAsync; + + /// + /// 准备支付 + /// + public event PaidHandler OnRepairPay; + + /// + /// 当支付失败时 + /// + public event PaidHandler OnFailed; + + private T instance; + + public T Instance { get { return instance; } set { instance = value; } } + + public PayMointor(T t) + { + this.instance = t; + } + + /// + /// 支付成功 + /// + public void PaidSuccess() + { + if (this.OnSuccessed != null) + { + this.OnSuccessed(this.instance); + } + } + + /// + /// 支付失败 + /// + public void PaidFail() + { + if (this.OnFailed != null) + { + this.OnFailed(this.instance); + } + } + + /// + /// 准备支付 + /// + public void RepairPay() + { + if (this.OnRepairPay != null) + { + this.OnRepairPay(this.instance); + } + } + + /// + /// 同步状态 + /// + /// + public void AsyncState(PaymentAsyncState state) + { + if (OnAsync != null) + { + OnAsync(this.instance,state); + } + } + + /// + /// 初始化 + /// + /// + public void Init(string orderNo) + { + if (this.OnInit != null) + { + this.OnInit(orderNo); + } + } + + } + +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs new file mode 100644 index 0000000..b3b6b21 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayApiType.cs @@ -0,0 +1,42 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayApiType.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + /// + /// 支付接口 + /// + public enum PayApiType + { + /// + /// 标准双接口 + /// + Normal = 1, + + /// + /// 担保交易 + /// + Guarantee = 2, + + /// + /// 即时到帐 + /// + Direct = 3, + + /// + /// 手机网站支付 + /// + Mobile=4 + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs new file mode 100644 index 0000000..8becdb1 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayMethods.cs @@ -0,0 +1,49 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayMethods.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + /// + /// 支付方式 + /// + public enum PayMethods + { + + /// + /// 未指定 + /// + Unknown = -1, + + /// + /// 支付宝 + /// + Alipay = 1, + + /// + /// 腾讯财付通 + /// + Tenpay = 2, + + + /// + /// 银联支付 + /// + ChinaPay = 3, + + /// + /// 在线支付 + /// + OnlinePay = 4 + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs new file mode 100644 index 0000000..9c9d105 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PayUtil.cs @@ -0,0 +1,290 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayApiType.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Linq; +using System.Text; +using System.Web; +using JR.DevFw.Toolkit.ThirdApi.NetPay.Alipay; +using JR.DevFw.Toolkit.ThirdApi.NetPay.ChinaPay; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + public static class PayUtil + { + /// + /// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组 + /// + /// request回来的信息组成的数组 + internal static SortedDictionary GetRequestGet() + { + int i = 0; + SortedDictionary sPara = new SortedDictionary(); + NameValueCollection coll; + //Load Form variables into NameValueCollection variable. + + var request = HttpContext.Current.Request; + coll = request.QueryString; + + // Get names of all forms into a string array. + String[] requestItem = coll.AllKeys; + + for (i = 0; i < requestItem.Length; i++) + { + sPara.Add(requestItem[i], request.QueryString[requestItem[i]]); + } + + return sPara; + } + /// + /// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组 + /// + /// request回来的信息组成的数组 + internal static SortedDictionary GetRequestPost() + { + int i = 0; + SortedDictionary sPara = new SortedDictionary(); + NameValueCollection coll; + //Load Form variables into NameValueCollection variable. + var request = HttpContext.Current.Request; + coll = request.Form; + //coll = request.QueryString; + + // Get names of all forms into a string array. + String[] requestItem = coll.AllKeys; + + for (i = 0; i < requestItem.Length; i++) + { + sPara.Add(requestItem[i], request.Form[requestItem[i]]); + } + + return sPara; + } + + + /// + /// 设置支付日志记录 + /// + /// + public static void SetLogMessage(string msg) + { + global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] = msg; + } + + /// + /// 获取支付日志记录 + /// + /// + public static string GetLogMessage() + { + return global::System.Web.HttpContext.Current.Session["$shop.orderpay_message"] as string; + } + + /// + /// 获取提示的地址 + /// + /// 支付方式编号 + /// 接口类型,默认为1 + /// + internal static string GetNotifyUrl(PayMethods ap, PayApiType at) + { + global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; + + return String.Format("http://{0}{1}/netpay/notify_{2}_{3}.html", + req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); + } + + /// + /// 获取返回的地址 + /// + /// 支付方式编号 + /// 接口类型,默认为1 + /// + internal static string GetReturnUrl(PayMethods ap, PayApiType at) + { + global::System.Web.HttpRequest req = global::System.Web.HttpContext.Current.Request; + + + return String.Format("http://{0}{1}/netpay/return_{2}_{3}.html", + req.Url.Host, req.Url.Port == 80 ? "" : ":" + req.Url.Port, ((int)ap).ToString(), ((int)at).ToString()); + + /* + return String.Format("http://{0}{1}/pay/return_{2}_{3}.html", + "www.lmgdto.com","", ((int)ap).ToString(), ((int)at).ToString()); + */ + } + + + /// + /// 获取网关地址 + /// + /// + /// + /// + /// + public static string GetGatewayStr(PayMethods pm, PayApiType pt, Hashtable ht) + { + IPay _pay = null; + if (pm == PayMethods.Alipay) + { + if (ht.Contains("bank")) + { + pt = PayApiType.Direct; + } + + if (pt == PayApiType.Direct) + { + _pay = new AlipayRedirect(); + } + else if (pt == PayApiType.Normal) + { + _pay = new AlipayNormal(); + } + else if(pt== PayApiType.Mobile) + { + + _pay=new AlipayMobile(); + } + else + { + _pay = new AlipayComfireApi(); + } + + } + else if (pm == PayMethods.Tenpay) + { + //财付通默认支持所有 + _pay = new Tenpay.Tenpay(); + } + else if (pm == PayMethods.ChinaPay) + { + _pay = new ChinaPayApi(); + } + + + return _pay == null ? String.Empty : _pay.GetPayRequest(ht); + + + } + + + + public static PaidHandleResult PayReturn(PayMethods pm, PayApiType pt, PayMointor proc) where T:class + { + IPay _pay = null; + if (pm == PayMethods.Alipay) + { + if (pt == PayApiType.Direct) + { + _pay = new AlipayRedirect(); + } + else if (pt == PayApiType.Normal) + { + _pay = new AlipayNormal(); + } + else if(pt== PayApiType.Mobile) + { + _pay=new AlipayMobile(); + } + else + { + _pay = new AlipayComfireApi(); + } + + } + else if (pm == PayMethods.Tenpay) + { + //财付通默认支持所有 + _pay = new Tenpay.Tenpay(); + } + else if (pm == PayMethods.ChinaPay) + { + _pay = new ChinaPayApi(); + } + + + if (_pay == null) + { + SetLogMessage("不支持的支付方式"); + return PaidHandleResult.Fail; + } + else + { + return _pay.Return(proc); + } + } + + public static string PayNotify(PayMethods pm, PayApiType pt, PayMointor proc) where T : class + { + IPay _pay = null; + if (pm == PayMethods.Alipay) + { + if (pt == PayApiType.Direct) + { + _pay = new AlipayRedirect(); + } + else if (pt == PayApiType.Normal) + { + _pay = new AlipayNormal(); + } + else if(pt== PayApiType.Mobile) + { + _pay=new AlipayMobile(); + } + else + { + _pay = new AlipayComfireApi(); + } + + } + else if (pm == PayMethods.Tenpay) + { + //财付通默认支持所有 + _pay = new Tenpay.Tenpay(); + } + else if (pm == PayMethods.ChinaPay) + { + _pay = new ChinaPayApi(); + } + + + return _pay == null ? "不支持的支付方式" : _pay.Notify(proc); + + } + + + public static string GetGatewaySubmit(string url, SortedDictionary dict) + { + const string format = "
                                                                                                                                            %fields%
                                                                                                                                            "; + if (dict == null || !dict.Keys.Contains("order_no")) + { + throw new ArgumentException("字典不能为空,且必须包括orderNo键值!"); + } + + StringBuilder sb = new StringBuilder(); + + foreach (string key in dict.Keys) + { + sb.Append(""); + } + + return format.Replace("%url%", url).Replace("%fields%", sb.ToString()); + } + } + +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs new file mode 100644 index 0000000..b58508e --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/PaymentHandler.cs @@ -0,0 +1,268 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : PayHandler.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections; +using System.Web; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + /// + /// 支付处理类 + /// + /// + public abstract class PaymentHandler where T : class + { + + /// + /// 提交支付请求(收货信息仅支付宝担保时传递) + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public string SubmitRequest( + PayMethods pm, + PayApiType pt, + string partner_id, + string partner_secret, + string seller_account, + BankSign bank, + string orderNo, + float order_fee, + float order_exp_fee, + string order_desc, + string order_show_url, + string subject, + string receive_name, + string receive_address, + string receive_zip, + string receive_phone, + string receive_mobile, + string return_url, + string notify_url + ) + { + Hashtable ht = new Hashtable(); + + // OrderInfo order; + + // order = new Order(orderNo); + + + // if (order == null) + // { + // p.PayUtil.SetLogMessage("订单不存在!"); + // return Result((int)p.PaidHandleResult.Fail); + // } + + + // orderPM = this.LoadOrderPM(order); + if (String.IsNullOrEmpty(return_url)) + { + return_url = PayUtil.GetReturnUrl(pm, pt); + } + if (String.IsNullOrEmpty(notify_url)) + { + notify_url = PayUtil.GetNotifyUrl(pm, pt); + } + + ht.Add("order_subject",subject??"支付订单"+orderNo); + ht.Add("order_no", orderNo); //订单编号 + ht.Add("order_fee", order_fee); + ht.Add("order_exp_fee", order_exp_fee); //订单快递金额 + try{ + ht.Add("usr_host", HttpContext.Current.Request.UserHostAddress); //用户IP地址 + }catch{} + ht.Add("order_showurl", order_show_url); //订单显示地址 + ht.Add("return_url", return_url); //返回地址 + ht.Add("notify_url", notify_url); //通知地址 + ht.Add("order_desc", order_desc); //订单描述 + ht.Add("seller_account", seller_account); //帐号 + + //收货信息 + ht.Add("receive_name", receive_name); + ht.Add("receive_address", receive_address); + ht.Add("receive_mobile", receive_mobile); + ht.Add("receive_zip", receive_zip); + ht.Add("receive_phone", receive_phone); + + + if(bank!=BankSign.Default) + { + ht.Add("bank",bank.ToString()); + } + + + if (pm != PayMethods.Unknown) + { + + string payHtml = String.Empty; + + switch (pm) + { + //财付通 + case PayMethods.Tenpay: + + ht.Add("tenpay_key", partner_id); + ht.Add("tenpay_secret", partner_secret); + ht.Add("trade_mode", -((int)pt-4)); //1:即时到帐,2:中介担保,3:自己选择 + + payHtml = String.Format("", + PayUtil.GetGatewayStr(PayMethods.Tenpay, pt, ht)); + + break; + + //支付宝 + case PayMethods.Alipay: + ht.Add("alipay_key", partner_id); + ht.Add("alipay_secret", partner_secret); + + payHtml = PayUtil.GetGatewayStr(PayMethods.Alipay, pt, ht); + + break; + + //在线支付 + default: + case PayMethods.OnlinePay: + // + //UNDONE: + // + throw new NotImplementedException("暂不支持银行支付!"); + } + + + //准备支付 + // orderPM.RepairPay(); + + + //跳转到支付页面 + return payHtml; + } + + else + { + + return "不支持的支付方式!"; + } + + } + + + /// + /// 页面回调 + /// + /// + /// 接口类型ID + /// + public PaidHandleResult Return(PayMethods pm, PayApiType pt, PayMointor proc) + { + PaidHandleResult result; + //PayMointor proc = new PayMointor(String.Empty); + //proc.OnInit += orderNo => + //{ + // proc.Instance= + //}; + + this.AttachEvent(proc); + + // PayMethods pm = (PayMethods)pmid; //支付方式 + //PayApiType pt = (PayApiType)ptid; //接口类型 + + result = PayUtil.PayReturn(pm, pt, proc); + if(result== PaidHandleResult.Success) + { + proc.PaidSuccess(); + } + else if(result== PaidHandleResult.Fail) + { + proc.PaidFail(); + } + return result; + } + + /// + /// 主动通知 + /// + /// + /// + public string Notify(PayMethods pm, PayApiType pt, PayMointor proc) + { + + // PaidMointor proc = new PaidMointor(null); + + // proc.OnInit += orderNo => + // { + // var itm = this.LoadOrderPM(orderNo.ToString()); + //proc.Instance = itm.Instance; + // this.AttachEvent(proc); + // }; + + this.AttachEvent(proc); + + return PayUtil.PayNotify(pm, pt, proc); + } + + + private void AttachEvent(PayMointor proc) + { + if (proc == null) + { + throw new ArgumentNullException("参数proc不能为空!"); + } + else + { + //添加事件 + proc.OnFailed += OnOrderPaidFail; + proc.OnSuccessed += OnOrderPaidSuccess; + proc.OnRepairPay += OnOrderRepairPay; + } + } + + /// + /// 支付失败时操作 + /// + /// + public abstract void OnOrderPaidFail(T t); + + /// + /// 支付成功时操作 + /// + /// + public abstract void OnOrderPaidSuccess(T t); + + /// + /// 准备支付时操作 + /// + /// + private void OnOrderRepairPay(T t) + { + + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs new file mode 100644 index 0000000..2ace00c --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/ReceiveInfo.cs @@ -0,0 +1,21 @@ +/******************************************* +* 文 件 名: ReceiveInfo +* 作 者: 刘成文 +* 创建时间: 2013-4-28 10:23:56 +* 修改说明: +********************************************/ + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay +{ + /// + /// 收货信息 + /// + public struct ReceiveInfo + { + public string Name { get; set; } + public string Address { get; set; } + public string Zip { get; set; } + public string Phone { get; set; } + public string Mobile { get; set; } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs new file mode 100644 index 0000000..efaef0a --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ClientResponseHandler.cs @@ -0,0 +1,163 @@ +using System; +using System.Collections; +using System.Text; +using System.Xml; + +/** + * 后台应答类 + * ============================================================================ + * api说明: + * getKey()/setKey(),获取/设置密钥 + * getContent() / setContent(), 获取/设置原始内容 + * getParameter()/setParameter(),获取/设置参数值 + * getAllParameters(),获取所有参数 + * isTenpaySign(),是否财付通签名,true:是 false:否 + * getDebugInfo(),获取debug信息 + * + * ============================================================================ + * + */ + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code +{ + public class ClientResponseHandler + { + /** 密钥 */ + private string key; + + /** 应答的参数 */ + protected Hashtable parameters; + + /** debug信息 */ + private string debugInfo; + + //原始内容 + protected string content; + + private string charset = "gb2312"; + + + //获取服务器通知数据方式,进行参数获取 + public ClientResponseHandler() + { + parameters = new Hashtable(); + } + + public string getContent() + { + return this.content; + } + + public virtual void setContent(string content) + { + this.content = content; + XmlDocument xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(content); + XmlNode root = xmlDoc.SelectSingleNode("root"); + XmlNodeList xnl = root.ChildNodes; + + foreach (XmlNode xnf in xnl) + { + this.setParameter(xnf.Name, xnf.InnerXml); + } + } + + /** 获取密钥 */ + public string getKey() + { return key; } + + /** 设置密钥 */ + public void setKey(string key) + { this.key = key; } + + /** 获取参数值 */ + public string getParameter(string parameter) + { + string s = (string)parameters[parameter]; + return (null == s) ? "" : s; + } + + /** 设置参数值 */ + public void setParameter(string parameter, string parameterValue) + { + if (parameter != null && parameter != "") + { + if (parameters.Contains(parameter)) + { + parameters.Remove(parameter); + } + + parameters.Add(parameter, parameterValue); + } + } + + /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 + * @return boolean */ + public virtual Boolean isTenpaySign() + { + StringBuilder sb = new StringBuilder(); + + ArrayList akeys = new ArrayList(parameters.Keys); + akeys.Sort(); + + foreach (string k in akeys) + { + string v = (string)parameters[k]; + if (null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); + + //debug信息 + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + + /** 获取debug信息 */ + public string getDebugInfo() + { return debugInfo; } + + /** 设置debug信息 */ + protected void setDebugInfo(String debugInfo) + { this.debugInfo = debugInfo; } + + protected virtual string getCharset() + { + return this.charset; + } + + public void setCharset(String charset) + { + this.charset = charset; + } + + /** 是否财付通签名,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 + * @return boolean */ + public virtual Boolean _isTenpaySign(ArrayList akeys) + { + StringBuilder sb = new StringBuilder(); + + foreach (string k in akeys) + { + string v = (string)parameters[k]; + if (null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); + + //debug信息 + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs new file mode 100644 index 0000000..8ac895b --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/MD5Util.cs @@ -0,0 +1,45 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code +{ + /// + /// MD5Util ժҪ˵ + /// + public class MD5Util + { + public MD5Util() + { + // + // TODO: ڴ˴ӹ캯߼ + // + } + + /** ȡдMD5ǩ */ + public static string GetMD5(string encypStr, string charset) + { + string retStr; + MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider(); + + //md5 + byte[] inputBye; + byte[] outputBye; + + //ʹGB2312뷽ʽַתΪֽ飮 + try + { + inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr); + } + catch (Exception ex) + { + inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr); + } + outputBye = m5.ComputeHash(inputBye); + + retStr = System.BitConverter.ToString(outputBye); + retStr = retStr.Replace("-", "").ToUpper(); + return retStr; + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs new file mode 100644 index 0000000..935aa87 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/RequestHandler.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections; +using System.Text; +using System.Web; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code +{ + /// + /// RequestHandler ժҪ˵ + /// + public class RequestHandler + { + public RequestHandler(HttpContext httpContext) + { + parameters = new Hashtable(); + + this.httpContext = httpContext; + this.setGateUrl("https://www.tenpay.com/cgi-bin/v1.0/service_gate.cgi"); + } + + /** urlַ */ + private string gateUrl; + + /** Կ */ + private string key; + + /** IJ */ + protected Hashtable parameters; + + /** debugϢ */ + private string debugInfo; + + protected HttpContext httpContext; + + /** ʼ*/ + public virtual void init() + { + //nothing to do + } + + /** ȡڵַ,ֵ */ + public String getGateUrl() + { + return gateUrl; + } + + /** ڵַ,ֵ */ + public void setGateUrl(String gateUrl) + { + this.gateUrl = gateUrl; + } + + /** ȡԿ */ + public String getKey() + { + return key; + } + + /** Կ */ + public void setKey(string key) + { + this.key = key; + } + + /** ȡURL @return String */ + public virtual string getRequestURL() + { + this.createSign(); + + StringBuilder sb = new StringBuilder(); + ArrayList akeys=new ArrayList(parameters.Keys); + akeys.Sort(); + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + TenpayUtil.UrlEncode(v, getCharset()) + "&"); + } + } + + //ȥһ& + if(sb.Length > 0) + { + sb.Remove(sb.Length-1, 1); + } + + return this.getGateUrl() + "?" + sb.ToString(); + } + + /** + * md5ժҪ,:a-z,ֵIJμǩ + */ + protected virtual void createSign() + { + StringBuilder sb = new StringBuilder(); + + ArrayList akeys=new ArrayList(parameters.Keys); + akeys.Sort(); + + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(), getCharset()).ToLower(); + + this.setParameter("sign", sign); + + //debugϢ + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + } + + /** ȡֵ */ + public string getParameter(string parameter) + { + string s = (string)parameters[parameter]; + return (null == s) ? "" : s; + } + + /** òֵ */ + public void setParameter(string parameter,string parameterValue) + { + if(parameter != null && parameter != "") + { + if(parameters.Contains(parameter)) + { + parameters.Remove(parameter); + } + + parameters.Add(parameter,parameterValue); + } + } + + public void doSend() + { + this.httpContext.Response.Redirect(this.getRequestURL()); + } + + /** ȡdebugϢ */ + public String getDebugInfo() + { + return debugInfo; + } + + /** debugϢ */ + public void setDebugInfo(String debugInfo) + { + this.debugInfo = debugInfo; + } + + public Hashtable getAllParameters() + { + return this.parameters; + } + + protected virtual string getCharset() + { + return this.httpContext.Request.ContentEncoding.BodyName; + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs new file mode 100644 index 0000000..7c51ff7 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/ResponseHandler.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Text; +using System.Web; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code +{ + /// + /// ResponseHandler ժҪ˵ + /// + public class ResponseHandler + { + /** Կ */ + private string key; + + /** ӦIJ */ + protected Hashtable parameters; + + /** debugϢ */ + private string debugInfo; + + protected HttpContext httpContext; + + //ȡ֪ͨݷʽвȡ + public ResponseHandler(HttpContext httpContext) + { + parameters = new Hashtable(); + + this.httpContext = httpContext; + NameValueCollection collection; + if(this.httpContext.Request.HttpMethod == "POST") + { + collection = this.httpContext.Request.Form; + } + else + { + collection = this.httpContext.Request.QueryString; + } + + foreach(string k in collection) + { + string v = (string)collection[k]; + this.setParameter(k, v); + } + } + + /** ȡԿ */ + public string getKey() + { return key;} + + /** Կ */ + public void setKey(string key) + { this.key = key;} + + /** ȡֵ */ + public string getParameter(string parameter) + { + string s = (string)parameters[parameter]; + return (null == s) ? "" : s; + } + + /** òֵ */ + public void setParameter(string parameter,string parameterValue) + { + if(parameter != null && parameter != "") + { + if(parameters.Contains(parameter)) + { + parameters.Remove(parameter); + } + + parameters.Add(parameter,parameterValue); + } + } + + /** ǷƸͨǩ,:a-z,ֵIJμǩ + * @return boolean */ + public virtual Boolean isTenpaySign() + { + StringBuilder sb = new StringBuilder(); + + ArrayList akeys=new ArrayList(parameters.Keys); + akeys.Sort(); + + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); + + //debugϢ + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + + /** + * ʾ + * @param show_url ʾurlַ,urlַʽ(http://www.xxx.com/xxx.aspx) + * @throws IOException + */ + public void doShow(string show_url) + { + string strHtml = "\r\n" + + "\r\n" + + "\r\n" + + " "; + + this.httpContext.Response.Write(strHtml); + + this.httpContext.Response.End(); + } + + /** ȡdebugϢ */ + public string getDebugInfo() + { return debugInfo;} + + /** debugϢ */ + protected void setDebugInfo(String debugInfo) + { this.debugInfo = debugInfo;} + + protected virtual string getCharset() + { + return this.httpContext.Request.ContentEncoding.BodyName; + + } + + /** ǷƸͨǩ,:a-z,ֵIJμǩ + * @return boolean */ + public virtual Boolean _isTenpaySign(ArrayList akeys) + { + StringBuilder sb = new StringBuilder(); + + foreach(string k in akeys) + { + string v = (string)parameters[k]; + if(null != v && "".CompareTo(v) != 0 + && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0) + { + sb.Append(k + "=" + v + "&"); + } + } + + sb.Append("key=" + this.getKey()); + string sign = MD5Util.GetMD5(sb.ToString(),getCharset()).ToLower(); + + //debugϢ + this.setDebugInfo(sb.ToString() + " => sign:" + sign); + return getParameter("sign").ToLower().Equals(sign); + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs new file mode 100644 index 0000000..03cd9d7 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayHttpClient.cs @@ -0,0 +1,220 @@ +using System; +using System.IO; +using System.Net; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; + +/** + * http、https通信类 + * ============================================================================ + * api说明: + * setReqContent($reqContent),设置请求内容,无论post和get,都用get方式提供 + * getResContent(), 获取应答内容 + * setMethod($method),设置请求方法,post或者get + * getErrInfo(),获取错误信息 + * setCertInfo($certFile, $certPasswd, $certType="PEM"),设置证书,双向https时需要使用 + * setCaInfo($caFile), 设置CA,格式未pem,不设置则不检查 + * setTimeOut($timeOut), 设置超时时间,单位秒 + * getResponseCode(), 取返回的http状态码 + * call(),真正调用接口 + * + * ============================================================================ + * + */ + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code +{ + public class TenpayHttpClient + { + //请求内容,无论post和get,都用get方式提供 + private string reqContent; + + //应答内容 + private string resContent; + + //请求方法 + private string method; + + //错误信息 + private string errInfo; + + //证书文件 + private string certFile; + + //证书密码 + private string certPasswd; + + //ca证书文件 + private string caFile; + + //超时时间,以秒为单位 + private int timeOut; + + //http应答编码 + private int responseCode; + + //字符编码 + private string charset; + + public TenpayHttpClient() + { + this.caFile = ""; + this.certFile = ""; + this.certPasswd = ""; + + this.reqContent = ""; + this.resContent = ""; + this.method = "POST"; + this.errInfo = ""; + this.timeOut = 1 * 60;//5分钟 + + this.responseCode = 0; + this.charset = "gb2312"; + + } + + //设置请求内容 + public void setReqContent(string reqContent) + { + this.reqContent = reqContent; + } + + //获取结果内容 + public string getResContent() + { + return this.resContent; + } + + //设置请求方法post或者get + public void setMethod(string method) + { + this.method = method; + } + + //获取错误信息 + public string getErrInfo() + { + return this.errInfo; + } + + //设置证书信息 + public void setCertInfo(string certFile, string certPasswd) + { + this.certFile = certFile; + this.certPasswd = certPasswd; + } + + //设置ca + public void setCaInfo(string caFile) + { + this.caFile = caFile; + } + + //设置超时时间,以秒为单位 + + public void setTimeOut(int timeOut) + { + this.timeOut = timeOut; + } + + + //获取http状态码 + public int getResponseCode() + { + return this.responseCode; + } + + public void setCharset(string charset) + { + this.charset = charset; + } + + //验证服务器证书 + public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) + { + return true; + } + + //执行http调用 + public bool call() + { + StreamReader sr = null; + HttpWebResponse wr = null; + + HttpWebRequest hp = null; + try + { + string postData = null; + if (this.method.ToUpper() == "POST") + { + string[] sArray = System.Text.RegularExpressions.Regex.Split(this.reqContent, "\\?"); + + hp = (HttpWebRequest)WebRequest.Create(sArray[0]); + + if (sArray.Length >= 2) + { + postData = sArray[1]; + } + + } + else + { + hp = (HttpWebRequest)WebRequest.Create(this.reqContent); + } + + + ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); + if (this.certFile != "") + { + hp.ClientCertificates.Add(new X509Certificate2(this.certFile, this.certPasswd)); + } + hp.Timeout = this.timeOut * 1000; + + System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(this.charset); + if (postData != null) + { + byte[] data = encoding.GetBytes(postData); + + hp.Method = "POST"; + + hp.ContentType = "application/x-www-form-urlencoded"; + + hp.ContentLength = data.Length; + + Stream ws = hp.GetRequestStream(); + + // 发送数据 + + ws.Write(data, 0, data.Length); + ws.Close(); + + + } + + + wr = (HttpWebResponse)hp.GetResponse(); + sr = new StreamReader(wr.GetResponseStream(), encoding); + + + + this.resContent = sr.ReadToEnd(); + sr.Close(); + wr.Close(); + } + catch (Exception exp) + { + this.errInfo += exp.Message; + if (wr != null) + { + this.responseCode = Convert.ToInt32(wr.StatusCode); + } + + return false; + } + + this.responseCode = Convert.ToInt32(wr.StatusCode); + + return true; + } + } +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs new file mode 100644 index 0000000..b27d0c6 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Code/TenpayUtil.cs @@ -0,0 +1,108 @@ +using System; +using System.Text; +using System.Web; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code +{ + /// + /// TenpayUtil ժҪ˵ + /// + public class TenpayUtil + { + public static string tenpay ="1"; + public static string bargainor_id = "1900000113"; //Ƹ̻ͨ + public static string tenpay_key = "e82573dc7e6136ba414f2e2affbe39fa"; //ƸͨԿ; + public static string tenpay_return = "http://********/payReturnUrl.aspx";//ʾ֧֪ͨҳ; + public static string tenpay_notify ="http://*****/payReturnUrl.aspx"; //֧ɺĻصҳ; + + public TenpayUtil() + { + /*tenpay = System.Configuration.ConfigurationSettings.AppSettings["tenpay"]; + bargainor_id = System.Configuration.ConfigurationSettings.AppSettings["bargainor_id"]; + tenpay_key = System.Configuration.ConfigurationSettings.AppSettings["tenpay_key"]; + tenpay_return = System.Configuration.ConfigurationSettings.AppSettings["tenpay_return"]; + tenpay_show = System.Configuration.ConfigurationSettings.AppSettings["tenpay_show"];*/ + } + /** ַURL */ + public static string UrlEncode(string instr, string charset) + { + //return instr; + if(instr == null || instr.Trim() == "") + return ""; + else + { + string res; + + try + { + res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding(charset)); + + } + catch (Exception ex) + { + res = HttpUtility.UrlEncode(instr,Encoding.GetEncoding("GB2312")); + } + + + return res; + } + } + + /** ַURL */ + public static string UrlDecode(string instr, string charset) + { + if(instr == null || instr.Trim() == "") + return ""; + else + { + string res; + + try + { + res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding(charset)); + + } + catch (Exception ex) + { + res = HttpUtility.UrlDecode(instr,Encoding.GetEncoding("GB2312")); + } + + + return res; + + } + } + + /** ȡʱ漴,滻׵еĺ10λˮ */ + public static UInt32 UnixStamp() + { + TimeSpan ts = DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + return Convert.ToUInt32(ts.TotalSeconds); + } + /** ȡ */ + public static string BuildRandomStr(int length) + { + Random rand = new Random(); + + int num = rand.Next(); + + string str = num.ToString(); + + if(str.Length > length) + { + str = str.Substring(0,length); + } + else if(str.Length < length) + { + int n = length - str.Length; + while(n > 0) + { + str.Insert(0, "0"); + n--; + } + } + + return str; + } + } +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs new file mode 100644 index 0000000..c0c8e08 --- /dev/null +++ b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/NetPay/Tenpay/Tenpay.cs @@ -0,0 +1,442 @@ + +// +// Copyright (C) 2007-2012 S1N1.COM,All rights reseved. +// +// Project: OPS.Plugin +// FileName : Tenpay.cs +// Author : PC-CWLIU (new.min@msn.com) +// Create : 2013/05/01 17:58:32 +// Description : +// +// Get infromation of this software,please visit our site http://www.ops.cc +// +// + +using System; +using System.Collections; +using System.Web; +using JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay.Code; + +namespace JR.DevFw.Toolkit.ThirdApi.NetPay.Tenpay +{ + /// + /// 财付通 + /// + internal class Tenpay : IPay + { + public string GetPayRequest(Hashtable hash) + { + /*接口需要的参数如下: + * ---------------------------------- + * @product_fee : 产品价格 + * @express_fee : 快递费用 + * @orderno : 订单号 + * @desc : 订单描述 + * ----------------------------------- + */ + + //商户号 + string partner = hash["tenpay_key"] as string; + //密钥 + string key = hash["tenpay_secret"] as string; + + + TenpayUtil.bargainor_id = partner; + TenpayUtil.tenpay_key = key; + TenpayUtil.tenpay_return = PayUtil.GetReturnUrl(PayMethods.Tenpay, PayApiType.Direct); + TenpayUtil.tenpay_notify = PayUtil.GetNotifyUrl(PayMethods.Tenpay, PayApiType.Direct); + + int product_fee = (int)(((decimal)hash["order_fee"]) * 100); //商品费用 + decimal transport_fee = decimal.Parse(hash["order_exp_fee"].ToString()); //物流费用 + + string bankCode = hash.Contains("bank") ? hash["bank"].ToString() : "DEFAULT"; + + string order_desc = hash["order_desc"] as string;//HttpUtility.UrlEncode( ht["order_desc"] as string); + + //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 + string out_trade_no = hash["order_no"] as string; + string host = hash["usr_host"] as string; + + + //当前时间 yyyyMMdd + string date = DateTime.Now.ToString("yyyyMMdd"); + + + //创建RequestHandler实例 + RequestHandler reqHandler = new RequestHandler(HttpContext.Current); + //初始化 + reqHandler.init(); + //设置密钥 + reqHandler.setKey(TenpayUtil.tenpay_key); + reqHandler.setGateUrl("https://gw.tenpay.com/gateway/pay.htm"); + + + //----------------------------- + //设置支付参数 + //----------------------------- + reqHandler.setParameter("partner", TenpayUtil.bargainor_id); //商户号 + reqHandler.setParameter("out_trade_no", out_trade_no); //商家订单号 + reqHandler.setParameter("total_fee", product_fee.ToString()); //商品金额,以分为单位 + reqHandler.setParameter("return_url", TenpayUtil.tenpay_return); //交易完成后跳转的URL + reqHandler.setParameter("notify_url", TenpayUtil.tenpay_notify); //接收财付通通知的URL + reqHandler.setParameter("body", order_desc); //商品描述 + reqHandler.setParameter("bank_type", bankCode); //银行类型(中介担保时此参数无效) + reqHandler.setParameter("spbill_create_ip", host); //用户的公网ip,不是商户服务器IP + reqHandler.setParameter("fee_type", "1"); //币种,1人民币 + reqHandler.setParameter("subject", out_trade_no); //商品名称(中介交易时必填) + + + //系统可选参数 + reqHandler.setParameter("sign_type", "MD5"); + reqHandler.setParameter("service_version", "1.0"); + reqHandler.setParameter("input_charset", "UTF-8"); + reqHandler.setParameter("sign_key_index", "1"); + + //业务可选参数 + + reqHandler.setParameter("attach", ""); //附加数据,原样返回 + reqHandler.setParameter("product_fee", "0"); //商品费用,必须保证transport_fee + product_fee=total_fee + reqHandler.setParameter("transport_fee", "0"); //物流费用,必须保证transport_fee + product_fee=total_fee + reqHandler.setParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //订单生成时间,格式为yyyymmddhhmmss + reqHandler.setParameter("time_expire", ""); //订单失效时间,格式为yyyymmddhhmmss + reqHandler.setParameter("buyer_id", ""); //买方财付通账号 + reqHandler.setParameter("goods_tag", ""); //商品标记 + reqHandler.setParameter("trade_mode", "1"); //交易模式,1即时到账(默认),2中介担保,3后台选择(买家进支付中心列表选择) + reqHandler.setParameter("transport_desc", ""); //物流说明 + reqHandler.setParameter("trans_type", "1"); //交易类型,1实物交易,2虚拟交易 + reqHandler.setParameter("agentid", ""); //平台ID + reqHandler.setParameter("agent_type", ""); //代理模式,0无代理(默认),1表示卡易售模式,2表示网店模式 + reqHandler.setParameter("seller_id", ""); //卖家商户号,为空则等同于partner + + + + + + + //获取请求带参数的url + string requestUrl = reqHandler.getRequestURL(); + + //Response.Redirect(requestUrl); + return requestUrl; + //Get的实现方式 + // string a_link = "" + "财付通支付" + ""; + // Response.Write(a_link); + // return a_link; + + + //post实现方式 + + /* Response.Write("
                                                                                                                                            \n"); + Hashtable ht = reqHandler.getAllParameters(); + foreach(DictionaryEntry de in ht) + { + Response.Write("\n"); + } + Response.Write("\n
                                                                                                                                            \n");*/ + + + //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 + // string debuginfo = reqHandler.getDebugInfo(); + // Response.Write("
                                                                                                                                            requestUrl:" + requestUrl + "
                                                                                                                                            "); + // Response.Write("
                                                                                                                                            debuginfo:" + debuginfo + "
                                                                                                                                            "); + } + + public PaidHandleResult Return(PayMointor proc) where T : class + { + //商户号 + string partner = TenpayUtil.bargainor_id;// p.PayApiKey; + //密钥 + string key = TenpayUtil.tenpay_key;// p.PayApiSecret; + + + //创建ResponseHandler实例 + ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); + resHandler.setKey(key); + + //判断签名 + if (true || resHandler.isTenpaySign()) + { + + ///通知id + string notify_id = resHandler.getParameter("notify_id"); + //商户订单号 + string out_trade_no = resHandler.getParameter("out_trade_no"); + //财付通订单号 + string transaction_id = resHandler.getParameter("transaction_id"); + //金额,以分为单位 + string total_fee = resHandler.getParameter("total_fee"); + //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee + string discount = resHandler.getParameter("discount"); + //支付结果 + string trade_state = resHandler.getParameter("trade_state"); + //交易模式,1即时到账,2中介担保 + string trade_mode = resHandler.getParameter("trade_mode"); + + + proc.Init(out_trade_no); + + + if ("1".Equals(trade_mode)) + { + + //即时到账 + if ("0".Equals(trade_state)) + { + //------------------------------ + //即时到账处理业务开始 + //------------------------------ + + //处理数据库逻辑 + //注意交易单不要重复处理 + //注意判断返回金额 + + + + + + + //------------------------------ + //即时到账处理业务完毕 + //------------------------------ + + + //SetLogMessage("即时到帐付款成功"); + return PaidHandleResult.Success; + + + + //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 + + } + else + { + //SetLogMessage("即时到账支付失败"); + return PaidHandleResult.Fail; + } + + } + else if ("2".Equals(trade_mode)) + { //中介担保 + if ("0".Equals(trade_state)) + { + //------------------------------ + //中介担保处理业务开始 + //------------------------------ + + //处理数据库逻辑 + //注意交易单不要重复处理 + //注意判断返回金额 + + //------------------------------ + //中介担保处理业务完毕 + //------------------------------ + + + //Response.Write("中介担保付款成功"); + //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 + + //SetLogMessage("中介担保付款成功"); + return PaidHandleResult.Success; + } + else + { + PayUtil.SetLogMessage("trade_state=" + trade_state); + return PaidHandleResult.Fail; + } + } + } + else + { + //Response.Write("认证签名失败"); + PayUtil.SetLogMessage("认证签名失败"); + return PaidHandleResult.Fail; + } + + return PaidHandleResult.Fail; + + } + + public string Notify(PayMointor proc) where T : class + { + //商户号 + string partner = TenpayUtil.bargainor_id; + //密钥 + string key = TenpayUtil.tenpay_key; + + + //创建ResponseHandler实例 + ResponseHandler resHandler = new ResponseHandler(System.Web.HttpContext.Current); + resHandler.setKey(key); + + //判断签名 + if (resHandler.isTenpaySign()) + { + + ///通知id + string notify_id = resHandler.getParameter("notify_id"); + + + //通过通知ID查询,确保通知来至财付通 + //创建查询请求 + RequestHandler queryReq = new RequestHandler(System.Web.HttpContext.Current); + queryReq.init(); + queryReq.setKey(key); + queryReq.setGateUrl("https://gw.tenpay.com/gateway/verifynotifyid.xml"); + queryReq.setParameter("partner", partner); + queryReq.setParameter("notify_id", notify_id); + + //通信对象 + TenpayHttpClient httpClient = new TenpayHttpClient(); + httpClient.setTimeOut(5); + //设置请求内容 + httpClient.setReqContent(queryReq.getRequestURL()); + + //后台调用 + if (httpClient.call()) + { + //设置结果参数 + ClientResponseHandler queryRes = new ClientResponseHandler(); + queryRes.setContent(httpClient.getResContent()); + queryRes.setKey(key); + + //判断签名及结果 + //只有签名正确,retcode为0,trade_state为0才是支付成功 + if (queryRes.isTenpaySign() && queryRes.getParameter("retcode") == "0" && queryRes.getParameter("trade_state") == "0" && queryRes.getParameter("trade_mode") == "1") + { + //取结果参数做业务处理 + string out_trade_no = queryRes.getParameter("out_trade_no"); + //财付通订单号 + string transaction_id = queryRes.getParameter("transaction_id"); + //金额,以分为单位 + string total_fee = queryRes.getParameter("total_fee"); + //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee + string discount = queryRes.getParameter("discount"); + //支付结果 + string trade_state = resHandler.getParameter("trade_state"); + //交易模式,1即时到帐 2中介担保 + string trade_mode = resHandler.getParameter("trade_mode"); + + proc.Init(out_trade_no); + + + //判断签名及结果 + if (queryRes.isTenpaySign() && "0".Equals(queryRes.getParameter("retcode"))) + { + // Response.Write("id验证成功"); + + if ("1".Equals(trade_mode)) + { //即时到账 + if ("0".Equals(trade_state)) + { + + proc.PaidSuccess(); + + return "Success"; + + } + else + { + proc.PaidFail(); + //SetLogMessage("即时到账支付失败"); + return "即时到账支付失败"; + + } + } + else if ("2".Equals(trade_mode)) + { //中介担保 + //------------------------------ + //中介担保处理业务开始 + //------------------------------ + //处理数据库逻辑 + //注意交易单不要重复处理 + //注意判断返回金额 + + int iStatus = 0; + switch (iStatus) + { + case 0: //付款成功 + + break; + case 1: //交易创建 + + break; + case 2: //收获地址填写完毕 + + break; + case 4: //卖家发货成功 + + break; + case 5: //买家收货确认,交易成功 + + break; + case 6: //交易关闭,未完成超时关闭 + + break; + case 7: //修改交易价格成功 + + break; + case 8: //买家发起退款 + + break; + case 9: //退款成功 + + break; + case 10: //退款关闭 + + break; + + } + + + //------------------------------ + //中介担保处理业务开始 + //------------------------------ + + + //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 + + proc.PaidSuccess(); + return "Success"; + + } + } + else + { + //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。 + //通知财付通处理失败,需要重新通知\ + + + + // SetLogMessage("查询验证签名失败或id验证失败\r\nretcode:" + queryRes.getParameter("retcode")); + + proc.PaidFail(); + return "查询验证签名失败或id验证失败retcode:" + queryRes.getParameter("retcode"); ; + + } + + } + else + { + //通知财付通处理失败,需要重新通知 + + //SetLogMessage("后台调用通信失败\r\ncall err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "); + + proc.PaidFail(); + + return "后台调用通信失败call err:" + httpClient.getErrInfo() + "
                                                                                                                                            " + httpClient.getResponseCode() + "
                                                                                                                                            "; + + } + + + } + else + { + proc.PaidFail(); + return "通知签名验证失败"; + } + } + return ""; + } + } + +} diff --git a/src/toolkit/J6.DevFw.Toolkit.ThirdApi/OPSoft.Plus.pidb b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/OPSoft.Plus.pidb new file mode 100644 index 0000000..846b052 Binary files /dev/null and b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/OPSoft.Plus.pidb differ diff --git a/J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Properties/AssemblyInfo.cs b/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Properties/AssemblyInfo.cs similarity index 100% rename from J6/src/toolkit/J6.DevFw.Toolkit.ThirdApi/Properties/AssemblyInfo.cs rename to src/toolkit/J6.DevFw.Toolkit.ThirdApi/Properties/AssemblyInfo.cs diff --git a/src/toolkit/J6.DevFw.WebResource/J6.DevFw.WebResource.csproj b/src/toolkit/J6.DevFw.WebResource/J6.DevFw.WebResource.csproj new file mode 100644 index 0000000..212516c --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/J6.DevFw.WebResource.csproj @@ -0,0 +1,112 @@ + + + + + Debug + AnyCPU + {6DFC3F5F-8B0D-4826-8FB0-5FA565E9E886} + Library + Properties + J6.DevFw.WebResource + J6.DevFw.WebResource + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/core/AtNet.DevFw.Web/AtNet.DevFw.Web.csproj.user b/src/toolkit/J6.DevFw.WebResource/J6.DevFw.WebResource.csproj.user similarity index 100% rename from src/core/AtNet.DevFw.Web/AtNet.DevFw.Web.csproj.user rename to src/toolkit/J6.DevFw.WebResource/J6.DevFw.WebResource.csproj.user diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/animation.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/animation.js new file mode 100644 index 0000000..b51c172 --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/animation.js @@ -0,0 +1,175 @@ +// +//文件:动画插件 +//版本: 1.0 +//时间:2014-11-06 +// + +jr.extend({ + animation: { + timer: function (call, overCall, start, end, speed) { + if (!call) return; + var _start = start != null ? start : 0; + var _end = end != null ? end : 100; + + var _setup = 0; + var _interval = 0; + + //速度:1-5倍 + if (speed < 1 || speed > 5) { + _setup = (end - start) < 0 ? -speed : speed; + _interval = 20; + } else { + //(end-start)/20,假定interval = 50 + _setup = (_end - _start) / (4 * (6 - speed)); + //参照100次的时间来计算步长 + _setup *= (Math.abs(_end - _start) / 100); + + //修正interval + _interval = 1000 / _setup; + _interval = _interval < 0 ? -Math.ceil(_interval) : Math.floor(_interval); + if (_interval < 30) _interval = 30; + } + // alert("start:"+_start+"/ end:"+_end+" / setup:"+_setup+'/ interval: '+_interval) + + var t = setInterval(function () { + _start = _start + _setup; + if (Math.abs(_start) >= Math.abs(_end)) { + _start = _end; + if (overCall instanceof Function) overCall(); + clearInterval(t); + } + call(_start, _setup); + }, _interval); + }, + opacity: function (e, call, end, speed) { + var ele = jr.$(e); + var s = jr.style(ele); + var start = s["opacity"]; + + //获取ie的透明度 + if (start == undefined) { + if (ele.filters.alpha) { + start = ele.filters.alpha.opacity / 100; + } else { + start = 0; + } + } + + this.timer((function (e) { + return function (t, setup) { + var isRev = setup < 0; + var _opacity = isRev ? (100 + t) / 100 : t / 100; + e.style.opacity = _opacity; + e.style.filter = 'alpha(opacity=' + (_opacity * 100) + ')'; + if (t == -100 && isRev) { + e.style.display = 'none'; + } else if (!isRev && t == setup) { + e.style.display = ''; + } + } + })(ele), call, parseInt(start), end, speed); + }, + fade: function (e, call, speed) { + var _speed = speed != null ? speed : 3; + var _end = -100; + this.opacity(e, call, _end, _speed); + }, + show: function (e, call, speed) { + var _speed = speed != null ? speed : 3; + var _end = 100; + this.opacity(e, call, _end, _speed); + }, + toggle: function (e, call, speed) { + this._toggle(e, 'wh', call, speed); + }, + toggleWidth: function (e, call, speed) { + this._toggle(e, 'w', call, speed); + }, + toggleHeight: function (e, call, speed) { + this._toggle(e, 'h', call, speed); + }, + _toggle: function (e,direction, call, speed) { + e = jr.$(e); + var style = jr.style(e); + var w = e.offsetWidth; + var h = e.offsetHeight; + var tw = parseInt(e.getAttribute("toggle-w") || 0); + var th = parseInt(e.getAttribute("toggle-h") || 0); + + //init + if (tw == 0 || th == 0) { + tw = jr.clientWidth(e); + th = jr.clientHeight(e); + if (w == 0 || h == 0) { + w = tw; + h = th; + } + e.setAttribute('toggle-w', w); + e.setAttribute('toggle-h', h); + } + + var speedX = speed == null ? 2 : speed; + var speedY = speedX * (th / tw); + + + if (style["display"] == 'none') { + var css = { overflow: 'hidden', display: 'inherit'}; + if (direction.indexOf('w') != -1) { + css.width = '0px'; + } + if (direction.indexOf('h') != -1) { + css.height = '0px'; + } + jr.style(e,css); + this._toggleShow(e, direction,call, w, tw, h, th, speedX, speedY); + } else { + e.style.overflow = 'hidden'; + this._toggleClose(e, direction,call, w, tw, h, th, speedX, speedY); + } + }, + _toggleShow: function (e, direction, call, w, tw, h, th, speedX, speedY) { + if (direction.indexOf('w') != -1) { + this.timer((function (e, w) { + return function (t, setup) { + e.style.width = (setup > 0 ? t : (w + t)) + 'px'; + }; + })(e, w), call, 0, tw, speedX); + } + if (direction.indexOf('h') != -1) { + this.timer((function (e, h) { + return function (t, setup) { + e.style.height = (setup > 0 ? t : (h + t)) + 'px'; + }; + })(e, h), call, 0, th, speedY); + } + }, + _toggleClose: function (e, direction,call, w, tw, h, tw, speedX, speedY) { + if (direction.indexOf('w') != -1) { + this.timer((function (e, w) { + return function (t, setup) { + var _w = (setup > 0 ? t : (w + t)); + if (_w < 0) _w = 0; + e.style.width = _w + 'px'; + if (_w == 0) { + e.style.display = 'none'; + } + }; + })(e, w), call, 0, -w, speedX); + } + if (direction.indexOf('h') != -1) { + this.timer((function (e, h) { + return function (t, setup) { + var _h = setup > 0 ? t : h + t; + if (_h < 0) _h = 0; + e.style.height = _h + 'px'; + if (_h == 0) { + e.style.display = 'none'; + } + }; + })(e, h), call, 0, -h, speedY); + } + } + } +}); + + diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/Index.html b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/Index.html new file mode 100644 index 0000000..a38ff22 --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/Index.html @@ -0,0 +1,111 @@ + + + + + 正在准备资源 + + + +
                                                                                                                                            + +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + 欢迎您: + 【退出】 +
                                                                                                                                            +
                                                                                                                                            + + + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                              +
                                                                                                                                            • 欢迎页面
                                                                                                                                            • +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            针对IE7优化
                                                                                                                                            +
                                                                                                                                            + + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + diff --git a/J6/src/examples/devfw.web/framework/assets/sys_themes/default/ajax-loader.gif b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/ajax-loader.gif similarity index 100% rename from J6/src/examples/devfw.web/framework/assets/sys_themes/default/ajax-loader.gif rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/ajax-loader.gif diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/avatar.gif b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/avatar.gif similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/avatar.gif rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/avatar.gif diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/avatar_bg.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/avatar_bg.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/avatar_bg.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/avatar_bg.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/blank.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/blank.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/blank.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/blank.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/columns.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/columns.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/columns.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/columns.png diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/drop_arraw.gif b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/drop_arraw.gif new file mode 100644 index 0000000..13f574e Binary files /dev/null and b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/drop_arraw.gif differ diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_chart.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_chart.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_chart.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_chart.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_config.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_config.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_config.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_config.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_pass.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_pass.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_pass.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_pass.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_plugin.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_plugin.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_plugin.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_plugin.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_secret.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_secret.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_secret.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_secret.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_server.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_server.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_server.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_server.png diff --git a/J6/src/examples/devfw.web/framework/mui/css/latest/icon_user.png b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_user.png similarity index 100% rename from J6/src/examples/devfw.web/framework/mui/css/latest/icon_user.png rename to src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/icon_user.png diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/js/component.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/js/component.js new file mode 100644 index 0000000..dcc7ec5 --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/aui/ui/js/component.js @@ -0,0 +1,604 @@ +jr.xhr.max_request = 4; + +if (!window._path) { + window._path = 'admin'; +} +window.md = null; +window.menuTree = null; +window.sites = []; +window.username = null; +window.groupname = null; + + +/* +jr.xhr.get(window._path + '?module=ajax&action=appinit', function (x) { + var ip, address; + eval(x); +}); +*/ +window.md = menu; + + + +var MENU = { + ele: null, + menuTitles: [], + init: function (data) { + //获取菜单元素 + this.ele = document.getElementsByClassName('page-left-menu')[0]; + //第一次加载 + + var md = data; + var menuEle = this.ele; + + menuEle.innerHTML = ''; + var title, html, linktext, url; + for (var i1 = 0; i1 < md.length; i1++) { + title = md[i1].text; + html = ''; + for (var i2 = 0; i2 < md[i1].childs.length; i2++) { + if (md[i1].childs[i2].childs.length > 0) { + html += '
                                                                                                                                            ' + md[i1].childs[i2].text + '
                                                                                                                                            '; + html += '
                                                                                                                                              '; + for (var i3 = 0; i3 < md[i1].childs[i2].childs.length; i3++) { + linktext = md[i1].childs[i2].childs[i3].text; + url = md[i1].childs[i2].childs[i3].uri; + // html += (i3 != 0 && i3 % 4 == 0 ? '
                                                                                                                                              ' : '') + + html += '' + linktext + ''; + } + html += '
                                                                                                                                            '; + } + } + menuEle.innerHTML += html; + } + + //获取所有的标题菜单 + this.menuTitles = this.ele.getElementsByTagName('DIV'); + var t = this; + jr.each(this.menuTitles, function (i, e) { + var groupName = e.getAttribute('group'); + jr.event.add(e, 'click', (function (_t, _e) { + return function () { + _t.show(_e); + }; + })(t, e)); + + jr.each(e.nextSibling.getElementsByTagName('LI'), function (i2, e2) { + jr.event.add(e2, 'click', (function (_this,_t,g) { + return function () { + _t.set(groupName, _this); + var a = _this.childNodes[0]; + tab.show(a.innerHTML, a.getAttribute('url')); + }; + })(e2,t,groupName)); + }); + }); + + //设置菜单打开tab + //jr.each(jr.dom.getsByClass(this.ele, 'fn'), function (i, e) { + // e.onclick = (function (_e) { + // return function () { + // jr.each(t.ele.getElementsByTagName('A'), function (i, ee) { + // if (ee != _e) { + // ee.parentNode.className = ''; + // } else { + // ee.parentNode.className = 'current'; + // } + // }); + // tab.show(_e.innerHTML, _e.getAttribute('url')); + // }; + // })(e); + //}); + }, + //设置第几组显示 + change: function (id) { + var menuTitles = this.menuTitles; + var groupName = id || menuTitles[0].getAttribute('group'); + var isFirst = true; + var selectedLi = null; //已经选择的功能菜单 + var firstUL = null; + var titleGroups = []; + var _lis; + + jr.each(menuTitles, function (i, e) { + if (e.getAttribute('group') != groupName) { + e.className = 'title hidden'; + e.nextSibling.className = ''; + } else { + titleGroups.push(e); + e.className = 'title'; + //获取第一组菜单 + if (firstUL == null) { + firstUL = e.nextSibling; + } + } + }); + + for (var i = 0; i < titleGroups.length; i++) { + _lis = titleGroups[i].nextSibling.getElementsByTagName('LI'); + for (var j = 0; j < _lis.length; j++) { + if (_lis[j].className == 'current') { + selectedLi = _lis[j]; + i = titleGroups.length + 1; //使其跳出循环 + break; + } + } + } + + if (selectedLi != null) { + selectedLi.parentNode.className = 'current'; + } + + //默认都有一个选中的,所以不会存在此情况 + //else { + // if (firstUL != null) { + // firstUL.className = 'current'; + // } + //} + + }, + + //查看菜单 + show: function (titleDiv) { + var groupName = titleDiv.getAttribute('group'); + jr.each(this.menuTitles, function (i, e) { + if (e.getAttribute('group') == groupName) { + if (e != titleDiv) { + e.nextSibling.className = ''; + } else { + e.nextSibling.className = 'current'; + } + } + }); + }, + set: function (groupName, ele) { + jr.each(this.menuTitles, function (i, e) { + if (e.getAttribute('group') == groupName) { + jr.each(e.nextSibling.getElementsByTagName('LI'), function (i, e2) { + e2.className = ele == e2 ? 'current' : ''; + }); + } + }); + } +}; + + +/* Tab管理 */ +var tab = { + //框架集 + frames: null, + maskEle: null, + loadEle: null, + tabs: null, + initialize: function () { + var framebox = jr.$('pageframes'); + this.tabs = jr.$('pagetabs').getElementsByTagName('UL')[0]; + + var getByCls = function (cls) { + return (framebox.getElementsByClassName ? framebox.getElementsByClassName(cls) : document.getElementsByClassName(cls, framebox))[0]; + }; + this.frames = getByCls('frames'); + this.maskEle = getByCls('mask'); + this.loadEle = getByCls('loading'); + + var fx = this.frames.offsetWidth, + fy = this.frames.offsetHeight; + + //mask位置 + if (this.maskEle) { + this.maskEle.style.width = fx + 'px'; + this.maskEle.style.height = fy + 'px'; + } + + //加载框位置 + if (this.loadEle) { + var fx1 = jr.screen.offsetWidth(), + fy1 = jr.screen.offsetHeight(), + offset = 50; + + this.loadEle.style.left = (Math.floor((fx1 - this.loadEle.offsetWidth) / 2) + - framebox.parentNode.offsetLeft) + 'px'; + + this.loadEle.style.top = (Math.floor((fy1 - this.loadEle.offsetHeight) / 2) + - framebox.parentNode.parentNode.offsetTop - offset) + 'px'; + } + }, + pageBeforeLoad: function () { + this.showLoadBar(); + }, + pageLoad: function () { + this.hiddenLoadBar(); + }, + showLoadBar: function () { + this.loadEle.className = 'loading'; + this.maskEle.className = 'mask'; + }, + hiddenLoadBar: function () { + this.loadEle.className = 'loading hidden'; + this.maskEle.className = 'mask hidden'; + }, + show: function (text, url) { + var _tabs = this.tabs.getElementsByTagName('LI'); + var _indent; + var _exits = false; + var _cur_indents = url; + var _li = null; + + jr.each(_tabs, function (i, obj) { + _indent = obj.getAttribute('indent'); + if (_indent == _cur_indents) { + _exits = true; + obj.className = 'current'; + _li = obj; + } + }); + if (!_exits) { + this.pageBeforeLoad(); + //添加框架 + var frameDiv = document.createElement('DIV'); + var frame; + try { + //解决ie8下有边框的问题 + frame = document.createElement(' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/src/toolkit/J6.DevFw.WebResource/JS_Lib/demo/\344\270\212\344\274\240.htm" "b/src/toolkit/J6.DevFw.WebResource/JS_Lib/demo/\344\270\212\344\274\240.htm" new file mode 100644 index 0000000..8832a65 --- /dev/null +++ "b/src/toolkit/J6.DevFw.WebResource/JS_Lib/demo/\344\270\212\344\274\240.htm" @@ -0,0 +1,34 @@ + + + + + + + + + + +
                                                                                                                                            + + ==选择文件==图片最佳分辨率为165*80 +
                                                                                                                                            + + + + diff --git "a/src/toolkit/J6.DevFw.WebResource/JS_Lib/demo/\345\217\263\351\224\256.html" "b/src/toolkit/J6.DevFw.WebResource/JS_Lib/demo/\345\217\263\351\224\256.html" new file mode 100644 index 0000000..1822cbd Binary files /dev/null and "b/src/toolkit/J6.DevFw.WebResource/JS_Lib/demo/\345\217\263\351\224\256.html" differ diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/dialog.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/dialog.js new file mode 100644 index 0000000..393a602 --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/dialog.js @@ -0,0 +1,540 @@ +// +//文件:对话框插件 +//版本: 1.0 +//时间:2011-10-01 +// + + + +/************************Dialog****************************/ +/* +* name :Dialog +* date :2010/11/29 +* update:2011/11/07 +*/ + +// +// 模态窗口样式设置示例代码: +//.ui-dialog .bglayer{background:#d0d0d0;opacity:0.2;filter:alpha(opacity=20);} +//.ui-dialog .box { +// border: solid 1px #bbb; +// background: #f3f3f3; +// -moz-box-shadow:0 0 10px 2px #bbb; /*firefox*/ +// -webkit-box-shadow:0 0 10px 2px #bbb; /*webkit*/ +// box-shadow:0 0 10px 2px #bbb; /*opera或ie9*/ +// zoom: 1; filter: progid:DXImageTransform.Microsoft.DropShadow(OffX=10, OffY=2, Color=#bbb); /* ie6,ie7,ie8 */ +//} +//.ui-dialog .box .title{padding-top:10px;font-size:14px;font-weight:bold;color:#006699;background:#F0F0F0;padding:0 10px;line-height:30px; +// background:#f9f9f9 url(/public/assets/sys_themes/default/title_bg.gif) 0 5px repeat-x; +// /*border-bottom:solid 2px #FFF;*/} +//.ui-dialog .box .title .txt{padding-left:25px;background:url(/public/assets/sys_themes/default/blocks.gif) left center no-repeat;} +//.ui-dialog .box .close{padding:0 10px;font-weight:normal;} +//.ui-dialog .box .boxcontent{margin:0 5px 5px 5px;padding:10px;background:#fff;border:solid 1px #d0d0d0} +//.ui-dialog .box .bottom{display:none;} +// + +//对话框的容器 + +// +// 调用示例: +// var d=new dialog({title:'对话框',usedrag:true,style:'dialog default'}); +// d.async('ajaxtest'); +// +function simpleDialog(dialogOptions) { + this._simgpleDialog = true; + this.window = window; + this.win = window; //窗口 + this.doc = null; //文档 + //模态框的编号 + this.id = new Date().getMilliseconds() + parseInt(Math.random() * 100); + this.title = dialogOptions.title; //标题 + this.usedrag = dialogOptions.drag; //是否使用拖拽 + this.style = dialogOptions.style || 'ui-dialog'; //对话框样式,默认dialog + this.setupFade = !dialogOptions.setupFade ? dialogOptions.setupFade : true; //是否渐渐淡去 + this.onclose = dialogOptions.onclose; //关闭函数,如果返回false,则不关闭 + this.canNotClose = dialogOptions.canClose == false; + + //是否穿越框架 + if (dialogOptions.cross != false) { + while (this.win.parent != this.win) { this.win = this.win.parent; } + } + this.doc = this.win.document; + + + this._inited = false; + + + //画布大小(整个网页大小) + this.canvas = { + width: this.doc.documentElement.clientWidth, + height: Math.min(this.doc.documentElement.clientHeight, this.doc.body.clientHeight), + maxHeight: Math.max(this.doc.documentElement.clientHeight, this.doc.body.clientHeight) + }; + + //模态框的位置 + this.point = { + x: parseInt((this.canvas.width) / 2) + this.doc.documentElement.scrollLeft, + y: parseInt((this.canvas.height) / 2) + this.doc.documentElement.scrollTop + }; + + + + /**************************** 相关函数 *******************************/ + + //重设对话框的位置 + this.fixBoxPosition = function (relay) { + + var box = this.getPanel().getElementsByTagName('DIV')[1]; + + //延时设置 + if (!relay) { + this.point.x = (this.canvas.width - box.offsetWidth) / 2 + document.documentElement.scrollLeft; + this.point.y = (this.canvas.height - box.offsetHeight) / 2 + document.documentElement.scrollTop; + + box.style.left = this.point.x + 'px'; + box.style.top = this.point.y + 'px'; + + //如果使用拖动 + if (this.title && this.usedrag) { + new drag(box.getElementsByTagName('div')[0], this.win).start(box); //使用拖拽对象 + } + + } else { + + var dialog = this; + var i = box.offsetWidth; + //设置多次,IE下会无法正常获得offsetHeight; + var timer = setInterval(function () { + + dialog.point.x = (dialog.canvas.width - box.offsetWidth) / 2 + document.documentElement.scrollLeft; + dialog.point.y = (dialog.canvas.height - box.offsetHeight) / 2 + document.documentElement.scrollTop; + + box.style.left = dialog.point.x + 'px'; + box.style.top = dialog.point.y + 'px'; + + if (i != box.offsetWidth) { + + clearInterval(timer); + + //如果使用拖动 + if (dialog.title && dialog.usedrag) { + new drag(box.getElementsByTagName('div')[0], dialog.win).start(box); //使用拖拽对象 + } + + } + }, 1); + } + }; +} + +simpleDialog.prototype._initialize = function () { + if (this._inited) { return false; } + var dialog = this; + var document = this.doc; + + //添加Panel + var panel = document.createElement('div'); + panel.id = 'panel_' + dialog.id; + panel.className = dialog.style; + document.body.appendChild(panel); + + //添加遮盖层 + var elem = document.createElement('div'); + elem.className = 'bglayer'; + elem.style.cssText = 'z-index:999;position:absolute;top:0;left:0;width:' + + dialog.canvas.width + 'px;height:' + + dialog.canvas.maxHeight + 'px;'; + + panel.appendChild(elem); + + //添加模态窗口 + elem = document.createElement("DIV"); + elem.className = 'box'; + //elem.id = 'box_' + dialog.id; + elem.style.cssText = 'z-index:1000;position:absolute;left:' + + (dialog.point.x) + "px;top:" + (dialog.point.y) + 'px;'; + panel.appendChild(elem); + + //如果显示标题 + if (dialog.title) { + var titleElem = document.createElement("div"); + titleElem.className = 'title'; + var titHtml = ' ' + + dialog.title; + if (!this.canNotClose) { + titHtml += 'X'; + } + titHtml += '  '; + titleElem.innerHTML = titHtml; + elem.appendChild(titleElem); + this.win['dialog_' + this.id] = this; + } + + //创建内容区域 + var cm = document.createElement("DIV"); + cm.className = 'content boxcontent'; + cm.id = 'boxcontent_' + this.id; + elem.appendChild(cm); + + //如果显示标题 + if (dialog.title) { + var be = document.createElement("div"); + be.className = 'bottom'; + be.style.cssText = "position:relative;"; + be.innerHTML = '   '; + elem.appendChild(be); + } + + this._inited = true; +}; + + +//对话框容器 +simpleDialog.prototype.getPanel = function () { return this.doc.getElementById('panel_' + this.id); }; + +//异步读取 +simpleDialog.prototype.async = function (uri, method, params, loadfunc, func) { + + //初始化 + this._initialize(); + + var pl = this.doc.getElementById('boxcontent_' + this.id); + if (loadfunc) { loadfunc(pl); } + + //异步读取数据 + var ajax = jr.xhr; + var dialog = this; + + if (!method || method.toLowerCase() == "get") { + ajax.get(uri, function (x) { + jr.loadHTML(pl, x); + dialog.fixBoxPosition(true); //重设位置 + if (func) func(x); + }); + } else { + ajax.post(uri, params, function (x) { + jr.loadHTML(pl, x); + dialog.fixBoxPosition(true); //重设位置 + if (func) func(x); + }); + + } +}; + +//打开网址 +simpleDialog.prototype.open = function (uri, width, height, scroll) { + + //初始化 + this._initialize(); + var pl = this.doc.getElementById('boxcontent_' + this.id); + pl.innerHTML += ""; + pl.style.width = Math.max(pl.scrollWidth, width) + 'px'; + pl.style.height = Math.max(pl.scrollHeight, height) + 'px'; + this.fixBoxPosition(); +}; + +//写入内容 +simpleDialog.prototype.write = function (html) { + //初始化 + this._initialize(); + var pl = this.doc.getElementById('boxcontent_' + this.id); + if (!this.title) { + pl.innerHTML = html; + } else { + var divs = pl.getElementsByTagName('DIV'); + for (var i = 1; i < divs.length; i++) { + pl.removeChild(divs[i]); + } + pl.innerHTML += html; + } + this.fixBoxPosition(); +}; + +//获取框架里的Window对象 +simpleDialog.prototype.getFrameWindow = function () { + var iframes = this.getPanel().getElementsByTagName('IFRAME'); + if (iframes.length > 0) { + return iframes[0].contentWindow; + } + return null; +}; + +simpleDialog.prototype.getWindow = function () { + return this.win; +}; + +// +// 关闭对话框 +// callback为关闭时候发生的回执函数 +// +simpleDialog.prototype.close = function (callback) { + //onclose不为空,且返回值为false则不允许关闭 + if (this.onclose != null && this.onclose() == false) { + return false; + } + + var opacity = 0; //透明度 + var panel = this.getPanel(); + + //移除面板 + var closeDialog = (function (win) { + return function () { + win.document.body.removeChild(panel); + if (callback) callback(); + } + }(this.win)); + + //删除该对象 + try { + //IE6不能删除对象 + delete this.win['dialog_' + this.id]; + } catch (ex) { this.win['dialog_' + this.id] = null; } + + closeDialog(); + this._inited = false; + + /* + //是否渐渐的淡去 + if (!this.setupFade) { + closeDialog(); return false; + } + + //获取透明度 + var allowFilter = document.body.filters != undefined; + opacity = 60; + + //定时设置遮盖的透明度 + var timer = setInterval(function () { + if (allowFilter) { + opacity -= opacity < 10 ? 1 : 10; //IE较其他浏览器执行较慢(1:22) + bgLayer.filters('alpha').opacity = opacity; + } + else { + bgLayer.style.opacity = (--opacity) / 100; + } + + //当透明度低于或等于0,则移除panel并执行回执函数 + if (opacity <= 0) { + //清除定时器 + clearInterval(timer); + closeDialog(); + } + }, 1); + */ +}; + + +// +// 拖拽代码 +// 2011-11-08 +// +function drag(elem, window) { + this.elem = elem; + this.win = window; +} + +drag.prototype.regist = function (obj, cursor, moveHandler, stopHandler) { + var o = this.elem; + obj = obj ? obj : o; + var sx, sy; + + var document = this.win == null ? document : this.win.document; + + o.style.cursor = cursor || "move"; + + var move = moveHandler || function (e) { + e = e || event; + window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); + if (e.preventDefault) e.preventDefault(); //这两句便是解决firefox拖动问题的. + with (obj.style) { + position = "absolute"; + left = e.clientX - sx + "px"; + top = e.clientY - sy + "px"; + } + + }; + + jr.event.add(o, "mousedown", function (e) { + e = e || event; + if (e.button == 1 || e.button == 0) { + sx = e.clientX - obj.offsetLeft; sy = e.clientY - obj.offsetTop; + jr.event.add(document, 'mousemove', move, false); + jr.event.add(document, 'mouseup', stopDrag, false); + } + }, false); + + var stopDrag = function () { + jr.event.remove(document, 'mousemove', move, false); + jr.event.remove(document, 'mouseup', stopDrag, false); + + if (stopHandler && stopHandler instanceof Function) stopHandler(); + }; + + +}; +drag.prototype.custom = function (obj, cursor, moveHandler, stopHandler) { + return this.regist(obj, cursor, moveHandler, stopHandler); +}; +drag.prototype.start = function (obj) { + this.regist(obj, null, null, null); +}; + + + + +var SimpleDialog = { + //创建对话框 + create: function (dialogOpts) { + return new simpleDialog(dialogOpts); + }, + + //创建 + create2: function (title, usedrag, cross, onclose, style) { + return new simpleDialog({ + title: title, + drag: usedrag || false, + cross: cross || false, + //setupFade: fade || false, + style: style, + onclose: onclose + }); + }, + + //获取对话框,targetWin为目标窗口,获取目标窗口的弹出 + getDialog: function () { + var dialog = null; + var reg = /^dialog_/i; + var targetWin = window; + + var getFromWin = function (win) { + var d = null; + for (var i in win) { + if (reg.test(i) && win[i] != null) { + d = win[i]; + //todo:不能识别到是哪个dialog, + //可能会出现在dialog里打开dialog + //所以判断到第一个dialog + break; + } + } + return d; + }; + + do { + dialog = getFromWin(targetWin); + if (dialog == null) { + targetWin = targetWin.parent; + dialog = getFromWin(targetWin); + } + if (dialog) { break; } + } while (targetWin.parent != targetWin); + //如果传递为空,则获取最顶层的窗口 + //if (!targetWin) { + // var targetWin = window; + // while (targetWin.parent != targetWin) { + // targetWin = targetWin.parent; + // } + //} + return dialog; + }, + //关闭窗口 + close: function () { + var d = this.getDialog(); + if (d) d.close(); + }, + ALERT_MSG_TPL : '
                                                                                                                                            {msg}
                                                                                                                                            ', + ALERT_BTN_TPL : '', + ALERT_ALL_TITLE: '提示', + ALERT_BTN_OK_TEXT : '确定', + ALERT_BTN_CANCEL_TEXT : '取消', + //弹出框 + customAlert: function (p) { + var title = this.ALERT_ALL_TITLE + '-' + (p.title ||''); + title = title.replace(/^-|-$/g,''); + var d = this.create({ + title:title, + drag: p.drag || true, + cross: p.cross || true, + canClose: false + }); + d.write(jr.template(this.ALERT_MSG_TPL, { msg: p.message, icon: p.icon })); + var buttonsHtml = ''; + for (var i = 0; i < p.buttons.length; i++) { + var e = p.buttons[i]; + if (e && e.tag) { //兼容IE7 + buttonsHtml += jr.template(this.ALERT_BTN_TPL, { tag: e.tag, text: e.text }); + } + } + var rd = Math.floor( Math.random() * 10000); + d.write('
                                                                                                                                            ' + buttonsHtml + '
                                                                                                                                            '); + var pl = d.getWindow().document.getElementById('ui-alert-control-' + rd); + var btns = pl.getElementsByTagName('INPUT'); //查找点击事件的元素 + for (var i = 0; i < btns.length; i++) { + if (i === 0) { + btns[i].focus(); + } + btns[i].onclick = (function(d, p) { + return function () { + var tag = this.getAttribute('tag'); + if (p.click && p.click instanceof Function) { + if (p.click(tag, d)) { //如果点击了指定的按钮,且处理返回true,则关闭提示框 + d.close(); + } + } else { + d.close(); + } + }; + })(d, p); + } + return d; + }, + alert: function (msg,func,icon,text) { + return this.customAlert({ + icon: icon, + message:msg, + buttons: [ + { tag: 'ok', text: text || this.ALERT_BTN_OK_TEXT } + ], + click: function () { + if (func instanceof Function)func(); + return true; + } + }); + }, + confirm: function (msg, func, textArr) { + var okTxt = this.ALERT_BTN_OK_TEXT; + var cancelTxt = this.ALERT_BTN_CANCEL_TEXT; + if (textArr instanceof Array && textArr.length === 2) { + okTxt = textArr[0]; + cancelTxt = textArr[1]; + } + return this.customAlert({ + icon: 'confirm', + message: msg, + buttons: [ + { tag: 'ok', text: okTxt }, + {tag:'cancel',text:cancelTxt} + ], + click: function (tag) { + if (func instanceof Function) { + func(tag != 'cancel'); + } + return true; + } + }); + } +}; + + + + +//插件 +(function (j) { + j.extend({ + dialog: window.SimpleDialog, + drag: function (ele, win) { + return new drag(ele, win); + } + }); +}(j6)); diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/dialog.normal.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/dialog.normal.js new file mode 100644 index 0000000..663eb0b --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/dialog.normal.js @@ -0,0 +1,324 @@ +// +//文件:对话框插件 +//版本: 1.0 +//时间:2011-10-01 +// + + + +/************************Dialog****************************/ +/* +* name :Dialog +* date :2010/11/29 +* update:2011/11/07 +*/ + +// +// 模态窗口样式设置示例代码: +//.dialog .bglayer{background:black;opacity:0.6;filter:alpha(opacity=60);} +//.dialog .box{border:solid 1px #0066cc;background:white;padding:5px;} +//.dialog .box .loader{width:80px;background:url(/style/admin/ajax-loader.gif) center center no-repeat;height:30px;} +//.dialog .box .title{font-size:14px;font-weight:bold;color:#006699;background:#f5f5f5;padding:0 10px;line-height:25px;border-bottom:solid 1px #e5e5e5;margin:-5px -5px 5px -5px;} +//.dialog .box .close{padding:0 5px;font-weight:normal;} +// + +//对话框的容器 + +// +// 调用示例: +// var d=new dialog({title:'对话框',usedrag:true,style:'dialog default'}); +// d.async('ajaxtest'); +// + +function dialog(_dialog) { + this.win = window; //窗口 + this.doc = null; //文档 + //模态框的编号 + this.id = new Date().getMilliseconds() + parseInt(Math.random() * 100); + this.title = _dialog.title; //标题 + this.usedrag = _dialog.usedrag; //是否使用拖拽 + this.style = _dialog.style || 'ui-dialog'; //对话框样式,默认dialog + this.setupFade = !_dialog.setupFade ? _dialog.setupFade : true; //是否渐渐淡去 + this.onclose; //关闭函数,如果返回false,则不关闭 + + //是否穿越框架 + if (_dialog.cross != false) { + while (this.win.parent != this.win) { this.win = this.win.parent; } + } + this.doc = this.win.document; + + + this._inited = false; + + + //画布大小(整个网页大小) + this.canvas = { + width: this.doc.documentElement.clientWidth, + clientHeight: this.doc.documentElement.clientHeight, + height: Math.max(this.doc.documentElement.clientHeight, this.doc.body.clientHeight) + }; + + + //模态框的位置 + this.point = { + x: parseInt((this.canvas.width) / 2) + this.doc.documentElement.scrollLeft, + y: parseInt((this.canvas.clientHeight) / 2) + this.doc.documentElement.scrollTop + }; + + + + /**************************** 相关函数 *******************************/ + + //重设对话框的位置 + this.fixBoxPosition = function (relay) { + + var box = this.getPanel().getElementsByTagName('DIV')[1]; + + + //延时设置 + if (!relay) { + + this.point.x = (this.canvas.width - box.offsetWidth) / 2 + document.documentElement.scrollLeft; + this.point.y = (this.canvas.clientHeight - box.offsetHeight) / 2 + document.documentElement.scrollTop; + box.style.left = this.point.x + 'px'; + box.style.top = this.point.y + 'px'; + + //如果使用拖动 + if (this.title && this.usedrag) { + new drag(box.getElementsByTagName('div')[0], this.win).start(box); //使用拖拽对象 + } + + } else { + + var dialog = this; + var i = box.offsetWidth; + //设置多次,IE下会无法正常获得offsetHeight; + var timer = setInterval(function () { + + dialog.point.x = (dialog.canvas.width - box.offsetWidth) / 2 + document.documentElement.scrollLeft; + dialog.point.y = (dialog.canvas.clientHeight - box.offsetHeight) / 2 + document.documentElement.scrollTop; + + box.style.left = dialog.point.x + 'px'; + box.style.top = dialog.point.y + 'px'; + + if (i != box.offsetWidth) { + + clearInterval(timer); + + //如果使用拖动 + if (dialog.title && dialog.usedrag) { + new drag(box.getElementsByTagName('div')[0], dialog.win).start(box); //使用拖拽对象 + } + + } + }, 1); + } + }; +} + +dialog.prototype._initialize = function () { + if (this._inited) { return false; } + var dialog = this; + var document = this.doc; + + //添加Panel + var panel = document.createElement('div'); + panel.id = 'panel_' + dialog.id; + panel.className = dialog.style; + document.body.appendChild(panel); + + //添加遮盖层 + var elem = document.createElement('div'); + elem.className = 'bglayer'; + elem.style.cssText = 'z-index:99;position:absolute;top:0;left:0;width:' + dialog.canvas.width + 'px;height:' + dialog.canvas.height + 'px;'; + panel.appendChild(elem); + + //添加模态窗口 + elem = document.createElement("DIV"); + elem.className = 'box'; + //elem.id = 'box_' + dialog.id; + elem.style.cssText = 'z-index:100;position:absolute;left:' + (dialog.point.x) + "px;top:" + (dialog.point.y) + 'px;'; + panel.appendChild(elem); + + //如果显示标题 + if (dialog.title) { + var titleElem = document.createElement("div"); + titleElem.className = 'title'; + titleElem.innerHTML = dialog.title + 'X'; + elem.appendChild(titleElem); + this.win['dialog_' + this.id] = this; + } + + this._inited = true; +}; + + +//对话框容器 +dialog.prototype.getPanel = function () { return this.doc.getElementById('panel_' + this.id); }; + +//异步读取 +dialog.prototype.async = function (uri, method, params, loadfunc, func) { + + //初始化 + this._initialize(); + + var pl = this.getPanel().getElementsByTagName('DIV')[1]; //容器第2个层 + if (loadfunc) { loadfunc(pl); } + + //异步读取数据 + var ajax = jr.xhr; + + if (!method || method.toLowerCase() == "get") { + ajax.get(uri, function (x) { + pl.innerHTML += x; + if (func) func(x); + }); + } else { + ajax.post(uri, params, function (x) { + pl.innerHTML += x; + if (func) func(x); + }); + + } + this.fixBoxPosition(true); //重设位置 +}; + +//打开网址 +dialog.prototype.open = function (uri, width, height, scroll) { + //初始化 + this._initialize(); + var pl = this.getPanel().getElementsByTagName('DIV')[1]; //容器第2个层 + pl.innerHTML += ""; + pl.style.width = pl.scrollWidth + 'px'; + pl.style.height = pl.scrollHeight + 'px'; + this.fixBoxPosition(); +}; + +//写入内容 +dialog.prototype.write = function (html) { + //初始化 + this._initialize(); + var boxElem = this.getPanel().getElementsByTagName('DIV')[1]; //容器第2个层 + if (!this.title) { + boxElem.innerHTML = html; + } else { + var divs = boxElem.getElementsByTagName('DIV'); + for (var i = 1; i < divs.length; i++) { + boxElem.removeChild(divs[i]); + } + boxElem.innerHTML += html; + } + this.fixBoxPosition(); +}; + +// +// 关闭对话框 +// callback为关闭时候发生的回执函数 +// +dialog.prototype.close = function (callback) { + if (this.onclose != null && !this.onclose()) { + return false; + } + + var opacity; //透明度 + var panel = this.getPanel(); + + //移除面板 + var closeDialog = (function (doc) { + return function(){ + doc.body.removeChild(panel); if (callback) callback(); + } + }(this.doc)); + + closeDialog(); + this._inited=false; + + /* + //是否渐渐的淡去 + if (!this.setupFade) { + closeDialog(); return false; + } + + //获取透明度 + var allowFilter = document.body.filters != undefined; + opacity = 60; + + //定时设置遮盖的透明度 + var timer = setInterval(function () { + if (allowFilter) { + opacity -= opacity < 10 ? 1 : 10; //IE较其他浏览器执行较慢(1:22) + bgLayer.filters('alpha').opacity = opacity; + } + else { + bgLayer.style.opacity = (--opacity) / 100; + } + + //当透明度低于或等于0,则移除panel并执行回执函数 + if (opacity <= 0) { + //清除定时器 + clearInterval(timer); + closeDialog(); + } + }, 1); + */ +}; + +// +// 拖拽代码 +// 2011-11-08 +// + +function drag(elem, window) { + this.elem = elem; + this.win = window; +} +drag.prototype.start = function (obj) { + var o = this.elem; + var obj = obj ? obj : o; + var sx, sy; + var j = window.J; //依赖于oplib + + var document = this.win == null ? document : this.win.document; + + o.style.cursor = "move"; + j.event.add(o, "mousedown", function (e) { + e || event; + if (e.button == 1 || e.button == 0) { + sx = e.clientX - obj.offsetLeft; sy = e.clientY - obj.offsetTop; + document.addEventListener('mousemove', move, false); + document.addEventListener('mouseup', stopDrag, false); + } + }, false); + + var stopDrag = function () { + document.removeEventListener('mousemove', move, false); + document.removeEventListener('mouseup', stopDrag, false); + }; + + var move = function (e) { + e || event; + window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); + if (e.preventDefault) e.preventDefault(); //这两句便是解决firefox拖动问题的. + with (obj.style) { + position = "absolute"; + left = e.clientX - sx + "px"; + top = e.clientY - sy + "px"; + } + }; +}; + + + +//插件 +(function (j) { + j.plugin({ dialog: function (title, usedrag, fade, onclose, style) { + return new dialog({ + title: title, + usedrag: usedrag || false, + setupFade: fade || false, + style: style, + onclose: onclose + }); + } + }); +} (j6)); diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/exchange.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/exchange.js new file mode 100644 index 0000000..3249b8f --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/exchange.js @@ -0,0 +1,37 @@ +//交换信息 + +if (window.j6) { + jr.event.add(window, 'load', function () { + jr.each(document.getElementsByClassName('ui-exchange'), function (i, e) { + var v = null; + var ev = null; + var attr = null; + var exattr = 'exchange'; + + switch (e.nodeName) { + case 'IMG': + attr = 'src'; + break; + default: + attr = 'innerHTML'; + break; + } + if (attr == null) return; + v = e[attr]; + ev = e.getAttribute(exattr); + if (ev) { + jr.event.add(e, 'mouseover', (function (_e, _attr, _v) { + return function () { + _e[_attr] = _v; + }; + })(e, attr, ev)); + + jr.event.add(e, 'mouseout', (function (_e, _attr, _v) { + return function () { + _e[_attr] = _v; + }; + })(e, attr, v)); + } + }); + }); +} \ No newline at end of file diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/export.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/export.js new file mode 100644 index 0000000..a60b22a --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/export.js @@ -0,0 +1,76 @@ + +// +// =========================== +// 导出及查询页面通用Js +// =========================== +// 此脚本依赖于:json4html.js + +// +// 配置: +// expr.portal = '这里为导出项的类名'; +// +// expr.checkParams = function (data) { +// //这里校验参数的准确性,data为Json格式 +// return true; +// }; +// +// +// + + +if (!window.j6) { alert('请加载json4html.js文件!'); } + +var expr = { + ele: '', + appPath: '/', + hanlderPrefix: '/export/', + portal: '', + _getParams: function () { + return encodeURIComponent(jr.json.toString(this.ele)); + }, + + checkParams: function (data) { + return true; + }, + getDataUrl: function () { + if (this.checkParams()) { + var _appPath = window.appPath || this.appPath; + return (_appPath == '/' ? '' : _appPath) + + this.hanlderPrefix + + 'getExportData?portal=' + this.portal + + '¶ms=' + this._getParams(); + } + return null; + }, + showExportDialog: function (title, width, height) { + if (!PW) { + alert('PW对象为空!'); + return; + } + if (!expr.checkParams()) return; + var _appPath = window.appPath || this.appPath; + var url = (_appPath == '/' ? '' : _appPath) + + this.hanlderPrefix + + 'setup?portal=' + expr.portal + + '¶ms=' + expr._getParams(); + PW.getWindow(url, title || '导出数据', width || 400, height || 300); + }, + search: function (id) { + $('#' + id).datagrid({ url: expr.getDataUrl() }); + }, + reload: function (id) { + $('#' + id).datagrid('reload'); + }, + bindTotalView: function (id) { + if (!expr.checkParams()) return; + var _appPath = window.appPath || this.appPath; + var url = (_appPath == '/' ? '' : _appPath) + + this.hanlderPrefix + + 'getTotalView?portal=' + expr.portal + + '¶ms=' + expr._getParams(); + + jr.xhr.post(url, {}, function (json) { + jr.json.bind(id || 'totalView', json); + }); + } +}; diff --git a/src/toolkit/J6.DevFw.WebResource/JS_Lib/form.js b/src/toolkit/J6.DevFw.WebResource/JS_Lib/form.js new file mode 100644 index 0000000..68f6704 --- /dev/null +++ b/src/toolkit/J6.DevFw.WebResource/JS_Lib/form.js @@ -0,0 +1,109 @@ +/* +* 名称 : 表单(使用框架) +* 修改说明: +* 2012-09-22 newmin [+] : GetData方法用于获取表单内部的数据 +*/ + +jr.extend({ form: { + //获取表单数据 + getData: function (formIdOrIndex) { + var data = ''; + var form = document.forms[formIdOrIndex || 0]; + + return jr.json.toQueryString(form); + + /* + + //迭代操作函数 + var foreach = function (arr, func) { + for (var i = 0; i < arr.length; i++) { + func(arr[i]); + } + }; + + //用于装载input type="radio" + var __eles = new Array(); + + //查找是否存在名字 + var findName = function (name) { + for (var i = 0; i < __eles.length; i++) { + if (__eles[i] == name) { + return true; + } + } + return false; + }; + + foreach(form, function (ele) { + var attr_name = ele.getAttribute('name'); + if (ele.nodeName == 'IMG') { + // alert(attr_name); + } + if (attr_name) { + //针对Radio单独做处理 + if (ele.nodeName == 'INPUT' && ele.type && ele.type == 'radio') { + if (!findName(attr_name)) { + foreach(document.getElementsByName(attr_name), function (e) { + if (e.checked) { + data += '&' + attr_name + '=' + encodeURIComponent(e.value); + __eles.push(attr_name); + } + }); + } + } + //无论如何都为on,所以需单独处理 + else if (ele.nodeName == 'INPUT' && ele.type && ele.type == 'checkbox') { + data += '&' + attr_name + '=' + encodeURIComponent(ele.checked ? ele.value : ''); + } + else { + data += '&' + attr_name + '=' + encodeURIComponent(ele.value); + } + } + else { + //自定义标签取消 + //var field = ele.getAttribute('field'); + //if (field) { + //data += '&' + field + '=' + escape(ele.getAttribute('value')); + //} + + } + + }); + + return data.replace('&', '');*/ + }, + //异步提交 + asyncSubmit: function (formIdOrIndex, showTarget) { + var form = document.forms[formIdOrIndex || 0]; + var $async_ifr = document.getElementById('$async_ifr'); + + //添加DOM元素 + if (!$async_ifr) { + try { + //IE核心 + $async_ifr = document.createElement('"; e.style.width = Math.max(e.scrollWidth, b) + 'px'; e.style.height = Math.max(e.scrollHeight, c) + 'px'; this.fixBoxPosition() }; simpleDialog.prototype.write = function (a) { this._initialize(); var b = this.doc.getElementById('boxcontent_' + this.id); if (!this.title) { b.innerHTML = a } else { var c = b.getElementsByTagName('DIV'); for (var i = 1; i < c.length; i++) { b.removeChild(c[i]) } b.innerHTML += a } this.fixBoxPosition() }; simpleDialog.prototype.getFrameWindow = function () { var a = this.getPanel().getElementsByTagName('IFRAME'); if (a.length > 0) { return a[0].contentWindow } return null }; simpleDialog.prototype.close = function (b) { if (this.onclose != null && this.onclose() == false) { return false } var c = 0; var d = this.getPanel(); var e = (function (a) { return function () { a.document.body.removeChild(d); if (b) b() } }(this.win)); try { delete this.win['dialog_' + this.id] } catch (ex) { this.win['dialog_' + this.id] = null } e(); this._inited = false }; function drag(a, b) { this.elem = a; this.win = b } drag.prototype.regist = function (a, b, c, d) { var o = this.elem; a = a ? a : o; var f, sy; var g = this.win == null ? g : this.win.document; o.style.cursor = b || "move"; var h = c || function (e) { e = e || event; window.getSelection ? window.getSelection().removeAllRanges() : g.selection.empty(); if (e.preventDefault) e.preventDefault(); with (a.style) { position = "absolute"; left = e.clientX - f + "px"; top = e.clientY - sy + "px" } }; jr.event.add(o, "mousedown", function (e) { e = e || event; if (e.button == 1 || e.button == 0) { f = e.clientX - a.offsetLeft; sy = e.clientY - a.offsetTop; jr.event.add(g, 'mousemove', h, false); jr.event.add(g, 'mouseup', i, false) } }, false); var i = function () { jr.event.remove(g, 'mousemove', h, false); jr.event.remove(g, 'mouseup', i, false); if (d && d instanceof Function) d() } }; drag.prototype.custom = function (a, b, c, d) { return this.regist(a, b, c, d) }; drag.prototype.start = function (a) { this.regist(a, null, null, null) }; var SimpleDialog = { create: function (a) { return new simpleDialog(a) }, create2: function (a, b, c, d, e) { return new simpleDialog({ title: a, usedrag: b || false, cross: c || false, style: e, onclose: d }) }, getDialog: function () { var b = null; var c = /^dialog_/i; var e = window; var f = function (a) { var d = null; for (var i in a) { if (c.test(i) && a[i] != null) { d = a[i]; break } } return d }; do { b = f(e); if (b == null) { e = e.parent; b = f(e) } if (b) { break } } while (e.parent != e); return b }, close: function () { var d = this.getDialog(); if (d) d.close() } }; (function (j) { j.extend({ dialog: window.SimpleDialog, drag: function (a, b) { return new drag(a, b) } }) }(j6)); function datagrid(h, k) { this.panel = h.nodeName ? h : jr.$(h); this.columns = k.columns; this.idField = k.idField || "id"; this.data_url = k.url; this.data = k.data; this.onLoaded = k.loaded; this.loadbox = null; this.gridView = null; this.loading = function () { if (this.gridView.offsetHeight == 0) { var a = this.gridView.previousSibling.offsetHeight; var b = this.panel.offsetHeight - this.gridView.previousSibling.offsetHeight; this.gridView.style.cssText = this.gridView.style.cssText.replace(/(\s*)height:[^;]+;/ig, ' height:' + (b > a ? b + 'px;' : 'auto')); var c = Math.ceil((this.gridView.clientWidth - this.loadbox.offsetWidth) / 2); var d = Math.ceil((this.gridView.clientHeight - this.loadbox.offsetHeight) / 2); this.loadbox.style.cssText = this.loadbox.style.cssText.replace(/(;\s*)*left:[^;]+;([\s\S]*)(\s)top:([^;]+)/ig, '$1left:' + c + 'px;$2 top:' + (d < 0 ? -d : d) + 'px') } this.loadbox.style.display = '' }; this._initLayout = function () { var a = ''; if (this.columns && this.columns.length != 0) { a += '
                                                                                                                                            '; for (var i in this.columns) { a += '' + this.columns[i].title + '' } a += '
                                                                                                                                            '; a += '
                                                                                                                                            ' + '
                                                                                                                                            加载中...
                                                                                                                                            ' + '
                                                                                                                                            ' + '
                                                                                                                                            ' } this.panel.innerHTML = a; this.gridView = (this.panel.getElementsByClassName ? this.panel.getElementsByClassName('ui-datagrid-view') : jr.dom.getsByClass(this.panel, 'ui-datagrid-view'))[0]; this.loadbox = this.gridView.getElementsByTagName('DIV')[0] }; this._resize = function () { jr.dom.fitHeight(this.panel) }; this._fill_data = function (a) { if (!a) return; var b; var c; var d; var e = ''; var f = a['rows'] || a; e += ''; for (var i = 0; i < f.length; i++) { b = f[i]; e += ''; for (var j in this.columns) { c = this.columns[j]; d = b[c.field]; e += '' + (c.formatter && c.formatter instanceof Function ? c.formatter(d, b, i) : d) + '' } e += '' } e += '
                                                                                                                                            '; var g = this.gridView.getElementsByTagName('DIV')[1]; g.innerHTML = e; g.srcollTop = 0; this.loadbox.style.display = 'none'; if (this.onLoaded && this.onLoaded instanceof Function) this.onLoaded(a) }; this._load_data = function (b) { if (!this.data_url) return; var t = this; if (b) { if (!(b instanceof Function)) { b = null } } jr.xhr.request({ uri: this.data_url, data: 'json', params: this.data, method: 'POST' }, { success: function (a) { t._fill_data(a) }, error: function () { } }) }; this._initLayout(); this.load() } datagrid.prototype.resize = function () { this._resize() }; datagrid.prototype.load = function (a) { this.loading(); if (a && a instanceof Object) { this._fill_data(a); return } this._load_data() }; datagrid.prototype.reload = function (a, b) { if (a) { this.data = a } this.load(b) }; jr.extend({ grid: function (a, b) { return new datagrid(a, b) }, datagrid: function (a, b) { return new datagrid(a, b) } }); jr.extend({ form: { getData: function (a) { var b = ''; var c = document.forms[a || 0]; return jr.json.toQueryString(c) }, asyncSubmit: function (a, b) { var c = document.forms[a || 0]; var d = document.getElementById('$async_ifr'); if (!d) { try { d = document.createElement('"; e.style.width = Math.max(e.scrollWidth, b) + 'px'; e.style.height = Math.max(e.scrollHeight, c) + 'px'; this.fixBoxPosition() }; simpleDialog.prototype.write = function (a) { this._initialize(); var b = this.doc.getElementById('boxcontent_' + this.id); if (!this.title) { b.innerHTML = a } else { var c = b.getElementsByTagName('DIV'); for (var i = 1; i < c.length; i++) { b.removeChild(c[i]) } b.innerHTML += a } this.fixBoxPosition() }; simpleDialog.prototype.getFrameWindow = function () { var a = this.getPanel().getElementsByTagName('IFRAME'); if (a.length > 0) { return a[0].contentWindow } return null }; simpleDialog.prototype.close = function (b) { if (this.onclose != null && this.onclose() == false) { return false } var c = 0; var d = this.getPanel(); var e = (function (a) { return function () { a.document.body.removeChild(d); if (b) b() } }(this.win)); try { delete this.win['dialog_' + this.id] } catch (ex) { this.win['dialog_' + this.id] = null } e(); this._inited = false }; function drag(a, b) { this.elem = a; this.win = b } drag.prototype.regist = function (a, b, c, d) { var o = this.elem; a = a ? a : o; var f, sy; var g = this.win == null ? g : this.win.document; o.style.cursor = b || "move"; var h = c || function (e) { e = e || event; window.getSelection ? window.getSelection().removeAllRanges() : g.selection.empty(); if (e.preventDefault) e.preventDefault(); with (a.style) { position = "absolute"; left = e.clientX - f + "px"; top = e.clientY - sy + "px" } }; jr.event.add(o, "mousedown", function (e) { e = e || event; if (e.button == 1 || e.button == 0) { f = e.clientX - a.offsetLeft; sy = e.clientY - a.offsetTop; jr.event.add(g, 'mousemove', h, false); jr.event.add(g, 'mouseup', i, false) } }, false); var i = function () { jr.event.remove(g, 'mousemove', h, false); jr.event.remove(g, 'mouseup', i, false); if (d && d instanceof Function) d() } }; drag.prototype.custom = function (a, b, c, d) { return this.regist(a, b, c, d) }; drag.prototype.start = function (a) { this.regist(a, null, null, null) }; var SimpleDialog = { create: function (a) { return new simpleDialog(a) }, create2: function (a, b, c, d, e) { return new simpleDialog({ title: a, usedrag: b || false, cross: c || false, style: e, onclose: d }) }, getDialog: function () { var b = null; var c = /^dialog_/i; var e = window; var f = function (a) { var d = null; for (var i in a) { if (c.test(i) && a[i] != null) { d = a[i]; break } } return d }; do { b = f(e); if (b == null) { e = e.parent; b = f(e) } if (b) { break } } while (e.parent != e); return b }, close: function () { var d = this.getDialog(); if (d) d.close() } }; (function (j) { j.extend({ dialog: window.SimpleDialog, drag: function (a, b) { return new drag(a, b) } }) }(j6)); +function datagrid(h, k) { this.panel = h.nodeName ? h : jr.$(h); this.columns = k.columns; this.idField = k.idField || "id"; this.data_url = k.url; this.data = k.data; this.onLoaded = k.loaded; this.loadbox = null; this.gridView = null; this.loading = function () { if (this.gridView.offsetHeight == 0) { var a = this.gridView.previousSibling.offsetHeight; var b = this.panel.offsetHeight - this.gridView.previousSibling.offsetHeight; this.gridView.style.cssText = this.gridView.style.cssText.replace(/(\s*)height:[^;]+;/ig, ' height:' + (b > a ? b + 'px;' : 'auto')); var c = Math.ceil((this.gridView.clientWidth - this.loadbox.offsetWidth) / 2); var d = Math.ceil((this.gridView.clientHeight - this.loadbox.offsetHeight) / 2); this.loadbox.style.cssText = this.loadbox.style.cssText.replace(/(;\s*)*left:[^;]+;([\s\S]*)(\s)top:([^;]+)/ig, '$1left:' + c + 'px;$2 top:' + (d < 0 ? -d : d) + 'px') } this.loadbox.style.display = '' }; this._initLayout = function () { var a = ''; if (this.columns && this.columns.length != 0) { a += '
                                                                                                                                            '; for (var i in this.columns) { a += '
                                                                                                                                            ' + this.columns[i].title + '
                                                                                                                                            ' } a += '
                                                                                                                                            '; a += '
                                                                                                                                            ' + '
                                                                                                                                            加载中...
                                                                                                                                            ' + '
                                                                                                                                            ' + '
                                                                                                                                            ' } this.panel.innerHTML = a; this.gridView = (this.panel.getElementsByClassName ? this.panel.getElementsByClassName('ui-datagrid-view') : jr.dom.getsByClass(this.panel, 'ui-datagrid-view'))[0]; this.loadbox = this.gridView.getElementsByTagName('DIV')[0] }; this._fill_data = function (a) { if (!a) return; var b; var c; var d; var e = ''; var f = a['rows'] || a; e += ''; for (var i = 0; i < f.length; i++) { b = f[i]; e += ''; for (var j in this.columns) { c = this.columns[j]; d = b[c.field]; e += '
                                                                                                                                            ' + (c.formatter && c.formatter instanceof Function ? c.formatter(d, b, i) : d) + '
                                                                                                                                            ' } e += '' } e += '
                                                                                                                                            '; var g = this.gridView.getElementsByTagName('DIV')[1]; g.innerHTML = e; g.srcollTop = 0; this.loadbox.style.display = 'none'; if (this.onLoaded && this.onLoaded instanceof Function) this.onLoaded(a) }; this._fixPosition = function () { }; this._load_data = function (b) { if (!this.data_url) return; var t = this; if (b) { if (!(b instanceof Function)) { b = null } } jr.xhr.request({ uri: this.data_url, data: 'json', params: this.data, method: 'POST' }, { success: function (a) { t._fill_data(a) }, error: function () { } }) }; this._initLayout(); this.load() } datagrid.prototype.resize = function () { this._fixPosition() }; datagrid.prototype.load = function (a) { this.loading(); if (a && a instanceof Object) { this._fill_data(a); return } this._load_data() }; datagrid.prototype.reload = function (a, b) { if (a) { this.data = a } this.load(b) }; jr.extend({ grid1: function (a, b) { return new datagrid(a, b) }, datagrid: function (a, b) { return new datagrid(a, b) } }); +jr.extend({ form: { getData: function (a) { var b = ''; var c = document.forms[a || 0]; return jr.json.toQueryString(c) }, asyncSubmit: function (a, b) { var c = document.forms[a || 0]; var d = document.getElementById('$async_ifr'); if (!d) { try { d = document.createElement('